Home Forum MICROCONTROLLORI led blinking MSP430FR5739

Questo argomento contiene 4 risposte, ha 3 partecipanti, ed è stato aggiornato da Piero Boccadoro Piero Boccadoro 7 mesi, 1 settimana fa.

Stai vedendo 5 articoli - dal 1 a 5 (di 5 totali)
  • Autore
    Articoli
  • #60639

    Michele.Cappanera
    Partecipante

    Buonasera a tutti scusate la banalità della domanda ma sono alla mia prima esperienza con i microcontrollori. Ho ricevuto in regalo un MSP430FR5739 della TI e per iniziare ho provato a realizzare i due esempi presenti in Code Composer Studio (versione 6.0.0). Una volta creato il progetto relativo al led blinking ed effettuato il debug (ottengo solo la  warning #112-D statement is unreachable nell'ultima riga del main dove è scritto return 0;) ho lanciato lo script senza però ottenere nessun lampeggio. Non ottengo nulla nemmeno con l'altro esempio relativo ad hello world. Qualcuno ha per caso avuto il mio stesso problema o mi può aiutare? Vi ringrazio in anticipo.

    #75542
    gfranco78
    gfranco78
    Partecipante

    Puoi postare lo script?

    #75543

    Michele.Cappanera
    Partecipante

    Ciao gfranco78 il codice relativo al led blinking è il seguente:

    #include <msp430.h>

    int main(void) {
    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
    P1DIR |= 0x01; // Set P1.0 to output direction

    for(; ; ) {
    volatile unsigned int i; // volatile to prevent optimization

    P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR

    i = 10000; // SW Delay
    do i–;
    while(i != 0);
    }

    return 0;
    }

    Il codice relativo ad hello world è invece il seguente:

    #include <stdio.h>
    #include <msp430.h>

    /*
    * hello.c
    */
    int main(void) {
    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

    printf("Hello World!\n");

    return 0;
    }
    Inoltre ho provato ho realizzare anche altri progetti come ad esempio quello per accendere il led ogni volta ce viene premuto il tasto s2 (preso dal sito Laurtec) ma anche in questo caso una volta effettuato il debug quando vado a lanciare (run) il progetto non ottengo nulla. Ti posto anche questo codice (preso dal sito Laurtec) per completezza:

    #include <msp430.h>
    void main(void) {

    // Stop watchdog timer
    WDTCTL = WDTPW + WDTHOLD;
    // Imposta BIT0 come Output
    P1DIR |= BIT0;
    // Abilita resistore ingresso
    P1REN |= BIT3;
    // Pull-up resistor
    P1OUT = BIT3;
    while (1) {

    if (P1IN & BIT3)

    // Spengo LED1
    P1OUT &= ~BIT0;

    else

    // Accendo LED1
    P1OUT |= BIT0;

    }

    }

    Visto che non ho proprio idea di quale possa essere il problema ho appena scaricato anche IAR adesso proverò a realizzare dei progetti per vedere se ottengo anche con questo gli stessi risultati.  Grazie davvero per la disponibiltà e l'aiuto.
    #75545

    Michele.Cappanera
    Partecipante

    Ho risolto il problema, era dovuto al fatto che i led sono posizionati diversamente rispetto alle altre board di TI per cui l'esempio era stato scritto (ringrazio Mauro Laurenti per l'aiuto).  Se qualcuno avesse il mio stesso problema posto di seguito il codice rivisto e funzionante:

    #include <msp430.h>

    int main(void) {
    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
    PJDIR |= BIT0; // Set PJ.0 to output direction

    for(;;) {
    volatile unsigned int i; // volatile to prevent optimization

    PJOUT ^= BIT0; // Toggle PJ.0 using exclusive-OR

    i = 10000; // SW Delay
    do i–;
    while(i != 0);
    }

    return 0;
    }

    #75548
    Piero Boccadoro
    Piero Boccadoro
    Partecipante

    Ottimo :)
    Grazie per il listato riveduto e corretto.
    Sono sicuro che potrà essere utile ad altri utenti. :)

Stai vedendo 5 articoli - dal 1 a 5 (di 5 totali)

Devi aver eseguito l’accesso per poter rispondere a questa discussione.