Da poco sto studiando i microcontrollori ed in particolare sto utilizzando la board AVR Butterfly (con ATmega169) insieme al book "C programming for microcontrollers" of SmileyMicros.
Mi sono soffermato sulla routine 'OSCCAL_calibration' di calibrazione dell'oscillatore interno (pagina 122-123 del book) e non capisco perché sono prese come soglia superiore e inferiore 6120 e 6250.
Quale dovrebbe essere il valore ottimale (teorico) di impulsi che il timer/counter1 dovrebbe contare affinché la calibrazione sia perfetta? La routine considera accurato la calibrazione se il timer/counter1 conta tra i 6120 e 6250 impulsi.
Considerando che il timer/counter2 è collegato ad un cristallo esterno di quarzo con f=32768 Hz ed ogni ciclo impiega circa 30.5175 microseconds e quando si raggiunge quota 200 (valore assegnato al registro OCR2A) sono passati 6103.5 microseconds.
Il clock di sistema ha f=8 MHz (8192 KHz) e con il prescaler impostato a 8 otteniamo circa 1024 KHz, questo clock alimenta il timer/counter1 e ogni ciclo impiega circa 0.9765625 microseconds.
Quindi facendo 2 conti : 6103.5 / 0.9765625 = 6250
Perché questo valore? Se nel libro c'e' come soglia 6120-6250 mi aspettavo di trovare la media dei due valori (6120+6250)/2 come valore ideale. Sapete fornirmi una spiegazione?
Grazie