Energia - пишем программы для LaunchPad в стиле Arduino

Лазая по сайту TI, наткнулся на упоминание еще одной IDE для MSP430 — Energia. Разработчики предлагают программирование LaunchPad в Arduino-стиле:

Energia - загрузка скетча в камень

Energia - выбор контроллера

Energia - основной экран

Energia поддерживает LaunchPad v1.5 с msp430g2231, msp430g2452 и msp430g2553.

Думаю, для людей, начинающих изучать MSP430, будет самое оно.

Ссылки:
Загрузка (доступны версии для Windows и Mac OS X)
Wiki
Форум

Комментарии (143)

RSS свернуть / развернуть
1. Arduino-подобные языки — ересь. Совместимости все-равно не получится, а тот же Grace (великолепная штука!) потеряете. Да и отладчик — нужен.
2. А вы закажите. Во-всяком случае у меня LP даже при таком статусе отправлялись в течении нескольких дней (а вот с RF Module BoosterPack меня обламывают уже больше месяца =( ).

Меня щас интересует, как бы openchronos перевести с GCC на CCS5-GCC :D Проект хороший, но засада какая-то… Под цигвином не могу собрать, да и в CCS как-то приятнее работать (и привык)…
+2
а тот же Grace (великолепная штука!) потеряете
И кому он нужен с Wiring'ом? Впрочем, учитывая что wiring — фреймворк, скрестить его с grace врядли проблема.
Отладка — это поактуальней. С этой точки зрения лучше бы они интегрировались в CCS. Впрочем, отладчик в ланчпаде есть, так что в принципе, в IDE вполне можно добавить поддержку дебага через GDB.
Меня щас интересует, как бы openchronos перевести с GCC на CCS5-GCC :D
Что за опенкронос, где обитает?
0
Что за опенкронос, где обитает?
github.com/poelzi/OpenChronos

Для ez430-Chronos :D

Собственно, по функционалу хоть уже не развивается давно, но мне нравится даже текущая _собранная_ прошивка. А вот засесть, и перенести проект в CCS5 пока не получается, то времени нет, то не собирается нифига…
0
Arduino-подобные языки — ересь.
Обычный си и немного си++ обгрызеный. Ну ладно, ардуина еще несколько инклюдов может сам подшивать аж. Для самых маленьких. В остальном — можно выбросить среду нафиг и пользовать любимый текстовый редактор с минимальными изменениями. Ну или даже без изменений — народец make файлы для автоматизации подпихивания хидеров сочиняет :)
0
Еще можно собрать в проект в любимой IDE нужные сорцы ардуины (сама ардуино их вообще все в сборку включает, судя по verbose-логам компиляции) и скомпилировать как обычно. Arduino — это всего лишь фреймворк для C++.
0
Думаю, для людей, начинающих изучать MSP430, будет самое оно.

«Самое оно» будет для ардуинщиков. А серьезное изучение МК надо начинать с его даташита, без всяких digitalWrite(). Да и в дальнейшем эти рюшечки не особо нужны. А то потом возникают вопросы типа таких.
+2
Вы знаете, скажу вам из своего маленького опыта из АВРками. Начинал сам все как Вы сказали, начал даташыт разглядывать, потом ассемблер учить, запускать проекты из учебного курса Дихалта, а потом я все это бросил, так как нихера не понял, все что учил коту под хвост. Потом увидел эту херню ардуину, и начал учить до ужаса простой язык и синтаксис програмирования, благодаря какому я понял как работает язык Си.
Сейчас усердно учу Си и результатов моих трудов, намного больше, на много! Чем я пытался понять ассемблер.
Как не странно, но и ассемблер я сейчас начал понимать.
Но с вами соглашусь, такие вопросы как вы навели пример, это уже клиника, или задавал их ребенок.
+3
Еще страннее будет позже, когда ты начнешь понимать, что ассемблер намного проще С/С++ :)
0
Хм. Но Си намного сложнее асма. А С++ на порядок сложнее Си. Это как бы итак понятно. Достаточно глянуть на толщину хороших учебников.
0
Я это и написал, разве нет?
0
Не тот язык учишь. Если нравится ардуйня, то нужно учить С++.
0
Ты много видел ардуино-скетчей с использованием возможностей C++ (не считая строчек вида serial.begin(9600) — для пользователя это ничем от serial_begin(9600) не отличается)? В большинстве случаев ограничиваются возможностями С, да и то не всеми.
0
Это холивар.
Я уже давно для себя определился, что С++ удобней Си.
0
Leon11t
Вашей главной ошибкой было то что Вы начали УЧИТЬ ассемблер. Его не надо учить. Его надо ПОНЯТЬ. Даже не сам ассемблер а принцип работы, зачем все эти регистры у проца и че с ними делать. После этого пофиг какой камень и какой ассемблер, лишь бы было описание архитектуры и система команд.
+1
Вообще-то, в данном случае «учить» и есть «пытаться понять». Но, видимо, понять С оказалось проще. А он уже дал базу для понимания ассемблера.
0
Странно, потому что ассемблер прост как валенок. Чтобы понять как он работает надо понять как работает процессор и цифровые схемы, после чего понять что ассемблер лишь человеко-читаемое представление машинных кодов. Для этого придется поискать какую-нибудь тематическую книжку. Си при этом знать совершенно не обязательно. Мне в свое время помог У. Титце, К. Шенк — полупроводниковая схемотехника (при желании ищется DjVu этой ценной книги, кстати). Где на примере простого моторола 6800 все достаточно грамотно разжевано. Что, зачем, почему. Из чего состоит микропроцессорная система. Как части взаимодействуют. Немного архаичненько, но сейчас все осталось то же самое, просто иногда несколько блоков пакуют в 1 кристалл. А понимать ассемблер по даташиту — странно. Даташит и асм в нем — для тех кто уже понимает что это такое. Основы электроники и программирования микропроцессоров там не преподают.
0
Чтобы понять как он работает надо понять как работает процессор и цифровые схемы
Вот именно этого он, надо полагать, и не понял. Логика асма далека от человеческой. Потому и учат сперва не столь сворачивающим моск ЯВУ, а потом досворачивают его ассемблером.
Можно и с другой стороны зайти, со стороны железа, но разницы особой нет.
0
Опять ардуино-ненавистники понабежали.
Впрочем, определенные сомнения есть и у меня. MSP430 — на редкость спартанские камни, а фреймворк вайринга не так уж и мал размером.
Ну и опять тащат это говноиде, лучше бы к CCS прикрутились. Или Code::Blocks.

Алсо, на ланчпаде и без вайринга отлично делают конструкции наподобие arduino-based. Вот, например.
0
  • avatar
  • Vga
  • 19 июля 2012, 02:33
