- Messaggi: 8
- Ringraziamenti ricevuti 0
interrupt e pickit2
12 Anni 6 Mesi fa #1
da peperlizio
Fabrizio
interrupt e pickit2 è stato creato da peperlizio
Ciao a tutti,
una curiosità.
per mesi mi sono rassegnato all'idea di non essere in grado di lavorare con gli interrupt.
ultimamente ho riprovato seguendo le orme dell'ottimo c18stepbystep.
poi, in un progetto lascio il codice, avvio il prototipo con il pickit2 scollegato e meravigliosamente funziona!! lo ricollego e non rifunziona...
perché?
allego un estratto del codice:
#define BTN_IN LATBbits.LATB0
#define BTN_OUT LATBbits.LATB2
#define LED_IN LATBbits.LATB1
#define LED_OUT LATBbits.LATB3
...
// B0 e B2 in (btn)
// B1 e B3 out (led)
//
B76543210
TRISB = 0b11110101;
LATB = 0x00;
...
void High_Int_Event (void); //prototipo
#pragma code high_interrupt_vector = 0x08 //dichiarazione del vettore di interruzione
void high_interrupt(void){
_asm GOTO High_Int_Event _endasm //salto per la gestione dell'interrupt
}
#pragma code
#pragma interrupt High_Int_Event //associa la gestione delle interruzioni alla funzione High_Int_Event
void High_Int_Event (void) { //Funzione per la gestione dell'interruzione
if(INTCONbits.RBIF==1){
if(PORTBbits.RB0==0){
LED_IN=1;
delay_ms(1000);
LED_IN=0;
}
if(PORTBbits.RB2==0){
LED_OUT=1;
delay_ms(1000);
LED_OUT=0;
}
INTCONbits.RBIF=0; //azzera il flag di interrupt
}
}
una curiosità.
per mesi mi sono rassegnato all'idea di non essere in grado di lavorare con gli interrupt.
ultimamente ho riprovato seguendo le orme dell'ottimo c18stepbystep.
poi, in un progetto lascio il codice, avvio il prototipo con il pickit2 scollegato e meravigliosamente funziona!! lo ricollego e non rifunziona...
perché?
allego un estratto del codice:
#define BTN_IN LATBbits.LATB0
#define BTN_OUT LATBbits.LATB2
#define LED_IN LATBbits.LATB1
#define LED_OUT LATBbits.LATB3
...
// B0 e B2 in (btn)
// B1 e B3 out (led)
//
B76543210
TRISB = 0b11110101;
LATB = 0x00;
...
void High_Int_Event (void); //prototipo
#pragma code high_interrupt_vector = 0x08 //dichiarazione del vettore di interruzione
void high_interrupt(void){
_asm GOTO High_Int_Event _endasm //salto per la gestione dell'interrupt
}
#pragma code
#pragma interrupt High_Int_Event //associa la gestione delle interruzioni alla funzione High_Int_Event
void High_Int_Event (void) { //Funzione per la gestione dell'interruzione
if(INTCONbits.RBIF==1){
if(PORTBbits.RB0==0){
LED_IN=1;
delay_ms(1000);
LED_IN=0;
}
if(PORTBbits.RB2==0){
LED_OUT=1;
delay_ms(1000);
LED_OUT=0;
}
INTCONbits.RBIF=0; //azzera il flag di interrupt
}
}
Fabrizio
Si prega Accedi o Crea un account a partecipare alla conversazione.
- peperlizio
- Autore della discussione
- New Member
Riduci
Di più
12 Anni 6 Mesi fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: interrupt e pickit2
Ciao,
il programmatore potrebbe forzare in stato di Reset la CPU bloccando dunque l'esecuzione del programma.
Una volta che colleghi il PICKIT prova a rilasciare il reset del programmatore tramite MPLAB (ovvero senza scollegarlo fisicamente).
Saluti,
Mauro
il programmatore potrebbe forzare in stato di Reset la CPU bloccando dunque l'esecuzione del programma.
Una volta che colleghi il PICKIT prova a rilasciare il reset del programmatore tramite MPLAB (ovvero senza scollegarlo fisicamente).
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
12 Anni 6 Mesi fa #3
da peperlizio
Fabrizio
Risposta da peperlizio al topic Re: interrupt e pickit2
No.
non è quello.
ilcodice gira.
Ci sono rimasto male.
con il programmatore collegato, pigiando sul pulsante non succede niente.
scollego, naturalmente riavvia, ma tutto funzia meravigliosamente.
mah!
tutte a me le cose strane...
non è quello.
ilcodice gira.
Ci sono rimasto male.
con il programmatore collegato, pigiando sul pulsante non succede niente.
scollego, naturalmente riavvia, ma tutto funzia meravigliosamente.
mah!
tutte a me le cose strane...
Fabrizio
Si prega Accedi o Crea un account a partecipare alla conversazione.
- peperlizio
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 8
- Ringraziamenti ricevuti 0
12 Anni 6 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: interrupt e pickit2
Ciao,
i pulsanti che condividono le linee del programmatore e' normale che non funzionino poiché il programmatore fa da padrone sulle linee di programmazione (quando collegato).
Quali sono i pulsanti che a te non funzionano?
Saluti,
Mauro
i pulsanti che condividono le linee del programmatore e' normale che non funzionino poiché il programmatore fa da padrone sulle linee di programmazione (quando collegato).
Quali sono i pulsanti che a te non funzionano?
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
12 Anni 6 Mesi fa - 12 Anni 6 Mesi fa #5
da peperlizio
Fabrizio
Risposta da peperlizio al topic Re: interrupt e pickit2
Ciao
i pulsanti sono quelli che chiamo btnin e btnout
collegati alle porte b0 e b2
i pulsanti sono quelli che chiamo btnin e btnout
collegati alle porte b0 e b2
Fabrizio
Ultima Modifica 12 Anni 6 Mesi fa da peperlizio.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- peperlizio
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 8
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.