- Messaggi: 19
- Ringraziamenti ricevuti 0
dspic30f4011 problema adc
- Raban
- Autore della discussione
- Nuovo Utente
-
Less
Di più
14 Anni 6 Mesi fa #1
da Raban
dspic30f4011 problema adc è stato creato da Raban
Vorrei andare a configurare AN0 AN1 AN2 e AN3 con ingressi analogici e campionarli
contemporaneamente intorno ai 100Ks/s
Ho impostato i registri e campiono correttamente AN1-2-3 ma non riesco a venirne fuori con AN0
vi allego il codice :
ci sono un paio di cose che non mi sono chiare nel datasheet
ADCON2bits.VCFG puo' essere impostato a 0b000 opuure a 0b1xx per avere VrefH=AVDD e VrefL=AVSS , entrambe le impostazioni sono equivalenti ?
contemporaneamente intorno ai 100Ks/s
Ho impostato i registri e campiono correttamente AN1-2-3 ma non riesco a venirne fuori con AN0
vi allego il codice :
Code:
//inizializzazione adc
ADCON1bits.ADON=0;
ADCON1bits.ADSIDL=0; // 0 = Continue module operation in Idle mode
ADCON1bits.FORM=0b00; // 00 = Integer (DOUT = 0000 00dd dddd dddd)
ADCON1bits.SSRC=0b111; // 111 = Internal counter ends sampling and starts conversion (auto convert)
ADCON1bits.SIMSAM=1; // 1 = Samples CH0, CH1, CH2, CH3 simultaneously (when CHPS = 1x)
ADCON1bits.ASAM=1; // 0 = Sampling begins when SAMP bit set
ADCON1bits.SAMP=0; // When ASAM = 0, writing ‘1’ to this bit will start sampling
ADCON2bits.VCFG=0b000; // AVSS AVDD selected
ADCON2bits.CSCNA=0; // do not scan imputs
ADCON2bits.CHPS=0b10; // 1x = Converts CH0, CH1, CH2 and CH3
ADCON2bits.SMPI=0b1111; // 1111 = Interrupts at the completion of conversion for each 16th sample/convert sequence
ADCON2bits.BUFM=0; // 0 = Buffer configured as one 16-word buffer ADCBUF(15...0)
ADCON2bits.ALTS=0; // 0 = Always use MUX A input multiplexer settings
ADCON3bits.SAMC=0b01000; // 01000 = 8 TAD max = 11111 0 32 TAD
ADCON3bits.ADRC=0; // 0 = Clock derived from system clock
ADCON3bits.ADCS=0b001011;// = TCY/2 • (ADCS<5:0> + 11)
ADCHSbits.CH123NB=0b00; // come sotto
ADCHSbits.CH123SB=0; //
ADCHSbits.CH0NB=0; //
ADCHSbits.CH0SB=0b0011; //
ADCHSbits.CH123NA=0b00; // CH1, CH2, CH3 negative input is VREF-
ADCHSbits.CH123SA=0; // CH1 positive input is AN0, CH2 positive input is AN1, CH3 positive input is AN2
ADCHSbits.CH0NA=0; // Channel 0 negative input is VREF-
ADCHSbits.CH0SA=0b0011; // Channel 0 Positive Input Select for MUX A Multiplexer Setting bits Channel 0 positive input is AN3
ADPCFGbits.PCFG0=0; // 0 = Analog input pin in Analog mode AN0/RB0
ADPCFGbits.PCFG1=0; // 0 = Analog input pin in Analog mode AN1/RB1
ADPCFGbits.PCFG2=0; // 0 = Analog input pin in Analog mode AN2/RB2
ADPCFGbits.PCFG3=0; // 0 = Analog input pin in Analog mode AN3/RB3
ADPCFGbits.PCFG4=1; // 0 = Analog input pin in DIGITAL mode AN4/RB4
ADPCFGbits.PCFG5=1; // 0 = Analog input pin in DIGITAL mode AN5/RB5
ci sono un paio di cose che non mi sono chiare nel datasheet
ADCON2bits.VCFG puo' essere impostato a 0b000 opuure a 0b1xx per avere VrefH=AVDD e VrefL=AVSS , entrambe le impostazioni sono equivalenti ?
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Raban
- Autore della discussione
- Nuovo Utente
-
Less
Di più
- Messaggi: 19
- Ringraziamenti ricevuti 0
14 Anni 6 Mesi fa #2
da Raban
Risposta da Raban al topic Re: dspic30f4011 problema adc
mi sono risposto da solo , l'ADC e' impostato correttamente , avevo un corto a massa su AN0 che chiaramente non mi faceva muovere la tensione
Si prega Accesso o Crea un account a partecipare alla conversazione.
14 Anni 6 Mesi fa #3
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: dspic30f4011 problema adc
...questo e' capitato anche a me...
Ma lavorando con un ingresso differenziale non me ne sono accorto subito.
Con ADC con ingresso single ended se hai un corto verso massa hai un un valore letto pari a 0x000H mentre con ingressi differenziali hai un a valore pari alla meta' fondo scala...quindi in un primo momento non mi sembrava la massa!
...e ci persi un po' di tempo!
saluti,
Mauro
Ma lavorando con un ingresso differenziale non me ne sono accorto subito.
Con ADC con ingresso single ended se hai un corto verso massa hai un un valore letto pari a 0x000H mentre con ingressi differenziali hai un a valore pari alla meta' fondo scala...quindi in un primo momento non mi sembrava la massa!
...e ci persi un po' di tempo!
saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
