Anfängerfrage UART

#4003849
Lesenswert?

Guten Tag.

Ich Arbeite mich gerade in die UART-Schnittstelle ein und stehe auf'm 
Schaluch.

Ich verwende einen ATmega8 mit einem BTM222 Bluetooth-modul mit 
Android-App. Das Daten hin und her Senden mit der Lib von Peter Fleury 
funktioniert auch Wunderbar. Aber ich raff'einfach nicht, wie ich die 
Daten auswerte.

Im Testprogramm Steht folgende zeile:
1
uart_putc( (unsigned char)c );

Wenn ich das richtig verstanden habe übernimmt diese das Echo. Sendet 
also das zurück, was gerade angekommen ist. Hier der inhalt der Variable 
"c"

Was ich unter anderem nicht verstehe ist, dass Oben im Code die variable 
als
1
unsigned int c;

deklariert wurde. Was sagt jetzt
1
(unsigned char)c
aus?


Und wie werte ich die nachricht aus?
In meinem jugentlichem leichtsinn habe ich es einfach mal mit einem 
simplen
1
if((unsigned char)c == "g/0")
2
      {
3
        PORTB ^=(1<<1);
4
      }

versucht. Aber da meckert der compiler mit mir:

comparison between pointer and integer [enabled by default]
comparison with string literal results in unspecified behavior 
[-Waddress]


Ich bin gerade ziemlich Ratlos und brauche Hilfe.
Gast #4003852
Lesenswert?

irgendwie fehlen dir scheinbar ein paar Grundlagen.

> if((unsigned char)c == "g/0")
das hat erst mal nicht mit UART zu tun, das sind die Grundlagen von C. 
Diese sollte man als erstes gelernt haben.

> uart_putc( (unsigned char)c );
> Wenn ich das richtig verstanden habe übernimmt diese das Echo.
ganz bestimmt nicht. Der Name sagt schon alles, es sendet einfach ein 
Zeichen. Ob es sich dabei um das Echo oder etwas anders handelt ist der 
Funktion ziemlich egal.


> Ich bin gerade ziemlich Ratlos und brauche Hilfe.
du brauchst ein Buch.
Gast #4003854
Lesenswert?

Ich will es mal ein wenig gemäßigter formulieren:

Was Du als Probleme der Anwendung, nämlich des UARTs, präsentierst, sind 
Probleme mit der Sprache C. Dem Anschein nach, aber auch nicht nur 
Detailprobleme der etwas subtileren Art sondern Grundlagen.

Wir gehen auch gerne auf so etwas ein, aber lies erstmal ein gutes 
C-Buch und dann sehen wir weiter.
#4014043
Lesenswert?

Christian S. schrieb:
> habe es jetzt dank dir geschafft. Ich habe nurnoch eine Frage: Wo ist
> der unterschied zwischen "x" und 'x'?

"x" ist ein nullterminierter C-String und entspricht im wesentlichen dem 
hier:
1
(char str[] = {'x','\0'}
Solche Daten werden über den Zeiger auf das erste Zeichen gehandhabt.

'x' ist ein 8 Bit breiter Ganzzahlwert.

Grundsätzlich ist ein C-Buch nicht verkehrt. Man kann auch diverse 
Tutorials durcharbeiten, um C-Grundlagen zu bekommen.

Grüße Oliver

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren