Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Interrupt hängt Kategorie: Programmierung C (von Franz-Peter - 6.03.2012 12:09)
Als Antwort auf Interrupt hängt von Hans - 6.03.2012 10:40
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
> Hallo,
>
> ich möchte mit einem I2C LED Display eine Stoppuhr bauen
> die von einem Buzzer ausgelöst und wieder angehalten wird.
>
> Habe mit Hilfe von Beispielen das Programm geschrieben.
>
> Das Program läuft aber nicht wie gewünscht, denn die Interruptschleife
> hängt.
>
> Was habe ich nicht richtig gemacht??
>
> Hier die Schleife:
> void INT_10ms(void)
> {
>     if (Start==1)
>     {   cnt1++;
>         if (cnt1==10)
>         {   cnt10++;
>             if (cnt10==10)
>             {   Sekunde1++;
>                 if (Sekunde1==10)
>                 {   Sekunde10++;
>                     if (Sekunde10==10)
>                     {  Sekunde10=0;
>                     }
>                     Sekunde1=0;
>                 }
>                 cnt10=0;
>             }
>             cnt1=0;
>         }
>         LED_Display();
>
>     }
>     Buzzer();
>     irqcnt=Irq_GetCount(INT_TIM2COMP);
>
> Die Variablen cnt1,cnt10, Sekunde1, Sekund10 hab ich als byte def.
>
> Bin für jede Hilfe dankbar!
>
> MfG Hans

Die Interruptroutinen sollten immer möglichst kurz sein. Schliesslich wird diese z.B. alle 10ms
aufgerufen. Unterprogrammaufrufe sind da eher nicht zu empfehlen. Ich denke sowohl LED_Display(),
als auch Buzzer() sind Routinen, die für den direkten Aufruf aus einem IRQ viel zu viel Zeit
benötigen.
GruÃ? Franz-Peter


    Antwort schreiben


Antworten: