Hallo! Ich bin vor kurzem über ein blödes Probelm mit dem SAM7SE von Atmel gestolpert und weiss nicht mehr weiter. Es wird ein LIN Feldbus über einen USART ausgelesen. Das Breaksignal von einem LIN Bus wird mindestens 14 nominale Bitlängen lang (13 davon als 0 und ein Stop Bit). Ich habe den USART mit zu Zeit 2 verschiedenen Interrupts konfigurier (mit RXRDY und RXBRK). Die Interrupt Routine muss dann letztlich auseinanderpflücken, welcher jetzt den Interrupt ausgelöst hat. Das passiert z.B. mit folgender Zeile: if (COM0->US_CSR & AT91C_US_RXBRK != 0) // mit AT91PS_USART COM0; in dieser Abfrage werden die Statusbits (also auch das RXBRK) zurückgesetzt: COM0->US_CR = AT91C_US_RSTSTA; Es passiert nun folgendes. Ich bekomme einen Interrupt, es wird ein Break Signal erkannt! Alles läuft nach Plan. Dann bekomme ich einen zweiten Interrupt. Es ist laut Abfrage KEIN Break und die andere routine läuft durch. Es ist allerdings auch kein 0x55 wie erwartet, sondern einfach nur 0x00. Danach gibt es KEINEN Interrupt mehr! Wenn ich direkt nach dem rücksetzen der Statusbits ein kurzes "wait" einsetze, z.B. 1 ms, dann kommt nichtmal ein zweiter interrupt! Vielleicht habt ihr noch eine spontane Idee... Grüße Florian
Das war mal wieder typisch... Ich stolper grundsätzlich in die lustigsten Fehler... ich habe gerade Antwort von Atmel bekommen. Falls jemand den gleichen Fehler hat, es ist ein Errata, der noch nicht aufgeführt ist! Hier ein Auszug aus der Mail vom Support: ---------------------------------------schnipp-------------------------- ----- There is an errata related to RXBRK management which is not referenced so far in the datasheet but will be in the next revision: RXBRK flag error in Asynchronous Mode When timeguard is 0, RXBRK is not set when the break character is located just after the Stop Bit. FRAME (Frame Error) is set instead. Problem Fix/Workaround Timeguard should be > 0. Check that timeguard is > to 0 Then, if it does not solve your issue, take care you correctly acknowledge the different interrupts. ---------------------------------------schnapp-------------------------- ----- Vielleicht erspare ich so jemandem die lange Suche... Grüße Florian
OK...Kommando zurück..war noch ein Hardwareproblem...warum sind es eigentlich immer zwei oder mehr Fehler, die sich ineinanderhängen und eine Diagnose erstmal um ein vielfaches verkomplizieren?...gemein...
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.