L'interrupt può produrre un errore Conversione AD?
13 Anni 8 Mesi fa #6
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: L'interrupt può produrre un errore Conversione AD?
Ciao,
Il controllo del reset è una casa che è bene implementare a prescindere da questo problema.
Oltre a permettere un Debug durante la fase di programmazione, permette anche di rilevare problemi durante la normale esecuzione del problema.
Riguardo al fatto che i timer possano dare fastidio non credo.
Andando a memoria solo la EEPROM richiede che vengano disattivate le interruzioni durante la fase di scrittura. In ogni modo questo è scritto nel datasheet ed è chiaramente riportato anche in esempi. Per gli ADC questo non vale. Per verificare la natura del problema potresti disattivare anche gli interrupt durante la conversione, ovvero prima di dare il GO disattivi gli interrupt e quando la conversione è terminata li riattivi.
Questo protrerrebbe però causare dei problemi al tuo segnale a 50Hz.
Per quanto riguardo l'aspetto hardware intendo se il PIC ha il condensatore di disaccoppiamento da 0.1uF ed in particolare se l'alimentatore è distante è bene che abbia nelle vicinanze anche un condensatore da 10uF (valori più grandi possono essere necessari se il circuito assorbe più di 50-100mA.
Saluti,
Mauro
Il controllo del reset è una casa che è bene implementare a prescindere da questo problema.
Oltre a permettere un Debug durante la fase di programmazione, permette anche di rilevare problemi durante la normale esecuzione del problema.
Riguardo al fatto che i timer possano dare fastidio non credo.
Andando a memoria solo la EEPROM richiede che vengano disattivate le interruzioni durante la fase di scrittura. In ogni modo questo è scritto nel datasheet ed è chiaramente riportato anche in esempi. Per gli ADC questo non vale. Per verificare la natura del problema potresti disattivare anche gli interrupt durante la conversione, ovvero prima di dare il GO disattivi gli interrupt e quando la conversione è terminata li riattivi.
Questo protrerrebbe però causare dei problemi al tuo segnale a 50Hz.
Per quanto riguardo l'aspetto hardware intendo se il PIC ha il condensatore di disaccoppiamento da 0.1uF ed in particolare se l'alimentatore è distante è bene che abbia nelle vicinanze anche un condensatore da 10uF (valori più grandi possono essere necessari se il circuito assorbe più di 50-100mA.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Mauro Laurenti
- Moderator
Riduci
Di più
13 Anni 8 Mesi fa #7
da gcupini
Risposta da gcupini al topic Re: L'interrupt può produrre un errore Conversione AD?
Ciao Mauro,
Ho risolto, anche grazie alle tue indicazioni di testing di dettaglio.
Il tutto era dovuto ad un "banale bit" T1CON<3>=T1OSCEN=1, che interferiva con la conversione AD. Da una lettura rapida del data sheeet Non ho capito perchè questo bit posto a 1 interferisce con la conversione AD mentre non produce problemi al funzionamento degli interrupt dei timer.
Ponendo T1OSCEN=0, (disabilita l'oscillatore non capisco quale) tutto funziona.
Grazie ancora per il tempo che mi hai dedicato.
Ho risolto, anche grazie alle tue indicazioni di testing di dettaglio.
Il tutto era dovuto ad un "banale bit" T1CON<3>=T1OSCEN=1, che interferiva con la conversione AD. Da una lettura rapida del data sheeet Non ho capito perchè questo bit posto a 1 interferisce con la conversione AD mentre non produce problemi al funzionamento degli interrupt dei timer.
Ponendo T1OSCEN=0, (disabilita l'oscillatore non capisco quale) tutto funziona.
Grazie ancora per il tempo che mi hai dedicato.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- gcupini
- Autore della discussione
- Visitatori
13 Anni 8 Mesi fa #8
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: L'interrupt può produrre un errore Conversione AD?
Ciao,
molto bene.
Giovanni Bernardo ha da poco rilasciato un articolo in materia. Lo trovi sulla home page al sito
SettoreZero
L'articolo si intitola: Timer1 : spunti utili per la realizzazione di orologi e timers
Saluti,
Mauro
molto bene.
Giovanni Bernardo ha da poco rilasciato un articolo in materia. Lo trovi sulla home page al sito
SettoreZero
L'articolo si intitola: Timer1 : spunti utili per la realizzazione di orologi e timers
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
13 Anni 8 Mesi fa #9
da gcupini
Risposta da gcupini al topic Re: L'interrupt può produrre un errore Conversione AD?
Ciao,
Mi sono appena letto l'articolo di Gianni su timer1 che spiega splendidamente come funziona e a cosa serve T1OSCEN. Io in sostanza io abilitavo come oscillatore il quarzo secondario esterno che non c'è.
Ma ancora non ho molto chiaro del perchè questo avesse influenza sulla conversione AD.
Un momento ora è chiaro! Consultando il data sheet del pic16F88 ho notato che io uso per una delle conversioni AD il pin RB6/AN5/T1OSO che prevede il collegamento con il quarzo esterno?
Devo la comprensione alle indicazioni tue e di Giovanni Bernardo.
Grazie
Mi sono appena letto l'articolo di Gianni su timer1 che spiega splendidamente come funziona e a cosa serve T1OSCEN. Io in sostanza io abilitavo come oscillatore il quarzo secondario esterno che non c'è.
Ma ancora non ho molto chiaro del perchè questo avesse influenza sulla conversione AD.
Un momento ora è chiaro! Consultando il data sheet del pic16F88 ho notato che io uso per una delle conversioni AD il pin RB6/AN5/T1OSO che prevede il collegamento con il quarzo esterno?
Devo la comprensione alle indicazioni tue e di Giovanni Bernardo.
Grazie
Si prega Accedi o Crea un account a partecipare alla conversazione.
- gcupini
- Autore della discussione
- Visitatori
13 Anni 8 Mesi fa #10
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: L'interrupt può produrre un errore Conversione AD?
Ciao,
questo mostra come alcune volte il problema vada ricercato anche a livello hardware e non solo software.
Direi che questo era al confine. Se avessi abilitato il timer senza usare AN5 probabilmente avrebbe funzionato tutto.
Saluti,
Mauro
questo mostra come alcune volte il problema vada ricercato anche a livello hardware e non solo software.
Direi che questo era al confine. Se avessi abilitato il timer senza usare AN5 probabilmente avrebbe funzionato tutto.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.