Aiuto per codice in c un pulsante per una frequenz

13 Anni 1 Mese fa #11 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Aiuto per codice in c un pulsante per una frequenz
Ciao,

La direttiva

#pragma config PBADEN = OFF

permette in fase di programmazione d´impostare come digitali gli ingressi analogici della PORTB, da cui il nome PBxxxx e non quelli della PORTA / PORTE.
Faccio presente che una volta impostati i pin della PORTB come analogici o digitali, non e´ possibile piu´ cambiarli, a meno di cambiare il codice, ricompilare e programmare il PIC (alcuni programmatori permettono anche di cambiare il solo bit di configurazione quindi non e´ necessario ricompilare ma solo programmare, cambiando opportunamente il bit di configurazione).
Per la PORTA bisogna far uso dei registri associati al ADC (Analo to Digital Converter).
In particolare i pin vengono impostati come analogici o digitali per mezzo del registro ADCON1 (Nel PIC18F4550).

Per impostare tutti i pin come digitali bisogna scrivere:

ADCON1 = 0x0F;
PORTA = 0x00;
TRISA = ... ; //lo imposti come ti serve


Da notare che se vuoi usare il pin analogico AN1, sei costretto ad impostare come analogico anche AN0.
Allo stesso modo se vuoi usare AN3 sei costretto ad impostare AN2, AN1, AN0 come analogici.
Questo porta alcuni vincoli nella fase di progettazione e assegnazione dei pin. Questo e´ valido per molti PIC, come per esempio il PIC18F4550, PIC18F4580, PIC16F877...
Alcuni moduli ADC come quello nel PIC18F4431 permettono invece di impostare individualmente i pin analogici dando quindi maggior flessibilità.
Si noti in ultimo che i pin possono essere impostati analogici o digitali anche durante l´esecuzione del programma, diversamente dal caso dei pin analogici posti sulla PORTB. Alcune variazioni possono essere presenti da PIC a PIC visto che sono presenti diverse versioni per il modulo ADC, quindi e´ sempre bene far riferimento al datasheet del PIC utilizzato.

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
13 Anni 1 Mese fa #12 da Guido
Spiegazione eccellente, grazie d'esistere.

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

  • Guido
  • Platinum Member
  • Platinum Member
Di più
13 Anni 1 Mese fa #13 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Aiuto per codice in c un pulsante per una frequenz
...bene.

Continua ad applicarti e non tralasciare lo studio in favore della pratica.
La risoluzioni di problemi e´ agevolata dalla conoscenza.

Nel caso specifico e´ particolarmente vero, visto che non ti puoi inventare o immaginare l´esistenza e il significato dei registri. questa conoscenza può venire solo dalla lettura di un datasheet o da una documentazione adeguata.

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
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