× MSP430, Microcontrollori 16 bit Ultra Low Power

Librerie MSP430 - Code Composer Studio

10 Anni 4 Settimane fa #26 da mastroebano
Risposta da mastroebano al topic Librerie MSP430 - Code Composer Studio
Paolo hai passato un bel guaio con me,ho incluso il file come da te detto e non mi da più il warning ,ho compilato il programma e mi da errore perche non trova le variabili allora le ho immesse ma lo stesso mi da segnalazione riporto le segnalazioni #20 identifier"flag" is undefined e cosi per I2C,MST_DATA ed slv_addr ti accludo il listato

#include <msp430.h>
#include"LCD430.h"
/*
*
// Global Variable declarations
char flag; //per uscire dal loop in I2C
char i,x;
char slv_addr = 0X70; // indirizzo di chiamata dello slave
char MST_data;
int I2C_State = 0;


* main.c
*/
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
if (CALBC1_8MHZ==0xFF) // If calibration constants erased
{
while(1); // do not load, trap CPU!!
}
DCOCTL = 0; // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_8MHZ; // Set DCO
DCOCTL = CALDCO_8MHZ;

P1OUT = 0xC0; // P1.6 & P1.7 Pullups, altre a 0
P1REN |= 0xC0; // P1.6 & P1.7 Pullups
P1DIR = 0xFF; // Pin non usati settati ein uscita
P2OUT = 0;
P2DIR = 0xFF;

USICTL0 = USIPE6+USIPE7+USIMST+USISWRST; // Port & USI in modo setup
USICTL1 = USII2C+USIIE; // abilita I2C & USI interrupt
USICKCTL = USIDIV_6+USISSEL_2+USICKPL; // Setup USI clocks: SCL = SMCLK/8 (~125kHz)
USICNT |= USIIFGCC; // Disabilita automatic clear control
USICTL0 &= ~USISWRST; // abilita USI
USICTL1 &= ~USIIFG; // Clear pending flag
_EINT();

return 0;
}

#pragma vector = USI_VECTOR
__interrupt void USI_TXRX (void)
{
switch(I2C_State)
{
case 0: // Genera lo Start e invia l'indirizzo
P1OUT |= 0x01; // LED on: sequence start
USISRL = 0x00; // Genera LO Start .....
USICTL0 |= USIGE+USIOE;
USICTL0 &= ~USIGE;
USISRL = slv_addr; // ... e trasmette l'indirizzo dello slave
USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, TX Address
I2C_State = 2; // allo stato successivo: receive address (N)Ack
break;

case 2: // Receve Address Ack/Nack bit
USICTL0 &= ~USIOE; // SDA = input
USICNT |= 0x01; // Bit counter = 1, receve (N)Ack bit
I2C_State = 4; // allo stato successivo: check (N)Ack
break;

case 4: // Processa Address Ack/Nack & trasmette MST_data
USICTL0 |= USIOE; // SDA = output
if (USISRL & 0x01) // Se riceve un Nack ...
{ // Trasmette uno stop...
USISRL = 0x00;
USICNT |= 0x01; // Bit counter = 1, SCL high, SDA low
I2C_State = 10; // Va allo stato successivo: generate Stop
P1OUT |= 0x01; // Accende il LED: errore
}
else
{ // Se ricevuto un Ack, TX data allo slave...
USISRL = MST_data; // carica il data byte
USICNT |= 0x08; // Bit counter = 8, inizia TX
I2C_State = 6; // va allo stato successivo: receive data (N)Ack
P1OUT &= ~0x01; // spegne il LED
}
break;

case 6: // Receve il bit Ack/Nack
USICTL0 &= ~USIOE; // SDA = input
USICNT |= 0x01; // Bit counter = 1, receve (N)Ack bit
I2C_State = 8; // va allo stato successivo: verisica se (N)Ack
break;

case 8: // Processa MST_data in funzione di Ack/Nack & invio lo Stop
USICTL0 |= USIOE;
if (USISRL & 0x01) // se ha ricevuto un Nack ...
P1OUT |= 0x01; // accende il LED: errore
else // se è invece un Ack
{
MST_data++; // Incrementa il Master data
P1OUT &= ~0x01; // spegne il LED
}
// Send stop...
USISRL = 0x00;
USICNT |= 0x01; // Bit counter = 1, SCL high, SDA low
I2C_State = 10; // va allo stato successivo: genera uno Stop
break;

case 10:// Genera la condizione di Stop
USISRL = 0x0FF; // USISRL = 1 to release SDA
USICTL0 |= USIGE; // Abilitato il Transparent latch
USICTL0 &= ~(USIGE+USIOE); // Disabilita Latch/SDA output
I2C_State = 0; // Resetta lo stato per una nuova trasmissione
LPM0_EXIT; // stato attivo per il nuovo transfer
flag=1;
break;
}

USICTL1 &= ~USIIFG; // Clear il flag attivo
}
le variabile le scrive in colore verde come se non le avessi dichiarate
ti saluto Antonio
PS) Sopportami e supportami ancora per un pò
ciao Antonio

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

  • mastroebano
  • Senior Member
  • Senior Member
Di più
10 Anni 4 Settimane fa #27 da elpablito
Risposta da elpablito al topic Librerie MSP430 - Code Composer Studio
@ Antonio
/*
*
// Global Variable declarations
char flag; //per uscire dal loop in I2C
char i,x;
char slv_addr = 0X70; // indirizzo di chiamata dello slave
char MST_data;
int I2C_State = 0;


* main.c
*/


Tutto quello che è compreso tra i simboli
/*
........
........
*/
è un commento quindi non preso in considerazione dal compilatore per questo il colore verde, lo stesso effetto lo ottieni con i simboli //

modifica come segue:

#include <msp430.h>
#include"LCD430.h"

// Global Variable declarations
char flag; //per uscire dal loop in I2C
char i,x;
char slv_addr = 0X70; // indirizzo di chiamata dello slave
char MST_data;
int I2C_State = 0;

/*
* main.c
*/

vedrai che adesso vede le variabili, vai avanti e dimmi
Ciao
Paolo

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

  • elpablito
  • Platinum Member
  • Platinum Member
Di più
10 Anni 3 Settimane fa #28 da mastroebano
Risposta da mastroebano al topic Librerie MSP430 - Code Composer Studio
Paolo buongiornno
finalmente tutto OK ti ho fatto sudare sette camice ,conunque grazie ancora sicuramente ti disturberò per chiederti chiarimenti su alcune istruzioni del programma per il momento ti saluto e ti auguro buona giornata.
Ciao Antonio
PS) quando ti riesci vedi se puoi postare lo schema elettrico

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

  • mastroebano
  • Senior Member
  • Senior Member
Di più
10 Anni 3 Settimane fa #29 da elpablito
Risposta da elpablito al topic Librerie MSP430 - Code Composer Studio
Ciao Antonio
te lo ho già mandato. Vai indietro alla pag. 4 c'è allegato il PDF
Paolo

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

  • elpablito
  • Platinum Member
  • Platinum Member
Di più
10 Anni 3 Settimane fa #30 da mastroebano
Risposta da mastroebano al topic Librerie MSP430 - Code Composer Studio
Paolo buonasera
si hai ragione preso dal problema non avevo notato l'allegato.
Ti pongo una domanda molto semplice stamani ho ricevuto la scheda LaunchPad ed ho iniziato qualche prova seguendo il tutorial che è sul sito ora ti chiedo : dopo aver compilato il programma (simbolo martello ) io lo vado a caricare nel cip( pigiando sul simbolo lucciola) perche dopo debbo premere il tasto F8? che funzione ha?
Altra domanda perche dopo aver caricato il programma Hello Word sempre del tutorial dopo, carico un altro esempio riportato sul tutorial lo compilo lo carico ma per farlo funzionare debbo staccare la USB ricollegarla e poi funziona ? è normale oppure sbaglio ? e se sbaglio dove?
PS) non so se posso continuare su questo argomento aperto oppure debbo aprire un altro argomento non conosco le regole del forum,tu cosa mi consigli?
Ciao Antonio

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

  • mastroebano
  • Senior Member
  • Senior 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