Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

AVR TIMER_COUNTER_0

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] AVR TIMER_COUNTER_0

Messaggioda Foto UtenteLesStrato » 3 ott 2012, 11:07

Salve a tutti,
stavo scrivendo un codice assembly su avr studio e ho un dubbio sul settaggio d alcuni registri: dovrei realizzare un contatore di 10s (la freq. interna del mcu è d 4 MHz) , secondo voi va bene questo codice? Vi posto la label:
WAIT_10S:
ldi temp , 0
out TCNT0 , temp
ldi temp , 0b00001010
out OCR0 , temp
ldi temp , (1 << FOC0) | (0 << WGM00) | (1 << WGM01) | ( 1 << CS02) | ( 0 << CS01) | (1 << CS00) | ( 0 << COM00) | ( 0 << COM01)
out TCCR0 , temp

In base al datasheet (atmega8535) ho settato i bit dei reg TCCR0 , TCNT0 , OCR0 in questo modo , simulando il codice non m da errori, ma come faccio a capire ke effettivamente conta realmente 10s?
Avatar utente
Foto UtenteLesStrato
-13 3
 
Messaggi: 35
Iscritto il: 20 mar 2012, 23:48

0
voti

[2] Re: AVR TIMER_COUNTER_0

Messaggioda Foto Utentesimo85 » 6 ott 2012, 0:24

Premetto che non conosco l'Assembly AVR 8bit, però devi sicuramente montare il circuito e verificarlo. Un simulatore non è comunque affidabile.

Ciao.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[3] Re: AVR TIMER_COUNTER_0

Messaggioda Foto Utentecyclone » 7 ott 2012, 14:15

@LesStrato
per ottenere un tempo di 10 secondi generando l'interrupt overflow con un timer dell' atmega intanto dovresti utilizzare il timer1 che è a 16bit e non l'8bit (Timer0).
Poi devi impostare il prescaler a 1024 e per finire, con un clock di 4Mhz, devi settare i registri TCNT1H=67H e TCNT1L=69H, inoltre nel caso in cui usi lo stesso timer1 nella modalità CTC devi settare OCR1H=98H e OCR1L=96H.
Con questi valori otterrai un tempo pari a 10000.128 msec con un errore percentuale pari a 0.001%

ciao
Avatar utente
Foto Utentecyclone
86 2
New entry
New entry
 
Messaggi: 64
Iscritto il: 6 feb 2012, 11:38


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti