решил вспомнить былое и поюзать МК как хобби. (взял ардуинки, атмегу8 ну и msp430) начал с MSP430G2553 ланчпад поюзал кнопку, диодиками поморгал под IAR и Енергия. но вот загвоздка с выводом UART вроде как дожно выводить но нифига.
так с выводом разобрался оказывается нужно было перемычки RXD TXD перевернуть как у казано на плате!! под Енергией всё пошло и вывело на терминал. а вот под IAR ни чего не нашел что бы компилело. всё ошибками.
__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
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]; } }
Вопрос - на выводе RST обязательно наличие резистора подтянутого к +? Без него не будет болтанки уровня? А если перевести вывод в режим NMI, но это прерывание не активировать, можно без резистора обойтись?
Даже если перевести этот вывод в режим NMI (немаскируемого прерывания, вторая функция этой ножки)? А у вас есть под рукой какой-либо макет, что б проверить, что на этом выводе без резистора?
Просто в описании контроллера не указано явно, что этот резистор строго обязателен и причем в обоих режимах. Указано, что этот вход МОЖЕТ использоваться для сброса при низком уровне и режиме RST.
Хочу сделать из MSP430 LaunchPad тестовый прибор, с которым можно связаться через com-порт компьютера (по протоколу modbus).
На первое время хочу сделать связь через com-порт компьютера с MSP430 LaunchPad, чтобы банально сканер com-порта показывал, что MSP430 LaunchPad шлёт биты на компьютер.
Пока я не нашёл в инете рабочего примера, как сделать связь между MSP430 LaunchPad и компьютером через com-порт. Те примеры, что нашёл (energia), дали мне ещё больше вопросов.
1. LaunchPad содержит в себе мост USB-UART, который можно использовать для связи с МК.
2. COM-порт и MODBUS - самоцель? Или цель - просто переслать байты в МК?
3. Почитайте про модуль USCI в User's Guide. USCI ЕМНИП можно сконфигурировать как UART, а это и есть то, что Вам надо. Со стороны Windows используйте функции API CreateFile, WriteFile (да, с COM-портом можно работать как с файлом).
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
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).
//****************************************************************************** // 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"
подскажите, а код вашей статьи тоже имеет такую особенность: пересылаемые пакеты не покажет программа 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 не умеет сканировать или должен быть как-то хитро настроен (а при этом пакеты, которые я кидаю используя c# net, portmon прекрасно показывает). Просветите.
Тут проблема может быть в том, что, если использовать мост USB-UART, порт получается виртуальный. И кто знает, как там portmon на него реагирует...
хм... я полагал, что переходник usb-com, используемый для связи с приборами по com-порту (c# net, Win XP Home Edition SP3 лиц), предоставляет в систему такой же виртуальный com-порт, что и MSP430 LaunchPad (в смысле свободной доступности к нему всеми возможными программными средствами как к аппаратному com-порту).
Выходит, эти два com-порта для системы представлены по-разному?
в смысле свободной доступности к нему всеми возможными программными средствами
Вопрос как раз в том, как этот самый portmon осуществляет к нему доступ. Он же вроде как-то перехватывает поток данных, а не по-человечески открывает порт...
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
Никогда о такой не слышал, но LaunchPad предоставляет в систему стандартный COM порт. Скачайте одну из тех программ терминалок, что в статье упомянуты, и все будет работать. С Energia я тоже не балуюсь и Вам не советую.
Написал на c# net простенькую прогу, подключающаяся к com-порту и показывающая всё что оттуда идёт - так и есть, данные от MSP430 LaunchPad через com-порт идут! Вы были правы, portmon в данном случае просто не работает!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения