Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с модулем MAC LPC2368
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Romanello
Беру Keilовский пример делаю инициализацию MAC, когда доходит до MAC_MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX |
MAC1_SIM_RES | MAC1_SOFT_RES;


то уходит на DAbt_Handler, кто может подсказать почему так происходит и что делать?


void Init_EMAC(void)
{
// Keil: function modified to access the EMAC
// Initializes the EMAC ethernet controller
unsigned int regv,tout,id1,id2;

/* Enable P1 Ethernet Pins. */
PINSEL2 = 0x55555555;
PINSEL3 = (PINSEL3 & ~0x0000000F) | 0x00000005;

/* Power Up the EMAC controller. */
PCONP |= 0x40000000;

/* Reset all EMAC internal modules. */
MAC_MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX |
MAC1_SIM_RES | MAC1_SOFT_RES;
MAC_COMMAND = CR_REG_RES | CR_TX_RES | CR_RX_RES;
Andy Mozzhevilov
data abort - следствие обращения к несуществующему адресу.
Пройдите в отладчике непосредственно до иструкции, которая приводит к исключению.
Посмотрите, к какому адресу происходит обращение. Разберитесь, почему он неправильный.
Romanello
Любое обращение к регистрам Ethernet контроллера, чтение или запись вызывает это прерывание.
abcdefg
Цитата(Romanello @ Nov 28 2007, 10:12) *
Любое обращение к регистрам Ethernet контроллера, чтение или запись вызывает это прерывание.


смотрите тогда как эти регистры определены в .h файле
Romanello
Да определены они по документации правильно, более того я беру Keilовский пример работы с Ethernet, и происходит такая хня. Неужели никто не пробовал работать с Ethernetом на Keil.
Vitaliy_ARM
Цитата(Romanello @ Nov 28 2007, 12:49) *
Да определены они по документации правильно, более того я беру Keilовский пример работы с Ethernet, и происходит такая хня. Неужели никто не пробовал работать с Ethernetом на Keil.


Я подключал PHY по RMII. Били 2 проблемы:

Первая вот здесь:

PINSEL2 = 0x50151105; /* selects P1[0,1,4,8,9,10,14,15] */

Позже вышла эррата версии 1,2 и там для разных ревизий в этот регистр нужно писать разные значения.
Причем если перепутать - процессор вылетал в DataAbort или в Prefeth(давно было, точно не помню, в эррате все написано).

Вторая более уникальная.
При выполнении программы из флэшь наблюдался улет в функции инициализации MAC:
EMAC_TxDisable();
EMAC_RxDisable();``//* вот после этого вылетал в неопределенное состояние
Причем при выполнении кода из RAM все было нормально.
Решилась проблема не совсем удачно. Просто закоментировал и все заработало. Потом стоит функция разрешения работы и подпрограмма используется всего один раз при инициализации микроконтроллера, поэтому данная строка не влияет на дальнейшую работу.

Контроллер LPC2468, rev A, код пробовал компилировать в обоих режимах. Компилятор IAR.
Может это вам чем-нибудь поможет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.