Попробовал. Работает. Забавно.
Алсо, похоже, digitalWrite занимает порядка 6 машинных команд. Не так уж плохо. Мигательный пример со скрина — 506 байт. Влез бы и в 2211, но он не поддерживается (судя по всему из-за отсутствия АЦП, если подправить wiring_analog.c, то вероятно и его поддерживать будет.
У IDE одно достоинство все же есть — она крайне проста в обращении.
+2
  • avatar
  • Vga
  • 19 июля 2012, 04:15
Единственное достоинство этой среды это меншая прожорливость — но это логично если посмотреть на «обилие» функций. Но вот 506 байт и светодиод моргает?!!!
0
Единственное достоинство этой среды это меншая прожорливость — но это логично если посмотреть на «обилие» функций.
Какой и по отношению к чему? По памяти, например, у IAR'а на порядок меньший аппетит, чем у Energia (сразу после запуска, ни там, ни там не открыт проект) — оно и неудивительно, Java до памяти весьма охоча. Так что единственный плюс — это крайняя простота в освоении.
Но вот 506 байт и светодиод моргает?!!!
В смысле слишком мало или слишком много?
0
Какой и по отношению к чему? По памяти, например, у IAR'а на порядок меньший аппетит, чем у Energia (сразу после запуска, ни там, ни там не открыт проект) — оно и неудивительно, Java до памяти весьма охоча. Так что единственный плюс — это крайняя простота в освоении.
По отношению к CCS особенно при использовании GRACE. Iar конечно отличная штука, но както привык к Eclipse подобным средам.
В смысле слишком мало или слишком много?
Слишком много.
0
А, ну эклипс на той же жабе, оно конечно кушает ого, но там и функционал достойный. А IAR — блокнот с отладкой.
Слишком много.
Плата за удобство. Но, я думаю, большая часть этих 506 байт — статические расходы (т.е. не зависящие от объема написанного юзером кода — стартап, настройка и иже с ними, т.е. эта часть не будет расти при написании большего объема кода). А с динамическими не так уж плохо — добавление еще двух digitalWrite увеличило код на 24 байта, т.е. 12 команд — получается 6 команд на digitalWrite, что не так уж плохо (учитывая, что эта функция состоит далеко не из PORTREG |= value).
+1
Который раз убеждаюсь, что приводя размеры прошивки надо брать проект на уровне вебсервера с поддержкой фат32 на карточках. А то эти малолетки задрали со своим «на авр я это в 3 асм-инструкции помещаю».
0
Угу.
Хотя, особенности семейства MSP430, особенно дешевых камней (спартанский фарш и мало памяти) — довольно веская причина использовать именно ассемблер. Тратить половину флеша MSP430G2211 на издержки C и Wiring'а — несколько жаба давит.
А вот 20-ножки из комплекта LP r.1.5 уже имеют на удивление много флеша — 8 и 16 КБ (при том, что архитектура ограничивает флеш примерно 60 килобайтами). Там уже вполне оправдано применение таких инструментов.
0
Жаба давит нас, как «опытных» разработчиков, способных написать более оптимальный код. Данный конкретный продукт позиционируется как простая в освоении среда для дешёвой платформы. Эту задачу оно выполняет. Желающие написать что-то побольше мигалки смогут освоить более тяжелые платформы и языки.
Тому же ребёнку, которому интересно «а как оно работает» купить ланчпад не жалко. И освоит он его быстрее, до того как ему надоест. а когда ему эта игрушка надоест, но желко и на постоянку выкинут (читай воткнуть в термометр доманшний). И ты не в накладе, и ребёнок счастлив (ещё бы, он сдделал то, чем пользуется вся семья).
+1
Не, на нынешних ланчпадах жаба уже не давит. Что такое полкило стартапа, когда в распоряжении 16?
0
По сравнению с ответами других членов сообщества Ваш самый невежественый. Спасибо Вам за это. Умные люди дают умные ответы (спс Vga) даже на тупые вопросы или утверждения, а такие как Вы только мешают учится. Валите в профи форумы и там показывайте какой Вы умный.
0
Пост в ответ на:
Который раз убеждаюсь, что приводя размеры прошивки надо брать проект на уровне вебсервера с поддержкой фат32 на карточках. А то эти малолетки задрали со своим «на авр я это в 3 асм-инструкции помещаю».
0
Алсо, похоже, digitalWrite занимает порядка 6 машинных команд. Не так уж плохо.
Туплю. Это ж не инлайновая функция, так что это только ее вызов. А вот будь она инлайновой — пожалуй неплохо бы оптимизировалась при условии задания номера пина константой.
0
Думаю, для людей, начинающих изучать MSP430, будет самое оно.
Единственный случай, когда оправдано применение MSP430 в нынешнее время, это микропотребление в батарейных изделиях и LPM3(4). По всем остальным параметрам он сильно уступает всем остальным, и прежде всего по цене.
А микропотребление — это такая штука, которая требует тонкой настройки и соответственно глубокого знания не только внутреннего устройства, но и вообще схемотехники.
Так что ИМХО, MSP430 + ардуйня = деньги на ветер (и время)
Дань моде, не более того
-1
Если девайс в розетку втыкать — там хоть промышленный компьютер сойдет. А для батарейного питания очень даже хорошо msp.
0
ойли
0
Гм, а за что минусуете? Он, в общем-то, прав — микропотребление основная фишка семейства, а этот фреймворк врядли с ним хорошо дружит (взять хотя бы то, что камень инициализируется на максимальную частоту, и если ее изменить — поплывут задержки и прочее).
С другой стороны — ланчпад игрушка на редкость дешевая, на ней можно и что попало делать. Как сказали авторы MC HCK — "$20 makes you stingy («frugal»). $5 always goes.".
0
Если для задачи подходит несколько контроллеров, инженер всегда выберет самый простой, быдло же — самый навороченный.
-1
Самый простой выберет аскет, а не инженер.
Инженер же будет выбирать по совокупности факторов. Причем одним из основных критериев обычно является багаж наработок — своих и чужих.
+1
А работодатель инженера выберёт самый дешёвый, с возможностями на нижнем пределе.
0
Это еще вопрос — в определенных случаях стоимость разработки перевешивает разницу в стоимости камня, и на первый план выходят наработки.
Кроме того, не так уж редка ситуация, когда более дешевый МК мощнее.
0
Вот как раз это и приходится доказывать. Порой нетривиальная задачка. :)
0
Ну, инженер на то и инженер, чтобы взвесить критерии и выбрать исходя из них. Для штучного экземпляра даже килобакс за МК и близко не подойдет к стоимости наработок, а в миллионной серии и цент цены МК роль сыграет.
В любом случае, (только) из соображений аскетизма инженер исходить не будет.
0
Тут тиражи средние, роль играют десятки центов (якобы — есть ещё нюансы, которые это влияние часто нивелируют. Но, опять же, попробуй докажи).
Не в последнюю очередь по причине высокой цены ушли с MSP430 на STM32. Энергопотребление там пофигу, на фоне сотен мА остальных узлов.
0
Ну, возможности-то при этом только толще стали, хотя проц и дешевле?
0
Ещё как толще. STM32F103RBT6 vs MSP430F149. :)
Первоначальный выбор, бывает, даётся легче, чем переход (в т.ч. и на более крутой и дешёвый контроллер) — это же страшное дело, ещё ж плату переразводить-перезаказывать! Дополнительный пинок может дать объявление производителя о скором снятии применяемого чипа с производства, тогда всё шустро получается.
0
А работодатель инженера выберёт самый дешёвый, с возможностями на нижнем пределе.
Скорее, работодатель выберет самого дешевого инженера… :(
0
Сегодня получил свой ланчпад :)
Поигрался немножко, в т.ч. и с ардуиной.
Что хочу сказать — проще в обращении не видел ничего (ардуинами, как и демо-китами до сего дня не пользовался)
Забираю свои слова обратно.
Для обучения с нуля ( не только в мк, но и вообще в программировании) отличный набор. Я, правда, несколько для других целей взял, но тоже образовательно-воспитательных.
Наибольшая же польза будет, когда обучаемый полезет внутрь кишков системы, начнет писать свои библиотеки и компоненты. Ну а там плавно выйдет за рамки и пересядет на плюсы :)
Однако в том, что касается непосредственно архитектуры мсп, приговор неизменен.
+2
Не знаю насколько оправдает себя очередной arduino, но скажу что освоение MSP430+IAR+C мне далось проще чем другие архитектуры.
+1
Очень оправдано, хотя бы тем, что ланчпад стоит в разы дешевле ардуины. Крикунам «ардуина дорогая — говно» глотку заткнули, так они теперь из жопы выталкивают мало-мальские придирки под видом огромной проблемы.
Вообщем: простота ардуино + стоимость ланчпада = хороший повод для старта и применения
+1
да. особенно если библиотеки на популярную переферию появятся.
0
Думаю что сама ардуина и эго IDE не такая уж и плохая идея для стартового изучения Си и Си ++ и ввод в програминг контролеров, но не больше! Для инженера ардуино выглядит полной херней, а для человека для которого это лиш хобби или одноразовая забава, это святой грааль. Ну мне по душе, полный контроль над контролером, ощущения которого мне ардуина не дала. Думаю для каждой потребности человека нужно изучать свою платформу и камень. А срач в коментах од непонимания друг друга, ничем не поможет.
+2
Ардуино-IDE для MSP430 это здорово! Сейчас кстати во многих серьезных проектах, серьезными фирмами применяется именно Ардуино (в частности мне недавно предлагали заняться разработкой САУ для 100кВатт движка на Ардуино), так что не понимаю людей, которые считают ее ущербной априори. Для большинства проектов не нужна идеальная оптимизация и полный набор функций контроллера. И кстати, сейчас в MatLab появилась поддержка Ардуино! Интересно, будет ли такая штука и для MSP430…

