Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблемы с AT91SAM7A3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
shrek
В общем есть три разных платы... Обвязку для контроллера на всех платах развели одинаково! все три платы распаяли 2 работают, а на третьей контроллер через J-Link просматривается но вот чтобы стереть флэш записать, прочитать или тест какой провести так выскакивает ошибка мол ошибка записи по адресу такому то такому... более конкректно могу завтра описать если вылезет ошибка... перепаяли на одной плате 2 чипа грешили на проблемы во время пайки... спаяли другую такую же плату... все тоже так же арм перепаяли те же симптомы... проверил питание на всех ногах где 3,3 вольта должно быть оно есть! где 1,8 вольта должно быть оно там есть! где GND там есть GND... питание проверил... Оставил контроллер без связи с внешним миром одно голое питание... все теже симптомы! дальше лучше... отпаял всю обьвязку контроллера и кварц... один контроллер с питанием и интерфейсом под сам-айс... после неслкольких операций чтения записи стирания секторов флеш контроллер начал оживляться но все равно ошибки выскакивают... подпаял обвязку... дела стали лучше... читается стирается, но не прошивается... (обвязка на всех трех платах для контроллера разведена одинаково!) подпаял кварц... погонял часок с "тестами" вроде как оживился ошибки стали реже появляться пробовал что то отладить в иаре... во время отладки выскочила ошибка "unable to halt CPU"... запустил тестовую прогу с SPI осцильником посмотрел работает... Вот собственно такая проблема завтра попробую прошить, запустить и посмотреть как он будет себя вести в течении часа... остальные две платы одна работает на дисплей все нормально работает сужу по тому как дисплей работает четко и без сбоев! вторая двигателями управляет крутит и один шаговый и второй Д-25Г!
shrek
еще один симптом... В отладке когда отпускаешь контроллер в свободное плавание под управлением SAM-ICE он уходит на сброс...
Пробовал прошить все работает smile.gif
VSt&
Таких багов с SAM7A3 не видел, но сталкивался с необъяснимыми на первый взгляд случайными зависаниями контроллера - мог отработать сутки, а мог зависнуть через две секунды. Эмпирическим путем выяснил, что уходит в Data Abort. Проблема была в flash waitstate, который надо было увеличить в cstartup, несмотря на "single cycle access up to 30 MHz" и на мои 25 МГц.
Код
void AT91F_LowLevelInit(void)
{
    int i;
    
    [b]AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS;[/b]
    AT91C_BASE_WDTC->WDTC_WDMR= AT91C_WDTC_WDDIS;

    // 1 Enabling the Main Oscillator:
    AT91C_BASE_PMC->PMC_MOR = ((AT91C_CKGR_OSCOUNT & (0x40 <<8) | AT91C_CKGR_MOSCEN));
    while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));
    
    // 2 Configuring the PLL
    AT91C_BASE_PMC->PMC_PLLR = ((AT91C_CKGR_DIV & PLL_DIV ) |
                                (AT91C_CKGR_PLLCOUNT & (28<<8)) |
                                (AT91C_CKGR_MUL & ((PLL_MUL-1)<<16)));
    while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK));
    while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
    
    // 3 Selection of Master Clock and Processor Clock
    AT91C_BASE_PMC->PMC_MCKR =  AT91C_PMC_PRES_CLK_2;
    while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
    
    AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK;
    while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY));
    
    // 4 configuring reset controller, enable external reset
    AT91C_BASE_RSTC->RSTC_RMR = (0xA5000000 | AT91C_RSTC_URSTEN | (0x0C << 8) /* ERSTL */);

    // 5 Set up the default interrupts handler vectors
    for (i=0; i<31; i++)
    {
        AT91C_BASE_AIC->AIC_SMR[i] = 0;
        AT91C_BASE_AIC->AIC_SVR[i] = 0;
    }
    AT91C_BASE_AIC->AIC_SPU = (uint32_t) AT91F_Spurious_Handler;
    
    // 6 Send acknowledge for all possible pending interrupts (8-level priority stack)
    for (i=0; i<8; i++) AT91C_BASE_AIC->AIC_EOICR = 0;
    
}
shrek
Зашил простенькую тест прошивку в SPI через PDC посылает 4 байта 32 разрядного числа по прерыванию от PIT после каждой посылки инкремент этого числа на 1...
пока за 2 часа в ребут ниразу не ушел и не завис smile.gif
смотрю осцыльником что посылает)
aaarrr
Судя по картине, наблюдаются не "сбои в работе", а "сбои при работе с JTAG".
shrek
с другими 2мя платами JTAG работает нормально, но в этих двух платах разьем JTAGа поближе к контроллеру.
еще иногда выскакивает ошибка при попытке стереть флэш что напряжение ниже 0,7 вольт... потом ошибка что напряжение выше 59 вольт... smile3046.gif
отрубаю питание потом через секунд 10 - 20 включаю все как ни в чем не бывало работает...
VSt&
В качестве дополнительной меры попробуйте уменьшить скорость JTAG в IAR'е и задать ее явно ("Fixed") на уровне <= 100 кГц.

Вдогонку, какой отладчик используете? Segger J-Link субъективно работает стабильнее MT-Link.
shrek
использую Segger J-Link ставил меньше 100кГц проблемы теже... были...
тест прошивка работает пока без сбоев уже часа 3...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.