Problemi con ritardo timer0
Buongiorno,
sto programmando un PIC 12F509 in assembly con MPLabX.
Il PIC pilota un led RGB a tre differenti frequenze. Il colore e la frequenza di lampeggio del led sono selezionabili da due pulsanti.
Un pulsante cambia la frequenza, l'altro oltre a cambiare il colore se premuto per più di 2 secondi manda il PIC in sleep e se premuto nuovamente per più di 2 secondi lo fa svegliare.
Il programma funziona bene ma ora vorrei aggiungere un'altra funzione:
un altro led che si accenderà per 1 secondo ogni 20 secondi di lampeggio.
Per il momento sto testando la funzione escludendo le altre due, cioè durante i test non premo nessun pulsante.
Sto usando per temporizzare il Timer0 impostato con un prescaler 256 e precaricandolo con un valore di 2, questo mi darà un overflow di circa 65ms.
Il problema è che nel mondo reale il led si accende dopo circa 20 secondi, ma poi non si spegne più.
Un'altra cosa, testando con il simulatore di MPLAB e usando lo stopwatch secondo lui il led si dovrebbe accendere dopo 46 secondi ma così non è nella realtà, infatti si accende (correttamente) dopo 20 secondi.
Allego l'.asm zippato
sto programmando un PIC 12F509 in assembly con MPLabX.
Il PIC pilota un led RGB a tre differenti frequenze. Il colore e la frequenza di lampeggio del led sono selezionabili da due pulsanti.
Un pulsante cambia la frequenza, l'altro oltre a cambiare il colore se premuto per più di 2 secondi manda il PIC in sleep e se premuto nuovamente per più di 2 secondi lo fa svegliare.
Il programma funziona bene ma ora vorrei aggiungere un'altra funzione:
un altro led che si accenderà per 1 secondo ogni 20 secondi di lampeggio.
Per il momento sto testando la funzione escludendo le altre due, cioè durante i test non premo nessun pulsante.
Sto usando per temporizzare il Timer0 impostato con un prescaler 256 e precaricandolo con un valore di 2, questo mi darà un overflow di circa 65ms.
Il problema è che nel mondo reale il led si accende dopo circa 20 secondi, ma poi non si spegne più.
Un'altra cosa, testando con il simulatore di MPLAB e usando lo stopwatch secondo lui il led si dovrebbe accendere dopo 46 secondi ma così non è nella realtà, infatti si accende (correttamente) dopo 20 secondi.
Allego l'.asm zippato