geht es um Timer1 (eins)?timer1_init(); // init Timer1
TIMSK |= (1<<TOIE0); // timer0
wieso denn 'TOIE0' da ist ja timer0 (nul)
mit
TIMSK &= ~0x3c;
werden ja alle timer1 interrupt ausgeschaltet
gruss
Henk
Hallo,
ich möchte aller 3 sekunden eine aufgabe (Beschleunigen) ausführen, doch es funktioniert nicht![]()
der Code sind folgendermaßen aus (gekürzt):
Woran kann das liegen ?Code:#define Task_1 0 volatile unsigned int Timer1_ms; volatile unsigned char TaskFlags; int main(void) { init(); // init ports && ext Interrupts ioinit(); // init COM fdevopen(uart_putchar, NULL, 0); timer1_init(); // init Timer1 TIMSK |= (1<<TOIE0); // timer0 twi_init(); sei(); // Interrupts aktivieren ... if ( TaskFlags & ( 1 << Task_1) ) { TaskFlags &= ~(1<< Task_1); .... } else { ... } } void timer1_init(void) { TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<WGM10); TCCR1B = (0<<CS12) | (0<<CS11) | (1<<CS10); TIMSK &= ~0x3c; OCR1A = 0; OCR1B = 0; } SIGNAL (SIG_OVERFLOW0) { Timer1_ms++; if(Timer1_ms % 3 == 0) // % 3 == mod 3 for 3 seconds { TaskFlags |= ( 1<< Task_1 ); } }
danke
geht es um Timer1 (eins)?timer1_init(); // init Timer1
TIMSK |= (1<<TOIE0); // timer0
wieso denn 'TOIE0' da ist ja timer0 (nul)
mit
TIMSK &= ~0x3c;
werden ja alle timer1 interrupt ausgeschaltet
gruss
Henk
Hallo Henk,
ich benutze Timer1 für die PWM und Timer0 wollte ich für den Task.
ok ich versuch das mal in der "void timer1_init(void)" nur auf Timer1 zustellen , aber dennoch dürfte es kaum was ändern oder ? Denn nach dem ich die init aufgerufen hab schlte ich die Interrupts für Timer0 mit " TIMSK |= (1<<TOIE0); "ein, oder seh ich das verkehrt ?
gruss
Alex
*Grummel*
Was funktioniert denn nicht???
Fehler beim Compilieren, stürzt ab, falsche Interruptrate, geht nur manchmal, nur das geht nicht, ...
Disclaimer: none. Sue me.
Hallo,
also es kommt kein Fehler beim Compilieren, es wird einfach nur nicht dieser Teil ausgefüht :
Und im Moment weiß ich noch nicht warum!!! HAbt Ihr eine Idee???Code:if ( TaskFlags & ( 1 << Task_1) ) { TaskFlags &= ~(1<< Task_1); .... }
Danke
Da sollte mindestens eine Schleife drum, sonst landest du nach verlassen von main in exit (Endlosschleife).
Disclaimer: none. Sue me.
Hallo,
das ganze befindet sich in einer Schleife, ich hab nur aus Gründen der Lesbarkeit den Sourcecode gekürzt. ...
Bist du absolut sicher, daß dein Fehler nicht in den ... steckt?
So ist's nur rumgerate...
Bist du sicher, daß deine ISR weniger als 256 Takte braucht? Immerhin dividierst du da 16-Bit-Werte!! (was eigentlich unnötig ist).
Die Initialisierung von Timer0 steht auch irgendwo in den Pünktchen.
*Würmer-aus-der-Nase-zieh-und-Glaskugel-auspack*
Disclaimer: none. Sue me.
ok ok ... mein Fehler, ich hab einen Schreibfehler bei der Initialisierung von Timer0 gehabt und daher ging es nicht. Nun läuft alles.
Danke noch mal an Alle.
Alecs
Lesezeichen