× MSP430, Microcontrollori 16 bit Ultra Low Power

Generatore di forma d'onda sinusoidale

9 Anni 5 Mesi fa #1 da Irene
Generatore di forma d'onda sinusoidale è stato creato da Irene
Buongiorno a tutti,
vi chiedo un supporto per favore. Mi spiego: sto facendo un firmwarino per creare un semplice generatore di forma d’onda. Uso un MSP430F5342 Texas.

La Questione:
Volevo (avrei tanto voluto insomma :P ) generare una sinuosoide, creando un buffer di 1000 campioni, per ora a frequenza=1 Hz.

Grazie ad un Timer a 1ms, invio con tale cadenza il campione della sinusoide al convertitore, tramite I2C. I dati che passo all’I2C sono a 16 bit unsigned, poi li trasformo a 12 bit (perdendo i 4 più significativi), perché ho un DAC a 12 bit.
Ho studiato che la funzione sin vuole double… Vi riporto un po’ di codice:

/*************************************************************************************/
Creo il buffer:

#define SAMPLING (1000)

uint16_t sin_buf [SAMPLING] = {0};
//uint16_t ampiezza= 38;
double frequenza = 1;
double omega;


void sine_wave_init (void){

omega=(2 * PI * (frequenza / SAMPLING));
for (y=0; y<SAMPLING; y++) {
sin_buf[y]= (uint16_t)(sin(omega*y));
}

}
/*************************************************************************************/
Nell’ISR del Timer a 1 ms:
// Onda sinusoidale con frequenza di 1 Hz e ampiezza di 100uV
for (y<1000){
sine_sample= ampiezza * sin_buf[y];
y++;
if (y==1000){
y=0;
}
}
TI_USCI_B1_I2C_transmit(sine_sample);

/*************************************************************************************/
Risulato: non visualizzo niente. Da principiante credo che ci sia un problema di tipi di variabile, forse mi perdo roba per strada. Avete qualche suggerimento da darmi per capire dove sto sbagliando??? Grazie mille,
Irene

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

  • Irene
  • New Member
  • New Member
Di più
9 Anni 5 Mesi fa #2 da bading
Risposta da bading al topic Generatore di forma d'onda sinusoidale
Irene,
premesso che non ho mai utilizzato micro MSP ne DAC e ammesso che il collegamento I2C sia funzionante (l'hai testato inviando semplici valori fissi e misurando se l'uscita di tensione del DAC varia conseguentemente) credo che nella conversione devi perdere i 4 bit meno significativi e non i più significativi come hai scritto.
Ciao,
Dario


http:\www.d2l.it
Ringraziano per il messaggio: Irene

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

  • bading
  • Avatar di bading
  • Elite Member
  • Elite Member
Di più
9 Anni 5 Mesi fa #3 da Irene
Risposta da Irene al topic Generatore di forma d'onda sinusoidale
Ciao Dario,
grazie per la risposta :)
Riguardo ai bit "sacrificati", ho scelto quella strada perché i miei numeri sono sempre piccoli, quindi la rimozione dei 4 bit significativi non incide sui risultati.
La comunicazione I2C al DAC funziona, ho problemi sull'onda sinusoidale. Però rifletterò sul tuo suggerimento, è sempre bene rivedere se mi sono persa qualche caso importante.
Grazie ancora,
:)
Irene

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

  • Irene
  • New Member
  • New Member
Di più
9 Anni 5 Mesi fa #4 da bading
Risposta da bading al topic Generatore di forma d'onda sinusoidale
Perché dici che i tuoi numeri sono piccoli?
Credo tu debba fare in modo di sfruttare tutta la dinamica del DAC; in pratica il massimo della sinusoide sarà 0xFFF da dare in ingresso al DAC.
Ciao,
Dario


http:\www.d2l.it

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

  • bading
  • Avatar di bading
  • Elite Member
  • Elite Member
Di più
9 Anni 5 Mesi fa #5 da Irene
Risposta da Irene al topic Generatore di forma d'onda sinusoidale
Ciao Dario,
la sinusoide che vorrei generare ha ampiezza di 100 uV, la dinamica del convertitore 2,7 V.
Per questo dicevo dei segnali piccoli.
Sul codice che ho riportato avete qualche idea su possibili errori?
Grazie mille :)
I.

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

  • Irene
  • 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