ADC 12F683, non riesco a farlo funzionare

8 Anni 6 Mesi fa #1 da sharky
ADC 12F683, non riesco a farlo funzionare è stato creato da sharky

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • sharky
  • Senior Member
  • Senior Member
Di più
8 Anni 6 Mesi fa #2 da alfa75
Risposta da alfa75 al topic ADC 12F683, non riesco a farlo funzionare
Ciao sharky
ad occhio l'unica cosa che vedo che non mi torna e quel ADCON0bits.CHS = 0;
i bit di configurazione dovrebbero essere 2 CHS1 e CHS2 e portandoli entrambi a 0 si attiva la porta AN0
ricontrolla un pò il datasheet

Saluti
Andrea

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • alfa75
  • Avatar di alfa75
  • Platinum Member
  • Platinum Member
Di più
8 Anni 6 Mesi fa #3 da sharky
Risposta da sharky al topic ADC 12F683, non riesco a farlo funzionare
Problema risolto!

Il conteggio del TMR1 era talmente breve che l interrupt interferiva con la lettura del valore. aumentando la durata del timer anche l adc funziona correttamente.

grazie!

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • sharky
  • Senior Member
  • Senior Member
Di più
8 Anni 6 Mesi fa #4 da alfa75
Risposta da alfa75 al topic ADC 12F683, non riesco a farlo funzionare
nei pic dove non è possibile impostare i livelli di priorità degli interrupt, a volte (se possibile) conviene disattivarli momentaneamente per permettere al pic di fare altro in tutta calma :)

Saluti
Andrea

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • alfa75
  • Avatar di alfa75
  • Platinum Member
  • Platinum Member
Di più
8 Anni 6 Mesi fa #5 da Mauro Laurenti
Risposta da Mauro Laurenti al topic ADC 12F683, non riesco a farlo funzionare
Un'altra soluzione quando non si hanno livelli diversi come per i PIC16 o 2 soli livelli nei PIC18, e' bene mettere il controllo del flag di interrupt della periferica piu' lenta per prima e poi il controllo piu' frequente del timer.
questo e' valido se dopo il controllo del flag esci dalla ISR.

questo era quello che si faceva anche sui vecchi PC per il floppy disk.
Nonostante fosse la periferica piu' lenta aveva una priorità alta...altrimenti non avrebbe mai trasferito i dati.
Non a caso se il floppy disk era in funzione, sembrava che il PC fosse piu' lento.

...se non hai avuto un floppy disk non puoi capire! :)

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login