А теперь скажу про то, что лично меня бесит в IDE-Ардуино (и в этой в частности): безумно тормозной интерфейс! После нажатия на кнопку «Tools» приходится ждать 30 секунд, пока IDE «подумает» (это на мощном то компе), примерно с той же скоростью подгружаются скетчи, ну неужели нельзя было устранить эту проблему за столько времени! В общем лучше бы действительно запихнули эту Ардуину в CCS…
+1
Это явные косяки у тебя. У меня она вполне отзывчива.
Кстати, CCS на той же жабе, уверен что он будет не пять минут открывать скетч?
0
Т.е. у тебя ничего не тормозит? Странно, у меня на двух компах тормозит (Win7 x64).
CCS у меня на основной машине работает удовлетворительно (не летает конечно, но и так как эта IDE-шка не лагает).
0
подропай из системы левые СОМ порты. особенно блютуз. оно их 30 секунд ждет.
+1
Ого, так вот что было! Спасибо большое, теперь совсем другое дело. Век живи — век учись как говорится :)
0
серьезными фирмами применяется именно Ардуино

Вряд ли их можно назвать серьезными фирмами. Может это из тех «Оборонных инженеров» который все сокрушался, что на ардуине не может выжать из пина меандр более 50гц?
+2
Я сам думаю, что это (Ардуино) скорее прихоть заказчика. А фирма серьезная не в смысле, что все ходят с серьезными лицами, а в смысле, что каждый проект стоит совсем не маленьких денег, местный завод в общем :)
0
угу, плату не делать, поставить ардуину, а деньги попилить. куда уж серьезней
0
А что, если на меня тоже немного напилят, я за ;)
А если серьезно, сам не знаю зачем они туда Ардуину захотели, но факт остается фактом.
0
А фирма серьезная не в смысле, что все ходят с серьезными лицами, а в смысле, что каждый проект стоит совсем не маленьких денег
В таком случае обычно ставят какой-нибудь Simatic и не страдают ардуйней.

В общем, для изучения архитектуры не годится, для серьезных проектов тоже.
Осталось найти, для чего же.
0
Мне лично вот эта штука на основе Ардуино понравилась, скорее всего в конце года буду покупать/собирать.
Я это к тому, что на вкус и цвет. Мне лично понравилось писать на ASM для MSP430, но свой диплом я писал на C++, в том числе там фигурировали три контроллера MSP430. Однако, Ардуино мне кажется удобной вещью для написания кода «в полевых условиях», где у меня нету времени курить маны, а желание прогать может исчезнуть уже через 5 минут.

Кстати, такими темпами, скоро выйдет своя «Ардуино» для каждой архитектуры (уже AVR, STM32 и MSP430) и можно будет говорить о кросс-платформенности, что несомненно плюс!
+1
На stm32 уже есть ардуино подобная среда, називается Maple, правда она еще не совсем доведена до ума. Поддержывает все инструкцыи что и ардуина, плюс еще кучю своих.
0
А я и говорю, что уже есть Ардуино для трех сортов камней (м.б. непонятно выразился постом ранее), остались еще PIC, STM8 и кортексы от NXP :)

Кстати спасибо, что напомнили как эта среда для STM32 называется!
0
Для пиков тоже уже есть. Плата напоминает ардуино из самым большим количеством портов, непомню как точно називается, там еще в конче чтото типа 2560. Упоминания про етот пикдуино был гдето тут в сообществе вроди.
0
Вот сейчас решил попробовать эту «энергию» и на тебе: micros() нету! Что за беспредел? Здорово конечно, что выпустили такую Ардуину, но будем ждать обновлений, т.к. чую micros() явно не единственная отсутствующая функция…

Кстати, а есть ли где-нибудь полный список поддерживаемых функций?
0
я тоже остановился на этом пункте. не нашел список стандартных функций и отложил до лучших времен
0
Ну я думаю функции тут мало чем отличаются от оригинала: arduino.cc/en/Reference/HomePage
Однако, хотелось бы список функций именно на «Энергию».
0
смотрю заголовки — есть микрос. или я что-то путаю? и в багфиксах отмечено.
0
разобрался, надо из репозитория обновить. ща попробую
0
обновил из репозиториев — появился micros
0
Можно поподробнее, что вы сделали? Скачали более новую версию? Какую?
0
Все, кажись разобрался.
0
Теперь подох софтовый UART :(
0
пошел сюда github.com/energia/Energia скачал зип 300 метров, распаковал в папку с прошлой версией,…
там же можно зарегаться и пожаловаться (создать тикет) о проблеме.
0
Если тупо распаковать этот архив в папку energia, то у меня в частности не работает TimerSerialExample. Или я что-то делаю не так?
0
почувствуй себя линуксоидом ;)
удалил папку со старыми либами и примерами (дата создания 21.05.2012), взял новый пример из экземпл/3.коммуникейшн/сериал_430, стало работать
0
Вот еще немного mysku.ru/blog/others/8324.html
-2
Это перепост моей статьи на Хабре
+1
Хм. Заказывал в прошлую пятницу на офф. сайте, платы были в наличии. Доставили сегодня.
0
кстати какой город то у тебя? есть лишний ланчпад в новосибирске.
0
И где бы найти обозначения выходов?
0
0
Оно. Спасибо. И еще вопрос- как заставить плату выдавать информацию на COM порт? Serial.begin(println) (-----) не помогает.
0
я не запускал ни одного примера или проги на ланчпаде :) но судя по форумам надо припаять правильный кварц и что-то настроить
0
На гитхабе у разработчиков написано, что возможна работа.
0
там там пример есть: TimerSerialExample. Ничего никуда паять не надо.
0
Он, кстати, тоже у меня не работает. И вот еще в примерах, где меняется яркость светоида, последние почему-то горят слишком тускло.
0
У меня UART работает (скорее всего, вы просто не успеваете увидеть заветные Hello World, поставить delay(2000) в начале setup-а, например).
А что касается ШИМ-а (плавной работы диода), мне пока удалось заюзать лишь один диод:

