Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

pic16f628 interrupt solo su una porta

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] pic16f628 interrupt solo su una porta

Messaggioda Foto Utentecryptos » 4 mag 2010, 14:25

E' possibile abilitare l'interrupt solo su una porta di ingresso ? Per ora sono riuscito ad abilitarlo solo su l'intero gruppo di PortA. Sembrerebbe, leggendo la documentazione relativa al pic16f628 messa a disposizione dal compilatore PIC-C che non sia possibile. Qualcuno ha notizie in merito ?

Questo è il codice che utilizzo per gesitre l'interrupt su un qualsiasi cambio di stato delle porte B.
Codice: Seleziona tutto
#INT_RB
isr(){
... routine di interrupt
}

void main()
{
   enable_interrupts (INT_RB);
   while(1);
}
Avatar utente
Foto Utentecryptos
0 2
 
Messaggi: 32
Iscritto il: 7 apr 2010, 22:46

1
voti

[2] Re: pic16f628 interrupt solo su una porta

Messaggioda Foto UtentePaolino » 4 mag 2010, 14:43

Andiamo con ordine.
cryptos ha scritto:E' possibile abilitare l'interrupt solo su una porta di ingresso ?

Dipende dal tipo di PIC, con il PIC16F628 non si può.
cryptos ha scritto:Sembrerebbe, leggendo la documentazione relativa al pic16f628 messa a disposizione dal compilatore PIC-C che non sia possibile.

Ma non puoi leggerti la documentazione ufficiale di Microchip? Sul datasheet avresti trovato la risposta! E poi: lo sai che puoi sempre modificare i valori dei registri a tuo piacimento, anche se lavori in C e senza usare funzioni di libreria preconfezione, come questa
Codice: Seleziona tutto
enable_interrupts (INT_RB);

:?:

Se alcuni bit di PORTB (e non PORTA, come hai scritto tu all'inizio) relativi all'interrupt-on-change (=IOC) vengono impostati come output, la gestione IOC non avviene su quei bit.
Viceversa, qualora fossero tutti INPUT e hai bisogno dell'IOC solo su un bit, allora la cosa è semplice: nella routine di interrupt ignori gli eventi accaduti a causa degli input che non ti interessano!

In più: se hai bisogno di un solo INPUT con interrupt esterno, usa RB0/INT0.

Prova a buttare giù due righe di codice, così lo si vede tutti insieme.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti