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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • viktor70
  • New Member
  • New Member
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
  • Premium Member
Di più
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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • viktor70
  • New Member
  • New Member
Di più
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;

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Claudio_F
  • Premium Member
  • Premium Member
Di più
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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • viktor70
  • New Member
  • New Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login