ich verwende beide usart schnittstellen des controllers sobald ich die globalen interrupts im main file freigebe resetet sich der controller was zum henker mache ich falsch?
Christoph K. schrieb:
> was zum henker mache ich falsch?
Den Code nicht zu posten.
Christoph K. schrieb: > ich verwende beide usart schnittstellen des controllers > > sobald ich die globalen interrupts im main file freigebe resetet sich > der controller > > was zum henker mache ich falsch? Zeile 42 in deinem Programm ist falsch...
>Zeile 42 in deinem Programm ist falsch...
und in dieser Zeile gibst du einen Interrupt frei, für den es keine ISR
gibt.
Oliver
habe den code abgegrenzt, der fehler scheint hier zu liegen: //Serielle Schnittstelle 0 //Enable TXEN im Register UCR TX-Data Enable UCR =(1 << TXEN | 1 << RXEN | 1<< RXCIE); // 0 = Parity Mode Disabled // 1 = Parity Mode Enabled, Even Parity // 2 = Parity Mode Enabled, Odd Parity //UCSRC = 0x06 + ((parity+1)<<4); //UCSRC |= (1<<USBS); //Teiler wird gesetzt UBRR=(F_CPU / (baudrate * 16L) - 1); usart_status.usart_disable = 0; #if USART1 //Serielle Schnittstelle 1 //Enable TXEN im Register UCR TX-Data Enable UCR1 =(1 << TXEN1 | 1 << RXEN1 | 1<< RXCIE1); // 0 = Parity Mode Disabled // 1 = Parity Mode Enabled, Even Parity // 2 = Parity Mode Enabled, Odd Parity //UCSRC = 0x06 + ((parity+1)<<4); //UCSRC |= (1<<USBS); //Teiler wird gesetzt UBRR1 =(F_CPU / (baudrate * 16L) - 1); #endif
Christoph K. schrieb: > habe den code abgegrenzt, der fehler scheint hier zu liegen: > > ... Und damit soll jemand was anfangen können?
nachdem ich die usart initialisiert habe resettet der controller von sich aus
Christoph K. schrieb: > nachdem ich die usart initialisiert habe resettet der controller von > sich aus ich zitiere mich mal selbst: > Und damit soll jemand was anfangen können? Solange du keinen vollständigen Code postest, wird dir niemand helfen können und auch nicht wollen. Meine Glaskugel vermutet, dass Oliver recht hat, aber die arbeitet nicht wirklich zuverlässig...
> //Enable TXEN im Register UCR TX-Data Enable > UCR =(1 << TXEN | 1 << RXEN | 1<< RXCIE); Kommentare sind häufig Unsinn, wie man hier mal wieder deutlich gezeigt bekommt. Du gibst nicht nur TXEN frei, sondern auch alle anderen Interrupts der UART. Und ich wette, daß es dazu keine passenden ISR's gibt. Oliver
Oliver schrieb: >> //Enable TXEN im Register UCR TX-Data Enable > >> UCR =(1 << TXEN | 1 << RXEN | 1<< RXCIE); > Komisch, in meinem Datenblatt zum Mega644p gibt erst gar kein UCR-Register...
Hi > Du gibst nicht nur TXEN frei, sondern auch alle anderen >Interrupts der UART. Und ich wette, daß es dazu keine passenden ISR's >gibt. Nein. TXEN und RXEN geben lediglich Sender und Empfänger frei. Keine Interrupts. Das macht lediglich RXCIE. MfG Spess
Ja, lern etwas über die Prozessorregister und schau' Dir das Datenblatt an. Das hat Dir doch Justus bereits geschrieben: es gibt kein UCR oder UCR1 Register, außer Du hast selbst eines definiert. Das zuständige Register dafür wäre das UCSRnB. Und dann noch dafür sorgen, daß es für das RXCIE auch eine passende ISR gibt. Und benutz ab und zu die Shifttaste...
>hat irgendwer einen lösungsansatz?
Wie wäre es damit, die bisher gegeben Antworten mal zu lesen?
Oliver
Hier ein Beispiel für alle AVRs: Beitrag "AVR-GCC: UART mit FIFO" So schlimm ist das garnicht, ein paar Defines und gut is. Ganz stur nach der Methode entwickelt: anderen AVR-Typ auswählen und dann die Fehlermeldung ansehen und dann im Datenblatt, wie das Register, Bit oder ISR dort heißt. Peter
hab den fehler gefunden UCR war falsch definiert danke für die hilfe nur das nechste mal bitte etwas freundlicher....
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.