… понятно, чем он занят. А что делает электронщиик?
Ещё один кухонный таймер.
Продолжаем накачивать наши интеллектуальные мускулы.
Подведём итог проделанной работе по поиску неисправности. Мы определили, что в нашей программе неправильно инициализируется регистр P1DIR, и скорее всего не правильно проинциализирован сторожевой таймер. Оба бага предположительно находятся в функции init_system.
В каком файле находится эта функция? Где её искать?
Ну, поскольку наш проект крошечный, то из двух файлов, один из которых мы уже посмотрели и её там точно нет, остаётся одно — указать на другой. Это наверно в школе даунов отметили бы высокой оценкой. Но если проект состоит из нескольких десятков файлов (под сотню), то процесс поиска функции может оказаться весьма увлекательным занятием.
Я создал и отладил небольшой проект на базе платы MSP-EXP430G2 и установленным на неё микроконтроллером MSP430F2001.
Смысл проекта — моргать двумя светодиодами: зелёным и красным с примерно одинаковой скоростью. Поскольку процесс моргания у светодиодов разный, то частоты моргания не будут точно совпадать. Моргание зелёного светодиода основано на программной задержке, а моргание красного — висит на прерывании от таймера.
После того, как я добился цели, я внес в программу несколько логических ошибок, вот их-то нам и предстоит найти в этом уроке.
Вообще логические ошибки характеризуются тем, что компиляторы их не способны обнаружить. Код компилируется на «ура!», но программа не работает.
Почему не работает? А на этот вопрос мы сейчас и будем искать ответ.
— От винта! (с) фраза из советского кинофильма «В бой идут одни старики»
На этот раз программный код для заливки в микроконтроллер нам не понадобится. Сегодня мы потренируемся читать-писать память. А поскольку MSP430 относится к машинкам Фон-Неймановского класса и его регистры периферийных устройств размещаются в едином адресном пространстве, то доступ к этим регистрам точно такой же как и к обычным ячейкам памяти.
И в самом деле, запись байта в память RAM ничем не отличается от записи байта в порт ввода/вывода. Тоже самое касается и чтения. Фокус состоит в том, что к порту обычно что-нибудь подключается, например светодиоды, кнопочки или другие компоненты.
Говоря метафорами, порт — это некая комната в большом здании. Комната имеет двери в общий коридор и имеет окно. Ядро микропроцессора общается с «комнатой» через двери, а внешний мир «смотрит» в комнату через окно.
Продолжая аналогию, можно сказать, что ячейка памяти — это кладовка с одной единственной дверью. Что в ней лежит, внешний мир знать не может. Только ядро процессора имеет право попасть в кладовку — что-то туда положить или взять.
mspdebug — это утилита (программа, работающая в компьютере), которая позволяет много чего полезного делать с микроконтроллером семейства MSP430. Утилита позволяет заливать код во флешь-память, считывать его обратно, записывать в файл. Утилита позволяет запускать и останавливать программу в МК, смотреть и изменять значения регистров, памяти. Устанавливать точки останова, проходить программу по шагам. И многое-многое другое.
Всего мне не охватить, но основные техники работы с утилитой, я думаю, я смогу описать. Я начну с кратного повторения того, что вы уже знаете. Если вы плохо понимаете, то вам нужно сначала пройтись по предыдущим статьям по MSP430, и только потом снова начать читать тут.
Я работаю над новым проектом, в котором используется MSP430F2274. Не плохой, надо сказать, камушек! В этом проекте нужно отправлять пакеты данных в комп, а значит, что нужно подсчитывать у них контрольную сумму (далее — КС).
Пару лет назад я уже писал на тему подсчета КС блока данных. Тогда измерения скорости вычисления КС и оценка расхода памяти (RAM и flash) были выполнены для микроконтроллера AVR.
«CRC16-CCITT — сравнение реализаций»
http://wp.me/p1H7g0-C0
Сегодня я произвел те же измерения, но для MSP430.
Я думаю, что разработчикам будет не только интересно ознакомиться с результатами сравнения, но результаты дадут им твёрдую опору при выборе типа микроконтроллера для следующих проектов.
КТ — это кухонный таймер. Да-да, тот самый!
Только на этот раз он имеет красивый винтажный корпус.
— Откуда дровишки? — спросите вы.
Я остался один дома. То есть совсем один. Практически безвылазно сижу дома. Целый месяц. Работы нет, семьи нет, ничего нет.
Хочу жрать. Ставлю на газ чайник и ухожу продолжать писать прогу.
Через час в квартире становится как-то тепло и влажно… Чайник!!! Почти выкипел. И это случалось много раз.
Оставаться на кухне на 5-10 минут, чтобы караулить чайник, как-то не правильно. А при работе на компе или с паяльником, так ухожу в это дело с головой, что на долгое время забываю, что недавно хотел есть.
Я думаю, что подобные проблемы имеются не только у меня.
С разницей всего в несколько дней вышли новые выпуски легендарных дистрибутивов Ubuntu и Debian. Я скачал «оба два».
Убунта вышла первая, её первую я и скачал, но не проинсталлировал, не поигрался — не было времени. А потом вышел Дебиан. Я его тоже скачал, причем с дуру (не иначе!) аж три CD-образа: образ обычный, образ с LXDE и образ с XFCE. Зря. Не делайте как я! Достаточно одного любого образа. Во время инсталляции все-равно будет задан вопрос — какую оболочку ставить? Можно даже не одну. Читать далее
Не прошло и года с момента зарождения и старта по разработке Махальных Часов…
https://zhevak.wordpress.com/2012/12/26/махальные-часы-magicwatch-часть-1/
… и сегодня вечером поздним вечером «тихо и незаметно» (с) проект был завершен.
Рубрика: Копилка опыта, Прикольненько, MSP430
Отмечено Евгения, динамическая индикация, махальные часы, MSP430