int i = 0;
int now_up = 1;

void setup() 
{
  pinMode(GREEN_LED, OUTPUT);
}

void loop() 
{
  analogWrite(GREEN_LED,i);
  if ( i == 255 && now_up ==  1 ) now_up = -1;
  if ( i == 0   && now_up == -1 ) now_up = 1;
  i += now_up;
  delay(1);
}

Со вторым проблемы (видимо это уже мощность камня сказывается, а может и нет).
0
Нашёл руководство как заставить плату общаться по com порту.
0
Блин, и мне теперь захотелось приобрести себе ланч пад, тут так смачно про него все розказывают ))
+3
раскрыть комментарий
-6
Нет, на самом деле. Это что-то типа:
-Вот вам snowbike. С его помощью вы можете быстро преодолевать большие расстояния, перевозить грузы. Его используют спасатели и мотолюбители.
-Ой, вы знаете, его управление так сложно выучить, это надо обладать средним умом, а мне так лень думать. Я лучше буду кататься с горки на санках.

Проходит полтора года и появляется новость: «На снежных мотоциклах теперь можно кататься с горки! Для этого достаточно заблокировать руль и не заводить двигатель. Теперь ничего учить не надо, ваш мозг останется без изменений!»
+1
если кому-то нужны санки а не сноубайк то всё логично.
+4
Базару нет, но потом эти саночники приходят в сообщества байкеров и начинают всех донимать своими сказками про санки.
+2
Плюс данного сообщества в том, что если Вам чего-то не нравиться — Вы можете это не читать.
+3
А накой байкеры приперлись в песочницу и устроили там свои посиделки? Или хальт на своем ee.ru для байкеров статьи пишет и сайт правильно назвать he.ru?
+2
Чегой-то не надо было сокращать…
+2
И этот комментарий написал человек, который опубликовал серии статей про STM8 и LPC1xxx.
-1
Что-то я не понял почему я так не могу написать?
LPC на уровне песочницы. STM для тех, кто памперсы снял. Байкерами и не пахнет.
+1
Продолжая аналогию — речь не шла о MotoGP, к примеру.
-1
не в тему Ваша аналогия…
+1
Я долго думал над IDE и сначала решил, что блокнот + gcc= лучший выход, но потом скачал эту вашу Energию, кастрировал и юзаю как IDE с подсветкой синтаксиса и прошивалкой. Крайне забавно. Тулза интересная, спасибо ардуинщикам.
+1
А чем не угодили CCS и IAR? Как IDE даже IAR более вменяем.
0
Одна из особенностей- простота, портабельность, размер. Мой нетбук не резиновый, а ноут на работе не мощный.
0
IAR тоже простой, требования еще пониже будут (ардуино на яве и ту же память жрет тоннами), размер не так уж велик по нынешним меркам (около 600МБ установленный, Energia — 240).
0
Роботы чтоль вторжение устроили?
Ди, где твой ручной терминатор? В отпуске?
Даже страница по реверс-инжинирингу попалась, если я правильно понял…
0
В том-то и дело что ручной, а DI видимо еще спит. Или не заметил.
Интересно, почему тут до сих пор кроме DI ни одного модера?
0
По самой первой ссылке не удержался посмотреть. То, что применяю, им пока что неподвластно. :)
0
Вопрос нуба, под МК никогда не писавшего:
Присоединил модуль с TEA5768 к лаунчпаду 1.5: SCL к пину P1.7, SDA к пину 1.6 (как указано в pins_energia.h). Пришлось даже заменить MSP430G2553 на MSP430G2452, так как первый поддерживает USCI, а энергия пока работает только с USI, как я понимаю. Пытаюсь компилировать пример на чтение с шины (master_reader). Выдает следующее:

master_reader.cpp.o: In function `setup':
master_reader.cpp:21: undefined reference to `Serial'
master_reader.cpp:21: undefined reference to `HardwareSerial::begin(unsigned long)'
master_reader.cpp.o: In function `loop':
master_reader.cpp:31: undefined reference to `Serial'
collect2: ld returned 1 exit status

Как я понимаю, класс Serial в этой штуке не допилен до конца? Или я что-то не так делаю? Мне нужно считать содержимое регистров микросхемы и выдать его в консоль, так как подключение дисплея для меня пока — темный лес.
0
Хотя начинает проясняться. MSP430G2452 не имеет аппаратный UART, а значит, методы Serial для него не работают. Значит, нужно либо использовать софтовый UART, либо каким-то образом использовать USCI в режиме i2c.
0
либо каким-то образом использовать USCI в режиме i2c.
А что, он может одновременно обслуживать оба интерфейса?
А насчет serial — все правильно, он действительно поддерживается только на 2553 (хотя в принципе могли бы в остальных версиях отмапить его на софтовый уарт). Для 2452 и 2231 есть библиотечка программного уарта, попробуй ее.
0
А что, он может одновременно обслуживать оба интерфейса?
В смысле?
Для 2452 и 2231 есть библиотечка программного уарта, попробуй ее.
Где бы ее еще найти. Нагуглил только пример TimerSerial — это пример, который должен работать на чипах без аппаратного UART, но у меня он не выдает ничего в консоль.

Придется видимо на IAR переползать.
0
В смысле?
Я так понял, ты хочешь одновременно и общаться с TEA5768 по I2C, и гнать данные в UART.
Нагуглил только пример TimerSerial — это пример, который должен работать на чипах без аппаратного UART, но у меня он не выдает ничего в консоль.
Да, библиотечка TimerSerial, она в комплекте Energia. На работоспособность не проверял. Но тут чуть выше уже рекомендовали скачать свежую версию из репозитория.
0
Лично у меня все работало без обновлений из репозитория. М.б. kokornov общается не с тем COM портом? Или дело в проге?
0
COM-порт у меня один, виртуальный от самого лончпада. Пример TimerSerial должен возвращать введенное в терминал назад, а у меня не возвращает ничего.
0
А ты джамперы правильно поставил? У софт и хард уартов TX и RX поменяны местами. Для одного из них джамперы RX и TX надо ставить горизонтально, для другого — вертикально.
0
0
Странно, только что проверил у себя: rghost.ru/39587736
0
Да, джамперы точно правильно — пробовал и так, и так. Сегодня стало возвращаться введенное. Только с чипа данные все равно не считываются:

#include <TimerSerial.h>
#include <Wire.h>

TimerSerial mySerial; // Create a new TimerSerial object

void setup()  
{
  Wire.begin();        // join i2c bus (address optional for master)
  mySerial.begin();    // only 9600 baud is supported
}

void loop() // run over and over
{
    Wire.requestFrom(96, 40);    // request 6 bytes from slave device #2
    while(Wire.available())    // slave may send less than requested
    { 
     char c = Wire.read(); // receive a byte as character
     //if (mySerial.available())
     mySerial.write(C);
    }
    delay(500);
}


Адрес чипа в даташите указан как 1100000, что при переводе в десятеричную СИ даст 96.
0
1. Для ардуино адрес нужно считать иначе (см. мою статью про ардуино и I2C)
2. Почему
mySerial.write(C);
у вас «C» заглавная, а двумя строками выше — строчная?
0
3. Почему
Wire.requestFrom(96, 40);
Вы читаете 40 байт, а в комментариях сказано, что 6?

4. Вы уверены, что вам не нужен стоповый бит после запроса (endTransmission)?
0
1. Спасибо.
2. Так скопипейстилось. В коде обе строчные.
3. Это допиленный исходник примера TimerSerial. Комментарии я не менял.
4. Мне нужно считать хоть что-то, неважно что.
0
4. Попробуйте еще поставить перед
mySerial.write(C);
задержку пару секунд (delay(2000)), возможно вы просто не успеваете запустить терминал до начала работы программы.
5. Я тут еще подумал, а эту микросхему разве не надо для начала как-то проинициализировать?
0
Я как-то мучил термодатчик LM75B (из набора industrial от NXP). Прога на классическом C, но думаю можно понять суть:

	i2c_Start(); 		    //стартовый бит
	i2c_Write(LM75B_ADR);	    //передача адреса датчика
	i2c_Write(0x00);	    //запрос на прием температуры
	i2c_Start();		    //рестарт, для приема данных
	i2c_Write(LM75B_ADR | 0x01);//передача адреса датчика и бита начала приема
	a = i2c_Read(1);	    //прием первого байта и запрос на прием следующего
	b = i2c_Read(0);	    //прием второго байта
	i2c_Stop();                 //завершение приема
0
Хм. Если с тюнером не выгорит, надо попробовать — как раз в наличии 4 штуки.
0
Во! Определи меня :)
Конечно начинать надо с простого! Как убедитесь, что с LM75 все работает, можно продолжить заниматься с тюнером.
0
4. Не помогло. Равно как и перебор адресов: 48, 96, 0xC0 (это число тоже фигурирует в ДШ, но адрес семибитный, и оно семью битами не представимо), 0x60 (=96), 0x30 (=48).
5. А вот тут не знаю. Написано, что все биты, кроме MUTE, при включении устанавливаются в 0, а для работы с кварцем на 32768 гц, который и распаян, нужно один бит перевести в 1. Но если можно записать данные, разве нельзя их считать?
0
5. Микросхеме нужно знать, что вы хотите от нее получить, для этого, в случае с термодатчиком и передается запрос 0x00 (запрос на получение температуры), после чего, производится чтение.

Я бы для начала выбрал какую-нибудь более простую микросхему (общеизвестную в смысле). Что-нибудь из набора Industrial например, их вроде еще раздают.
0
Получил пару штук еще год назад :) Спасибо за помощь! Тогда пока буду заниматься LM75B.
0
Сам попробовал подключить датчик LM75B к Energia

1. Хард: SDA=P1.7 SCL=P1.6;
2. Софт:
#include <Wire.h>
#include <TimerSerial.h>
#define I2C_ADDR (0x92 / 2)

TimerSerial COM;
void setup()
{
  COM.begin();
  Wire.begin();
}

void loop()
{
  unsigned int a=0;
  Wire.beginTransmission(I2C_ADDR);
  Wire.write(0x00);
  Wire.requestFrom(I2C_ADDR,2);
  a = Wire.read();
  a = a*0x100 | Wire.read();

  a = (a/32*10)/8;
  COM.print(a/10);
  COM.print('.');
  COM.println(a%10);
  
  delay(1000);
}

3. Если разберется с FM приемником, отпишитесь (в личку например), а то что-то заинтересовало!
0
1. Не наоборот? В pins_energia.h SCL=1.7, SDA=1.6
2. Ничего не выводится в терминал. Контроллер G2452. Пробовал SCL и SDA и так, и так подсоединять. Правда, микросхема у меня без ничего (без подтяжек по 10кОм SCL, SDA и OS), и запитана от самого лончпада. Провода сантиметров 20. Попробую запаять резисторы.
3. Хорошо.
0
1. Вроде у меня все верно (если судить по нацарапанным на моей плате надписям). Но я Татарин, мог и начудить :)
2. Для работы LM-ки нужны три резистора и кондер на питание (если судить по все той же самодельной плате).
0
Еще раз проверил. У меня все верно. Сравнил это с pins_energia.h У меня у одного возник когнитивный диссонанс?
0
Хм, действительно. Адрес LM75B в вашем включении — 1001001?
Странно тогда: LM-ка имеет 7-битный адрес, вы добавляете 0 на конце, а потом делите на 2, получая из 8-битного адреса тот же семибитный.
0
Я только в ардуине такое вижу, что адрес — семибитный, во всех остальных контроллерах с которыми я работал, передается 8-бит (опять таки см. мою статью про дисплей и пример с LPC1114).
0
Ох, лол, не поверите:) Забыл снять джампер, подключающий светодиод к p1.6. Все, теперь в консоль пошла температура. Спасибо!
0
Без проблем, как раз хотел напомнить про джампер :)
0
Тюнер запущен.

#include <Wire.h>
#define I2C_ADDR (0xC0 / 2)
#define station_freq 105100000

void setup()
{
int PLLFreq=4 * (station_freq — 225000L)/32768L;
Wire.begin();
Wire.beginTransmission(I2C_ADDR);
Wire.write((PLLFreq >> 8) & 0x3F);
Wire.write(PLLFreq & 0xFF);
Wire.write(0x00);
Wire.write(0x1E);
Wire.write(0x00);
Wire.endTransmission();
}

void loop()
{
}

Пока сам не понял, что к чему, но радио он ловит.
А что значит буква L после числа в AVR C?
0
А что значит буква L после числа в AVR C?
То же, что и в любом другом С — long.
Адсо это не AVR C, а MSP430 C++.
0
Адсо это не AVR C, а MSP430 C++.
Значения регистров я взял из кода для TEA5768 под AVR.
0
Я так понял, ты хочешь одновременно и общаться с TEA5768 по I2C, и гнать данные в UART.
В 2553 два USCI.
Да, библиотечка TimerSerial, она в комплекте Energia. На работоспособность не проверял. Но тут чуть выше уже рекомендовали скачать свежую версию из репозитория.
Спасибо, пойду искать новую версию.
0
6 августа вышла новая версия. Поддерживает библиотеку Tone.h (пиликанье в динамик), USCI при работе с i2c/spi (теперь можно совместно использовать аппаратный UART и эти интерфейсы) и еще много всего.
-1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.