TI MSP430 Launch Pad
-
PartizanTT
- Родился
- Сообщения: 12
- Зарегистрирован: Пт июн 07, 2013 01:04:32
Re: TI MSP430 Launch Pad
всем привет.
решил вспомнить былое и поюзать МК как хобби. (взял ардуинки, атмегу8 ну и msp430)
начал с MSP430G2553 ланчпад
поюзал кнопку, диодиками поморгал под IAR и Енергия.
но вот загвоздка с выводом UART вроде как дожно выводить но нифига.
можно реальный кусок кода под IAR и что делать!
решил вспомнить былое и поюзать МК как хобби. (взял ардуинки, атмегу8 ну и msp430)
начал с MSP430G2553 ланчпад
поюзал кнопку, диодиками поморгал под IAR и Енергия.
но вот загвоздка с выводом UART вроде как дожно выводить но нифига.
можно реальный кусок кода под IAR и что делать!
-
PartizanTT
- Родился
- Сообщения: 12
- Зарегистрирован: Пт июн 07, 2013 01:04:32
Re: TI MSP430 Launch Pad
так с выводом разобрался
оказывается нужно было перемычки RXD TXD перевернуть как у казано на плате!!
под Енергией всё пошло и вывело на терминал.
а вот под IAR ни чего не нашел что бы компилело. всё ошибками.
под Енергией всё пошло и вывело на терминал.
а вот под IAR ни чего не нашел что бы компилело. всё ошибками.
Re: TI MSP430 Launch Pad
В ДШ все доходчиво написано как работать с UART. Ничего искать не надо напишите пару строчек сами. Вот пример инициализации модуля на 9600 бод:
Вот еще пример посылки байта в R4 через UART
Код: Выделить всё
; clock setup
mov.b &CALDCO_8MHZ, &DCOCTL
mov.b &CALBC1_8MHZ, &BCSCTL1 ; set 8 MHz clock
mov.b #DIVS_1, &BCSCTL2 ; SMCLK=DCO/2
mov.b #LFXT1S_2, &BCSCTL3 ; select VLO as ACLK
; UCA0 setup
mov.b #UCSSEL_2+UCSWRST, &UCA0CTL1 ; SMCLK
mov.b #0xA0, &UCA0BR0 ; setup for 9600 bod
mov.b #1, &UCA0BR1 ; no parity, 1 stop bit
mov.b #UCBRS_6, &UCA0MCTL
bic.b #UCSWRST, &UCA0CTL1 ; enable USARTВот еще пример посылки байта в R4 через UART
Код: Выделить всё
Send_USART: ; send a char in R4 via UART
bit.b #UCA0TXIFG, &IFG2 ; wait for transmitter ready
jz $-4
mov.b R4, &UCA0TXBUF
ret-
PartizanTT
- Родился
- Сообщения: 12
- Зарегистрирован: Пт июн 07, 2013 01:04:32
Re: TI MSP430 Launch Pad
что-то ассеблер мне не очень
нашел такой пример. (правда тут уже с моими извратами)
только код из-за библиотек вылез за пределы 4kb
в итоге пришлось искать и ставить ломоный IAR
нашел такой пример. (правда тут уже с моими извратами)
только код из-за библиотек вылез за пределы 4kb
Код: Выделить всё
#include "msp430g2553.h"
#include <stdio.h>
#include <string.h>
void sendString(char*);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//P1DIR |= (BIT0|BIT7); // Set the LEDs on P1.0, P1.1, P1.2 and P1.6 as outputs
P1DIR |= BIT0 + BIT6 + BIT7 ;
P1OUT &= ~BIT7;
P1OUT = 0x01;
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; // Echo back received character
char buf[30];
sprintf(buf, "RH=%d\n", 56);
sendString(buf);
if (UCA0RXBUF == 'W') P1OUT |= BIT0; // Turn on P1.0 red LED when R is received
else if (UCA0RXBUF == 'w') P1OUT &= ~BIT0; // Turn off P1.0 red LED when r is received
if (UCA0RXBUF == 'G') P1OUT |= BIT6; // Turn on P1.6 green LED when G is received
else if (UCA0RXBUF == 'g') P1OUT &= ~BIT6; // Turn off P1.6 green LED when g is received
if (UCA0RXBUF == 'F') P1OUT |= BIT7; // Turn on P1.6 green LED when G is received
else if (UCA0RXBUF == 'f') P1OUT &= ~BIT7; // Turn off P1.6 green LED when g is received
}
void sendString(char * text) {
int i = 0;
for (i = 0; i < strlen(text); i++) {
while (!(IFG2 & UCA0TXIFG))
;
UCA0TXBUF = text[i];
}
}
Re: TI MSP430 Launch Pad
правда тут уже с моими извратами
И точно, с извратами... Зачем было stdio подключать?
Код: Выделить всё
char buf[30];
sprintf(buf, "RH=%d\n", 56);
sendString(buf);
Конкретно здесь можно сделать гораздо проще:
Код: Выделить всё
char buf[30];
buf[0]='R';
buf[1]='H';
buf[2]='=';
buf[3]='5';
buf[4]='6';
buf[5]=0x0A;
buf[6]=0x0D;
buf[7]=0;
sendString(buf);
Соответственно, написать свой преобразователь произвольного числа в строку совсем несложно.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: TI MSP430 Launch Pad
Вопрос - на выводе RST обязательно наличие резистора подтянутого к +? Без него не будет болтанки уровня? А если перевести вывод в режим NMI, но это прерывание не активировать, можно без резистора обойтись?
Re: TI MSP430 Launch Pad
на выводе RST обязательно наличие резистора подтянутого к +?
Обязательно.
можно без резистора обойтись?
Нет. Все входы должны иметь четко заданный уровень.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: TI MSP430 Launch Pad
Даже если перевести этот вывод в режим NMI (немаскируемого прерывания, вторая функция этой ножки)?
А у вас есть под рукой какой-либо макет, что б проверить, что на этом выводе без резистора?
Просто в описании контроллера не указано явно, что этот резистор строго обязателен и причем в обоих режимах. Указано, что этот вход МОЖЕТ использоваться для сброса при низком уровне и режиме RST.
А у вас есть под рукой какой-либо макет, что б проверить, что на этом выводе без резистора?
Просто в описании контроллера не указано явно, что этот резистор строго обязателен и причем в обоих режимах. Указано, что этот вход МОЖЕТ использоваться для сброса при низком уровне и режиме RST.
Re: TI MSP430 Launch Pad
Просто в описании контроллера не указано явно, что этот резистор строго обязателен
Плохо читали.
User's Guide, страница 44, таблица 2-3.
что на этом выводе без резистора?
Помехи. Это высокоомный цифровой вход.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: TI MSP430 Launch Pad
Действительно, оплошал. Я то в разделе IO и других смотрел, а этот как-то упустил 

