pic16 e interrupt

Mar 16, 2009 1 Replies

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-


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-

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required