Hallo, ich möchte meinem EA eDIPTFT43-A Befehle von meinem ATMEGA88 senden. Also z.B Display löschen. Leider komme ich nicht weiter. Habe einen 8 Mhz Quarz dran. Die drei Pins für die Bauddraten habe ich mit Jumpern ausgestattst und entsprechend gesetzt. Könnte mir jemand erklären, was es mit dem Smallprotokoll aus sich hat? Muss ich das jetzt an oder abschalten, dem Display Befehle zu senden? Und wie sende ich dann einen Befehl. Habe es schon mit Print "#DL" versucht. Oder mit anderen Sachen aus dem Datenplatt. Das einzig was passiert, ist, dass auf dem Display irgendwelche Hyroglyphen angezeigt werden.. Ich hoffe ihr könnt mir ein paar Tipps geben.
Seite 10 in der Doku ... http://www.lcd-module.de/fileadmin/pdf/grafik/ediptft43-a.pdf Abschalten kannstes ja für Testzwecke, einfach PIN17 auf Masse ...
Hallo, Habe jetzt mal geschrieben: Print "<DC1>,3,#DL,bcc" Es dass denn richtig so? Muss ich da nen anderen Befehl wie Print nehmen? Ooer ist das komplett falsch?
Noch was wenn ich das Small protokoll jetzt abschalte, zeigt es dann die übertragenen zeichen auf dem Display an ?
Kommt drauf an ob du dich im Terminalmodus befindest oder nicht ...
Oder muss man das Display erst mal irgendwie auf "empfang" stellen, damit es die empfangenen Befehle ausführt?
Nein ... nur (evtl.) Rahmen und Daten müssen passen.
Hallo, stimmt denn dieser Befehl: Print "<DC1>,3,#DL,bcc" Wenn die Daudrate stimmt und TXD vom ATGEMA88 mit RXD vom Display verbuden sind müsste doch dann der Displayinhalt verschwinden? Oder muss das bcc auch noch durch was ersatz werden? Und geht das mit dem Print? Der ATMEGA sendet auf jedenfall Daten, das habe ich mit dem Oszi überprüft.
Uiuiui^^ es scheint du hast das noch nicht ganz gecheckt =) Kuck dir einfach den Codefetzen auf Seite 10 an ... und versuch nachzuvollziehen was da gemach wird ... bzw. lass erstmal das Small-Protokoll weg. BTW: das DC1 ist einfach nur ein Symbol für eine hexadezimale 11 und bcc ist die Summe aus allen Bytes ... das steht aber wirklich alles im Manual. Lies das bitte gründlich.
Hallo, also wie ich das sehe muss man wohl Byte für Byte senden?+ Also erst mal das <DC1> Das ist dann eine 11. Also erts mal => Print 11 Der Befehl soll ja #DL heißen. len ist also 3, weil ich pro Zeichen ja ein Byte brauche oder ?!? => Print 3 Dann die Befehlszeichen: => Print "#" => PRint "D" => Print "L" Und bcc ist die SUmme aus allen Bytes. Muss ich dann 11 + 3 +.. rechnen Aber wie addiere ich die ASCCI Zeichen? Und das mit dem Module... ärgrrrrrr Warscheinlich wieder alles falsch ;-(
Mit Basom kenne ich mich nicht aus ... aber ich denke mit mehreren "Print"s wird das nicht funktionieren ... ich glaub nach den "Print"s werden Zeilenumbrüche angehangen ... das ist schlecht. Das sollte schon alles in einem Abwasch geschehen. Ich rate dir das Protokoll erstmal wegzulassen und dir dann Gedanken machen warum man überhaupt so ein Protokoll einsetzt bzw. wie es funktioniert. Der vorhandene Codefetzen sollte selbst für dich einfach ins Basom übertragbar sein =)
Hallo, also was muss ich dann übertragen, wenn ich kein Protokoll habe? Muss ich das PRüfsummenzeug dann weglassen ? Irgendwie kapoere ich immer noch nicht wozu das Protokoll gut ist und wann ich es brauche und wann nicht.
Das Protokoll ist schon nützlich ... hab jetzt mit dem Ding noch nicht gearbeitet, aber mit Bascom arbeite ich viel. Zunächst mal sendet Bascom wenn Du einfach Print "12345" machst insgesamt 7 Zeichen, weil Bascom da ein CR und LF dahinter hängt. Das kannst Du unterdrücken indem du ein ";" dahinter stellst, also print "1235"; In der Protokollbeschreibung sind bestimmte Zeichen definiert mit Abkürzungen, z.B. <DC1> = 17(dez.) = $11 (Seite 10 im Datenblatt) Das bedeutet, dass Du nicht: Print "<DC1> ...." machst sonder an Stelle des DC1 das ASCII-Zeichen für DC1 sendest: ASCII-Tabelle hilft da weiter: http://www.torsten-horn.de/techdocs/ascii.htm In Bascom kannst Du ein ASCII-Zeichen einfach per geschweifter Klammer einfügen: Print "{017},3,#DL,... bcc = 1 Byte = Summe aus allen Bytes inkl. <DC2>, Modulo 256 (Seite 11 steht das im Datenblatt) Du gehst einfach hin und addierst die ASCII-Werte aller Deiner zu übertragenden Zeichen außer bcc versteht sich. also 17 + (",") 44 + ("3") 51 + (",") 44 + ("#") 35 + ("D") 68 + ("L") 76 Die Summe ist natürlich größer als 255, passt also nicht in ein Byte, daher brauchst Du nur das Lowbyte ... in Bascom sieht das so aus, dass Du einfach in eine Bytevariable addierst und Dich nicht darum störst, dass diese überläuft. Also dim bcc as byte dim bytevariable_1 as byte bcc=0 x=len(ausgabesing_ohne_bcc) for y=1 to x tempstring=mid(ausgabesing_ohne_bcc,y,1) bytevariable_1=asc(tempstring) bcc=bcc+bytevariable_1 next ausgabesing_ohne_bcc=ausgabesing_ohne_bcc + chr(bcc) ' bcc anhängen print ausgabesing_ohne_bcc so in etwa sollte es gehen ... blöd wirds nur wenn bcc Null ist, dann macht Bascom den String ein Zeichen kürzer ... Ja, es gibt schnellere und bessere Routinen, aber zur Veranschaulichung sollte es mal gehen.
Hallo, danke , du hast mir sehr weitergeholfen. Ich wäre nie draufgekommen, dass zu den Befehltzeichen auch Komma zählen... Habe das ganze mal versucht, aber es frutzt nicht. Ich denke , dass in meinem Code noch Fehler sind. Bei den Variablen war ich mir beim Typ nicht sicher. Da ist irgendwo der Wurn drin...
1 | $crystal = 8000000 |
2 | $baud = 19200 |
3 | |
4 | Config Portc.5 = Output |
5 | |
6 | Dim Bcc As Byte |
7 | Dim X As Byte |
8 | Dim Y As Byte |
9 | Dim Ausgabesing_ohne_bcc As String * 10 |
10 | Dim Tempstring As String * 10 |
11 | dim bytevariable_1 as byte |
12 | |
13 | Bytevariable_1 = 0 |
14 | Bytevariable_1 = Bytevariable_1 + 17 |
15 | Bytevariable_1 = Bytevariable_1 + 44 |
16 | Bytevariable_1 = Bytevariable_1 + 51 |
17 | Bytevariable_1 = Bytevariable_1 + 44 |
18 | Bytevariable_1 = Bytevariable_1 + 35 |
19 | Bytevariable_1 = Bytevariable_1 + 68 |
20 | Bytevariable_1 = Bytevariable_1 + 76 |
21 | |
22 | Bcc = 0 |
23 | X = Len(ausgabesing_ohne_bcc) |
24 | For Y = 1 To X |
25 | Tempstring = Mid(ausgabesing_ohne_bcc , Y , 1) |
26 | Bytevariable_1 = Asc(tempstring) |
27 | Bcc = Bcc + Bytevariable_1 |
28 | Next |
29 | |
30 | Ausgabesing_ohne_bcc = Ausgabesing_ohne_bcc + Chr(bcc) |
31 | |
32 | Print "{017},3,#DL,"; |
33 | Print Ausgabesing_ohne_bcc |
34 | |
35 | Do |
36 | Toggle Portc.5 |
37 | Waitms 50 |
38 | Toggle Portc.5 |
39 | Waitms 50 |
40 | Loop |
41 | |
42 | End |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.