MSP430 – Stefano Allegri https://www.allegristefano.eu la cooperazione è alla base di una buona progettazione Sun, 29 May 2022 07:48:19 +0000 it-IT hourly 1 https://wordpress.org/?v=5.3.15 MSP430 – Puntatori a struttura ANSI C https://www.allegristefano.eu/2022/05/29/msp430-puntatori-a-struttura-ansi-c/ https://www.allegristefano.eu/2022/05/29/msp430-puntatori-a-struttura-ansi-c/#respond Sun, 29 May 2022 07:48:16 +0000 https://www.allegristefano.eu/?p=219 Per poter accedere ai dati di una struttura un modo è quello di accedere ai singoli elementi della struttura, un’altro è quello di accedere all’area di memoria nella quale quell’elemento è memorizzato. pragma pack(push,1) // definisce l'allineamento della compressione per //i membri della struttura a 1Byte // l'effetto è che non ci sono byte non […]

L'articolo MSP430 – Puntatori a struttura ANSI C proviene da Stefano Allegri.

]]>
Per poter accedere ai dati di una struttura un modo è quello di accedere ai singoli elementi della struttura, un’altro è quello di accedere all’area di memoria nella quale quell’elemento è memorizzato.

 pragma pack(push,1)     // definisce l'allineamento della compressione per 
                         //i membri della struttura a 1Byte
                         // l'effetto è che non ci sono byte non 
                         //utilizzati tra i vari campi della struttura e 
                         // i dati salvaìti in memoria occupando la somma 
                         // delle grandezze dei cami dichiarati nella 
                         //struttura 
 typedef struct definizioneStruttura {
     float primo;      // 4 byte
     float secondo;    // 4byte
     int terzo;        // 2byte
 } definizioneStruttura;
 pragma pack(pop)
 definizioneStruttura Struttura;
 int main(void) {
 unsigned int *pStruttura=&Struttura;    // il puntatore è di tipo 
                                         // unsigned int = 2 Byte
   Struttura.primo = 1.1;
   Struttura.secondo = 2.2;
   Struttura.terzo = 3;                //inizializzazione valore ==> 3
   *(pStruttura+4) = 0x0400;           // per scorrere i campi della
                                       // struttura ci si sposta sommando 
                                       // 4 al puntatore alla struttura
                                       // per avanzare di 4 volte la 
                                       // dimensione del puntatore alla 
                                       // struttura, sommando 2 si 
                                       // punterebbe a "Struttura.secondo"  
   
   Printf("valore terzo %d", Struttura.terzo);
 }
 // stamperà il valore ==> 4

per MSP430 la memorie viene indirizzata con 2 byte è quindi possibile definire un puntatore di tipo unsigned int e assegnare a questo il valore di primo elemento di memoria della struttura

 unsigned int *pStruttura=&Struttura;    // il puntatore è di tipo 
                                         // unsigned int = 2 Byte 

&Struttura

il carattere speciale & consente di recuperare l’indirizzo di memoria della Struttura

per accedere al contenuto della struttura si fa avanzare il puntatore a step di 2 byte alla volta (questo perchè il puntatore è definito come unsigned int == 2byte)

    *(pStruttura+4) = 0x0400;           // per scorrere i campi della
                                       // struttura ci si sposta sommando 
                                       // 4 al puntatore alla struttura
                                       // per avanzare di 4 volte la 
                                       // dimensione del puntatore alla 
                                       // struttura 

per modificare il valore di Struttura.terzo è necessario tenere in considerazione l’ordine dei byte che nel caso dell’MSP430 è

little endian = indirizzo più piccolo contiene il byte meno significativo

Ordine dei byte (endianness)

L’ordine dei byte (conosciuto anche come big-endianlittle-endian o middle-endian a seconda dei metodi differenti), in informatica, indica modalità differenti usate dai calcolatori per immagazzinare in memoria dati di dimensione superiore al byte (es. worddwordqword).

L'articolo MSP430 – Puntatori a struttura ANSI C proviene da Stefano Allegri.

]]>
https://www.allegristefano.eu/2022/05/29/msp430-puntatori-a-struttura-ansi-c/feed/ 0
Analisi spettrale attraverso FFT con MSP430 https://www.allegristefano.eu/2020/03/21/analisi-spettrale-attraverso-fft-con-msp430/ https://www.allegristefano.eu/2020/03/21/analisi-spettrale-attraverso-fft-con-msp430/#respond Sat, 21 Mar 2020 15:46:26 +0000 https://www.allegristefano.eu/?p=51 Di seguito una descrizione dell’integrazione FFT con MSP430, mediante l’ottimizzazione dell’algoritmo di calcolo FFT è stato possibile integrare a bordo della scheda di valutazione MSP430F5529 USB LaunchPad Evaluation Kit MSP430F5529 USB LaunchPad Evaluation Kit Utilizzando il convertitore analogico digitale integrato nell’MSP abbiamo campionato l’ingresso con una frequenza di campionamento di 20KHz e memorizzato i campioni all’interno di un buffer da 1024 […]

