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
Sind die Interrupt-Vektoren vorhanden? Hast Du den richtigen ATmega im Make eingestellt? Die IR-Vektoren sind unterschiedlich bei den diversen ATmegas. Gruß, Stefan
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
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.