Forum: Compiler & IDEs RS-485 Empfang - seltsame Probleme


von Christian S. (doubleq)


Lesenswert?

Hallo,

ich habe einen RS-485-Empfänger aufgebaut (SN75176 an ATmega16).
Die Schaltung läuft einwandfrei - bis ich an den Bus ein Datensignal 
anlege. Dann geht plötzlich überhaupt nix mehr.
Initialisiert wird die Schnittstelle mit

void init_USART(void){
  UBRRL  = USART_BAUD(F_CPU);
  UBRRH  = 0;
  UCSRC  = (3<<UCSZ0);
  UDR    = 0;
  UCSRA  = 0;
  UCSRB  = (1<<RXCIE)|(1<<RXEN);
}

Mache ich diese Initialisierung nicht läuft alles auch nach anstöpseln 
eines Signals - es scheint also ein programmiertechnisches Problem zu 
sein.

Meine Interrupt-Routine [SIGNAL (SIG_USART0_RX)] scheint desweiteren 
auch bei initialisierter Schnittstelle nicht ausgeführt zu 
werden...sieht da jemand anhand dieser Daten schon einen elementaren 
Fehler?
Viele Grüße

Christian

von Stefan K. (_sk_)


Lesenswert?

Sind die Interrupt-Vektoren vorhanden?

Hast Du den richtigen ATmega im Make eingestellt?
Die IR-Vektoren sind unterschiedlich bei den diversen ATmegas.

Gruß, Stefan

von Christian S. (doubleq)


Lesenswert?

Interrupt-Vektoren - gute Frage. Was hilft mir da weiter um das 
festzustellen? Das Datenblatt vom ATmega16? Oder hat das eher was mit 
dem AVR-GCC zu tun?

Richtiger ATmega im Make ist eingestellt. Das war mir noch vor meinem 
Posting eingefallen das mal zu prüfen.

Gruß Christian

von Christian S. (doubleq)


Lesenswert?

Hallo Stefan,

Danke! Es waren die Vektoren die schlicht falsch waren. Der Richtige ist 
"SIG_UART_RECV". Und dann tuts auch :)

Viele Grüße Christian

...der jetzt doch noch beruhigt schlafen gehen kann

von irgendein Rahul (Gast)


Lesenswert?

> UDR    = 0;
Was soll das denn bewirken?

Vor allem in der Initialisierung.
Lass es einfach weg. UDR (einfach mal so) zu beschreiben, kann 
gefährlich sein.

>Oder hat das eher was mit dem AVR-GCC zu tun?

Die werden in der libc beschrieben (sollte auf deinem Rechner als pdf 
oder so vorhanden sein).
Übrigens ist "SIGNAL" abgekündigt und durch "ISR" ersetzt.

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.