Зарегистрирован: Чт май 26, 2016 14:56:43 Сообщений: 57
Рейтинг сообщения:0
Здравствуйте. Не могу понять, почему не вызывается обработчик прерывания. При том, что при передаче с COM Port Toolkit мигает светодиод RXD но в терминале ничего не отображается и прерывание не вызывается. Порты создаю и связываю Virtual Serial Ports. Тестовое сообщение из кода выводит что попало в COM Port Toolkit.
Зарегистрирован: Чт май 26, 2016 14:56:43 Сообщений: 57
Рейтинг сообщения:0
JackSmith писал(а):
Мне не удалось завести в Proteus UART на MSP430x2xx, пришлось использовать софтовый.
Я уже тоже решил плюнуть на это дело и в железе отладку делать. Реально прикошмарило каждый раз после запуска дебагера перезагружаться - зависает COM-порт. COM Port Toolkit хоть порты все видит, а Proteus на СОМ4 заканчивается. Делаю мосты СОМ2-СОМ5, СОМ3-СОМ6, СОМ4-СОМ7 И так вот 3 раза дебагер запустил и перезагрузка.
С I2C разобрался и все нормально работает. Вот думаю может и здесь я туплю, а не Proteus. Может это из-за Windows 7 - не знаю.
У меня вообще проект на G2553, но его нет в Proteus. Хотел отладить на F2132, а потом просто поменять линии порта и уже тестить в железе окончательно.
Добавлено after 15 minutes 57 seconds: В то же время, когра вешаю на RXD осциллограф - сечет передачу по порту. Мне кажется тут что-то с приемом на уровне МК, а вот что?.. Еще для G2553 линии порта указываются P1SEL и P1SEL2, а для F2132 - P3SEL. Может здесь собака зарыта? Хотя я пока еще думаю, что где-то я туплю - только изучаю данный МК.
Я уже тоже решил плюнуть на это дело и в железе отладку делать.
Аналогично, АЦП я там тоже не поднял, вне зависимости от того, что кидаешь на него: землю или шину питания - всегда выдает 1023, хотя та же программа на железке вполне нормально работает. Про то что I2C там рабочий для меня новость, я даже пытаться не стал его поднять, сразу поставил совтовый, потом попробую аппаратный завести.
Цитата:
У меня вообще проект на G2553, но его нет в Proteus.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Зарегистрирован: Чт май 26, 2016 14:56:43 Сообщений: 57
Рейтинг сообщения:0
JackSmith писал(а):
ice126 писал(а):
Я уже тоже решил плюнуть на это дело и в железе отладку делать.
Аналогично, АЦП я там тоже не поднял, вне зависимости от того, что кидаешь на него: землю или шину питания - всегда выдает 1023, хотя та же программа на железке вполне нормально работает. Про то что I2C там рабочий для меня новость, я даже пытаться не стал его поднять, сразу поставил совтовый, потом попробую аппаратный завести.
Цитата:
У меня вообще проект на G2553, но его нет в Proteus.
В Proteus 8.5 он уже есть.
АЦП и I2C у меня работает норм. Компаратор тоже работает. Правда, когда выставил регистры на внешнее опорное Proteus вылетал всегда в фатал эрор. С 0,25 и 0,5 питания компаратор работает без проблем.
Может все же кто-то запустил USCI в Proteus? Поделитесь кодом, пожалуйста.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Верно-ли я понимаю, что проблема только как работать с UART в Протеусе, а в железе все работает? Протеус я не использую, но если есть проблемы с функционированием модулей MSP430 в железе, мог-бы помочь.
Зарегистрирован: Чт май 26, 2016 14:56:43 Сообщений: 57
Рейтинг сообщения:0
Ser60 писал(а):
Верно-ли я понимаю, что проблема только как работать с UART в Протеусе, а в железе все работает? Протеус я не использую, но если есть проблемы с функционированием модулей MSP430 в железе, мог-бы помочь.
Здравствуйте. В железе еще не реализовано - тестирую в Протеусе. Если Вам не сложно - гляньте, правильно ли я инициализирую и прерывание прописал?
Добавлено after 13 minutes 8 seconds:
JackSmith писал(а):
Цитата:
У меня вообще проект на G2553, но его нет в Proteus.
В Proteus 8.5 он уже есть.
Типа есть. При создании проекта можно указать этот МК, но в наборе компонент его нет.
Вот Вам рабочий код, проверенный в железе под IAR. Он принимает символ из терминала по прерыванию и если это латинская буква, то инвертирует заглавные в строчные и наоборот, и отсылает символ обратно в терминал.
У Вас имеется внутрисхемный отладчик? Если ДА, никогда не понимал зачем нужен Протеус при наличии отладчика. Спойлер
#pragma vector=USCIAB0RX_VECTOR // USI UART handler __interrupt void USCI_ISR(void) { char c = UCA0RXBUF; // get received character if (('A' <= c && c <= 'Z') || ('a' <= c <= 'z')) c ^= 32; // flip case of letters while(!IFG2 & UCA0TXIFG){} // wait for TX ready UCA0TXBUF = c; // transmit character }
Зарегистрирован: Чт май 26, 2016 14:56:43 Сообщений: 57
Рейтинг сообщения:0
Все же не во мне проблема. Протеус уже 8.6 поставил - результат тот же. К стати, G2553 тоже дает выбрать на стадии создания проекта, но компонента такого нет. Жаль. Сколько искал доп библиотеки - только за 600 баксов есть с этим МК.
Не понял какие доп. библиотеки искали. Для Протеуса что-ли? Мой Вам совет - забудьте о нём. Зачем Вам нужен инструмент, в котором баг на баге сидит, и который, к тому-же, не гарантирует, что после него будет работать в железе. Я код, выложенный выше только чтo лично проверит с G2553 и USB-UART конвертером на CP2104 и терминальной программой от Parallax и работоспособность его гарантирую. Спойлер
К стати, G2553 тоже дает выбрать на стадии создания проекта, но компонента такого нет. Жаль.
?
Ser60 писал(а):
Верно-ли я понимаю, что проблема только как работать с UART в Протеусе, а в железе все работает? Протеус я не использую, но если есть проблемы с функционированием модулей MSP430 в железе, мог-бы помочь.
Не могу выставить тактирование через DCO
Код:
DCOCTL=CALDCO_1MHZ; BCSCTL1=CALBC1_1MHZ;
Вне зависимости от константы устанавливается одинаковая частота около 8MHz(судя по скорости мигания светодиода). В чем может быть причина? Чип: msp430g2453
Не можете в Протеусе или в железе - с этого следует начинать вопрос. Если первое, то я бессилен. Строчки кода для установки частоты DCO правильные. Посмотрите отладчиком содержимое этих регистров (DCOCTL и BCSCTL1) и посчитайте какая должна быть частота. Или просто выведите SMCLK на P1.4 и измерьте. В общем, мало информации. Может у Вас в коде светодиод управляется таймером тактируемым от ACLK, или частотой независимой от DCO.
Не можете в Протеусе или в железе - с этого следует начинать вопрос. Если первое, то я бессилен. Строчки кода для установки частоты DCO правильные. Посмотрите отладчиком содержимое этих регистров (DCOCTL и BCSCTL1) и посчитайте какая должна быть частота. Или просто выведите SMCLK на P1.4 и измерьте. В общем, мало информации. Может у Вас в коде светодиод управляется таймером тактируемым от ACLK, или частотой независимой от DCO.
речь шла конечно же о реальном чипе. отладчика увы нет, есть только BSL программатор. теоретически можно было бы значения нужных регистров передать через UART, но чтобы выставить битрейт передатчика, нужно знать скорость работы микроконтроллера. прошивка простейшая:
Код:
#include <msp430g2453.h> #include <sys/types.h> #define LED BIT0
int main (void) { WDTCTL=WDTPW | WDTHOLD; //turn off watchdog
int i=0; while (1) { for(i=0;i<20;i++) __delay_cycles(0xFFFF); P1OUT ^= LED; }
return 0; }
здесь если суффиксы констант поменять на 16MHZ, то если судить по частоте мигания светодиода, эффекта никакого это не производит. причем, если вообще убрать это строки:
Код:
DCOCTL=CALDCO_1MHZ; BCSCTL1=CALBC1_1MHZ;
то микроконтроллер работает на частоте 1MHz если судить по коэффициенту UART.
Если сравнивать ассемблерный код для 16MHz варианта, то здесь все правильно:
Зарегистрирован: Чт май 26, 2016 14:56:43 Сообщений: 57
Рейтинг сообщения:0
Ser60 писал(а):
Не понял какие доп. библиотеки искали. Для Протеуса что-ли? Мой Вам совет - забудьте о нём. Зачем Вам нужен инструмент, в котором баг на баге сидит, и который, к тому-же, не гарантирует, что после него будет работать в железе. Я код, выложенный выше только чтo лично проверит с G2553 и USB-UART конвертером на CP2104 и терминальной программой от Parallax и работоспособность его гарантирую. Спойлер
Пока нет внутрисхемного. Максимум что есть отладочная платка за 4 бакса от TI и то как-то не пользуюсь ею - только для прошивки, как правило. Протеус глючный и я в этом убедился, но все же некоторые вещи он помогает выполнить быстрее и проще. По крайней мере пока мне помогает.
Добавлено after 4 minutes 5 seconds:
JackSmith писал(а):
ice126 писал(а):
К стати, G2553 тоже дает выбрать на стадии создания проекта, но компонента такого нет. Жаль.
?
Вы бы не могли выложить свои библиотеки где-то?
Добавлено after 3 hours 8 minutes 23 seconds: Извините - протупил. Протеусов у меня два и, соответственно, 8.6 хватнул пути библиотек от 8.1 Разрулил. Спасибо. Самое интересное, когда даешь список из двух путей то он берет не самую новую библиотеку, а первую по списку...
JackSmith - всё правильно у Вас в коде. Сдаётся мне, что Вы затерли калибровочные константы в памяти МК. Они хоть и дефолтно защишены от записи после ресета, но ... всё бывает. Попробуйте згрузить непосредственно их значения для моего экземпляра 2553. Точных частот у себя вряд-ли получите, но разницу между 1 и 16 мгц ощутите: CALDCO_16MHZ = 0x90 CALBC1_16MHZ = 0x8F CALDCO_12MHZ = 0x9A CALBC1_12MHZ = 0x8E CALDCO_8MHZ = 0x8C CALBC1_8MHZ = 0x8D CALDCO_1MHZ = 0xCD CALBC1_1MHZ = 0x86
ice126 - какая у Вас платка за $4? Такая? Раньше она действительно $4 стоила, сейчас около $10.
Коты - купите себе хотя-бы такую по ссылке выше. На ней и программатор и внутрисхемный отладчик имеется. Без него будете тыркаться с МК как слепые котята. Начнёте пользоваться - сами поймёте, что никакой Протеус и не нужен будет.
Зарегистрирован: Чт май 26, 2016 14:56:43 Сообщений: 57
Рейтинг сообщения:0
Ser60 писал(а):
ice126 - какая у Вас платка за $4? Такая? Раньше она действительно $4 стоила, сейчас около $10.
Коты - купите себе хотя-бы такую по ссылке выше. На ней и программатор и внутрисхемный отладчик имеется. Без него будете тыркаться с МК как слепые котята. Начнёте пользоваться - сами поймёте, что никакой Протеус и не нужен будет.
Да, такая. Но я ее брал на Али дешевле. Давно не паял и не програмил - со студенческих, по сути. Сейчас оброс и комплектухой и инструментами, осцилл купил, но всего сразу не купишь. Чесно говоря, в сторону внутрисхемного даже не думал, но теперь подумаю. Поищу у китайцев.
Вы на правильном пути Но прежде чем покупать что-то более серьёзное, начните с той платки. С её помощью можно и внешние чипы отлаживать внутрисхемно. Их можно к ней подключить сняв джамперы, в мануале на плату все расписано.
JackSmith - всё правильно у Вас в коде. Сдаётся мне, что Вы затерли калибровочные константы в памяти МК. Они хоть и дефолтно защишены от записи после ресета, но ... всё бывает. Попробуйте згрузить непосредственно их значения для моего экземпляра 2553. Точных частот у себя вряд-ли получите, но разницу между 1 и 16 мгц ощутите: CALDCO_16MHZ = 0x90 CALBC1_16MHZ = 0x8F CALDCO_12MHZ = 0x9A CALBC1_12MHZ = 0x8E CALDCO_8MHZ = 0x8C CALBC1_8MHZ = 0x8D CALDCO_1MHZ = 0xCD CALBC1_1MHZ = 0x86
с этими константами вроде все заработало как надо, потом еще буду проверять с соответствующими UART коэффициентами. спасибо)
Зарегистрирован: Чт май 26, 2016 14:56:43 Сообщений: 57
Рейтинг сообщения:0
К стати, USCI u I2C, которые работали на F2132, на G2553 в Proteus 8.6 не ожило. Причина не понятна. Ноги поменял, а все остальное оставил в прежнем виде. Не работает. Ну и фиг с ним - буду в железе уже реализовывать.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения