- Messaggi: 10
- Ringraziamenti ricevuti 0
×
MSP430, Microcontrollori 16 bit Ultra Low Power
msp432 - adc14 timerA
8 Anni 4 Mesi fa #1
da luca.palombella
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.
msp432 - adc14 timerA è stato creato da luca.palombella
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.
- luca.palombella
- Autore della discussione
- New Member
Riduci
Di più
8 Anni 4 Mesi fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic msp432 - adc14 timerA
Salve Luca,
da una prima lettura sembra OK.
Puoi fare anche un passo in avanti.
Come riportato nel datasheet e user guide
puoi collegare direttamente il timer al trigger dell'ADC.
Per cui non devi fare alcun controllo nell'ISR del timer.
Dovresti poi gestire l'ISR dell'ADC relativa alla fine conversione, dove sposti il buffer di lettura nel tuo array.
...facendo poi un passo ancora in avanti puoi anche impostare il DMA che usa il segnale di fine conversione dell'ADC per spostare i dati. In questo modo la CPU si sveglia solo dopo il campionamento di tutti i valori d'interesse.
...in ogni modo va bene anche la tua soluzione, che ti permette effettivamente di controllare la frequenza di campionamento.
Per conversioni molto lente potresti disattivare il reference e l'ADC ma ad ogni attivazione dovresti aspettare che il voltage reference sia stabile (settling time). I tempi di attesa sono specificati nel datasheet.
Per conversioni rapide conviene attivare l'ADC e il reference e disattivarli solo alla fine di tutte le letture.
Saluti,
Mauro
P.S.
Ho cancellato il secondo post.
da una prima lettura sembra OK.
Puoi fare anche un passo in avanti.
Come riportato nel datasheet e user guide
puoi collegare direttamente il timer al trigger dell'ADC.
Per cui non devi fare alcun controllo nell'ISR del timer.
Dovresti poi gestire l'ISR dell'ADC relativa alla fine conversione, dove sposti il buffer di lettura nel tuo array.
...facendo poi un passo ancora in avanti puoi anche impostare il DMA che usa il segnale di fine conversione dell'ADC per spostare i dati. In questo modo la CPU si sveglia solo dopo il campionamento di tutti i valori d'interesse.
...in ogni modo va bene anche la tua soluzione, che ti permette effettivamente di controllare la frequenza di campionamento.
Per conversioni molto lente potresti disattivare il reference e l'ADC ma ad ogni attivazione dovresti aspettare che il voltage reference sia stabile (settling time). I tempi di attesa sono specificati nel datasheet.
Per conversioni rapide conviene attivare l'ADC e il reference e disattivarli solo alla fine di tutte le letture.
Saluti,
Mauro
P.S.
Ho cancellato il secondo post.
Si prega Accedi o Crea un account a partecipare alla conversazione.
8 Anni 4 Mesi fa #3
da luca.palombella
Risposta da luca.palombella al topic msp432 - adc14 timerA
Ok diciamo che per quello che ho scritto fino adesso sono già contento ahah i passi avanti che mi dici di fare non saprei bene come fare però se mi confermi che così adc è pilotato bene allora sono soddisfatto poi se hai altri suggerimenti scrivi pure, sono principiante e sto imparando un po per volta
Si prega Accedi o Crea un account a partecipare alla conversazione.
- luca.palombella
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 10
- Ringraziamenti ricevuti 0
8 Anni 4 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic msp432 - adc14 timerA
...perfetto.
Dividi e conquista.
Saluti,
Mauro
Dividi e conquista.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
8 Anni 4 Mesi fa #5
da luca.palombella
Risposta da luca.palombella al topic msp432 - adc14 timerA
Ciao volevo solo una conferma perchè (almeno per me che magari sono poco pratico) ci vuole poco per avere un comportamento diverso. Per come ho scritto io il codice quindi sto pilotando l'adc in modo che al tempo 20 inizi a campionare ripetutamente su un singolo canale e si fermi poi al tempo 800? Sono giuste anche le accensioni (ADC14CTL0 |= ADC14SC | ADC14ENC;) e gli spegnimenti a conversione ultimata (ADC14CTL0 &= ~ADC14ENC;) dell'adc? infine anche la parte di configurazione dell'acd è giusta? scusa per questi miei dubbi, vorrei solo capire se sto ragionando nel modo giusto xD
Grazie mille per l'aiuto
Luca
Grazie mille per l'aiuto
Luca
Si prega Accedi o Crea un account a partecipare alla conversazione.
- luca.palombella
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 10
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Login
© LaurTec 2006 - 2024