Hallo zusammen, ich habe mich mit der Programmierung einer Mitsubishi CPU beschäftigt. Leider funktioniert meine Timerfunktion nicht. Ich weiß momentan nicht woran es liegt. Anbei Quellcode und als ANlage die notwendigen Startfiles und Header. Compilierung brachte mit Compiler NC308WAV310r1 keine Fehler. Nach Flashen der CPU leuchtet LED an port p5_0 ständig. Könnt Ihr mir helfen ? Gruß Dietmar /* Evaluation Borad mit M30833FJFP */ /*********************************************************************** ***/ #define public #include "sfr32c83.h" #undef public #define public extern #undef public #pragma INTERRUPT timeA0Int /*ta0int Funktion als Interrupt anmelden*/ #define enableInterrupts() asm("fset I") #define disableInterrupts() asm("fclr I") void main(void); void initTimerA0(void); void timerA0Int(void); long t; volatile unsigned int timer10msec = 0; void initTimerA0(void) { ta0mr = 0x80; // 1000 0000 also durch 32 ta0ic = 0x01; // ---- XXXX ta0 = 0x249E; // Set up Timer A0 Reload Register for 10msec interval interrupt udf = 0x00; // Timer count down tabsr = 0x01; // Timer start flag bit } void timerA0Int(void) { if(timer10msec != 0) {timer10msec--;} } void delay(unsigned short t) // Zweck Zeitverzögerung um time*10msec { timer10msec=t; while (timer10msec != 0) {} // Solange noch nicht heruntergezählt ist, warten } void main (void) { // PMO, PM1, CM0, CM1 and MCD register setting is done in ncrt0.a30 // pd5_5 = 0x01; p5_0 = 0xFF; disableInterrupts(); initTimerA0(); enableInterrupts(); // enable all interrupts for (;;) { delay(100); // 100 * 10msec = 1sec p5_0 = 0x00; } } /*********************************** E O F ********************************/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.