Точный частотомер на MSP-EXP430G2 с выводом значений в UART



Спасибо TI за наше счастливое детство! Точнее, за LaunchPad Rev1.5. Наконец-то в наборе появился контроллер MSP430G2553 с HW-UART, а не тупые огрызки, как раньше.

Понадобилось тут частотомер на скорую руку сваять. Беглый поиск по яндексу дает отсылки на atmega/pic-частотомеры. Да еще со всякими заморочками, типа точного вычисления промежутков, да с индикацией, да со всякими счетчиками-делителями частоты.

Чего городить огород, если достаточно дать сигнал на счетный вход MSP430, и он сам все посчитает. А мы посмотрим, что он там насчитал за 1 секунду :)



А полученный результат кидается в UART (9600/N/1). И любой терминалкой его принимаем, а потом можем и в экселе результаты посчитать-посравнивать (особенно если нужно выяснить, с какой точностью сигнал у нас меряется-генерируется).

В этой программе используется прерывание WDT, происходящее раз в 1 секунду, при использовании внешнего часового кварца на 32768 гц. В результате оптимизаций удалось достичь погрешности измерений (практической) не более +-0.0003% (!) на 12мгц входящей частоты. В качестве генератора использовалась Atmega48 (с выведенным 12мгц тактом на ногу CLKO), в исходнике подстроено аккурат на нее.

Печально, но используя MSP430 в качестве генератора, получил расхождения еще больше от среднего измеренного значения (порядка +-0.04%). DCO такой DCO :(

Впрочем, как оказалось, и DCO не смертелен — главное учитывать, что он врет в абсолютном значении. У меня при питании 3.6В (лаунчпад) он выдает среднюю частоту 1039453 гц (из «калиброванного» 1mhz). Видимо, сказывается питание — калиброван-то он при 3.3В.

Прикрепляю исходники проекта для CCS5 (с использованием Grace). Тупо, дешево и сердито.

Определение ADDTCK — для использования «поправленного» значения пересчета переполнения таймера. Откалибровал по 12мгц кварцу (нет другого честного источника сигнала). В частности, для учета дополнительных команд на обслуживание математики/прерываний. Поправьте меня, если не прав.

Ноги:
P1.0 — вход для сигнала
P1.2 — Tx HW-UART (не забываем поставить джамперы в нужное положение!)

Пользуйтесь!
  • 0
  • 24 января 2012, 14:07
  • hexus
  • 1
Файлы в топике: FreqCounter32768.zip

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

RSS свернуть / развернуть
А как на сайте заказать набор Rev1.5?
0
Просто заказать LaunchPad. У них старые запасы иссякли (у меня были производства 03/2011), сейчас высылают новые наборы Rev1.5(производство 09/2011).

Если не забуду — опишу разницу в наборах.
0
Недавно(меньше месяца назад) заказывал Ланчпад — получил ревизию 1.4 с этими огрызками G2231. Пичаль(( А просто в Украине MSP430G2553, да еще и в DIP, малореально достать.
0
Хм. Вроде начали рассылать где-то с конца декабря новую ревизию. Собственно, первую версию я получил в начале декабря, рассказал друзьям. Друзьям перед НГ уже приехала новая ревизия. В январе сам заказал — приехало 4 комплекта с новыми контроллерами.
0
Печально, но используя MSP430 в качестве генератора, получил расхождения +-3% от среднего измеренного значения. DCO такой DCO :(
Чтот много как то. А DCO калибровался с помощью часового кварца перед измерением?
0
А черт его знает, что такое было. Сейчас снова перемерял — на 1мгц генерации получил точность +- 0.04%. Лишний раз на 100 что-ли умножил :D
0
На вид ее крайне мало. Во первых, хедеры теперь впаяны плату из коробки, во вторых — в комплекте MSP430G2553 и MSP430G2452 вместо 2211 и 2231. Менее заметное — изменилась распиновка «разъема» с пятью джамперами между FET и MCU частями платы. И еще убрали пару смд-деталек — кондер и резюк, подключенные к кнопке на P1.3.
Также, возможно, изменения коснулись прошивки FET'а.
0
Да. Насколько помню, их предлагалось выпаивать самостоятельно для работы с 430BOOST-SENSE1. Учли пожелания трудящихся. Сейчас для использования кнопки надо задать P1OUT |= BIT3; (внутренняя подтяжка к Vcc).

Изменился вкладыш-документация (упомянуты новые контроллеры, еще кое-что по-мелочи), на коробке стикер MSP-EXP430G2 Rev1.5. Шелкография на плате тоже изменилась (TXD/RXD -> UART/UART).

Обновление прошивки, скорее всего, изменилось на то же, что давало последнее обновление прошивки специальной прошивкой (старые можно обновить).

Хедеры скорее всего для домохозяек с бустер-паками :)
www.youtube.com/watch?v=YxYyWz6w9VA&feature=related
0
Впрочем, во вкладыше все еще упоминается CCS v4 :D
0
(старые можно обновить)
Внешним JTAG-программатором или можно прямо по USB?
0
Прям по USB. Тупая и (имхо) довольно глючная утилитка, но прошивает :)
0
Можно линк?
0
0
Гм, судя по комментам — это автобрикер, а не автоапдейтер)
0
Тоже было подозрение на брик :) Но вроде под VPC под Win7 вытащил. А потом и вовсе все нормально было.

