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)