celcouser
21.12.2004, 02:17
Hallo zusammen,
Ich habe ein Problem mit der USART des PIC16F876.
Habe die USART als serielles Interface initialisiert, mit 9600 baud,8 bit Daten, kein Schnickschnack. Nun frage ich im Hauptprogramm ständig das Interrupt-Flag RCIF ab. (kein Interrupt auf diesem Flag zugelassen).
sobald das Flag gesetzt ist wird in eine Routine verzweigt, die das RCREG ausliest. Die Experten unter Euch wissen, daß das RCREG ein FIFO mit 2 Ebenen ist. Jetzt kommt das Problem: wenn ich das Auslesen des RCREG nach der Abfrage des RCIF zeitlich später mache, also dazwischen noch etwas Code steht, dann enthält das RCREG nicht mehr das Zeichen, welches das RCIF gesetzt hat, sondern das nächste oder sogar übernächste empfangene Zeichen.
Was soll das?
Natürlich fällt der Fehler nur auf, wenn man die serielle Schnittstelle des PIC mit vorgefertigten Strings "beschießt". Einzelne Zeichen oder festgehaltenen Tasten beim Sende-PC werden tadellos verarbeitet, dazu ist der Bursche zu schnell und das FIFO des RCREG wird nicht genutzt.
Kann mir da jemand helfen?
Auf der µChip-Seite ist natürlich nichts zu finden...
Vielen Dank im Voraus
Dirk
Ich habe ein Problem mit der USART des PIC16F876.
Habe die USART als serielles Interface initialisiert, mit 9600 baud,8 bit Daten, kein Schnickschnack. Nun frage ich im Hauptprogramm ständig das Interrupt-Flag RCIF ab. (kein Interrupt auf diesem Flag zugelassen).
sobald das Flag gesetzt ist wird in eine Routine verzweigt, die das RCREG ausliest. Die Experten unter Euch wissen, daß das RCREG ein FIFO mit 2 Ebenen ist. Jetzt kommt das Problem: wenn ich das Auslesen des RCREG nach der Abfrage des RCIF zeitlich später mache, also dazwischen noch etwas Code steht, dann enthält das RCREG nicht mehr das Zeichen, welches das RCIF gesetzt hat, sondern das nächste oder sogar übernächste empfangene Zeichen.
Was soll das?
Natürlich fällt der Fehler nur auf, wenn man die serielle Schnittstelle des PIC mit vorgefertigten Strings "beschießt". Einzelne Zeichen oder festgehaltenen Tasten beim Sende-PC werden tadellos verarbeitet, dazu ist der Bursche zu schnell und das FIFO des RCREG wird nicht genutzt.
Kann mir da jemand helfen?
Auf der µChip-Seite ist natürlich nichts zu finden...
Vielen Dank im Voraus
Dirk