MECCANICA e DINTORNI

COSTRUIAMO LE NOSTRE CNC DIVERTENDOCI CON L'AIUTO DI TANTI PROFESSIONISTI ESPERTI
Oggi è mar gen 31, 2023 15:37

Tutti gli orari sono UTC +1 ora




Apri un nuovo argomento Rispondi all’argomento  [ 10 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: mar dic 14, 2010 12:38 
Non connesso
AMMINISTRATORE
Avatar utente

Iscritto il: sab ott 25, 2008 14:27
Messaggi: 3538
Località: Serenissima Repubblica Veneta
Dunque il problema e' questo , normalmente campiono in continuo il canale 0 e scrivo il risultato nel buffer FIFO dell'ADC .
Al riempimento del buffer ( quarto campione ) l'interrupt di scrittura del quarto campione mi richiama la Routine di retroazione della corrente , tutto questo avviene all'incirca a 44khz di velocita' .

Ogni tanto pero' dovro' andare a leggere anche i canali 1 , 2 e 3 che sono rispettivamente due temperature ed il valore del potenziomentro di un eventuale pedale .

Se ogni tot cicli di retroazione scambio canale per andare a leggere uno di questi valori , in che stato sara' il mio buffer essendo che il campionamento e la conversione avviene in continuo ?

Cerco di spiegarmi meglio , non e' che magari mi trovo con un buffer in cui un valore deriva dal canale 0 e i successivi dal canale 1 ?

_________________
- internet + cabernet
- V8 Power
l'esperienza non si compra ma si paga


Top
 Profilo  
 
 Oggetto del messaggio: Re: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: mer dic 15, 2010 21:02 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
Sottomano non ho gli appunti dell'adc della serie 18, casomai guardo con più calma in laboratorio.
Se abiliti la conversione sequenziale di più canali, con il fifo abilitato, i risultati ti vanno comunque nel fifo. Ovvio che nel fifo ci saranno i risultati di tutti i canali abilitati (1, 2 o 4), quindi devi stare attento alla gestione.
Ti conviene, nel momento in cui vuoi campionare gli altri canali, resettare l'adc (che mentre esegui la routine di interrupt ha già ricominciato a lavorare) e vuotare il fifo, abilitanto nuovamente l'adc con la conversione che ti serve (es, 2 o 4 canali).
Alla successiva interrupt leggi i risultati (li troverai in sequenza nel fifo) e ripeti l'operazione di reset, riabilitando l'adc con un canale singolo.

Io facevo una cosa del genere, poichè campionavo sempre 4 canali (con i risultati inseriti nel fifo) e ogni tanto dovevo campionare gli altri 4.

Casomai ti mando la routine, se mi scordo rimettimelo in mente.

Ciao!

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
 Oggetto del messaggio: Re: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: mer dic 15, 2010 21:40 
Non connesso
AMMINISTRATORE
Avatar utente

Iscritto il: sab ott 25, 2008 14:27
Messaggi: 3538
Località: Serenissima Repubblica Veneta
e' abbastanza chiaro , l'unica cosa che mi rimane da capire e' come resettare l'adc e il fifo .
per il fifo credo sia sufficente leggere i 4 valori ... per resettare l'adc invece ?

_________________
- internet + cabernet
- V8 Power
l'esperienza non si compra ma si paga


Top
 Profilo  
 
 Oggetto del messaggio: Re: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: gio dic 16, 2010 20:54 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
Si, per il fifo basta leggerne i valori, ma bisogna fare attenzione che l'adc nel frattempo non ci scriva su. Quindi prima bisogna disattivare l'adc, leggere il fifo, preparare le impostazioni per la nuova lettura e riattivare l'adc.

Però mi sono dimenticato di prendere le routine in laboratorio... spero di ricordarmelo domani. Così posso essere più preciso.

Ciao!

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
 Oggetto del messaggio: Re: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: ven dic 17, 2010 10:43 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
Ecco un po' di appunti.
Il mio caso è leggermente diverso dal tuo, io infatti campionavo 4 canali in sequenza, e ogni tanto dovevo campionare gli altri 4 canali. Comunque, a parte il cambiare l'impostazione degli ingresso ogni volta, dovrebbe essere lo stesso.

Cominciamo con le impostazioni generiche dell'adc:

;*************************** impostazioni adc **********************************************
;impostazione ingressi analogici
MOVLW b'11111111'
MOVWF ANSEL0 ;ingressi A0 A1 A2 A3 A4 A5 E0 E1 analogici

;conversione single-shot, sequence 4 channel
;abilitazione modulo adc
MOVLW b'00010101'
MOVWF ADCON0

;+Vref=Vdd -Vref=Vss
;buffer fifo abilitato
MOVLW b'00010000'
MOVWF ADCON1

;right justified (qui vedi come ti serve)
;delay 6Tad (qui vedi come ti serve, comunque io lavoravo a 40 MHz)
;clock: Fosc/32 (qui vedi come ti serve, comunque io lavoravo a 40 MHz)
MOVLW b'10011010'
MOVWF ADCON2

;interrupt ogni valore campionato non serve per modalità single shot (io uso questa, vedi se ti va bene, con il continuos mi pare che avevo problemi di accavallamento valori nel fifo)
;trigger disabilitati
MOVLW b'00000000'
MOVWF ADCON3

;interrupt adc
BCF PIR1,ADIF ;reset interrupt adc
BSF PIE1,ADIE ;abilitazione interrupt adc

CALL IMPOSTACANALI ;selezione canali da campionare
BSF ADCON0,GO_DONE ;adc on (avvio conversione)

;**************************************************************************************

E questa è la gestione dell'interrupt:

;**************************** interrupt adc ***********************************************

ADC_INT:
;interrupt gestione risultati adc
BCF PIR1,ADIF ;reset interrupt adc

;ciclo gestione 4 risultati
CIC_LETT_ADC:
;lettura indirizzo FIFO (mi serve per sapere quale canale sto leggendo, perchè io li gestisco a ciclo... se tu li leggi singolarmente 4 volte non ti serve leggere l'indirizzo)
MOVF ADCON1,W ;prelievo indirizzo canale FIFO
SUBLW 0xFF ;complemento indirizzo (11 è il canale 0)
ANDLW b'00000011' ;mascheratura bit ADPNT1 ADPNT0
MOVWF ADC_PNTR ;salvataggio indirizzom FIFO

;lettura valore (va letta prima la parte alta, quando leggo la parte bassa viene incrementato il puntatore del fifo)
MOVF ADRESH,W ;prelievo risultato adc
MOVWF R1 ;salvo il risultato
MOVF ADRESL,W ;prelievo risultato adc
MOVWF R0 ;salvo il risultato

[........] ;routine di utilizzo risultato (testi il bit che ti dice quali canali hai campionato, così sai cosa fare con i valori)

;controllo buffer vuoto (controllo di aver letto tutto il FIFO, e continuo fino a quando non è vuoto)
(se hai fatto 4 letture fisse, non a ciclo come me, puoi controllare di aver vuotato correttamente il FIFO)
BTFSS ADCON1,BFEMT
GOTO CIC_LETT_ADC ;ciclo lettura gruppo di 4 canali

(qui, prima di riattivare l'adc, puoi modificare le impostazioni dei canali da campionare)
(ovviamente imposterai opportunamente il bit che ti dice che canali stai campionando, per la successiva gestione dei risultati)
BSF ADCON0,GO_DONE ;riattivo manualmente l'adc
GOTO FINEINT ;fine routine


;**************************************************************************************

;**************************** routine impostazioni canali **************************************
(qui tu dovrai anche cambiare tra sequenza di 4 canali diversi e sequenza di 4 campionamenti dello stesso canale)

IMPOSTACANALE: (primo gruppo)
BSF rif_sample ;set bit campionamento riferimento (serve per ricordarmi cosa sto campionando)
;assegnazione ingressi - gruppi per lettura ingressi di riferimento:
;gruppo A:an4
;gruppo B:an5
;gruppo C:an6
;gruppo D:an7
MOVLW b'01010101'
MOVWF ADCHS
RETURN

IMPOSTACANALE: (primo gruppo)
BCF rif_sample ;reset bit campionamento riferimento (serve per ricordarmi cosa sto campionando)
;assegnazione ingressi - gruppi per lettura tensioni:
;gruppo A:an0
;gruppo B:an1
;gruppo C:an2
;gruppo D:an3
MOVLW b'00000000'
MOVWF ADCHS
RETURN

;**************************************************************************************

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
 Oggetto del messaggio: Re: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: ven dic 17, 2010 10:56 
Non connesso
CAPO OFFICINA
Avatar utente

Iscritto il: dom gen 31, 2010 21:46
Messaggi: 8521
Località: Bussero (MI)
Grazie Bit!
Adesso vedi come smadonna il Raban per tradurre dall'assembler ! :rotfl:

_________________
McMax

“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson

fulminato in tenera età


Top
 Profilo  
 
 Oggetto del messaggio: Re: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: ven dic 17, 2010 20:51 
Non connesso
AMMINISTRATORE
Avatar utente

Iscritto il: sab ott 25, 2008 14:27
Messaggi: 3538
Località: Serenissima Repubblica Veneta
ue' guarda che da piccolo giocavo col SoftIce... non vorrai mica che mi perdo su due righe di asm... :cannabis:

_________________
- internet + cabernet
- V8 Power
l'esperienza non si compra ma si paga


Top
 Profilo  
 
 Oggetto del messaggio: Re: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: ven dic 17, 2010 20:57 
Non connesso
TORNITORE E FRESATORE
Avatar utente

Iscritto il: sab set 13, 2008 15:29
Messaggi: 1534
Località: Fornaci di Barga (LU)
Io parlo solo quello quando si tratta di cose che devono funzionare... e AWL nei plc.

_________________
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Nel mondo esistono 10 tipi di persone:
-chi conosce il codice binario
-chi non conosce il codice binario


Top
 Profilo  
 
 Oggetto del messaggio: Re: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: lun ago 15, 2011 16:59 
Non connesso
AMMINISTRATORE
Avatar utente

Iscritto il: sab ott 25, 2008 14:27
Messaggi: 3538
Località: Serenissima Repubblica Veneta
Sistemata lettura canali adc , ora leggo il sensore di corrente a 68 khz , faccio la retroazione
a 17 khz 8 bit sulla media di 4 campioni e leggo 2 temperature e un potenziometro a 66 hz circa .

_________________
- internet + cabernet
- V8 Power
l'esperienza non si compra ma si paga


Top
 Profilo  
 
 Oggetto del messaggio: Re: Campionamento ADC canali 0 - 1 - 2 - 3
MessaggioInviato: mar ago 16, 2011 09:32 
Non connesso
CAPO OFFICINA
Avatar utente

Iscritto il: dom gen 31, 2010 21:46
Messaggi: 8521
Località: Bussero (MI)
Mi sembra ottimo! Bene!

_________________
McMax

“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson

fulminato in tenera età


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 10 messaggi ] 

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it