Jump to content

    
ILSF15

IAR MSP430 и последовательный порт

Recommended Posts

Ох, снова я с вопросом, подозреваю, давно имеющим ответ, но что-то не могу найти ничего внятного, так что всё-таки задам:

Существует ли библиотека для IAR MSP430, являющаяся аналогом библиотеки Serial для Arduino? Или может быть, кто-то может подсказать, как перетащить библиотеку Serial из Energia IDE в IAR? Самому с нуля писать набор функций, воспроизводящих необходимый функционал, может, и правильно, но очень уж муторно...

Share this post


Link to post
Share on other sites
1 час назад, ILSF15 сказал:

для IAR MSP430, являющаяся аналогом библиотеки Serial для Arduino?

Добрый день! Рискну предположить, что нет. Т.к. IAR это всего лишь компилятор, ну, конечно со стандартной библиотекой, реализующей такие функции как strcmp, memcpy и т.д. По крайней мере для микроконтроллеров AVR и ARM такого нет.

1 час назад, ILSF15 сказал:

ак перетащить библиотеку Serial из Energia IDE в IAR?

В IAR никак. А вот в свой проект можно попробовать. Для этого вам нужны исходники вашей библиотеки, те файлы *.c/cpp. Ну, скорее всего, придётся поправить исходники в местах различных директив и ключевых слов, которые могут не совпадать между разными компиляторами.

1 час назад, ILSF15 сказал:

но очень уж муторно...

Чего там муторного-то?:blum: Драйвер последовательного порта это один из самых простых драйверов. Не знаю, какой функционал вам от него нужен, но подозреваю, что не очень большой. Заодно глубже разберётесь с микроконтроллером. А это всегда полезно.

Share this post


Link to post
Share on other sites
25 minutes ago, MrBearManul said:

Ну, скорее всего, придётся поправить исходники в местах различных директив и ключевых слов, которые могут не совпадать между разными компиляторами.

Я попытался. Знаний не хватает, я вообще-то на очень поверхностном уровне всё это знаю. Не моя тема вообще-то. Я не программист, я так, поднахватавшийся.

25 minutes ago, MrBearManul said:

Драйвер последовательного порта это один из самых простых драйверов

"- Пациент, почему вы сбежали из операционной?

- Сестра сказала, что аппендэктомия - самая простая операция...

- Так и есть!

- Но сказала-то не мне, а молодому хирургу с дрожащими руками!"

Как подумаю о том, что надо не только задать нужные параметры блоку UART, а ещё и написать функции, чтобы он превращал строки в буковки, посылал буковки в нужном порядке и т.д. - сразу перестаёт хотеться разбираться, как оно работает. Я через таймер-то с трудом прорвался...

25 minutes ago, MrBearManul said:

Не знаю, какой функционал вам от него нужен, но подозреваю, что не очень большой. Заодно глубже разберётесь с микроконтроллером. А это всегда полезно

Объективно - никакого не нужно :biggrin: Я себе чисто для практического применения сообразил, как задействовать МК, валяющийся со времён безуспешной попытки учиться. Проектик по оснащению автоматикой стеклоподъёмников в Кангу (они в комплекте совсем базовые) начался с MSP, переехал на Ардуино и оброс дополнительными функциями, Ардуино за неимением программатора отлаживаю через вывод на серийный порт. Вот, подумал, что неплохо бы всё-таки и MSP430 научить хоть как-то похожий вывод делать. Пока что получилось только из Energia хоть что-то вытянуть (и то: в отличие от Ардуино, он на "свой" USB ничего не вывел, пришлось внешний COM2USB задействовать, благо тоже валялся давно). Но и там не то, чего я ожидал, скажем так. И если в IAR можно хотя бы в контекстном меню перейти к декларации той или иной инструкции и попытаться понять, что к чему, то в Энергии и этого нет. Вот и подумал - может, есть "готовое" решение, чтобы не самому с нуля строить...

Edited by ILSF15

Share this post


Link to post
Share on other sites
13 hours ago, ILSF15 said:

Как подумаю о том, что надо не только задать нужные параметры блоку UART, а ещё и написать функции, чтобы он превращал строки в буковки, посылал буковки в нужном порядке и т.д. - сразу перестаёт хотеться разбираться, как оно работает. Я через таймер-то с трудом прорвался...

  14 hours ago, MrBearManul said:

