Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Stranezza lettura pin RB0/INT0 del PIC18

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Stranezza lettura pin RB0/INT0 del PIC18

Messaggioda Foto Utenteivanpascolo » 30 mar 2015, 21:11

Ancora una volta a chiedere aiuto.
Sto eseguendo la lettura di un trasduttore volumetrico per leggere i litri di acqua con uscita open collector abilitando l'interrupt INT0 sul pin RB0. Tutto funziona perfettamente ( l'ho abilitato sul fronte di discesa) ma, volendo fare un deounce pensavo di riuscire a leggere il pin RB0 ma niente, riesco solamente a leggere il registro LAT del pin corrispondente. Per quale motivo non riesco a leggere il pin leggendo il registro PORTB ? Il micro è un PIC18F46K22. Grazie
Avatar utente
Foto Utenteivanpascolo
20 3
New entry
New entry
 
Messaggi: 71
Iscritto il: 29 set 2014, 20:44

0
voti

[2] Re: Stranezza lettura pin RB0/INT0 del PIC18

Messaggioda Foto UtenteWALTERmwp » 1 apr 2015, 2:02

Ciao Foto Utenteivanpascolo, la lettura di PORTB(RB0) la esegui all'interno della routine di interrupt ?

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[3] Re: Stranezza lettura pin RB0/INT0 del PIC18

Messaggioda Foto Utenteivanpascolo » 1 apr 2015, 8:43

Si, la faccio proprio all'interno dell'interrupt.
Avatar utente
Foto Utenteivanpascolo
20 3
New entry
New entry
 
Messaggi: 71
Iscritto il: 29 set 2014, 20:44

0
voti

[4] Re: Stranezza lettura pin RB0/INT0 del PIC18

Messaggioda Foto UtenteWALTERmwp » 1 apr 2015, 11:03

E' solo una prova: esegui l'interrogazione del pin fuori dalla routine di interrupt quando una variabile si trova ad determinato stato logico che, naturalmente, è stato impostato all'interno della routine stessa quando ci sei entrato per gestire il tuo evento in causa; lo stato logico, subito a seguire, bisogna ricordarsi di annullarlo.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[5] Re: Stranezza lettura pin RB0/INT0 del PIC18

Messaggioda Foto UtentePaolino » 1 apr 2015, 12:26

Nella ISR prova a copiare il contenuto di PORTB su di una variabile:

Codice: Seleziona tutto
myportB = PORTB;
if ((myportB&0x01) == 0)
{
    /* metti qui il tuo codice */
}


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)

1
voti

[6] Re: Stranezza lettura pin RB0/INT0 del PIC18

Messaggioda Foto Utenteivanpascolo » 1 apr 2015, 20:18

Grazie per i suggerimenti ....ma ho trovato l'inghippo.
Vi spiego il tutto perché è un'esperienza che potrebbe tornare utile.
Il volumetrico ha in uscita un transistor open collector che ho collegato a 3v3 con una 4k7, dopodiché dal collettore ho fatto un RC con una 4k7 e un 100nF, da qui entro nel micro con un'altra 4k7.
Ho abilitato l'interrupt sul fronte di discesa e subito dopo l'evento volevo testare per 20 volte il PORTB0 per verificare se era sempre a zero (l'ho fatto come filtro in caso di impulsi indesiderati).
La lettura del LATB lasciamo stare, ho preso fischi per fiaschi.
In pratica arrivava l'interrupt sul fronte di discesa ma ... sul PORTB0 nente livello basso.
Allora leggo i fogli tecnici e vedo che l'ingresso INT0 ha una soglia di intervento diversa da quella della porta, precisamente INT0 interviene a circa 0,65 volt mentre il PORTB a circa 0,5v.
Con l'oscilloscopio vedo che la mia onda quadra per passare da 0,65 a 0,5V impiega la bellezza di 200us, molto di più del tempo necessario per i 20 cicli di filtro che ho fatto.
Per avere una conferma, appena entrato nella funzione di interrupt metto un ritardo di 100us prima delle 20 letture e ... giustamente niente da fare. A questo punto metto 200us ed ecco che sul PORTB0 riesco a fare le mie 20 letture.
Visto che il ritardo di 200us è troppo, cambio il condensatore con uno da 330pF (ora il tempo per passare da 0,65v a 0,5v è diventato circa 1us) e con un ritardo in ingresso di 5us tutto funziona.
Il micro è un 18F46K22 con oscillatore impostato a 64MHz e quindi i cicli duravano davvero poco.
Spero di essere stato chiaro ma soprattutto utile.

Un saluto.
Avatar utente
Foto Utenteivanpascolo
20 3
New entry
New entry
 
Messaggi: 71
Iscritto il: 29 set 2014, 20:44

0
voti

[7] Re: Stranezza lettura pin RB0/INT0 del PIC18

Messaggioda Foto UtenteWALTERmwp » 1 apr 2015, 21:37

ivanpascolo ha scritto:Grazie per i suggerimenti
prego.
ivanpascolo ha scritto:Spero di essere stato chiaro ma soprattutto utile.
sono esperienze dirette che una volta condivise credo possano essere certo di aiuto ad altri.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[8] Re: Stranezza lettura pin RB0/INT0 del PIC18

Messaggioda Foto UtenteDryden » 2 apr 2015, 13:01

Grazie per l'esplicazione della soluzione.

Questo è uno di quei "classici" casi che si risolveva in un attimo se ci fosse stato uno schema elettronico.
Avatar utente
Foto UtenteDryden
20 4
New entry
New entry
 
Messaggi: 97
Iscritto il: 1 gen 2011, 14:37
Località: Bolzano

0
voti

[9] Re: Stranezza lettura pin RB0/INT0 del PIC18

Messaggioda Foto Utenteivanpascolo » 2 apr 2015, 20:47

Ok, me lo ricorderò per la prossima volta.
Avatar utente
Foto Utenteivanpascolo
20 3
New entry
New entry
 
Messaggi: 71
Iscritto il: 29 set 2014, 20:44


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti