Страница 1 из 1

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

Добавлено: Пн апр 13, 2009 08:02:44
Владимир Вит
Вот какая проблемма:

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

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

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

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

Прерывание возникает, это проверял.

Добавлено: Пн апр 13, 2009 08:50:41
akl
Здравствуйте.
Можно предположить, что при входе в прерывание из-за смены частоты тактирования (аппаратный запук DCO) генератор обслуживания FLASH работает в недопустимом диапазоне.

Добавлено: Пн апр 13, 2009 09:47:42
Владимир Вит
Как это можно проверить?

Тактирую проц от кварца 4 МГц

Добавлено: Пн апр 13, 2009 10:36:53
akl
-если генератор ACLK программно не останавливается, логично и контроллер FLASH тактировать от ACLK.
-если останавливается, то при входе в прерывание запускаем генератор ACLK, дожидаемся его стабилизации и только потом работаем с FLASH
-можно установить частоту DCO~4MHz и использовать довольно большой допустимый интервал частоты контроллера FLASH

Добавлено: Вт апр 14, 2009 07:33:45
Владимир Вит
.... что то не так , что то не понятно.

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

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

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

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

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

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

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


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

флеш тактирую от SMCLK без делителей

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

Добавлено: Ср апр 15, 2009 07:21:13
Владимир Вит
Чудеса да и только !!! НЕ РАБОТАЕТ


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

Кто подскажет что здесь не так

Добавлено: Чт апр 16, 2009 07:12:42
Владимир Вит
Разобрался. оказывается неправильно прерывание обрабатывал.