MSP430 + прерывание + Flash

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 14
Зарегистрирован: Вт мар 31, 2009 08:11:16
Откуда: Н.Новгород

Сообщение Владимир Вит »

Вот какая проблемма:

пытался сделать сохранение во flash 3-х байт при отключении питания
и вдруг обнаружил что при возникновении прерывания во flash ничего не пишется.

Прерывание - на опускание ноги порта P1OUT

причём при этом жёстко пинцетом замыкал данную ногу на землю.

запись во флешь прекрасно работает в теле программы а вот что происходит во время прерывания непонятно.

Прерывание возникает, это проверял.
Реклама
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Здравствуйте.
Можно предположить, что при входе в прерывание из-за смены частоты тактирования (аппаратный запук DCO) генератор обслуживания FLASH работает в недопустимом диапазоне.
Реклама
Родился
Сообщения: 14
Зарегистрирован: Вт мар 31, 2009 08:11:16
Откуда: Н.Новгород

Сообщение Владимир Вит »

Как это можно проверить?

Тактирую проц от кварца 4 МГц
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

-если генератор ACLK программно не останавливается, логично и контроллер FLASH тактировать от ACLK.
-если останавливается, то при входе в прерывание запускаем генератор ACLK, дожидаемся его стабилизации и только потом работаем с FLASH
-можно установить частоту DCO~4MHz и использовать довольно большой допустимый интервал частоты контроллера FLASH
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 14
Зарегистрирован: Вт мар 31, 2009 08:11:16
Откуда: Н.Новгород

Сообщение Владимир Вит »

.... что то не так , что то не понятно.

подцепил часовой кварц. Внутренние генераторы ни как не настраивал.

судя по примеру должно быть так:

ACLK = LFXT1 = 32768, MCLK = SMCLK = default DCO ~ 800kHz

хотя пример для MSP430F123(2) но ведь нет разницы!?

После того как произошло прерывание не сохраняет во флешь!

Причём проверял так:

при возникновении прерывания присваиваю переменной 1
в цикле осн. программы проверяю. Если 1 то сохрапняю во флешь


До возникновения прерывания - сохраняет а после нет !!!!!

флеш тактирую от SMCLK без делителей
Вложения
fet120_clks.c
(1.59 КБ) 180 скачиваний
Реклама
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Здравствуйте.
Я понял так, что контроллер FLASH используется по умолчанию, т.е. на вход поступают импульсы DCO~610...900кГц и коэффициент деления равен 2+1=3. Получается, что запись осуществляется в диапазоне 203...300кГц при допустимом диапазоне 257...456кГц. Лучшее поменять делитель на1+1=2 тогда полностью можно попасть в допустимый диапазон. Надеюсь, что процедура записи организована в соответствии с этими документами.
http://focus.ti.com/lit/ug/slau049f/slau049f.pdf
Реклама
Родился
Сообщения: 14
Зарегистрирован: Вт мар 31, 2009 08:11:16
Откуда: Н.Новгород

Сообщение Владимир Вит »

Чудеса да и только !!! НЕ РАБОТАЕТ


выкладываю исходник программы

Кто подскажет что здесь не так
Вложения
Bik.c
(2.61 КБ) 250 скачиваний
Родился
Сообщения: 14
Зарегистрирован: Вт мар 31, 2009 08:11:16
Откуда: Н.Новгород

Сообщение Владимир Вит »

Разобрался. оказывается неправильно прерывание обрабатывал.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»