× MSP430, Microcontrollori 16 bit Ultra Low Power

MSP430F233 - adc

8 Anni 11 Mesi fa - 8 Anni 10 Mesi fa #1 da Mary
MSP430F233 - adc è stato creato da Mary

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.

  • Mary
  • New Member
  • New Member
Di più
8 Anni 10 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic MSP430F233 - adc
Ciao Mary,

benvenuta nel Forum!

Non ho visto tutti i dettagli sul programma, ma qualche nota di quello che ho visto:

*) Non mi sembra di vedere l'inizializzazione del clock

*) La seguente media ti potrebbe creare problemi:

for(j=0;j<16;j++)
me+=reg[j];
me=me/16;

ad ogni interrupt che legge un valore fai il ciclo sul buffer reg.

*) Nella funzione main non c'e' bisogno di avere variabili static. Infatti dalla funzione main non esci mai.
Se esci il programma e' terminato.

*) relativamente all'ISR dove scrivi :

i = (i+1)%n;

Personalmente farei uso di un contatore e non del resto. quando i diventa grande avrai bisogno sempre di piu' cicli di clock. Inoltre potresti avere problemi al passaggio da 0xFFFF a 0x0000. Potresti perdere una misura (ma su questo non ci ho riflettuto molto ma e' un rischio che dovresti verificare).

Per quanto riguarda l'esempio cercherei di dividerlo in piu' parti.
Farei funzionare prima la parte del comparatore.
Poi userei il solo ADC per fare 16 misure e media.
poi unirei il programma...

Che cosa ti ha portato a scegliere l'MSP430F233?


Saluti,

Mauro
Ringraziano per il messaggio: Mary

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
8 Anni 10 Mesi fa #3 da Mary
Risposta da Mary al topic MSP430F233 - adc
Ciao Mauro!

Ti ringrazio tanto per i consigli per il mio programma!

Intanto mi sono accorta anche di avere fatto un errore per quanto riguarda l'inizializzazione del vettore reg[n]. Ho visto infatti che se lo inizializzo come "volatile unsigned int reg[n];" anziché come float il programma non va più in loop.

Poi ho dovuto (non so se sia corretto) utilizzare l'istruzione "__bic_SR_register_on_exit(LPM0_bits+GIE);" alla fine dell'ISR perché altrimenti il programma continuava a svolgere l'interruzione e non rientrava nel main.

Per quanto riguarda l'inizializzazione del clock non ci avevo pensato perché pensavo che fosse sufficiente inizializzare correttamente il registro ADC12CTL1 dal momento che non dovevo far compiere al clock nessuna istruzione particolare.

Comunque ho scelto l'MSP430F233 perché mi sembrava abbastanza completo come modello per fare degli esperimenti di programmazione.

Adesso cercherò di mettere in pratica i tuoi consigli così da vedere se finalmente sarò in grado di far funzionare correttamente il programma!

Per ora ti ringrazio,

saluti,

Maria

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

  • Mary
  • New Member
  • New Member
Di più
8 Anni 10 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic MSP430F233 - adc
Ciao Mary,

Relativamente alla funzione intrinseca __bic_SR_register_on_exit(LPM0_bits+GIE);

andrebbe scritta formalmente come __bic_SR_register_on_exit(LPM0_bits);
Serve per cambiare il valore dello status register contenuto nello stack, visto che lo status register contiene appunto il valore low power a cui bisogna tornare dopo l'interrupt. Per evitare di rimanere in LPM0 bisogna cambiarlo in AM, questo permette di eseguire le istruzioni successive...
Trovi maggiori dettagli nel seguente capitolo del corso MSP430 .

Per la scelta dell'MSP430F233 e' ok, ma visto che probabilmente stai lavorando su un progetto universitario (In Italia gli MSP430 sono usati prevalentemente nelle universita'...) anche la famiglia FRAM poteva essere una buona scelta visto che contiene il fiore all'occhiello della tecnologia di memorie non volatili.

Cosa stai progettando con gli MSP430?

Saluti,

Mauro
Ringraziano per il messaggio: Mary

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
8 Anni 10 Mesi fa #5 da Mary
Risposta da Mary al topic MSP430F233 - adc
Ciao Mauro,

volevo comunicarti che finalmente ora il mio progetto funziona!!

I tuoi consigli sono stati veramente utili!!

Come correttamente hai ipotizzato sto lavorando ad un progetto universitario. Il progetto consiste nella realizzazione di un firmware che rilevi (generando degli allarmi) il passaggio di un oggetto attraverso una barriera ottica a luce NIR impulsata.

Comunque valuterò la possibilità di utilizzare un microcontrollore della famiglia FRAM in un eventuale progetto futuro.

Per ora ti ringrazio!!!

Saluti,

Maria

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

  • Mary
  • New Member
  • New Member
Di più
Moderatori: Mauro LaurentiMatteo Garia

Registrati al sito

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

Registrati al sito LaurTec.

Login