ISR wird durchgehend bearbeitet

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • ISR wird durchgehend bearbeitet

      Hallo Segger,
      nachdem ich mit embOS gestartet habe, habe ich ein Problem mit einer Interrupt-Routine für meine UART Kommunikation.
      Vor dem Auslösen des von mir gesetzten RXNE_Interrupts laufen alle Tasks nach Priorität ab und wenn ich ein Signal sende springt das Programm in die ISR und arbeitet den Code ab.
      Hier wird einfach nur ein Buffer mit den empfangenen Daten gefüllt, aber nach der ISR springt das Programm wieder in die ISR ohne eine Task auszuführen.
      Vielleicht kann mir ja jmd. helfen.

      Source Code

      1. void USART2_IRQHandler(void)
      2. {
      3. OS_INT_Call(_USART_RXNE_IRQ_Handler);
      4. }
      5. void _USART_RXNE_IRQ_Handler(void)
      6. {
      7. if(USART_GetITStatus(USART2,USART_IT_RXNE) == SET)
      8. {
      9. if (buffer[zaehler]== 0)
      10. {
      11. buffer[zaehler] = USART_ReceiveData(USART2);
      12. }
      13. if (buffer[zaehler]== 0x0D)
      14. {
      15. zaehler = 0;
      16. }
      17. else
      18. { zaehler++; }
      19. }
      20. }
      Display All
      Images
      • ISR_Fehler.JPG

        205.94 kB, 1,284×754, viewed 32 times
    • Hallo Philipp,

      üblicherweise passiert das wenn das Interrupt Pending Flag nicht gelöscht wurde.
      Du müsstest mal schauen, ob es das bei deinem Device gibt und es dann in der Interrupt Routine als erstes löschen.
      Ansonsten sieht der Interrupt Controller das ein Pending Flag gesetzt ist und führt die ISR sofort wieder aus.
      Das sollte aber ohne embOS genauso passieren.
      Löst das dein Problem?

      Btw. Ein OS_INT_Call() brauchst du nicht. Das wird nur bei manchen speziellen CPUs gebraucht.
      Eine embOS Interrupt Routine beim Cortex M sieht so aus:

      C Source Code

      1. void USART2_IRQHandler(void) {
      2. OS_INT_Enter();
      3. DoSomething();
      4. OS_INT_Leave();
      5. }

      Gruß,
      Til