pic16 e interrupt

ciao!

scuste la domanda quasi banale: nei pic16 (in particolare 16f877) cosa succede quando scatta un interrupt tipo ext0 e c'è una delay di tot milli-secondi in corso?

situazione:

- la isr dell'int_ext0 fa giusto partire un impulso da 1ms su una uscita del micro; int_ext0scatta sul fronte di salita

- l'int0 viene chiamato 100 volte al secondo

mi capita una cosa "strana"... se il main() è semplicemente un loop infinito, quando scatta int_ext0 tutto va bene (int0 e impulso generato sono perfettamente sincronizzati, lo verifico con l'oscilloscopio); se invece nel main() faccio lampeggiare un led (led_on --> attesa 25ms --> led_off --> attesa 725ms) perdo la sincronizzazione fra int_ext0 e l'impulso che la isr genera!

ho provato anche ad usare l'interrupt del modulo pwm/capture/compare... impostando il ccp1 come capture_on_rising ma ottengo lo stesso risultato!!!

invece accorciando l'impulso che genero nella ISR a 500us (anziche 1ms), c'è sincronismo

cos'è che non sto considerando? dove sbaglio???

grazie!

-ice-

Reply to
ice
Loading thread data ...

forse risolto: usando la delay_ms() (compilatore ccs) sia fuori che dentro l'isr, la delay_ms() disabilita tutti gli interrupts per evitare codice rientrante

-ice-

Reply to
ice

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.