timer 16 bit w AVR

Jun 19, 2005 1 Replies

Witam Chcia³bym dowiedzieæ siê czy przy ustawianiu licznika 16bit w AVR koniecznie musz± byæ zablokowane przerwania na czas tych ustawieñ, czy te¿ mo¿na wpisywaæ do rejestrów przy w³±czonych przerwaniach. Czy przedsatwiona poni¿ej procedura jest prawid³owa? Za wszelkie info dziêkuje i pozdrawiam.



//------------ Obs³uga przerwania SIGNAL(SIG_OVERFLOW1) { TCNT1H=1; //odswie¿ sta³± czasow± TCNT1L=0; PORTB^=1<<PB6; } //------------Program g³ówny sei(); .......... //tre¶æ programu cli(); //czy blokowanie przerwañ jest konieczne TCNT1H=1; TCNT1L=0; TCCR1B=0x5; //preskaler sbi(TIMSK,TOIE1); //zgoda na przerwanie sei();



Witam. Przerwania nie muszą być blokowane. Podczas wykonywania procedury obsługi przerwania, wszystkie przerwania są automatycznie blokowane przez wyzerowanie globalnej flagi przerwań I. Zamiast wpisywać kolejno wartości do rejestrów TCNT1H i TCNT1L, można to zrobić tak: TCNT1=0x0100;, efekt będzie taki sam.

Stroczek napisał(a):

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required