Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пропадание прерываний при отладке через J-Link
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Dron_Gus
Собственно тема уже "пережевана" достаточно подробно. Но рабочего метода решения я так и не нашел. Во всяком случае у меня все равно отваливаются. Проц - at91sam7s64. Keil uVision V3.23. Работаю через RDI с MT-Link'ом пятой версии. Драйвера последние. Хотя пробовал и на старых. Отваливаются все прерывания, которые использую - таймеры, USB и Debug.
Dron_Gus
Странно... Неужели никто не наступал на эти грабли...
zltigo
Цитата(Dron_Gus @ Dec 11 2006, 22:07) *
Странно... Неужели никто не наступал на эти грабли...

Вы же видели при поиске, что наступали smile.gif только осмысленного решения не нашлось. При каких условиях у меня пропал "эффект" я писал.
Dron_Gus
Цитата(zltigo @ Dec 11 2006, 23:43) *
Вы же видели при поиске, что наступали smile.gif только осмысленного решения не нашлось. При каких условиях у меня пропал "эффект" я писал.


В том то и дело что все читал. Но уже не найти где именно. Если не сложно в двух словах повторите...
Сергей Борщ
Цитата(Dron_Gus @ Dec 11 2006, 22:47) *
Цитата(zltigo @ Dec 11 2006, 23:43) *

Вы же видели при поиске, что наступали smile.gif только осмысленного решения не нашлось. При каких условиях у меня пропал "эффект" я писал.

В том то и дело что все читал. Но уже не найти где именно. Если не сложно в двух словах повторите...
В той же ветке, на которую дал ссылку zltigo мое понимание ситуации. На данный момент это вылилось в такую добавку к .maс:
Код
execUserReset()
{

    ...............

    Reset_AIC();

    __message "-------------------------------Set PC Reset ----------------------------------";
    __writeMemory32(0x00000000,0xB4,"Register");
}


var i;
Reset_AIC()
{
    // AIC
    __writeMemory32(FFFFFFFF, 0xFFFFF124,"Memory");                 // IDCR, disable ints

    for (i = 0; i < 32; i++) {
        __writeMemory32(0, 0xFFFFF000 +  * 4,"Memory");             // SMR[0..31]
        __writeMemory32(0, 0xFFFFF080 +  * 4,"Memory");             // SVR[0..31]
    }

    for (i = 0; i < 8; i++) {
        __readMemory32(0xFFFFF100,"Memory");                        // IVR,
        __writeMemory32(0, 0xFFFFF130,"Memory");                    // EOICR, reset priority controller logic
    }
}
не скажу, что работает идеально, но существенно помогает. и конечно AT91C_BASE_AIC->AIC_EOICR = 0 в __low_level_init(); после инициализации контроллера (шаманство, но помогает).
zltigo
Цитата(Сергей Борщ @ Dec 12 2006, 11:07) *
не скажу, что работает идеально, но существенно помогает. и конечно AT91C_BASE_AIC->AIC_EOICR = 0 в __low_level_init(); после инициализации контроллера (шаманство, но помогает).

Мне подобные пляски на LPC2xxx не помогли никак, при этом DASM (есто еще одна веточка на форуме "про прерывания" ) утверждал, что у него на AT91 вообще никаких проблем. Вот такие дела sad.gif.
Dron_Gus
Цитата(Сергей Борщ @ Dec 12 2006, 12:07) *
В той же ветке, на которую дал ссылку zltigo мое понимание ситуации. На данный момент это вылилось в такую добавку к .maс:
...

не скажу, что работает идеально, но существенно помогает. и конечно AT91C_BASE_AIC->AIC_EOICR = 0 в __low_level_init(); после инициализации контроллера (шаманство, но помогает).


Заранее дико извиняюсь за лишние вопросы. *.mac файлы - они для IAR'а? Я же работаю в keil'e и мне не найти функцию, которая вызывается при нажатии кнопки Reset в дебагере.



Цитата(zltigo @ Dec 12 2006, 12:27) *
Мне подобные пляски на LPC2xxx не помогли никак, при этом DASM (есто еще одна веточка на форуме "про прерывания" ) утверждал, что у него на AT91 вообще никаких проблем. Вот такие дела sad.gif .


Да, я с ним уже успел поговорить. Он был весьма удивлен моими проблемами. Посоветовал пообщаться с Вами. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.