- Codice: Seleziona tutto
while (1){
INTCONbits.TMR0IE = 0;
LATAbits.LATA5 = ~ LATAbits.LATA5 ;
t1 = sys_tick - t0;
LATAbits.LATA5 = ~ LATAbits.LATA5 ;
INTCONbits.TMR0IE = 1;
if ((t1) > 100) {
if ((t1<100)||(t1>101)){
CLRWDT;
}
else t0=sys_tick;
}
}
disabilitando gli interrupt prima di "t1 = sys_tick - t0;" e riabilitandoli subito dopo... e sembra funzionare.
A questo punto è chiaro che mentre il micro fa i calcoli per la sottrazione arriva un interrupt, modifica sys_tick, e continua con un mix di quello che c'era prima e quello che c'è dopo.
Però la soluzione di disabilitare gli interrupt non mi piace anche se il calcolo impiega solo 10us (guardando l'oscilloscopio).

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)


