Stránka 1 z 1

millis, ktorý kod bude lepší

PříspěvekNapsal: ned 22. říj 2023 21:23:17
od Karo88
Ahojte,
riešim presne časovanie cez timer1 na 1ms chcem sa poradiť ktorý kód bude lepší.
Ďakujem za všetky postrehy
Kód: Vybrat vše
cli();//stop interrupts
//set timer1 interrupt at 1kHz
TCCR1A = 0;// set entire TCCR1A register to 0
TCCR1B = 0;// same for TCCR1B
TCNT1  = 0;//initialize counter value to 0
// set timer count for 1khz increments
OCR1A = 1999;// = (16*10^6) / (1000*8) - 1
//had to use 16 bit timer1 for this bc 1999>255, but could switch to timers 0 or 2 with larger prescaler
// turn on CTC mode
TCCR1B |= (1 << WGM12);
// Set CS11 bit for 8 prescaler
TCCR1B |= (1 << CS11); 
// enable timer compare interrupt
TIMSK1 |= (1 << OCIE1A);
sei();//allow interrupts


alebo

Kód: Vybrat vše
cli();
 // Nastavenie časovača 1 na generovanie prerušenia každú 1 ms
  TCCR1A = 0;
  TCCR1B = (1 << WGM52) | (1 << CS51) | (1 << CS50); // Režim CTC a preddeľovač 64
  OCR1A = 249; // Nastavenie hodnoty porovnania pre generovanie prerušenia každých 1 ms
  TIMSK1 = (1 << OCIE1A); // Povolenie prerušenia pri dosiahnutí hodnoty porovnania
sei();

Re: millis, ktorý kod bude lepší

PříspěvekNapsal: ned 10. pro 2023 12:29:55
od deary9
Díky za informace, opravdu užitečné.

Re: millis, ktorý kod bude lepší

PříspěvekNapsal: pon 15. led 2024 15:40:24
od mircokhatan
Ahojte,

s vaším problémem s časováním přes timer1 na 1ms se mi zdá, že oba kódy mají své výhody. Je to trochu jako vybírat mezi dvěma sprchovými hlavicemi, sprchova hlavice, jedna může mít lepší tlak vody, zatímco druhá může mít širší rozsah spreje – obě jsou dobré, záleží jen na vašich preferencích.

Co se týče prvního kódu, vypadá to, že je to solidní základ pro 1kHz. Použití timeru1 je rozumné, zvláště proto, že potřebujete větší hodnotu než 255. To vám umožňuje přesnější nastavení časování.

Druhý kód, kde nastavujete timer1 s použitím režimu CTC a předělovače 64, vypadá také dobře. Nastavení hodnoty porovnání na 249 pro generování přerušení každých 1 ms je chytrý způsob, jak toho dosáhnout.