Re: TI MSP430 Launch Pad
Хочу сделать из MSP430 LaunchPad тестовый прибор, с которым можно связаться через com-порт компьютера (по протоколу modbus).
На первое время хочу сделать связь через com-порт компьютера с MSP430 LaunchPad, чтобы банально сканер com-порта показывал, что MSP430 LaunchPad шлёт биты на компьютер.
Пока я не нашёл в инете рабочего примера, как сделать связь между MSP430 LaunchPad и компьютером через com-порт. Те примеры, что нашёл (energia), дали мне ещё больше вопросов.
Подскажите пожста куда копать.
На первое время хочу сделать связь через com-порт компьютера с MSP430 LaunchPad, чтобы банально сканер com-порта показывал, что MSP430 LaunchPad шлёт биты на компьютер.
Пока я не нашёл в инете рабочего примера, как сделать связь между MSP430 LaunchPad и компьютером через com-порт. Те примеры, что нашёл (energia), дали мне ещё больше вопросов.
Подскажите пожста куда копать.
Re: TI MSP430 Launch Pad
1. LaunchPad содержит в себе мост USB-UART, который можно использовать для связи с МК.
2. COM-порт и MODBUS - самоцель? Или цель - просто переслать байты в МК?
3. Почитайте про модуль USCI в User's Guide. USCI ЕМНИП можно сконфигурировать как UART, а это и есть то, что Вам надо. Со стороны Windows используйте функции API CreateFile, WriteFile (да, с COM-портом можно работать как с файлом).
2. COM-порт и MODBUS - самоцель? Или цель - просто переслать байты в МК?
3. Почитайте про модуль USCI в User's Guide. USCI ЕМНИП можно сконфигурировать как UART, а это и есть то, что Вам надо. Со стороны Windows используйте функции API CreateFile, WriteFile (да, с COM-портом можно работать как с файлом).
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: TI MSP430 Launch Pad
YS писал(а):1. LaunchPad содержит в себе мост USB-UART, который можно использовать для связи с МК.
2. COM-порт и MODBUS - самоцель? Или цель - просто переслать байты в МК?
3. Почитайте про модуль USCI в User's Guide. USCI ЕМНИП можно сконфигурировать как UART, а это и есть то, что Вам надо. Со стороны Windows используйте функции API CreateFile, WriteFile (да, с COM-портом можно работать как с файлом).
1. У меня возникло сомнение, что это можно использовать для передачи байт в МК, т.к. этот самый мост (com-порт) использует (резервирует) IAR при отладке.
2. Цель - переслать байты в МК и/или обратно в ПК. Модбас - это уже потоммм.
3. Я как раз связывался через com-порт с прибором по протоколу модбас, и общался с ними по com-порту (C# Net).
Re: TI MSP430 Launch Pad
Использовать COM порт можно даже одновременно с работающим отладчиком. Я это делал для статьи
http://radiokot.ru/circuit/analog/receiv_transmit/33/
Вот пример от ТИ для работы с UART:
http://radiokot.ru/circuit/analog/receiv_transmit/33/
Вот пример от ТИ для работы с UART:
Спойлер
Код: Выделить всё
//******************************************************************************
// MSP430G2xx3 Demo - USCI_A0, Ultra-Low Pwr UART 9600 String, 32kHz ACLK
//
// Description: This program demonstrates a full-duplex 9600-baud UART using
// USCI_A0 and a 32kHz crystal. The program will wait in LPM3, and will
// respond to a received 'u' character using 8N1 protocol. The response will
// be the string 'Hello World'.
// ACLK = BRCLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCO ~1.2MHz
// Baud rate divider with 32768Hz XTAL @9600 = 32768Hz/9600 = 3.41
//* An external watch crystal is required on XIN XOUT for ACLK *//
//
// MSP430G2xx3
// ----------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P1.2/UCA0TXD|---------->
// | | 9600 - 8N1
// | P1.1/UCA0RXD|<----------
//
// D. Dang
// Texas Instruments Inc.
// February 2011
// Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************
#include "msp430g2553.h"
const char string1[] = { "Hello World\r\n" };
unsigned int i;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR = 0xFF; // All P1.x outputs
P1OUT = 0; // All P1.x reset
P2DIR = 0xFF; // All P2.x outputs
P2OUT = 0; // All P2.x reset
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P3DIR = 0xFF; // All P3.x outputs
P3OUT = 0; // All P3.x reset
UCA0CTL1 |= UCSSEL_1; // CLK = ACLK
UCA0BR0 = 0x03; // 32kHz/9600 = 3.41
UCA0BR1 = 0x00; //
UCA0MCTL = UCBRS1 + UCBRS0; // Modulation UCBRSx = 3
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ int until Byte RXed
}
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void)
{
UCA0TXBUF = string1[i++]; // TX next character
if (i == sizeof string1 - 1) // TX over?
IE2 &= ~UCA0TXIE; // Disable USCI_A0 TX interrupt
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
if (UCA0RXBUF == 'u') // 'u' received?
{
i = 0;
IE2 |= UCA0TXIE; // Enable USCI_A0 TX interrupt
UCA0TXBUF = string1[i++];
}
}
Re: TI MSP430 Launch Pad
Ser60 писал(а):Использовать COM порт можно даже одновременно с работающим отладчиком. Я это делал для статьи
http://radiokot.ru/circuit/analog/receiv_transmit/33/
подскажите, а код вашей статьи тоже имеет такую особенность: пересылаемые пакеты не покажет программа portmon?
Я спрашиваю, потому что найденный в инете простой код для energia:
Спойлер
void setup() {// P1_0 - red LED
// P1_6 - green LED
pinMode(P1_0, OUTPUT);
pinMode(P1_6, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(P1_0, HIGH); // set the LED on
digitalWrite(P1_6, LOW); // set the LED off
Serial.println('H');
delay(1000); // wait for a second
digitalWrite(P1_6, HIGH); // set the LED on
digitalWrite(P1_0, LOW); // set the LED off
Serial.println('L');
delay(1000); // wait for a second
}
- от его работы тоже отображает пересылаемые данные только putty (или с monitor-ом, встроенный в energia), а portmon наотрез отказывается что-нибудь показывать. Терялся в догадках, - это ведь через com-порт кидается, а значит сканер com-порта portmon должен показывать хотя бы мусор. ..Или portmon не умеет сканировать
Re: TI MSP430 Launch Pad
Просветите.
Тут проблема может быть в том, что, если использовать мост USB-UART, порт получается виртуальный. И кто знает, как там portmon на него реагирует...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: TI MSP430 Launch Pad
YS писал(а):Просветите.
Тут проблема может быть в том, что, если использовать мост USB-UART, порт получается виртуальный. И кто знает, как там portmon на него реагирует...
хм... я полагал, что переходник usb-com, используемый для связи с приборами по com-порту (c# net, Win XP Home Edition SP3 лиц), предоставляет в систему такой же виртуальный com-порт, что и MSP430 LaunchPad (в смысле свободной доступности к нему всеми возможными программными средствами как к аппаратному com-порту).
Выходит, эти два com-порта для системы представлены по-разному?
Re: TI MSP430 Launch Pad
в смысле свободной доступности к нему всеми возможными программными средствами
Вопрос как раз в том, как этот самый portmon осуществляет к нему доступ. Он же вроде как-то перехватывает поток данных, а не по-человечески открывает порт...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: TI MSP430 Launch Pad
VLeshka писал(а):пересылаемые пакеты не покажет программа portmon?
Никогда о такой не слышал, но LaunchPad предоставляет в систему стандартный COM порт. Скачайте одну из тех программ терминалок, что в статье упомянуты, и все будет работать. С Energia я тоже не балуюсь и Вам не советую.
Re: TI MSP430 Launch Pad
Написал на c# net простенькую прогу, подключающаяся к com-порту и показывающая всё что оттуда идёт - так и есть, данные от MSP430 LaunchPad через com-порт идут!
Вы были правы, portmon в данном случае просто не работает!
Вы были правы, portmon в данном случае просто не работает!