ma così facendo,se applico 1 Hz a RA4 e settando nel registro OPTION il bit TOCS a 1 e PSA a 1,arriva direttamente al registro tmr0 l'impulso di un secondo...e prima che generi un interrupt dovranno passare 255 secondi o sbaglio?
...un'altra confusione mentale: io nel programma che ho scritto genero il ritardo di un secondo chiamando (CALL Delay1s) utilizzando l'interrupt come viene chiamato il ritardo?
(scusate ma vorrei capire il meccanismo)
Ottenere 1 Hz precisissimo, 16f84a
Moderatore:
Paolino
0
voti
Ultima modifica di
carlomusumeci il 5 apr 2015, 18:59, modificato 1 volta in totale.
-

carlomusumeci
353 5 7 - Sostenitore

- Messaggi: 526
- Iscritto il: 8 apr 2011, 0:35
0
voti
Se tu usi il 4060 con il 4013 la frequenza di 1 Hz già ce l'hai e a questo punto chi se lo infischia il TMR0 ?
Se vuoi sfruttare una interruzione con il micro ogni 1 s, usando il circuito postato ti basta collegare l'uscita dell' oscilatore al pin RB0/IINT cosi:
Attenzione che non ho controllato il circuito qui sopra con i datasheet. Suppongo lo avrai controllato tu !

Se vuoi sfruttare una interruzione con il micro ogni 1 s, usando il circuito postato ti basta collegare l'uscita dell' oscilatore al pin RB0/IINT cosi:
Attenzione che non ho controllato il circuito qui sopra con i datasheet. Suppongo lo avrai controllato tu !

0
voti
quindi ad esempio le istruzioni che incrementano le unità le metto dentro il vettore di interrupt
ad esempio
ad esempio
- Codice: Seleziona tutto
0x04
;interrupt
incf UNITA ;incrementa display unita'
RETFIE
-

carlomusumeci
353 5 7 - Sostenitore

- Messaggi: 526
- Iscritto il: 8 apr 2011, 0:35
0
voti
Più o meno si, in C io farei così:
ovviamente con tutte le definizioni e robe che servono...
- Codice: Seleziona tutto
void gpioISR()
{
contatore++
}
...
...
//main
void main()
{
//funzione per fare cambiare il valore nel display
}
ovviamente con tutte le definizioni e robe che servono...
0
voti
vabene ragazzi il problema è che facendo avvenire un interrupt ogni secondo non potrei utilizzare il PIC per svolgere anche altre operazioni...poiché il programma viene interrotto in continuazione...quindi forse meglio cercare di capire come fare utilizzando il tmr0...
-

carlomusumeci
353 5 7 - Sostenitore

- Messaggi: 526
- Iscritto il: 8 apr 2011, 0:35
0
voti
Scusami, ma se vuoi una cosa precisissima al massimo devi comunque usare un interrupt (a parer mio) poi in un secondo il processore dovrebbe riuscire a fare tante di quelle istruzioni che anche se venisse interrotto 1 volta al secondo non cambierebbe tanto, il tutto dipende da cosa ci devi fare in contemporanea...
0
voti
Devo incrementare 2 registri,Decine e Unita,,, ma se dovrei fare un orologio dovranno essere 4 Display=4 registri...non diventerebbe un po complicato fare tutto dall'interrupt?
non sarebbe meglio utilizzare una " CALL" che contenga il perfetto ritardo di un secondo? o sarebbe una cosa infattibile?
perche io nel programma che ho scritto ho fatto così e effettivamente tutto funziona ma non è molto preciso...sarebbe cosa poco corretta generare il ""secondo"" in questo modo? senza scomodare componenti esterni?
non sarebbe meglio utilizzare una " CALL" che contenga il perfetto ritardo di un secondo? o sarebbe una cosa infattibile?
perche io nel programma che ho scritto ho fatto così e effettivamente tutto funziona ma non è molto preciso...sarebbe cosa poco corretta generare il ""secondo"" in questo modo? senza scomodare componenti esterni?
-

carlomusumeci
353 5 7 - Sostenitore

- Messaggi: 526
- Iscritto il: 8 apr 2011, 0:35
0
voti
Usa l'interruzione per attivare un flag e lo gestisci nel programma principale..
Poi non è che per incrementare di uno un valore ci voglia chissà quanto tempo ... tra una interruzione e l'altra in un secondo, con un clock a 4 MHz di tempo ne hai..
Osserva bene i diagrammi temporali dei tempi di istruzioni (se non ricordo male i PIC impieghino 4 cicli di clock per ciascuna) e fatti i tuoi conti.
Prova..

Poi non è che per incrementare di uno un valore ci voglia chissà quanto tempo ... tra una interruzione e l'altra in un secondo, con un clock a 4 MHz di tempo ne hai..
Osserva bene i diagrammi temporali dei tempi di istruzioni (se non ricordo male i PIC impieghino 4 cicli di clock per ciascuna) e fatti i tuoi conti.
Prova..

Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 19 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


