MSP430, Microcontrollori 16 bit Ultra Low Power

Utilizzare msp430 per memorizzare una V

  • randow
  • Autore della discussione
  • Visitatori
  • Visitatori
12 Anni 3 Mesi fa #1 da randow
Utilizzare msp430 per memorizzare una V è stato creato da randow
Salve!
Sono di nuovo in opera con il mio caro MSP430F2274 (nello specifico con la schedina del kit ez430-rf2500).
In questo caso dovrei abilitare l'uscita (accendere uno dei due led collegati ai piedini 29 o 30 dell'MSP) nel caso in cui si verifichi una differenza di potenziale che arriva dal piedino 19.
L'MSP in pratica deve acquisire una V qualsiasi nei primi 10 secondi (dovrebbe aggirarsi intorno ai 5 V) memorizzare il dato (supponiamo variabile V) e poi far accendere il led nel caso in cui si verifichi la condizione V + 0.1 (quindi a 5.1 Volt).
Ho dato un'occhiata all'esempio presente nell'esercitazione di ccstudio ma non ne riesco a venir fuori mettendo un programma che funzioni..
potete aiutarmi?
Grazie anticipato
Andrea

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

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
12 Anni 3 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Utilizzare msp430 per memorizzare una V
Ciao,

Leggere un solo ingresso analogico e confrontarlo non dovrebbe esser troppo complicato.
...se non funziona, normalmente, e' perche' qualche impostazione manca.

Fai pero' attenzione alla tensione. Non puoi andare oltre quella di alimentazione.
Dovrai usare un partitore di tensione...

posta il codice che hai scritto.

Saluti,

Mauro

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

  • randow
  • Autore della discussione
  • Visitatori
  • Visitatori
12 Anni 3 Mesi fa #3 da randow
Risposta da randow al topic Re: Utilizzare msp430 per memorizzare una V
Grazie per la risposta tempestiva....
Domani appena arrivo in lab dò un'occhiata al valore di V che arriva all'MSP ;)
Se non riesco a farlo funzionare ti posto il codice..
Andrea

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

  • randow
  • Autore della discussione
  • Visitatori
  • Visitatori
12 Anni 3 Mesi fa - 12 Anni 3 Mesi fa #4 da randow
Risposta da randow al topic Re: Utilizzare msp430 per memorizzare una V
Di seguito il codice....
ok, già sò che ho combinato un macello, però non ho nessuno con cui condividere le mie idee dato che sono l'unico che si appassiona a programmare quindi vorrei condividere qui il codice con voi accettando critiche ;)
Code:
#include <msp430f2274.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR = 0x40; // I/O setup P1OUT = 0; volatile long temp; int delta_mV ; int mV_adc; int results[2]; /* Get voltage from ADC */ ADC10CTL1 = INCH_13 + ADC10DIV_4; // ADC input from A13 ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE + ADC10SR; /* Allow ref voltage to settle for at least 30us (30us * 8MHz = 240 cycles) * See SLAS504D for settling time spec */ __delay_cycles(240); ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start results[0] = ADC10MEM; // Retrieve result ADC10CTL0 &= ~ENC; /* convert ADC data to mV */ temp = results[0]; mV_adc = ((temp * 30000) / 1023); __delay_cycles(8000000); /* aspetta 1 secondo */ delta_mV = mV_adc; while (mV_adc = delta_mV + 5) /* non accadrà mai quindi resta chiuso nel prossimo ciclo*/ { while (mV_adc = delta_mV + 0.1) { P1OUT = 0; /* led spento */ } P1OUT = 0x40; /* accendi il led */ __delay_cycles(8000000); } }
Ultima Modifica 12 Anni 3 Mesi fa da Mauro Laurenti.

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

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
12 Anni 3 Mesi fa #5 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Utilizzare msp430 per memorizzare una V
Ciao,

non ho controllato le impostazioni dei singoli registri ma un problema e' senz'altro il fatto che attivi la conversione dell'ADC e subito dopo leggi in buffer in ingresso.

Questo non puo' essere fatto visto che la conversione dura diversi cicli di clock (13-15, non ricordo).
Comunque un ADC SAR ad N-bit impiega N cicli per la conversione + alcuni cicli per housekeeping.

Quindi nel tuo caso non leggi la conversione.

Se guardi gli esempi tra lo start e la lettura quello che viene spesso fatto e' di andare in stato di sleep.
Nella funzione di gestione dell'interrupt dell'ADC si cambia lo stato di ritorno da LPM in AM (Atctive Mode).
In particolare si usa questa inline function:
Code:
unsigned short _bic_SR_register_on_exit(unsigned short mask);

Saluti,

Mauro

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

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.

Forum - Ultimi messaggi