millis, ktorý kod bude lepší

Zde si můžeme předat nějaké ty zkušenosti.
  • Advertisement

millis, ktorý kod bude lepší

Příspěvekod Karo88 » ned 22. říj 2023 21:23:17

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();
Uživatelský avatar
Karo88
Chcíplotina
Chcíplotina
 
Příspěvky: 1
Registrován: čtv 19. říj 2023 8:44:59

Re: millis, ktorý kod bude lepší

Příspěvekod deary9 » ned 10. pro 2023 12:29:55

Díky za informace, opravdu užitečné.
Uživatelský avatar
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ěvekod mircokhatan » pon 15. led 2024 15:40:24

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.
Uživatelský avatar
mircokhatan
Chcíplotina
Chcíplotina
 
Příspěvky: 1
Registrován: pon 15. led 2024 15:38:09


Zpět na Arduino


  • Advertisement
SvetHostingu.cz - ideální webhosting

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník