Hi, ich habe folgenden Code, bei dem Zunächst AVR Studio TICIE nicht erkennt. Was soll passieren? Es soll ein Timer1 gestartet werden, wenn eine fallende Flanke erkannt wird. Je nachdem, wird der Timer auf 0 gesetzt (entscheidung per flag) und gezählt, bis der nächste interrupt durch fallende flanke kommt. Der Timer wird gestoppt, Interrupts ausgeschaltet, der Wert des Registers gespeichert. Der Code funktioniert allerdings nicht korrekt. Der Mikrocontroller scheint "neu zu starten". (Es ist ein LCD angeschlossen und dieses wird nach ca. 3 s neu initialisiert. Generell wird der Timer aktiviert. In meiner main funktion passiert dann nichts mehr. Sinn ist es, eine zeit von 20-40ms zu messen. Habe ich evtl. ein Interrupt flag falsch gesetzt? Ich habe mich dabei an die Beschreibung von hier gehalten: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR#16-Bit_Timer.2FCounter void TIMER1_enable(void){ TCCR1B&=~(1<<CS12); TCCR1B|=(1<<CS11); TCCR1B|=(1<<CS10); TCCR1B&=~(1<<ICES1);//Fallende Flanke TIMSK|=(1<<TICIE); sei(); } ISR(TIMER1_CAPT_vect){ if(flag==1){ time=ICR1;//Wert sichern //timer stoppen Interrupts ausschalten cli(); TIMSK&=~(1<<TICIE); TCCR1B&=~(1<<CS12); TCCR1B&=~(1<<CS11); TCCR1B&=~(1<<CS10); flag=0; COMMAND(LCD_COMMAND_CLEAR); //gespeichertern Wert benutzen TIMER1_enable(); //danach Timer starten, interrupts einschalten } if(flag==0){ //Timer Zählregister Nullen TCNT1H=0x00; TCNT1L=0x00; //Timer läuft weiter. } }
Achso, ich sollte noch erwähnen, dass ich den ICP Pin konstant auf Masse liegen lasse.
Hi, Fehler gefunden. Laut dem Tutorial ist es beim Mega 8 wohl das Bit nr 3. Ich habe, da mein AVR STUDIO das TICIE nicht erkennt einen define gemacht mit 3. Ein Blick ins Datenblatt sagt mir, dass es bit 5 ist. Nun funktioniert es :)
Hi
>Fehler gefunden.
Das Bit heisst beim ATMega8535 offiziell: TICIE1 .
MfG Spess
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.