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

Re: 10ms-Interrupt mit Timer 2 Kategorie: Verschiedenes (von Hannes - 5.11.2007 7:52)
Als Antwort auf 10ms-Interrupt mit Timer 2 von Jürgen Hooß - 4.11.2007 20:30
Ich nutze:
C-Control Pro Mega32, eigenes Board
Hallo,

fCount++;      geht glaub ich nicht. Muss heissen

fCount = fCount + 1.0;

Gruss




> Hallo,
>
> ich mache mich gerade mit der CC-Pro vertraut um ihr Potenzial für einen industriellen
> Einsatz abzuklopfen und habe ein Problem mit dem 10ms-Interrupt über den Timer2.
> Nach meinem Verständnis sollte das untere Programm so funktionieren,
> dass es zunächst einmal in die while(1)-Schleife in main() hineinläuft und
> dort solange bleibt bis es durch den Interrupt unterbrochen wird.
> Dann wird die Interrupt-Routine abgearbeitet und dann geht es an der Stelle weiter
> wo der Interrupt das Programm unterbrochen hat, usw. .
> So hat es auf jeden Fall in allen meinen bisherigen Assembler-Projekten
> (68000, 8051, 68HC08) funktioniert. Hier funktioniert es leider nicht so.
> In dem Moment wo in main() die Zeile
>   Irq_SetVect(INT_TIM2COMP,INT_10ms); // Interrupt Service Routine definieren
> erreicht wird, wartet das Programm wohl auf das Auftreten des Interrupts.
> Die while-Schleife wird nicht mehr abgearbeitet, sonst müsste in der zweiten Zeile
> vom LCD-Display der Zählerstand von fCount angezeigt werden.
>
> Was läuft hier falsch?
>
> Besten Dank im voraus für die Unterstützung.
>
> float fCount;
> word wCount;
> byte bCount;
>
> void INT_10ms(void)
> {
>   int irqcnt;
>   char cStr[9];
>
>   wCount++;
>   if(wCount>=50)
>   {
>     LCD_ClearLCD();
>     LCD_CursorPos(0x00);      // Den Cursor in die erste Zeile setzen
>     cStr="T: ";
>     Str_WriteWord(bCount, 10, cStr, 3, 0);
>     LCD_WriteText(cStr);
>     LCD_CursorPos(0x40);      // Den Cursor in die zweite Zeile setzen
>     Str_WriteFloat(fCount, 0, cStr, 0);
>     LCD_WriteText(cStr);
>
>     bCount++;
>     wCount=0;
>   }
>   irqcnt=Irq_GetCount(INT_TIM2COMP);      // Interrupt Request Counter
> }
>
>
> void main(void)
> {
>
>   bCount=0;
>   wCount=0;
>   fCount=7;
>   LCD_Init();
>   LCD_ClearLCD();
>   Irq_SetVect(INT_TIM2COMP,INT_10ms); // Interrupt Service Routine definieren
>   while(1)
>   {
>     fCount++;
>     // ... und weitere Zeilen Programmcode
>   }
>
> }
>


    Antwort schreiben


Antworten:

Re: 10ms-Interrupt mit Timer 2 (von Jürgen HooÃ? - 10.11.2007 18:00)