Jump to content
PLC Forum


peppe855

ADC 10bit dspic30f

Recommended Posts

peppe855

Buon giorno a tutti, sono qui ancora a chiedere il vostro aiuto, vi spiego:

Sto studiando e provando singolarmente tutte le periferiche del dspic30f6010a il problema riguarda la periferica a/d 10bit in pratica ho settato i registri in modo tale da utilizzare i riferimenti di tensione interni AVdd AVss [0 +5V], pero' quando vado tramite debug a visualizzare il contenuto del buffer li dove è contenuta la conversione cioè il registro ADCBUF0 questo mi restituisce valori esatti fino a che esternamente applico 2.5V segnando correttamente 511, ma se provo ad alzare il voltaggio es. 3V questo mi segna sempre 511.

Eppure dal manuale ( http://ww1.microchip.com/downloads/en/DeviceDoc/70046E.pdf ) pag. 446 dice chiaramente che visualizzando il risultato come integer (cosa che ho fatto settando i bit FORM) dovrei portarmi fino a 1024.

Dal debug il registro ADCBUF0 non muove il bit 10.

Da cosa puo' dipendere??

Vi ringrazio anticipatamente.

Link to comment
Share on other sites


Livio Orsini

Bisogna analizzare il settaggio, come lo hai fatto.

Link to comment
Share on other sites

peppe855

Giusro, allora ho preso un esempio che c'è nel manuale stesso:

int main (void)
{


int ADCValue;

TRISBbits.TRISB13=1; 

ADPCFG = 0xDFFF;

ADCON1 = 0x00E0; /inizio conversione triggerato su contatore interno

ADCON1bits.FORM0=0; / per avere il risultato come spiegato prima

ADCON1bits.FORM1=0;

ADCHS = 0x000D; / connette AN12 al canale 0 

ADCON2 = 0; / in questo modo le tensioni V+ref e V-ref sono quelle interne

ADCON3 = 0x1F02; / dopo aver iniziato il campionamento attende 31 Tad  e inizia la conversione

ADCON1bits.ADON = 1; / attiva l'adc

while (1) // repeat continuously
{
 ADCON1bits.SAMP = 1;

while (!ADCON1bits.DONE); // conversion finita?
 ADCValue = (ADCBUF0)

}

}

 

 

Link to comment
Share on other sites

peppe855

Piccola nota, sopra ho scritto:

ADCHS = 0x000D; / connette AN12 al canale 0 

l'istruzione è corretta, pero' il commento giusto è che connette AN13 al canale 0.

Link to comment
Share on other sites

peppe855

Livio ho trovato l'errore! In pratica l'errore era effettivamente nel settaggio dell' ADC in quanto  avevo erroneamente impostato il tempo di campionamento (troppo piccolo), aumentandolo ho correttamente visualizzato le misure.

Adesso ho impostato il tutto per fare le seguenti operazioni:

 - start del campionamento manuale (di due canali in modo contemporaneo);

 - fine campionamento ed inizio conversione (sequenziale) automatica tramite trigger;

 - controllo del bit DONE per capire quando l'acquisizione è terminata;

 

Queste impostazioni mi servono per acquisire in modo contemporaneo le due correnti di fase del mio motore asincrono, nell'ottica di implementare un controllo vettoriale FOC, quello che non ho ben compreso è cio' che dice a pag. 449 in cui spiega le massime velocità di campionamento in base al tipo di configurazione utilizzata, in pratica per quello che vorrei fare io seguendo le immagini dovrei stare sulla quarta riga? 

  

Link to comment
Share on other sites

Livio Orsini

Scusa, abbi pazienza ma io non conosco nei dettagli il tuo dispositivo e non ho tempo per leggermi il manuale.

Se non vado errato c'è un solo A/D che è multiplexxato sui vari ingressi quindi non puoi leggere 2 canali contemporaneamente.

Se non ricordo male ci dovrebbe essere la possiibilità di avere un interrupt di fine conversione.

Io lancerei la conversione a tempo fisso su interrupt di timer e, sull'interrupt sulla fine della prima conversione, lamcerei la seconda.

Link to comment
Share on other sites

peppe855

Perfetto, grazie del consiglio! Riguardo il messaggio precedente hai ragione ho preteso una cosa che non esiste è gia' tanto aver trovato tempo per rispondermi quindi chiedo perdono non accadrà piu'. 

Un saluto e ancora grazie per la disponibilità

Link to comment
Share on other sites

Livio Orsini
Quote

quindi chiedo perdono non accadrà piu'.

 

Ma no via.:smile: la mia non era una reprimenda ma una spiegazione delle difficoltà.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...