Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Что может быть при неправильной конфигурации MAM в LPC ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
savcom
Работаю сейчас с LPC2378. Программа находится в FLASH, частота 73 МГц. С недавних пор программа стала вываливаться на прерывание data_handler (ошибка при чтении данных, когда используется несуществующий адрес). Точку сбоя найти удалось, там стоит обычная команда LDR R1, [PC, #+116]. По этой команде в регистр R1 должно загрузится значение 0x40000ED4 (по этому адресу находится локальная переменная), но загружается 0x20000F0, т.к. по такому адресу никакой памяти нет, то программы вываливается в data_handler. Причем в пошаговом режиме все работает нормально, а в режиме выполнения упорно загружается не то число. Прерывания отключены. Сбой имеет не совсем периодический характер, иногда этот участок кода нормально исполняется. Акселератор памяти был настроен как: MAMCR=0x02 (полный режим), MAMTIM=0x03 (при частоте > 40 МГц). Попробовал разные режимы, точки сбоя меняются на другие, иногда пропадают. Наличие сбоя так-же сильно зависит от самого кода, если например поставить перед сбойной командой команду NOP, то сбой может и прекратиться. Может кто-то сталкивался с подобным и может в этом быть в этом замешан модуль MAM?
Abo
Имею те же проблемы при частоте ядра больше 48 МГц.
На текущий момент использую MAMTIM = 4, MAMCR = 2.
На 48 при этих настройках полет нормальный.
Советую еще сюда заглянуть: http://electronix.ru/forum/index.php?showtopic=30036
etoja
1. Процессор LPC2378 рассчитан на 72MIPS, а не на 73MIPS.
2. Почитайте в Errata
http://www.standardics.nxp.com/support/doc...ata.lpc2378.pdf
ограничения на внутреннюю частоту PLL.
GetSmart
Цитата(etoja @ Apr 16 2007, 11:33) *
1. Процессор LPC2378 рассчитан на 72MIPS, а не на 73MIPS.

smile.gif smile.gif smile.gif
savcom
Скорее всего проблема та-же с PLL что и описана была здесь: http://electronix.ru/forum/index.php?showtopic=30036
Потому что при данных: кварц = 14,7456 МГц, PLL_MVALUE = 19, PLL_NVALUE = 1, CCLKCFG = 4 частота процессора должна быть 73,728 МГц, а реальная померенная по таймеру 58,9824 МГц.
Abo
Цитата(savcom @ Apr 16 2007, 10:47) *
а реальная померенная по таймеру 58,9824 МГц.


А какая еще она должна быть?:
Fcсo = (14,7 / (1+1)) * (19 +1) * 2 = 294
Fclk = 294 / (4+1) = 58,8


А она стабильная, или дрожит около этого значения?
Может зависит от выполняемого кода?
savcom
Цитата(Abo @ Apr 16 2007, 12:58) *
А какая еще она должна быть?:
Fcсo = (14,7 / (1+1)) * (19 +1) * 2 = 294
Fclk = 294 / (4+1) = 58,8


Ну хоть это радует, не все так плохо. Досадная ошибка в расчете.
Насчет измерения частоты, я смотрю сигнал с выхода PWM (что должно быть эквивалентно таймеру). На частотометре возможности подсчитать импульсы возможности нет, но на осциллографе все стабильно. К тому-же у меня еще 2 UARTA используются, так они то же стабильно работают (максимальная ошибка в них по частоте не должна превышать 5%). Поменял режим работы MAM на MAMCR=1, теперь вроде работает стабильно, но надолго ли это пока не знаю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.