MSP430, Microcontrollori 16 bit Ultra Low Power

Programmazione Porta UART in CCS e scambio dati tra due MSP (uso TX e RX)

  • manuele de marco
  • Autore della discussione
  • Nuovo Utente
  • Nuovo Utente
Di più
11 Anni 2 Mesi fa #1 da manuele de marco
buona sera, è la prima volta che scrivo in questo"forum", sono uno studente di 4 ITIS, il mio prof mi ha detto di fare una ricerca su come programmare una porta UART in CCS, scrivere il codice e spiegarlo. poi dovrei parlare anche dello scambio dati tra MSP. NOI QUESTE COSE NON LE ABBIAMO MAI FATTE, LEGGENDO IN GIRO HO TROVATO POCO, O MEGLIO, HO TROVATO POCO CHE RIESCO A CAPIRE. QUALCUNO MI POTREBBE DARE UNA DRITTA SPIEGANDOMI CON PAROLE SEMPLICE COME SI PROGRAMMA UNA PORTA UART? GRAZIE

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

  • paoletto
  • Elit Utente
  • Elit Utente
Di più
11 Anni 2 Mesi fa #2 da paoletto
Ciao Manuele, benvenuto :)
Prima di tutto ti consiglio di capire bene la logica della ricetrasmissione dei dati con la UART, una volta capito il protocollo è tutto più semplice.
Non posso che consigliarti la guida del buon Mauro:

www.laurtec.it/tutorial-54/elettronica-d...-il-protocollo-rs232

Dopo fatto questo, puoi provare a leggere l'esempio di utilizzo della porta UART sul testo C18 step by step.
Non è scritto per CCS ma per C18, ma questo non deve spaventarti. Mi aspetto che ci siano funzioni simili anche per CCS compiler, se capisci la logica puoi facilmente riportare il codice scritto per C18 in CCS!

www.laurtec.it/tutorial-54/cad-e-softwar...-by-step#comment-137

Buon lavoro! ;)

Paoletto

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

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
11 Anni 2 Mesi fa - 11 Anni 2 Mesi fa #3 da Mauro Laurenti
Dopo aver letto il tutorial sul protocollo RS232, il quale dal lato microcontrollore fa uso del modulo UART, fai riferimento anche alla user guide della famiglia MSP430 a cui fai riferimento.

Se istalli CCS avrai poi anche MSP430Ware, che possiede esempi brevi di trasmissione seriale basata su UART (una ventina di righe di codice).

Saluti,

Mauro

PS
Benvenuto nel Forum! :)
Ultima Modifica 11 Anni 2 Mesi fa da Mauro Laurenti.

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

  • birg81
  • Visitatori
  • Visitatori
11 Anni 1 Mese fa #4 da birg81
Salve, vi chiedo infinitamente scusa, è Manuele è il mio alunno
Sono il prof. G.
Mi auguro che voi vogliate aiutarlo.
Ho dato a tutti i miei alunni un compito diverso.. indicando loro cosa fare e a grandi linee dove cercarlo.
E chiedo scusa sia ai miei alunni che a voi moderatori se posso con i miei modi sembrare cattivo ma ritengo utile che i miei alunni imparino a saper cercare, perché se do loro la "pappa pronta" non si faranno mai le ossa.
Sono speranzoso che per mercoledì mattina (scandenza della consegna) i miei ragazzi riescano a portarmi qualcosa di finito... altrimenti.. LI BOCCIO!!!
Mi auguro pertanto che vogliate aiutare i miei poveri tapini...

Alla prossima

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

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
11 Anni 1 Mese fa - 11 Anni 1 Mese fa #5 da Mauro Laurenti
Ciao,

vediamo di rendere lungo il weekend.

Un esempio funzionalizzante con UART e' il seguente:
Code:
#include <msp430.h> int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT if (CALBC1_1MHZ==0xFF) // If calibration constant erased { while(1); // do not load, trap CPU!! } DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL1 = CALBC1_1MHZ; // Set DCO DCOCTL = CALDCO_1MHZ; P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = 104; // 1MHz 9600 UCA0BR1 = 0; // 1MHz 9600 UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1 UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled } // Echo back RXed character, confirm TX buffer is ready first #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) { while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready? UCA0TXBUF = UCA0RXBUF; // TX -> RXed character }

Il codice e' estratto da Code Composer studio, ovvero MSP430Ware.
La licenza del codice e' presente nel file allegato.

File allegato:

Nome del file: msp430g2xx...1_9600.c
Dimensione del file:4 KB


Il programma invia i dati ricevuti ovvero fa un echo.
Per testarlo si puo' usare una LaunchPad, da programmare per mezzo di CCS.

Alcuni dettagli sul come far funzionare l'esempio li trovi in questo Post .

Per far comunicare due MSP430 dovrai creare un collegamento Null-Model tra gli stessi (vedi il tutorial Il protocollo RS232 segnalato in precedenza).

Per capire il programma ti rimando al corso MSP430 .

Successivamente leggi il capitolo della User guide dedicato alla USCI...e avrai tutto.

Saluti,

Mauro

PS

@birg81
sospettavo che fosse un tuo studente...
Allegati:
Ultima Modifica 11 Anni 1 Mese fa da Mauro Laurenti.
I seguenti utenti hanno detto grazie : manuele de marco

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

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.

Forum - Ultimi messaggi