Re: PWM - verschiedene Probleme Kategorie: Progr. Assembler, TaskingTools, OS (von Harald - 12.11.2004 11:45) | ||
Als Antwort auf Re: PWM - verschiedene Probleme von André H. - 11.11.2004 16:53 | ||
| ||
Hallo, hier noch der C-Quellcode: C-Code--------------------------- /* impuls.c */ #include //Hier die Interruptroutine. Wenn sie nicht auskommentiert ist, geht dar nichts mehr /*_interrupt (0xF4) void timer_stop (void) { CC16 = 0x0FFF; CC17 = 0x0FFF; }*/ void main() { #pragma asm pop R1 pop R2 #pragma endasm int i = 0xFFFF; /* Timerregister Initialisieren */ /* Reload-Register auf 0 setzen */ T7REL = 0x0; /* Steuerungsregister für die CapCom-Timer einstellen */ T78CON = 0x3; //T7M = 0; Timer 7: Timerbetrieb //T7I = 0x3; Prescaler für Takt: T=210ms, dTmin=3,2us /* Interruptsteuerung für Timer 7 */ T7IC = 0x7F; /* T7IE: IRQ enable */ /* ILVL = 0xF; Interruptpriorität max. */ /* GLVL = 0x3; Gruppenpriorität max. */ /* Steuerungsregister für die Vergleichsregister einstellen */ CCM4 = 0x77; /*ACC16 = 0; Compare-Register CC16 zu Timer 7 zuordnen ACC17 = 0; Compare-Register CC17 zu Timer 7 zuordnen CCMOD16 = 0x7; Set output on each match für CC16 CCMOD17 = 0x7; Set output on each match für CC17 */ /* Werte in Vergleichsregister schreiben */ CC16 = 0x8000; /* Compare-Register 16: 50% */ CC17 = 0x8000; /* Compare-Register 17: 50% */ T7R = 1; /* Timer 7: Start */ i = 0x8000; //while(T7IR != 1) while(i > 0) { i = i - 1; CC16 = i; CC17 = i; } T7R = 0; } C-Code-Ende------------------ Problem 1: CC16 bzw. CC17 lassen sich nicht dekrementieren. Problem 2: Wenn der Programmteile für die Dekrementierung der Vergleichsregister herausgenommen wird und stattdessen die Interruptroutine aktiviert wird, dann rührt sich gar nichts mehr. Was mache ich da falsch? Gru�, Harald | ||
Antwort schreiben Antworten: Re: PWM - verschiedene Probleme (von André H. - 19.11.2004 12:38) |