Forum: Compiler & IDEs UART gibt nichts sinnvolles aus


von Tobias K. (tobias-k)


Angehängte Dateien:

Lesenswert?

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
von Peter II (Gast)


Lesenswert?

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;

von Peter II (Gast)


Lesenswert?

der nächste Unsinn
1
if (!(wort==worta))

Du sollteste beim Thema Stringverabeitung noch mal bei 0 anfangen.

von Wolfgang (Gast)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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
von Timmo H. (masterfx)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Tobias K. (tobias-k)


Lesenswert?

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.

von Timmo H. (masterfx)


Lesenswert?

Aber an allem anderen was mit Strings und UART zu tun hat.

von Tobias K. (tobias-k)


Lesenswert?

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

von facepalm (Gast)


Lesenswert?

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?

von Tobias K. (tobias-k)


Angehängte Dateien:

Lesenswert?

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

von Timmo H. (masterfx)


Lesenswert?

Timmo H. schrieb:
> i = 0;
> ....
> while(1){
> wort[i] = uart_get(c);
... Oder so ähnlich

: Bearbeitet durch User
von Tobias K. (tobias-k)


Lesenswert?

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?

von Timmo H. (masterfx)


Lesenswert?

Woran?
>uart_getc();
> wort[16]=UDR;
Da dran? Oder da dran?
>if (!(wort==worta))

Wo hast du das her?

von Tobias K. (tobias-k)


Lesenswert?

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.

von Georg A. (georga)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.