Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > 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 > } > > }