Кстати, LP вообще очень чувствителен к качеству кабеля. Ловил адские ошибки при подключении к хабу в клавиатуре и мониторе. Так что ноги может оттуда растут.
0
Да и комменты старые весьма. Может втихаря пофиксили-перевыложили?
0
Да, при использовании WDT как интервального таймера, с тактированием от часового кварца точность катастрофично повышается, вплоть до +-0.0006% на 12мгц. Но пока что «не докладывает» герц при измерении (на 0.5-1%). Разберусь — выложу.

А DCO явно все-равно занижает (порядка 2-3%). Т.е. по факту ниже калиброванных величин (вероятно, из-за того, что котроллер калиброван по 3.3В, а питаем от 3.6В).
0
Обновил тему. Переосмыслил. Стало лучше и точнее. И команд даже поубавилось :D

Если у кого есть высокоточный генератор сигнала — проверьте. Особенно множитель дополнительного счетчика ;)

Еще бы понять, как использовать второй таймер в качестве дополнительного счетчика при переполнении первого (правда, по слухам, в этом случае все-равно используется как минимум один дополнительный такт — на сравнение и сброс счетчика).
0
У меня LaunchPad Rev 1.4 плохо работает с MSP430G2553. Прошивает. Программа в МК работает, но отладчик выводит бред.
0
1.4 не видел =\

Попробуйте подключить другим кабелем в другой USB :)
0
Пробовал. С другими МК из этой серии работает нормально.
0
прошивку обновил?
0
Пока что нет.
0
у меня 1.4 после обновления прошивки работает с 2553 хорошо
0
Я обновил свою плату. Тоже заработало. Ура!
0
До какой частоты он у тебя работает, кстати?
0
  • avatar
  • Vga
  • 26 января 2012, 18:02
12мгц легко берет. Предполагаю, что минимум 16-20 мгц должен выдержать. А вот как дальше — только догадки :D Гляну на досуге в даташит, там вроде где-то было время срабатывания входа. Будет упираться в него.
0
Заказал себе платку. $4.30, доставка бесплатно. Мне начинает нравится TI. Оплатил визой, можно PayPal.
0
У них были косяки, в феврале отправляли платы старой ревизии. В результате словил лулзов, когда приехало 4 платы для меня бесполезных.

Ну и, кстати, 20ppm на кварце в комплекте несколько удручает.
0
В четверг заказал, в понедельник курьер привез)
В комплекте M430G2452, M430G2553 уже установлен. Все распаяно. В качестве приложения кварц и ответные части разъемов.
Конечно цена в $4.30 (сняли 127 рублей) просто символическая. В «Каталог Электронщик» и Терраэлектронике (фактически представляют Farnell в России) такая штука обойдется в 260 рублей, доставка, посчитал FeedEx, получилось $256. Мне аж прям как то неловко)
0
Да не, федексом доставка и дешевле бывает. Тем более на такие мелкие стандартные грузы. Я бы прикидывал, что техасу обошлось 15-30 баксов за отправку (с учетом их объемов).
0
Ну это International Priority. Я вбил на сайт фидэкса все сведения, точь-в-точь что были на документах, тип коробки, вес, индексы. Я понимаю что у них там договор и цена пониже, но, все равно, впечатляет)
Возможность начать разработку на 16 битах за такие копейки прости прельщает, хотя раньше с опаской относился к MSP430, сейчас начинаю поглядывать в их сторону.
0
главное знать, что мсп не работает с HF-кварцами (нужен хотя бы генератор), и нет еепром в G-серии (только флеш с постраничным стиранием и ограниченным ресурсом)…
0
Я пока не вникал особо, но так, на вскидку, нашел встроенный DCO, который может давать 8/12/16 МГц тактовой, но, наверное, по температуре плавает и нужно калибровать. Количество перезаписей флеша минимум 10 000, типичное — 100 000, что не хуже чем у EEPROM в AVR. Да и вообще, хорошая идея избавиться от лишнего элемента.
Надеюсь доживу до того момента, когда объединят и Flash, и RAM, и EEPROM. Уже есть FRAM память достаточного для МК объема, остается только ждать)
0
DCO и калибровать/учитывать надо, и плавает оно порядочно (около +-0.03% намерял). Флеш в мсп заявлено на 1000 циклов. Неудобно работать в том, что записав ячейку, ты не можешь сделать «кольцо» — ибо потом надо стирать всю страницу сразу перед новой записью поверх.
0
А что мешает стереть страничку и затем записывать по кольцу, пока страничка не кончится? Как кончится — стереть и заново начать.
0
Тем, что в произвольный момент будем иметь не последние н-результатов, а от 1(0) до максимума. Причем независимо от реального количества измерений.
Я выкрутился в проекте тем, что меряло до максимума, дальше честно выводило ошибку переполнения. Стирание оставлял на волю пользователя. Может ему еще нужны «те» результаты.
0
А, это. Я подумал о кольце как о варианте борьбы с износом флеша (т.е. когда требуется только самая последняя запись).
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.