RS232 (Programmierung in C) funktioniert nicht ganz

Gast #2794129
Lesenswert?

Hallo zusammen,

ich arbeite an einer RS232 Schnittstelle. Und zwar würde ich gerne eine 
Echo Funktion am Terminal erzeugen. Ich arbeite momentan noch am STK500 
mit einem ATmega16 mit externem Oszillator (8MHZ).

Die Fuses bei SUT_CKSEL hab ich daher mit  EXTRCOSC_8MHZ_12MHZ_18CK_64MS 
eingestellt. Unterscheidet sich auch beim LED-Blink Test vom internen 
1MHZ Takt - funktioniert also soweit ich annehmen kann.

Ok was wohl eher das Problem ist: Der Quellcode - siehe Anhang.


Im Terminal (HTerm) hab ich die gleichen Einstellung wie im Quellcode 
verwendet. 4800 Baud 8Bit 1 Stop Bit

Was läuft da schief? Bekomme nichts angezeigt.

Mit dem Code aus dem AVR-GCC-Tutorial hab ichs auch schon ausprobiert, 
aber irgendwie passiert nichts.

Könnt Ihr mir weiterhelfen?
Angehängte Dateien:
Gast #2794342
Lesenswert?

Hatte ein ähnliches Problem mit Hterm und RS232, allerdings auf einem 
STM32.

Quellcode hat funktioniert, Schnittstelle vom PC auch, aber es kam kein 
Echo zurück.

Die Lösung war, bei "Send on Enter" im Hterm (Neben ASCII,Hex,Dec,Bin) 
"CR" einzustellen, und schon kam das Echo ohne weiteres am PC an.
Gast #2794572
Lesenswert?

Also ich habe jetzt beide Varianten ausprobiert. Leider ohne Erfolg.
Da es auch mit dem Überbrücken nicht geklappt hat muss es ja eigentlich 
ein Terminal Problem sein.

Das Flashen funktioniert ja problemlos über die Schnittstelle..

Anbei noch ein Sreenshot vom HTerm.
Angehängte Dateien:
Gast #2794612
Lesenswert?

Ok über den Jumper RXD TXD RS232 SPARE funktioniert die Überbrückung und 
ich erhalte mein Echo Signal. Ohne den Junper und mit Verbindung über 
RS232 SPARE funktioniert der Quellcode aber auch nicht..

Hat noch jemand einen Tipp für mich?
Gast #2796340
Lesenswert?

Also was mir jetzt noch aufgefallen ist: Ich hatte den gesamten Port auf 
Eingang stehen - somit kann zwar RXD funktionieren, nicht aber TXD. Habs 
nun so geändert:

DDRD = (1<<PD1) | ~(1<<PD0) | ~(1<<PD2) | ~(1<<PD3); //Eingänge: 
RXD(PD0) INT0(PD2) INT1(PD3) - Ausgänge: TXD(PD1)
Gast #2796354
Lesenswert?

Hi

>Also was mir jetzt noch aufgefallen ist: Ich hatte den gesamten Port auf
>Eingang stehen - somit kann zwar RXD funktionieren, nicht aber TXD. Habs
>nun so geändert:

Mit Setzen der RXEN- und TXEN-Bits in UCSRB übernimmt die USART die 
Kontroller über die PINs. Was in DDRD steht ist irrelevant.

MfG Spess

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