- Messaggi: 5
- Ringraziamenti ricevuti 0
Problema con RA0 - PIC18F4550
8 Anni 2 Mesi fa #1
da viktor70
Problema con RA0 - PIC18F4550 è stato creato da viktor70
Ciao, sono agli inizi con il PIC18 e ho questo stranissimo problema:
void main(void) {
TRISBbits.RB0=0;
TRISBbits.RB1=0;
TRISBbits.RB2=1;
while(1){
PORTBbits.RB0=~PORTBbits.RB0;
PORTBbits.RB1=~LATBbits.LB2;
Delay1KTCYx(0);
}
}
Questo codice funziona, il led su RB0 lampeggia, il led su RB1 si accende se premo il pulsante su RB2.
Se semplicemente inserisco
ADCON0bits.ADON=0;
ADCON1=15;
TRISAbits.RA0=0;
Il led su RB0 lampeggia per una frazione di secondo, e se premo il pulsante smette di lampeggiare (e RB1 non si accende).
La cosa bella è che se faccio il debug funziona!
Non so dove sbattere la testa... ho provato anche RA1-2, stesso risultato, mentre su RE0 funziona.
Grazie in anticipo per l'aiuto
void main(void) {
TRISBbits.RB0=0;
TRISBbits.RB1=0;
TRISBbits.RB2=1;
while(1){
PORTBbits.RB0=~PORTBbits.RB0;
PORTBbits.RB1=~LATBbits.LB2;
Delay1KTCYx(0);
}
}
Questo codice funziona, il led su RB0 lampeggia, il led su RB1 si accende se premo il pulsante su RB2.
Se semplicemente inserisco
ADCON0bits.ADON=0;
ADCON1=15;
TRISAbits.RA0=0;
Il led su RB0 lampeggia per una frazione di secondo, e se premo il pulsante smette di lampeggiare (e RB1 non si accende).
La cosa bella è che se faccio il debug funziona!
Non so dove sbattere la testa... ho provato anche RA1-2, stesso risultato, mentre su RE0 funziona.
Grazie in anticipo per l'aiuto
Si prega Accedi o Crea un account a partecipare alla conversazione.
- viktor70
- Autore della discussione
- New Member
Riduci
Di più
8 Anni 2 Mesi fa #2
da Claudio_F
Risposta da Claudio_F al topic Problema con RA0 - PIC18F4550
Ciao, a che scopo hai aggiunto le tre linee che non fanno funzionare il programma visto che non fai uso della porta A? "ADCON1=15" disabilita gli ingressi analogici sulla porta A, a che serve "ADCON0bits.ADON=0"? Che compilatore usi? Il primo consiglio come sempre è di dare una letta al libro di Mauro "XC8 Step by step" che trovi nella sezione Libri. Ti accompagna passo passo con esempi via via più complessi, poi l'utilizzo delle librerie ti risparmia tempo e fatica.
Ringraziano per il messaggio: viktor70
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Claudio_F
- Premium Member
Riduci
Di più
- Messaggi: 130
- Ringraziamenti ricevuti 11
8 Anni 2 Mesi fa #3
da viktor70
Risposta da viktor70 al topic Problema con RA0 - PIC18F4550
Ciao, ho aggiunto quelle 3 righe perchè volevo far lampeggiare RA0, ma se nel ciclo while metto
PORTAbits.RA0=~PORTAbits.RA0;
Mi da lo stesso problema (così come RA1,2, eccetera).
Effettivamente disabilitare l'ADC con ADON=0 non servirebbe avendo già settato i pin come digitali.
Utilizzo XC8 e si, sto leggendo l'ottimo libro di Mauro
Vitt
PORTAbits.RA0=~PORTAbits.RA0;
Mi da lo stesso problema (così come RA1,2, eccetera).
Effettivamente disabilitare l'ADC con ADON=0 non servirebbe avendo già settato i pin come digitali.
Utilizzo XC8 e si, sto leggendo l'ottimo libro di Mauro
Vitt
Si prega Accedi o Crea un account a partecipare alla conversazione.
- viktor70
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 5
- Ringraziamenti ricevuti 0
8 Anni 2 Mesi fa #4
da Claudio_F
Risposta da Claudio_F al topic Problema con RA0 - PIC18F4550
1)anche se non è mostrato nel tuo listato immagino hai inizializzato i registri TRIS delle porte. Se usi le librerie di Mauro è tutto più semplice.
2) Se usi la Board Freedom II controlla i ponticelli, alcune porte sono già utilizzate da periferiche della board.
3) Nota a pag. 71 del libro XC8 step by step.: "Dal momento che in scrittura i due registri LAT e PORT sono uguali,
mentre in lettura LAT può evitare dei problemi, quando si utilizza un pin come uscita
è consigliabile utilizzare sempre LAT sia in lettura che in scrittura."
Provato con LATAbits.RA0=~LATAbits.RA0;
2) Se usi la Board Freedom II controlla i ponticelli, alcune porte sono già utilizzate da periferiche della board.
3) Nota a pag. 71 del libro XC8 step by step.: "Dal momento che in scrittura i due registri LAT e PORT sono uguali,
mentre in lettura LAT può evitare dei problemi, quando si utilizza un pin come uscita
è consigliabile utilizzare sempre LAT sia in lettura che in scrittura."
Provato con LATAbits.RA0=~LATAbits.RA0;
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Claudio_F
- Premium Member
Riduci
Di più
- Messaggi: 130
- Ringraziamenti ricevuti 11
8 Anni 2 Mesi fa #5
da viktor70
Risposta da viktor70 al topic Problema con RA0 - PIC18F4550
Ciao, avevo risposto ieri ma mi sa che non l'ha mandata Riassuno
1) si i registri sono inizializzati, il listato al primo post funziona
2) no uso un'altra scheda di sviluppo minimale (composta da PIC18/32, PicKit3, breadboard, 1 led 1 pulsante 1 potenziometro, che vanno connessi a mano quindi nessun conflitto)
3) il problema è che se al primo listato (funzionante) imposto RA0 come output (e basta, nessun'altra istruzione) il programma smette di funzionare.
Vitt
1) si i registri sono inizializzati, il listato al primo post funziona
2) no uso un'altra scheda di sviluppo minimale (composta da PIC18/32, PicKit3, breadboard, 1 led 1 pulsante 1 potenziometro, che vanno connessi a mano quindi nessun conflitto)
3) il problema è che se al primo listato (funzionante) imposto RA0 come output (e basta, nessun'altra istruzione) il programma smette di funzionare.
Vitt
Si prega Accedi o Crea un account a partecipare alla conversazione.
- viktor70
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 5
- 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.