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

10ms-Interrupt mit Timer 2 Kategorie: Verschiedenes (von Jürgen Hooß - 4.11.2007 20:30)
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board
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 Hannes - 5.11.2007 7:52)
    Re: 10ms-Interrupt mit Timer 2 (von Jürgen HooÃ? - 10.11.2007 18:00)