Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Хочу начать работать с MSP430.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
ASV
Хочу начать работать с MSP430. Нашол схемы программаторов (http://www.olimex.com и Figure B-3. MSP-FET430IF Fet из файла документации MSP-FET430 User's guide.pdf). Мои вопросы:
1. Какой из них лучше и в чем отличие?
2. Нужен ли для них кварц на плате с МК (во втором программаторе он уже есть но медленный, зачем он там? и зачем там 555 таймер).

Я нормально работаю с AVR и привык к программированию через SPI, а тут вроде только через JTAG?
aal
Цитата(ASV @ May 2 2005, 11:51)
Хочу начать работать с MSP430. Нашол схемы программаторов (http://www.olimex.com и Figure B-3. MSP-FET430IF Fet из файла документации MSP-FET430 User's guide.pdf). Мои вопросы:
1. Какой из них лучше и в чем отличие?
2. Нужен ли для них кварц на плате с МК (во втором программаторе он уже есть но медленный, зачем он там? и зачем там 555 таймер).

Я нормально работаю с AVR и привык к программированию через SPI, а тут вроде только через JTAG?
*


Я смотреть не буду. Вот мои схема программатора - которым пользуюсь. Переработанный фет. и пример схемы на мсп.
ASV
А позволяет ли эта схема выполнять отладку на кристале?
standpoint
позволяет.
Да проще кит купить ~50уе (JTAG, кристал на плате + IAR eval, который лечится)
nicom
... а вот посмотрите...
http://mspfet.hellos.biz/ru/links/
yung
Совет, может, и не в тему, но все же. ИЩИ готовые исходники для инициализации кристалла. Я сам когда после 51 и АВР сел на мсп (заставили), чуть не позеленел. Инициализация мсп - это что-то. И что я заметил. Если для АВР и 51 довольно много народа на ассемблере пишет, то для мсп энтузиастов значительно меньше.
Shread
По воводу программатора, тот что по схеме от Олимех работает у очень многих людей, схема от Ti избыточна(как мне когда-то ответили на CAXAPE на мой вопрос о необходимости часового кварца и таймера, они нужны для отладки когда на плате стоит один проц). Вообще, если решить что питаться FET будет от внешнего источника +3V, от того же что и проц, из всех деталей останется шинный формирователь 74HC244, кучка резисторов и транзистор(этот, если вы используете кристалл с отдельными ногами под Jtag, тоже можно выкинуть, он рулит ножкой test).
По поводу программирования: Сам пишу вещи в которых нужен полный контроль, на асме(типа порта RS-232, программного), а так, в основном на Си, и дело тут не в том, что не хочется, или трудно, а в том, что быстрее накидать пару строк на Си. Если знаешь, во что скомпилит компилер те или иный команды сишника, процесс написания отличается лишь меньшим объемом исходников, и лучшей читаемостью кода.
Начинающему, совершенно не нужно начинать с асма, для MSP, я залез в C-startup и переделал его под себя тока через 2 месяца после начала общения с MSP.
Крайне полезен первый пример, на Си, FET1.c, который есть в любом IAR'е под MSP430, далее все прозрачно. Проверить работоспособность эмулятора(FET'а) удобнее с помошью программы MSPFet от Kurt'а, здесь уже был линк, на его сайт http://mspfet.hellos.biz/
Вот пожалуй и все
-=Space=-
хорошая программа должна Watchdog не глушить, а периодичесик сбрасывать
причен не по таймеру (прога может зависнуть, хотя таймер продолжит жить)
Хотя сам watchdog не использую, только думаю прикрутить когда буду релиз версию компилить.

Если пишется прога , где нужен "полный контроль" совсем не обязательно писать ее всю на асме. Инициализацию проще сделать на Си, на скорость она не повлияет.
А если писать на Си как на асме,
например
int a,b;
union{
long hilo;
int lo,hi;
}c;

MPY = a;
OP2 = b;
c.hi = RESHI;
c.lo = RESLO;

то на асме код будет не намного длиннее, хотя наглюдность и удобство программирования несомненно выше.

А если еще включить при компиляции генерацию асмкода , то можно избежать откровенно неудачных сишных конструкций.
Ошибок будет меньше чем писать непосредственно на асме
Shread
Цитата(-=Space=- @ May 26 2005, 21:59)
Если пишется прога , где нужен "полный контроль" совсем не обязательно писать ее всю на асме. Инициализацию проще сделать на Си, на скорость она не повлияет.то на асме код будет не намного длиннее, хотя наглюдность и удобство программирования несомненно выше.
...
А если еще включить при компиляции генерацию асмкода , то можно избежать откровенно неудачных сишных конструкций.
Ошибок будет меньше чем писать непосредственно на асме
*

Я вообще написал, что в основном пишу на Си, кроме этого C-startup переделываю один раз, перед началом работы с нововой платформы, под задачи этой самой платформы. Во многих изделиях крайне критичен объем кода, если я делаю какой-нить датчик, скажем на 1121, там одновременно встает куча проблем, как то: малое потребление, нормальная работа порта(программного), высокая степень контроля за работой проца(работа с компаратором), математика, да еще и ограничения на размер кода(т.к если мона обойтись более дешевым процессором, то им и надо обходиться), в любом случае, самым реальныи является компромисс между асмом и Си. У каждого свои пристрастия, один приятель до сих пор на IAR 1.26 сидит и переходить на что-то более новое даж не думает, особенно после того, как Ti апдейт выпустил, с поддержкой новых процессоров. На чем программить каждый решает для себя, но для начала явно удобнее пользовать Си, потом учить архитектуру и грамотно пользовать асм.
vesago
А можно поподробнее насчет C-startup? Я в основном писал для 51 в кейле. Соответственно в каждый проект закидывад стартапный код. В нем я подправлял только размер озу для очистки при старте и инициализацию стека. Что надо править для мсп? Посмотрел я примеры для фетов - нигде не видел чтоб стартапный код вставлялся в проект. Уже грешным делом решил, что иар сам все делает.
andr2000
насчет пункта 3 согласиться ну никак не могу - вы б его еще в воду
бросили не вынимая батареекsmile.gif шутка конечноsmile.gif
а насчет расстанова точек сброса wdt - все же сброс вдт
в прерывании - не лучший вариант. допустим в вашей программе,
по каким-либо причинам, что-то зациклилось, серьезно так.
и сидит себе в таком for (;;);
в этом случае прерывания будут вызываться на ура,
сбрасывать вдт и... а зачем он, вдт, тогда нужет?
andr2000
если позволите вставить 5 копеек...
под мсп, как и под другими иарами, вам прийдется
иметь дело с xcl-файлами, вот именно там и настраиваются
и размеры и сегменты и пр.
а править стартап прийдется только в случаях,
когда нужна какая-либо инициализация, которая либо
должна просто быть выполнена ASAP или до перехода на main.

кстати, пишу на иаре и под мсп и под авр - мне нравится.
когда нужно что-то такое быстрое и компактное - на ассемблере
еще никто не запрещал писатьsmile.gif
andr2000
Цитата(vvvvv @ May 27 2005, 10:30)
... вопросы, вопросы ... кто хочет ищет способ, кто не хочет ищет причину. Ответ на этот вопрос очень простой, думайте...
*

все равно не понимаю, ну вот хоть убейте или поделитесь опытомsmile.gif
какова роль в таком случае вдт? из бесконечного цикла он систему не выведет, т.к. будет регулярно сбрасываться в обработчике.
ZNQ
Надеюсь будет полезно
http://forum.electronix.ru/index.php?showtopic=5197



Повторное сообщение, дословно дублирующее это удалено
VAI
vesago
Вижу речь пошла о надежности. wdt лучьше сбрасывать в фоновой программе. Можно извратнуться и сделать систему, осуществляющую подсчет прохождения участков кода (счетчик). Если счетчик достиг определенного значения, то тогда собака сбрасывается...
vvvvv
В критическом участке кода ставится счетчик прохода через него, и он сбрасывается в каждом проходе, а обработчик прерывания упорно пытается этот счетчик нарастить, если не было долго проходов, т.е. программа где то застряла в боковой ветви, обработчик прерывания увидит это и уже сам вдарит на полный сброс. В этом случае есть два преимущества :
1. Можно самому задавать через какое время сработает сброс (т.к. обработчик выходит на проверку через фиксированное время, а счетчик циклов работает как множитель запаса по времени
2. Нет нужды команды watchdog рассовывать непосредственно в теле программы, можно за ними не уследить, потом намаешься.

А вообще watchdog нужен на самом деле только на 50%, кстати внешний watchdog тоже проблемы не решает. Потому что если MSP430 завис так, как он может его оттуда можно вытащить только через закорачивание по питанию. Вот чтобы он туда не попал нужно соблюсти две вещи :
1. Поставить внешний супервизор на питание (у 1611 он уж встроен)
2. Контролировать стек (это самый узкий момент)

Как показали испытания самым критичным у MSP является ситуация, когда в одно мгновение перепахивается вся оперативка, указатель стека попадает неизвестно куда и вот тут-то он может конкретно зависнуть.
Для этого в том же обработчике прерывания ставится программа контроля за стеком. Если указатель стека не находится в указанных пределах, тут же уйти на сброс.
Кстати уходить на сброс лучше всего так:
DINT()
WDTCTL=0x00

Вот если вы это все сделаете, можно гарантировать бесперебойную работу Вашего устройства.

Все это есть в файлике, который я уже выложил (см на первой стр).
andr2000
согласен, с тем, что такая система будет работать.
но, не кажется ли Вам, что перенос вдт в обработчик
не меняет самой сути, а просто дает возможность
увеличить период вдт, что дает возможность реже
всталвять инструкцию сброса вдт. вот контроль стека -
тут согласен, это уже существенноsmile.gif
кстати, в случае, когда период вдт _должен_ быть малым,
мне кажется, увеличение периода вдт не может быть использовано
vvvvv
Какой сути?
Зависания любой ветки он отследит.
При затыкании обработчика TimerB wdt сработает.
Когда проц застрял, а обработчик крутится ну застрял проц, счетчик этой ветки переполнился, wdt сработал.
Остается вариант, когда процессор несанкционированно упал в спящий режим, ну вот этот вариант может быть только от стека.
ВСЕ. Завалить такую систему нельзя.
PS:неплохо рестарты посадить на все неиспользуемые вектора, но опять же это от кривых рук или от стека, а его мы отслеживаем.
andr2000
когда я говорил о сути, я имел ввиду, что Ваш подход
может быть рассмотрен как аналог реализации, когда вдт имеет
программируемый большой период и это дает возможность
вставить только одну инструкцию сброса вдт в одном месте
программы
cpl
[quote=ASV,May 2 2005, 11:51]
Хочу начать работать с MSP430. Нашол схемы программаторов
1. Какой из них лучше и в чем отличие?
2. Нужен ли для них кварц на плате с МК (во втором программаторе он уже есть но медленный, зачем он там? и зачем там 555 таймер).

Немного модефицировал схему,
Собрал проверил все работает (пишит,трасирует).
схемка в формате pcad-2001 sp3
проверял на софте с мигающим светодиодом (из комплекта к iar ).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.