Aiuto per codice in c un pulsante per una frequenz
13 Anni 8 Mesi 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
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
- Moderator
Riduci
Di più
13 Anni 8 Mesi fa #12
da Guido
Risposta da Guido al topic Re: Aiuto per codice in c un pulsante per una frequenz
Spiegazione eccellente, grazie d'esistere.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Guido
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 583
- Ringraziamenti ricevuti 1
13 Anni 8 Mesi 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
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.
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.