Home
Accesso / Registrazione
 di 

led blinking MSP430FR5739

4 risposte [Ultimo post]
ritratto di Michele.Cappanera
Offline
Titolo: User
Utente
Ultima visita:
1 settimana 2 giorni fa
Utente dal: 04/03/2014
Messaggi: 3

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.

ritratto di gfranco78
Offline
Titolo: User+
Utente+
Ultima visita:
2 settimane 1 giorno fa
Utente dal: 02/05/2013
Messaggi: 17
Utente PREMIUM
Puoi postare lo script?

Puoi postare lo script?

ritratto di Michele.Cappanera
Offline
Titolo: User
Utente
Ultima visita:
1 settimana 2 giorni fa
Utente dal: 04/03/2014
Messaggi: 3
Script

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.
ritratto di Michele.Cappanera
Offline
Titolo: User
Utente
Ultima visita:
1 settimana 2 giorni fa
Utente dal: 04/03/2014
Messaggi: 3
Problema risolto

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;
}

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
1 settimana 5 giorni fa
Utente dal: 28/06/2011
Messaggi: 868
Utente PREMIUM
Ottimo :) Grazie per il

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

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ultimi Commenti