Discussione: Programmatore pic?
Visualizza messaggio singolo
Vecchio 14 novembre 05, 13:45   #14 (permalink)  Top
MSchiepp
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Il PIC non dispone di un interrupt vettorizzato, dove cioè ad ogni periferica che scatena l'interrupt corrisponde un indirizzo in cui mettere il codice relativo a quel particolare interrupt.
Per gestire interrupt diversi bisogna scrivere il codice all'indirizzo di interrupt ugule per tutti (0x0004) testando i vari flag che specificano quale interrupt è avvenuto ed eventualmente quale pin ha cambiato stato.
Nel caso del F84 ci sono solo 4 possibili interrupt (RB0, Timer0, modifica di POrtB[7:4], scrittura EEPROM completata) e ciascuno setta un flag specifico (Vedi registro INTCON: INTF per RB0, T0IF per il timer, RBIF per PORTB[7:4] e EEIF nel registro EECON1 per la EEProm).

Per ovvi motivi non è possibile interrompere un interrupt con uno a priorità più alta (dato che è uno solo!) e durante l'esecuzione di tutto il codice associato all'interrupt viene disabilitata la possibilità di riceverne un altro; all'uscita dal codice di interrupt con l'istruzione apposita (RETFIE) l'interrupt viene riabilitato.

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando