Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema ADC PIC18F4525

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Problema ADC PIC18F4525

Messaggioda Foto Utentedeltax » 27 gen 2015, 19:33

Ciao a tutti ragazzi, ho un problema che da un paio di giorni mi sta facendo ammattire, ci sto qui 10 ore al giorno e ancora non sono riuscito a risolverlo. Premesso che sto cercando vie alternative (aka ADC esterno), la mia curiosità mi preme per risolverlo, e anche un intensiva ricerca non ha portato alla risoluzione, benchè ci siano molte persone con lo stesso problema.
Vengo al dunque, ma cercherò di essere il più chiaro possibile. Sto facendo un digital recorder basato su PIC, in particolare su PIC18F4525. Da ora in poi citerò delle pagine del datasheet che si trova QUI. Inolte farò riferimento alla pagina del PDF, e non del documento, così la potrete raggiungere più velocemente.
Allora il mio problema è che dopo aver configurato manualmente tutti i registri dell'ADC, quindi senza usare le funzioni già pronte del compilatore (che nel mio caso è mikroC), la simulazione su Proteus mi da il seguente errore: "ADC conversion clock period (5e-7) violates the minimum required TAD time". Come dicevo questo problema è comune e molti su internet danno come soluzione una formula, deducibile da pagina 231 del PDF, paragrafo 19.3. In pratica qui dice che per una conversione ci vogliono minimo 11 TAD, e poi rimanda al parametro 130, che è il TAD minimo, pari a 0,7 us. Allora dice che il tempo di conversione che bisogna impostare deve essere il minimo possibile, ma maggiore di TAD, cosi io ho fatto i calcoli e ho impostato il divisore di frequenza nel registro in base al mio clock per rispettare tale parametro. In realtà l'avevo fatto maggiore di 11 TAD, perché non avevo capito bene, ma tanto se è maggiore di 1 è anche maggiore di 1.
Quindi, supponendo che non ho sbagliato i calcoli perché li ho fatti 20 volte, anche non violando questa condizione l'errore mi compare, mentre facendo scendere il clock del mio sistema a 1 MHz l'errore scompare. Per esempio, con un clock da 4 MHz e divisore al massimo (64), quindi con la condizione ampiamente rispettata, mi dà l'errore, mentre con 1 MHz e lo stesso divisore no.
Ho anche provato a modificare il parametro Acquisition time, paragrafo 19.2 di pag 231, provando tutti i valori, ma non sortisce nessun effetto (come immaginavo visto che quel parametro non sembra c'entrare molto).

Qualsiasi consiglio o intuizione è ben accetto, anche qualche suggerimento cosi a pelle che mi possa indirizzare nella stra da giusta...grazie!
Avatar utente
Foto Utentedeltax
936 1 4 6
Sostenitore
Sostenitore
 
Messaggi: 571
Iscritto il: 12 apr 2013, 14:41

0
voti

[2] Re: Problema ADC PIC18F4525

Messaggioda Foto Utentegiovannispina » 4 feb 2015, 12:30

Se la frequenza è di 4MHz ed il TAD minimo è di 0.7us allora 4Tosc dovrebbe andare bene.
Tosc = 1/4MHz = 0.25us

2Tosc = 0.5us
4Tosc = 1us
8Tosc = 2us
16Tosc = 4us
32Tosc = 8us
64Tosc = 16us

La configurazione
Codice: Seleziona tutto
ADCON2 &= 0b100;


Se continua a dare errori allora c'è qualcos'altro che non va. Forse nel progetto di mikroC hai settato una frequenza diversa da quella di proteus?
Avatar utente
Foto Utentegiovannispina
126 1 3
 
Messaggi: 43
Iscritto il: 27 lug 2013, 12:31

0
voti

[3] Re: Problema ADC PIC18F4525

Messaggioda Foto Utentedeltax » 4 feb 2015, 13:00

ciao giovannispina, grazie per la risposta. Alla fine, dopo qualche altro tentativo, mi sono orientato verso un ADC esterno, presente anche in Proteus. Adesso comunque sto abbandonando i PIC18 per passare ai dsPIC33 (ho fatto un 3d nell'altra sezione) perché anche con l'ADC esterno non riesco a ottenere una buona qualità della registrazione (benchè ancora non sia in grado di stabilire se è un problema del PIC o della simulazione)
Avatar utente
Foto Utentedeltax
936 1 4 6
Sostenitore
Sostenitore
 
Messaggi: 571
Iscritto il: 12 apr 2013, 14:41

0
voti

[4] Re: Problema ADC PIC18F4525

Messaggioda Foto UtenteWALTERmwp » 4 feb 2015, 19:05

Ciao Foto Utentedeltax, solo una curiosità, a prescindere dall'anomalia che ti ha restituito "proteus", poi, hai provato comunque a caricare sul micro una porzione di codice per verificare in pratica il comportamento ?
Non ho capito se lo hai fatto o meno.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8985
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[5] Re: Problema ADC PIC18F4525

Messaggioda Foto Utentedeltax » 4 feb 2015, 21:49

No non l'ho fatto perché sto prototipando un progettino in cui le varie prove su proteus avrebbero comportato la scelta di un PIC. Dovendo comrpare tutto (breadboard, PIC stesso, componenti esterni ecc) volevo prima fare qualche simulazione. Proverò a brevissimo il comportamento fisico ma ormai ho abbandonato il PIC18F4525, e addirittura forse passerò ai dspic33, quindi probabilmente mi rimarrà il dubbio per il resto della vita :lol:
Avatar utente
Foto Utentedeltax
936 1 4 6
Sostenitore
Sostenitore
 
Messaggi: 571
Iscritto il: 12 apr 2013, 14:41

0
voti

[6] Re: Problema ADC PIC18F4525

Messaggioda Foto Utenteivanpascolo » 23 feb 2015, 22:06

Spesso capita di non riuscire a far funzionare correttamente le periferiche per non aver settato o settato male alcuni registri. Io per il momento (ho provato anche MikroC) sto utilizzando MPLAB e il compilatore gratuito XC8 con il plugin di Microchip "code configurator". Con pochi "click"si impostano correttamente periferiche come l'ADC. Vale la pena provarlo.http://www.microchip.com/pagehandler/en ... /home.html
Avatar utente
Foto Utenteivanpascolo
20 3
New entry
New entry
 
Messaggi: 71
Iscritto il: 29 set 2014, 20:44

0
voti

[7] Re: Problema ADC PIC18F4525

Messaggioda Foto Utentedeltax » 24 feb 2015, 13:28

Foto Utenteivanpascolo, alla fine i problemi non erano i registri ma proteus. Magari potrà essere utile a qualche utente che cerca con google il mio stesso problema, quini lo scrivo, anche se adesso sono passato a un PIC32 e a una board fisica per i test.
In pratica i miei calcoli erano tutti giusti solo che il TAD si doveva impostare in un opzione di proteus. In pratica, anche se proteus ha diversi modelli di PIC, esistono dei settaggi specifici che si devono impostare, e il TAD è uno di questi. In particolare si imposta in un menù a tendina nella stessa finestra dove si imposta la frequenza del PIC.
L'errore me lo dava perché, non avendo impostato questo TAD, lo riconosceva come 0, e anche se rispettavo il tempo del datasheet non rispettavo quello di proteus, appunto 0.
Avatar utente
Foto Utentedeltax
936 1 4 6
Sostenitore
Sostenitore
 
Messaggi: 571
Iscritto il: 12 apr 2013, 14:41


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti