peppe855 Inserito: 8 agosto 2016 Segnala Inserito: 8 agosto 2016 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.
Livio Orsini Inserita: 8 agosto 2016 Segnala Inserita: 8 agosto 2016 Bisogna analizzare il settaggio, come lo hai fatto.
peppe855 Inserita: 8 agosto 2016 Autore Segnala Inserita: 8 agosto 2016 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) } }
peppe855 Inserita: 8 agosto 2016 Autore Segnala Inserita: 8 agosto 2016 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.
peppe855 Inserita: 9 agosto 2016 Autore Segnala Inserita: 9 agosto 2016 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?
Livio Orsini Inserita: 9 agosto 2016 Segnala Inserita: 9 agosto 2016 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.
peppe855 Inserita: 9 agosto 2016 Autore Segnala Inserita: 9 agosto 2016 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à
Livio Orsini Inserita: 9 agosto 2016 Segnala Inserita: 9 agosto 2016 Quote quindi chiedo perdono non accadrà piu'. Ma no via. la mia non era una reprimenda ma una spiegazione delle difficoltà.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora