Problema ADC PIC18F4525
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!
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!