Sempre di corsa, ho buttato giù due conti che spero siano corretti.
Con Fosc = 16MHz, il timer TMR0 si incrementa ogni 0.25 us, valore ottenuto dal rapporto 4/Fosc. TMR0 ha un registro a 8 bit, il che significa che andrebbe in overflow ogni 0.25 * 256 = 64 ms. Valore del tutto insufficiente per te, dobbiamo introdurre un prescaler. Supponiamo di utilizzare un prescaler 1:4: TMR0 si incrementa ogni 4*0.25 = 1ms. Questo numero mi piace
Per far sì che il registro vada in overflow in 100ms, è necessario precaricare un valore diverso da 0 a partire dal quale il micocontrollore inizia a contare. Questo valore è TMR0 = 256-100 = 156
In questo modo, per ciascun millisecondo che trascorre, il registro viene incrementato di un valore. Partendo da 156 fino a 256 abbiamo 100 valori, ossia 100ms.
Per abilitare gli interrupt dobbiamo dare un'occhiata al datasheet. Per quanto concerne TMR0, la risposta all'interrupt va abilitata con
- Codice: Seleziona tutto
INTCON.TMR0IE = 1;
mentre per l'abilitazione dell'IOC va fatta con:
- Codice: Seleziona tutto
INTCON.RBIE = 1;
INTCON.PEIE = 1;
Non basta. L'abilitazione generale dell'interrupt avviene con:
- Codice: Seleziona tutto
INTCON.GIE = 1;
Verifica e poi dimmi se hai altri dubbi.
Ciao.
Paolo.

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)