а чем Вас такой подход не устраивает http://we.easyelectronics.ru/Soft/formatnyy-vyvod-na-si-dlya-mikrokontrollerov.html

Share this post


Link to post
Share on other sites
11 hours ago, Elresearch said:

а чем Вас такой подход не устраивает

А куда оно его выводит-то? :suicide2: В обычном С - на консоль, а в микроконтроллерах? Я уже говорил, что я очень мало знаю о программировании? Пока что пытаюсь разобраться в выводе на последовательный порт на чужих примерах... если сумею хотя бы одну конкретную букву отправить - может, и займусь реализацией собственной подпрограммы вывода, а то у языка ардуино, конечно, вместо порога вхождения канава вхождения, но результирующий код таких размеров, что пользуйся я им, ничего не втиснул бы даже в Nano с 32kb кодовой памяти, не то что в MSP с 16... Например, в качестве необразованного неспециалиста - есть чем гордиться: благодаря курению мануалов и смекалке сумел сам написать алгоритмы для записи и чтения eeprom для ардуино и flash для MSP с бережным отношением к ресурсу перезаписей. Особенно интересно было с MSP, т.к. переменных на постоянку хранится аж 4 штуки, и в отличие от ардуино, нельзя отдельный байт стереть и записать заново. И места код занял гораздо меньше, чем на ардуинском языке. Так что может быть, и правильно - самому делать. Но библиотеки, возможно, помогли бы разобраться, что к чему.

А разберусь на MSP - думаю, на Ардуино смогу портировать достаточно легко (уже убедился с тем кодом, который писал раньше)

UPD с помощью примера из сети сумел передать буковку. Через пины 1.1 и 1.2. Хорошо бы понять, как ту же буковку передать через USB...

UPD2 вроде как пишут, что достаточно развернуть джамперы... но результата - ноль...

Edited by ILSF15

Share this post


Link to post
Share on other sites

Хм... Пример из Energia IDE заработал через USB с повёрнутыми джамперами. Впрочем, подозреваю, что там используется не модуль UART, а софтовая эмуляция. Но по большому счёту это не должно иметь особого значения, ведь в конечном счёте сигналы-то те же, просто в эмуляции генерируются процессором, а не встроенным модулем.

UPD появился-таки вывод и из моей тестовой программки в IAR. Ещё немного исследований - и могу приступать к созданию прикладных функций

Edited by ILSF15

Share this post


Link to post
Share on other sites

Ну вот результат:

Написал две раздельных функции, одна выводит не более чем девятизначное положительное целое число или переменную соответствующего значения, другая (оказалось, совсем простая задача, с числами и то сложнее было) выводит текстовую строку.

Сравнил:

размер кода IAR с моими функциями, выводящий "Hello, World!" с переносом строки и восьмизначное число с переносом строки - 732 байта

размер кода Energia IDE (там, правда, одна универсальная функция с возможностями форматирования, да и запуск последовательного порта поддерживает выбор скоростей - я этим решил не заморачиваться, т.к. хардверный UART всё равно не поддерживает выше 9600 бод) - 2222 байта.

Поскольку лично у меня максимум задач ограничивается тем, что делают написанные мной функции, а использовать две разных вместо одной универсальной совершенно не напрягает - считаю, успешно. Зря боялся, можно сказать. Буду портировать на Ардуино, т.к. им я нынче активно пользуюсь - тоже выигрыш в размере кода будет, очевидно.

Share this post


Link to post
Share on other sites
On 12/23/2020 at 9:09 PM, ILSF15 said:

А куда оно его выводит-то? 

Там переопределяется ввод\вывод консоли в UART МК

по аналогии http://microsin.net/programming/arm-troubleshooting-faq/iar-printf-putchar-redirect.html

Share this post


Link to post
Share on other sites

Elresearch, ясно, нет, мне нужен именно вывод в порт COM, чтобы можно было на стареньком нетбуке запускать PuTTy и читать, что МК там пишет. И я вполне успешно с этим справился - настолько, что портировал своё решение для Arduino Nano, дабы экономить занимаемое программой место. Разница весьма ощутимая получается, если не использовать стандартную библиотеку Serial. Правда, обработку ввода не писал, но мне она, собсно, до сих пор не пригодилась. Понадобится - напишу.

UPD. А, там вроде как можно перенаправить и на COM. Ну, нээээприииигодиииилоооос

Edited by ILSF15

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.