L'articolo Analisi spettrale attraverso FFT con MSP430 proviene da Stefano Allegri.

]]>
Di seguito una descrizione dell’integrazione FFT con MSP430, mediante l’ottimizzazione dell’algoritmo di calcolo FFT è stato possibile integrare a bordo della scheda di valutazione MSP430F5529 USB LaunchPad Evaluation Kit

FFT con MSP430 EXP430F5529LP

MSP430F5529 USB LaunchPad Evaluation Kit

Utilizzando il convertitore analogico digitale integrato nell’MSP abbiamo campionato l’ingresso con una frequenza di campionamento di 20KHz e memorizzato i campioni all’interno di un buffer da 1024 valori.

Con l’utilizzo della libreria MyFFT è stato possibile creare un analisi FFT su 1024  punti.  È però possibile estendere la dimensione del buffer sostituendo la CPU con il modello MSP430F5659 che rispetto alla precedente ha 66KB RAM (+86% di spazio in più rispetto alla CPU – MSP430F5529 – montata sulla scheda di valutazione.

La libreria MyFFT produce, in due buffer separati, i contributi della parte real estate e immaginaria del risultato del calcolo FFT con MSP430, questi possono essere utilizzati per calcolare modulo (es. ampiezza di un segnale sinusoidale) e fase (es. campionando con due ingressi analogici due segnali sinusiodali è possibile calcolare lo sfasamento presente tra i due segnali).

Grazie all’ambiente di programmazione CCS (Code Composer Studio) – offerto con liceza gratuita da Texsas Instruments a partire dalla versione 7.0 – è possibile vedere in tempo reale il contenuto della RAM della CPU sotto test e visualizzare sotto forma di grafici porzioni di RAM, per cui è possibile vedere il risultato dell’elaborazione FFT in tempo reale, disegnando di fatto lo spettro del segnale campionato.

CCS - Code Composer Studio - FFT con MSP430

CCS – Code Composer Studio – all’opera l’ambiente di sviluppo Texsas Instruments mentre visualizza in forma grafica una porzione della RAM interna alla CPU MSP430F5529

L’applicazione pratica: analisi spettrale per rilevazione ampiezza di segnali sinusoidali

Abbiamo implementato l’elaborazione FFT per poter rilevare frequenza e ampiezza di segnali sinusoidali, l’obiettivo è stato quello di poter rilevare frequenze da 40 Hz a 10KHz e una dinamica di 60dB (che vuol dire poter risolvere ampiezze di sinusiodi che variano ad esempio da 3.3mVpp a 3,3Vpp).

L'articolo Analisi spettrale attraverso FFT con MSP430 proviene da Stefano Allegri.

]]>
https://www.allegristefano.eu/2020/03/21/analisi-spettrale-attraverso-fft-con-msp430/feed/ 0
LoRaWAN sistema radio lunga portata a basso consumo https://www.allegristefano.eu/2020/03/21/lorawan-sistema-radio-lunga-portata-a-basso-consumo/ https://www.allegristefano.eu/2020/03/21/lorawan-sistema-radio-lunga-portata-a-basso-consumo/#respond Sat, 21 Mar 2020 15:45:25 +0000 https://www.allegristefano.eu/?p=49 Dispositivo alimentato con batteria al litio con autonomia di due anni e che comunica via radio fino a 100Km di distanza ad un costo di produzione inferiore ai 20€. Il dispositivo serve per rendere disponibili via LAN o su WEB dati raccolti da sensori remoti, la trasmissione avviene via radio sfruttando la tecnologia LoRaWAN.  Architettura del dispositivo : Microcontrollore Texsas Instrument MSP430F5659 […]

L'articolo LoRaWAN sistema radio lunga portata a basso consumo proviene da Stefano Allegri.

]]>
Dispositivo alimentato con batteria al litio con autonomia di due anni e che comunica via radio fino a 100Km di distanza ad un costo di produzione inferiore ai 20€.

Il dispositivo serve per rendere disponibili via LAN o su WEB dati raccolti da sensori remoti, la trasmissione avviene via radio sfruttando la tecnologia LoRaWAN. 

Architettura del dispositivo :

dispositivo LoRaWAN

architettura dispositivo LoRaWAN

 Architettura del sistema ” LoRaWAN sistema radio lunga portata “:

Registrazione di un dispositivo e avvio della comunicazione:

Ogni dispositivo ha un proprio identificativo univoco hweui che viene utilizzato per registrarsi in uno o più gateway LoRa WAN. Per procedere con la registrazione è necessario che il gateway accetti connessioni da quel determinato dispositivo e che quindi ne conosca il device eui, che nel nostro caso coincide con l’hweui del dispositivo.

Oltre all’identificativo univoco del dispositivo (hweui) il protocollo LoRaWAN mette a disposizione un’altro identificativo app eui che il dispositivo comunica al gateway in fase di registrazione, questo secondo identificativo può essere utilizzato per eseguire applicazioni differenti sullo stesso dispositivo e instradare così i dati verso sistemi di gestione differenti.

Es.: se lo stesso dispositivo è capace di rilevare la temperatura ambiente e la luminosità mediante due app eui differenti è possibile connettersi con lo stesso gateway ma instradare il dato di temperatura su un socket e il dato di luminosità su  un’altro socket.

Trasferimento dei dati e consumi del dispositivo ” LoRaWAN sistema radio lunga portata “

  • data rate on-aire compreso tra 0.3 Kbps e 50 Kbps
  • duty cycle massimo del  1%
  • consumo in trasmissione pari a 40mA, in ricezione pari a 20mA, quando il modulo radio non è attivo viene spento e rimane alimentato in sleep il solo microcontrollore che consuma 35uA, mantenendo operativo il real time clock per poter così programmare un risveglio temporizzato del microcontrollore

La specifica LoRaWAN impone appunto un duty cycle pari a 1% di occupazione del canale radio per consentire a tutti i dispositivi di poter consegnare ai gateway la propria informazione e per meglio comprendere le caratteristiche di questa limitazione di seguito un’esempio pratico.

La nostra applicazione dovrà rispettare la seguente formula:

Toff = (TimeOnAir / DutyCycle) - TimeOnAir

In questo il modulo RN2483 di Microchip ci viene in contro, ed essendo un dispositivo certificato dall’alleanza LoRaWAN, non consente di superare tale limite, rispondendo al comando di trasmissione con un codice di errore nel caso la nostra applicazione tenti di superare tale limite.

Se dobbiamo trasmettere un pacchetto di 30 bytes avendo impostato il baud rate on-aire pari a 0.3Kbps avremo:

TimeOnAir = tempo di occupazione del canale radio per il trasferimento in aria del pacchetto da 500 bytes

  • TimeOnAir = 30 bytes x 8 bit / 0.3 Kbps = 0.8 secondi

DutyCycle = percentuale massima di occupazione del canale radio

  • DutyCycle = 1% = corrisponde a moltiplicare per 0.01

Toff = tempo di attesa per il trasferimento del prossimo pacchetto

  • Toff = (TimeOnAir / DutyCycle) – TimeOnAir = (0.8/0.01)-0.01 = 79.9 secondi

Impostare un basso baud rate on-aire consente di aumentare la sensibilità in ricezione del modulo radio e quindi di coprire distanze maggiori, ma ovviamente restringe il numero di bytes che si possono trasmettere nell’unità di tempo.

  • distanza tra dispositivo ” LoRaWAN sistema radio lunga portata ” e gateway
    • oltre 100Km in condizioni favorevoli;
    • fino a 15Km in ambienti rurali
    • fino a 2 Km in ambienti urbani e densamente popolati

Gateway

Il dispositivo sviluppato è stato inserito in una rete di monitoraggio composta da un numero n di dispositivi e di gateway LoRaWAN.

Il gateway utilizzato è prodotto da MultiTech e composto dal modulo Conduit con l’espansione MTAC-LoRa Cards.

Grazie a questo gateway è stato possibile ricevere i dati trasmessi dai dispositivi e indirizzarli sul LAN via soket. Il gateway ha poi a bordo un log che consente l’analisi del traffico sulla rete LoRaWAN.

L'articolo LoRaWAN sistema radio lunga portata a basso consumo proviene da Stefano Allegri.

]]>
https://www.allegristefano.eu/2020/03/21/lorawan-sistema-radio-lunga-portata-a-basso-consumo/feed/ 0