Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD über rs232 oder i2c bus?
Bluesmash
21.06.2005, 19:52
mittlerweilen sind die ports meines mega32 erschöpft... und um freie ports zu bekommen möchte ich als erstes das LCD vom prozessor wegbekommen... dann hätte ich schon mal 7 freie ports... hat mir jemand einen link oder ein tutorial wie man das am besten und einfachsten machen kann?
gruss bluesmash
Felixx87
21.06.2005, 20:07
nimm einen kleinen prozessor und setz den halt dazwischen der an dein display rangemacht wird und der prozessor (eine smd variante) setzt die I2C befehle dann für das display um
wie es mit der software regelung is keinen schimmer bin bisher nur mit hardware einigermaßen vertraut
MFG
Bluesmash
21.06.2005, 20:11
an diese variante habe ich auch schon gedacht... aber ist schon ein bisschen verschwendung für den prozi... vielleicht gibt es ja fertige bausteine für lcd's??
Naja mit dem CO-µC könntest du ja vielleicht noch andere Sachen anstellen. Schon fertige Schriften Speichern, um auf dem Main-µC platz zu sparen, oder so.
... aber ist schon ein bisschen verschwendung für den prozi...
Naja, es ist sogar so, dass die ganzen I2C Portexpander ( PCF8574 o.ä. ) mehr kosten als ein kleiner AVR. Von daher kann es sich teilweise schon lohnen für solche Aufgaben ( I/O Pins setzten, ADC einlesen usw. ) sich schnell einen ATTiny oder so zu programmieren :-)
Der AVR könnte zwar sehr viel mehr machen, allerdings muss er das ja nicht ...
MfG Kjion
Schau dir mal das Projekt an:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=7418
Vielleicht ist das was für dich
Bluesmash
21.06.2005, 23:51
ich hab hier noch nen mega8 rumliegen... ich denke ich werde den mal verwenden und über die rs232 die daten austauschen... brauche ich dann am co controller auch nen max232?
und noch ein par fragen zur software... mit dem main controller sende ich die daten mit z.B. print "text" "hallo" oder eine variabel z.B. print "variabel" x
aber wie verwerte ich nun die daten im co controller?
würde das so funktionieren?
dim z as string*16
dim y as integer
input "text" z
LCD z
input "variabel" y
LCD y
und dann noch spezielle zeichen mit if then verzweigungen für befehle wie: cls, locate usw.
Es ist günstiger wenn einzelne Bytes gelesen und interpretiert werden, so hab ich´s gemacht. Ist es kein Befehl werden Bytes gleich ausgegeben.
Bluesmash
22.06.2005, 00:28
hmmm klingt kompliziert.... wie würde der code aussehen wenn ich z.b. "hallo" am lcd ausgeben will?
Ist nicht so kompliziert, es wird nur kompliziert wenn du rs232 und i2c berücksichtigen willst.
Das Grundgerüst für RS232 Abfrage könnte so aussehen:
'**** Interpretation der RS232 Befehle ****
Rs232mode:
Do
Befehl = Inkey()
Loop Until Befehl <> 0 'Warte auf Zeichen an RS232
lcd Befehl
goto rs232mode
Mit entsprechenden If oder Switch Anweisungen kannst du in der Schleife bestimmte Codesequenzen rausfiltern um sie als Befehl für irgend eine Sonderfunktion zu nutzen.
Das ist die einfachste Variante man kann die natürlich Abwandeln um innherhalb der Schleife nebenbei andere Dinge zu machen. Da fängt dann halt die Kreativität an
Bluesmash
22.06.2005, 20:34
vielen dank schon mal! sobald ich dann mal die restlichen teile habe werde ich es ausprobieren...
gruss bluesmash
Bluesmash
22.06.2005, 20:39
ah hab noch ne frage... brauch ich nun am co-controller auch nochmal nen max232? oder genüt es wenn der main-controller einen hat?
mfg
Wenn du beim Hauptboard den Max nutzt muss das CoControllerboard auch einen haben. Vorausgesetzt du nimmst die vorgesehene RS232 Schnittstelle
Alternativ kannst du aber einen beliebigen Port als rs232 konfigurieren (mit Open in Bascom). Diesen Port kannst du dann direkt an den RX vom CoController anschließen.
Dritte Möglichkeit wäre du nimmst den Max232 ganz aus der Fassung und verbindest dann TX/RX und RX/TX direkt. Dann kannst du aber PC nicht mehr anschließen.
Bluesmash
22.06.2005, 20:51
ah ok! vielen dank!
mfg
Bluesmash
22.06.2005, 22:35
habe es gerade ausprobiert mit pc als "main-controller" und mein mega32 als co-controller, funktioniert 1a! *freu* was ich noch gemacht habe ist bei der auswertung der angekommenen zeichen X=chr(befehl) und dann x ausgeben
schöne grüsse bluesmash
schaut mal da rein:
http://www.schuricht.de/w3a/default.asp?Start=Module&INFOID=1572108
Das von Schuricht kenn ich, zu klein, wenige Zeichen und nicht ganz einfach anzusteuern
oder vielleicht diese Variante
http://www.channaa.com/html/i2c_lcd_adapter.html
oder
http://www.channaa.com/html/rs232_lcd_adapter.html
IngBo
Bluesmash
28.06.2005, 19:45
@ingbo: danke für die links aber ich wollte mir selber etwas basteln... nur schon des "lerneffekts" wegen...
ich habe mir nun ne kleine platine mit mega8 und max232 gebaut auf die das display aufgesteckt wird... (siehe foto) ich weiss es sieht nicht gerade professionell aus... aber es funktioniert :)
kleiner bericht:
1. Problem
den max232 hatte ich so angeschlossen wie auf dem plan vom rn-control... danach funktionierte es einigermassen aber es zeigte mir immer wieder falsche zeichen an die ich vom terminal gesendet hatte... als ich dann nach dem fehler suchte, sah ich auf dem max232 datenblatt das man pin 15 und 16 mit gnd und 5V verbinden sollte... und danach funktionierte es einwandfrei in verbindung mit dem bascom terminal... ist das ein fehler auf dem rn-control plan oder braucht es das da nicht?
2. problem:
danach habe ich mein display-controller an mein haupt-controller angeschlossen und wollte die daten anzeigen lassen... aber irgendwie kamen nicht alle zeichen an... dann kam ich auf die idee die baudrate mal auf 4800 herunterzusetzen, und siehe da, es funktionierte! aber kann mir jemand sagen wieso es mit 9600 nicht funktioniert? packt das mein mega 8 nicht?
3. Problem:
nachdem alles einigermassen funktionierte, hatte ich am ende jeder zeile noch so komische zeichen... nachdem ich dann ein bisschen in meinem "schlauen" buch gestöbert hatte fand ich die lösung: einfach ein ";" am ende jeder print zeile und die zeichen waren weg... gibt es da keine "elegantere" metode die zeichen loszuwerden?
mfg bluesmash
1. Problem
den max232 hatte ich so angeschlossen wie auf dem plan vom rn-control... danach funktionierte es einigermassen aber es zeigte mir immer wieder falsche zeichen an die ich vom terminal gesendet hatte... als ich dann nach dem fehler suchte, sah ich auf dem max232 datenblatt das man pin 15 und 16 mit gnd und 5V verbinden sollte... und danach funktionierte es einwandfrei in verbindung mit dem bascom terminal... ist das ein fehler auf dem rn-control plan oder braucht es das da nicht?
Ich vermute einfach mal das die beiden Pins einfach nur nicht direkt an dem Symbol dran sind. Bei Eagle kann man durchaus ein IC durch mehrere Symbole darstellen ( schau dir mal die benennungen an : IC4 oder so und such dann mal nach IC4P o.ä. ). Spannungsversorung ist also schon dran ;-)
2. problem:
danach habe ich mein display-controller an mein haupt-controller angeschlossen und wollte die daten anzeigen lassen... aber irgendwie kamen nicht alle zeichen an... dann kam ich auf die idee die baudrate mal auf 4800 herunterzusetzen, und siehe da, es funktionierte! aber kann mir jemand sagen wieso es mit 9600 nicht funktioniert? packt das mein mega 8 nicht?
Schreib mal dazu welche Taktfrequenz du benutzt. Ich empfehle außerdem das lesen des Datenblatts unter "UART" -> "Examples of Baudrate Settings" oder so ähnlich...
MfG Kjion
Bluesmash
28.06.2005, 20:30
ok indemfall war ich einfach zu doof um den plan zu verstehen :)
also am mega32 habe ich 16000000Hz
und am mega8 7372800Hz (den hab ich zum rn-board bekommen)
was für ein uart datenblatt meinst du?
mfg bluesmash
was für ein uart datenblatt meinst du?
Naja, das zum ATMega8/ATMega32.
MfG Kjion
Bluesmash
29.06.2005, 23:09
weiss jemand was das für zeichen sind die nach dem print befehl (basic) noch zusätzlich gesendet werden? glaube enter und sonst nocht ein zeichen... dann könnte ich die mit dem display controller rausfiltern...
mfg bluesmash
das sind wahrscheinlich die 0x0D und die 0x0A
Bluesmash
30.06.2005, 19:17
vielen dank! werde es ausprobieren sobald mein robby sein neues gehäuse hat und wieder bereit ist zu programmieren...
wozu filtern, häng einfach ein ";" an das ende des print-befehls und CR LF wird nicht gesendet.
print "xy"; z.B.
Bluesmash
04.07.2005, 17:07
ja ich weiss... aber währe schön wenn ich das nicht immer müste... aber trozdem danke!
mfg bluesmash
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.