Hallo zusammen. Ich versuche mich zur Zeit an einem Bluetoothmodul, dass über TX Pin an einen Microcontroller gekoppelt ist (ATMega8A). Dieser ist wiederum zur Ausgabe der entfangenen Zeichen an einen LCD Display gekoppelt. Mein Problem ist, dass ich nur chinesische Schriftzeichen auf dem LCD empfange. Es wäre toll wenn ihr mir weiterhelfen könntet.
:
Verschoben durch User
Tobias K. schrieb: > Es wäre toll wenn ihr mir weiterhelfen könntet. was soll das sein?
1 | char wort[16]; |
2 | wort[16]=UDR; |
der nächste Unsinn
1 | if (!(wort==worta)) |
Du sollteste beim Thema Stringverabeitung noch mal bei 0 anfangen.
Tobias K. schrieb: > Mein Problem ist, dass ich nur chinesische Schriftzeichen auf dem LCD > empfange. Dann hast du vielleicht ein LCD mit chinesischem Zeichenvorrat erwischt. Stimmt die im Quellcode angegebene Taktfrequenz mit deinem µC Board/Fuses überein?
Oh weh oh weh. Man erkennt ganz deutlich, welche Teile von dir stammen und welche du abgeschrieben hast. Die Teile von dir sind so dermassen falsch, dass eigentlich nur eines bleibt: Wie immer der Rat, doch erst mal mit einem C-Buch die Grundlagen von C zu lernen.
1 | uart_getc(); |
2 | wort[16]=UDR; |
nein. uart_getc ist eine Funktion, die das nächste Zeichen liefert. Das nächste ist, dass ein einzelnes Zeichen kein String ist. String-Verarbeitung in C Und kauf dir ein C-Buch. Da fehlt es an allen Ecken und Enden.
:
Bearbeitet durch User
Und das? >uart_getc(); >wort[16]=UDR; Wohl eher sowas wie
1 | i = 0; |
2 | ....
|
3 | while(1){ |
4 | wort[i] = uart_get(c); |
5 | if(i > 15){ |
6 | i = 0; |
7 | ...
|
8 | }
|
> if (!(wort==worta))
Und das? Ein String vergleich? strcmp wäre vielleicht besser. Und Index
bei jedem Zeichen hochzählen vielleicht auch.
Lass fürs erste mal Bluetooth und LCD weg. Häng deinen Mega per Kabel an den PC und sieh zu, dass du dir UART erst mal vom Mega16 in Richtung PC in Gang bringst. Solange du dort im Terminalprogramm nicht das siehst, was am Mega weggeschickt wird, brauchst du dich mit der umgekehrten Richtung und dazischengescgaltetem Bluetooth noch überhaupt nicht beschäftigen. Das sind viel zu viele Fehlerquellen, die dir das Leben schwer machen und die du nur dann in den Griff kriegst, wenn du das ganze systematisch, beginnend mit dem Einfachen, angehst.
Wolfgang schrieb: > Tobias K. schrieb: >> Mein Problem ist, dass ich nur chinesische Schriftzeichen auf dem LCD >> empfange. > > Dann hast du vielleicht ein LCD mit chinesischem Zeichenvorrat erwischt. > > Stimmt die im Quellcode angegebene Taktfrequenz mit deinem µC > Board/Fuses überein? Also am LCD liegt es definitiv nicht da der mit mit einem anderen Programm schon strings und Zeichen ausgegeben hat.
Ich denke ich habe zumindest herausgefunden warum nur komische Zeichen angezeigt werden. Ich habe nämlich jetzt in "wort" etwas hineingeschrieben und nun wird nur dies angezeigt immer wenn etwas über Bluetooth empfangen wird
Tobias K. schrieb: > Ich denke ich habe zumindest herausgefunden warum nur komische > Zeichen > angezeigt werden. Ich habe nämlich jetzt in "wort" etwas > hineingeschrieben und nun wird nur dies angezeigt immer wenn etwas über > Bluetooth empfangen wird hast du eigentlich auch nur irgendwas gelesen, was hier an deinem programm kritisiert wurde? und hast du das nicht nur gelesen, sondern auch verstanden, was du alles falsch gemacht hast? nach deinem letzten beitrag habe ich nicht das gefühl. lies bitte die antworten nochmal in ruhe druc und versuche zu verstehen. und wenn du dann konkrete fragen hast, wird dir sicher auch geholfen. aber du mußt wenigstens versuchen, deine fehler auszumerzen, ok?
Ich hab die fehler jetzt mal ausgebessert und bekomme jetzt auch das Zeichen, dass ich verschickt habe. Aber ich schaffe es noch nicht das Zeichen in einer Variable zu speichern
Timmo H. schrieb: > i = 0; > .... > while(1){ > wort[i] = uart_get(c); ... Oder so ähnlich
:
Bearbeitet durch User
Timmo H. schrieb: > Timmo H. schrieb: >> i = 0; >> .... >> while(1){ >> wort[i] = uart_get(c); > ... Oder so ähnlich Des hab ich aus dem Internet kopiert, aber was is falsch daran?
Woran? >uart_getc(); > wort[16]=UDR; Da dran? Oder da dran? >if (!(wort==worta)) Wo hast du das her?
Timmo H. schrieb: > Woran? >>uart_getc(); >> wort[16]=UDR; > Da dran? Oder da dran? >>if (!(wort==worta)) > > Wo hast du das her? Das habe ich ausgebessert, aber du hast vorhin oder so ähnlich geschrieben. Das habe ich gemeint.
> Des hab ich aus dem Internet kopiert,
Ist zwar alt, passt aber trotzdem: Kapieren, nicht kopieren...
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.