millis, ktorý kod bude lepší

Zde si můžeme předat nějaké ty zkušenosti.
Odpovědět
Karo88
Chcíplotina
Chcíplotina
Příspěvky: 1
Registrován: čtv 19. říj 2023 8:44:59

millis, ktorý kod bude lepší

Příspěvek 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();
deary9
Chcíplotina
Chcíplotina
Příspěvky: 1
Registrován: ned 10. pro 2023 12:26:48

Re: millis, ktorý kod bude lepší

Příspěvek od deary9 »

Díky za informace, opravdu užitečné.
mircokhatan
Chcíplotina
Chcíplotina
Příspěvky: 1
Registrován: pon 15. led 2024 15:38:09

Re: millis, ktorý kod bude lepší

Příspěvek 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.
Odpovědět

Zpět na „Arduino“