Forum: Mikrocontroller und Digitale Elektronik R8C: über Hterm und UART0 LED anschalten


von Michael T. (michelback)


Lesenswert?

Halló zusammen,
ich scheitere gerade an der UART kommunikation mit dem R8C und HTerm. 
Ziel ist, dass ich über ein festgelegtes Zeichen, das ich über UART zum 
µC schicke eine LED anschalte.
Ausschnitt aus dem code (UART_init wurde vorher schon implementiert):


unsigned char rcv_buf;
unsigned short receive_data;
pd2_0=1;
p2_0=0;

while (1){

     if(ri_u0c1 == 1){                       //data in U0RB register?
            receive_data = u0rb;             //receive data
            rcv_buf = (unsigned char)receive_data;

            if(rcv_buf == 0x2B){        //wenn + gesendet dann leuchte
               p2_0=1;
            }


Leider tut sich gar nichts und ich weiß nicht woran es liegt. Testweise 
hatte ich auch eine andere LED angeschaltet, ob der µC resettet. Tut er 
aber nicht. Da ich noch recht frisch bin in Sachen µC-Programmierung, 
weiß ich auch nicht, ob das überhaupt so funktionieren kann. Ich habe 
mir das lediglich aus einigen Application notes rausgesucht.

In Hterm hatte ich bei "Type" ASC ausgewählt und "++" eingegeben, danach 
Enter gedrückt. Bei "send on enter" habe ich es mit "none" probiert.
Ich möchte einfach nur ein beispielcode, mit dem ich arbeiten kann. Ich 
weiß leider nicht mehr weiter. Wenn mir jemand helfen kann wäre das 
super.
Grüße und Danke,
Michael

von Karl H. (kbuchegg)


Lesenswert?

Michael T. schrieb:

>             receive_data = u0rb;             //receive data
>             rcv_buf = (unsigned char)receive_data;
>
>             if(rcv_buf == 0x2B){        //wenn + gesendet dann leuchte

"wenn + gesendet"
Dann schreibs auch so!
              if(rcv_buf == '+'){


Immer diese ASCII Code Fetischisten! Schreib doch Zeichen im Klartext 
hin, dann kann auch ein Blinder mit Krückstock auf 3 Meter Entfernung 
ertasten, was diese Abfrage bedeuten soll.

> Leider tut sich gar nichts und ich weiß nicht woran es liegt.

Es ist IMMER eine extrem gute Idee, sich das Zeichen, welches empfangen 
wurde, sofort zurückschicken zu lassen, damit es am Terminal angezeigt 
wird. Auf die Art sieht man dann als Tester, ob das Zeichen (falls 
überhaupt) gut angekommen ist, oder ob etwas damit auf dem 
Übertragungsweg passiert ist oder ob es das Terminal zb zurückhält oder 
dergleichen.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Hier ist ein einfaches, komplettes UART-Beispiel für den R5F21134FP 
(R8C/13) = Erstes R8C-Board von Elektor/Glyn:

http://www.mikrocontroller.net/articles/R8C_Codebeispiele#Serielle_Daten.C3.BCbertragung_.28Polling-Verfahren.29

Das Programm ist ein "leicht abgewandeltes" Echo für empfangene Daten 
und LED an P10 an/aus.

Du scheinst aber einen anderen R8C einzusetzen, wenn du einen Pin P20 
hast. Also Vorsicht beim 1:1 übernehmen des Beispiels!

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Da fehlt die komplette initialisierung des UARTs. Du hast den Port 2.0 
als IO zugewiesen. Das reicht bei weitem nicht. Zieh dir bei Renesas die 
Beispiele runter, da gibts genug Code zum ausprobieren.

von Michael T. (michelback)


Lesenswert?

Hallo,

vielen Dank für die Infos, ich habe jetzt das Programm 
mikrocontroller.net eingebunden und entsprechend angepasst (Baudrate, 
pins). Ich verwende den R8C/22, bei ihm ist es nicht nötig zwei 8bit 
register zu lesen, sondern nur ein 16bit register. Funktioniert aber 
einwandfrei, vielen Dank an alle.

Grüße,
Michael

von Karsten (Gast)


Lesenswert?

> ich habe jetzt das Programm mikrocontroller.net eingebunden

Kenne ich, das ist gut!

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Benutze ich fast täglich ;-)

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.