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.
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?
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...