-
Постов
23 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о Vovanchik
-
Звание
Участник
- День рождения 11.09.1981
Контакты
-
Сайт
Array
-
ICQ
Array
Информация
-
Город
Array
-
Пробовал и сначала включить SCLK а потом выключить генератор, и пробовал просто переход на SCLK без выключения генератора - не запускается основная прога...
-
возможно память защищена для записи, поэтому может помочь полное стирание. у меня так было на J-Link - пока не сотрешь прошить не получится
-
В кратце нужно: 1. выключить питание 2. 40 вывод контроллера TST замкнуть на плюс 3. включить питание 4. чуть подождать 5. отключить питание 6. разомкнуть TST и плюс 7. включить питание возможно перед прошивкой придется полностью стереть память: вывод 55 ERASE нужно кратковременно замкнуть на плюс питания
-
Попробовал отключить генератор и перевести в slow clock. AT91C_BASE_PMC->PMC_PCDR = 0xFFFFFFFF; //Peripheral Clock Disable AT91C_BASE_CKGR->CKGR_MOR = 0; //The Main Oscillator is disabled AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_CSS_SLOW_CLK; //Slow Clock Основная прога перестала вообще запускаться. Останавливается на иницилизации PLL'ки. Сейчас попробовал убрать инициализацию в основной проге PMC, WDT, EFC, RSCT - пока вроде работает. Почему то отключение только PMC не помогло.
-
Спасибо. Завтра попробую.
-
Я делал на основе примера от атмела, правда на другой процессор. И там были одинаковые настройки в Startup file для Bottloader'а и основной проги. Если не сложно не могли бы в кратце описать.
-
Здравствуйте. Использую AT91SAM7S512. Написал для него Bootloader (во Flash по адресам 0x100000 по 0x101FFF). Основная прога во Flash по адресам 0x102000 по 0x17FFFF. Переход из бута в основную прогу сделан так: ... #define USER_FLASH_START 0x2000; ... void (*user_code_entry)(void); user_code_entry = (void (*)(void))USER_FLASH_START; user_code_entry(); В большинстве случаев все отрабатывает нормально. Но периодически при запуске происходит глюк. Причем в основной программе. Проверял в отладке - прога крутится в файле SAM7.s примерно в этом месте: ; Wait until Main Oscillator is stablilized IF (PMC_MOR_Val:AND:PMC_MOSCEN) != 0 MOSCS_Loop LDR R2, [R0, #PMC_SR] ANDS R2, R2, #PMC_MOSCS BEQ MOSCS_Loop ENDIF Циклическое выполнение происходит до срабатывания WDT таймера - после чего происходит нормальный запуск. С чем это может быть связано? Куда копать?
-
Попробовал предложенный Вами вариант - при последовательном вызове функций наблюдается зависание прибора (проверил несколько раз). При использовании только memcpy_short прибор пока работает...
-
Согласен. В программе реализован бесконечнй цикл while(). Все необходимые действия выполняются в прерываниях. Причем в прерываниях где вызывается memcpy все остальные прерывания выключаются вначале и включаются по завершении. Поэтому теоретически программа должна работать одинаково с разным временем выполнения функций. Но все равно попробую: но только в понедельник...
-
Возможно Вы правы - тестирование покажет. Но до исправления микроконтроллер перегружался через 2-3 минуты, а тут 4 часа работы. В режимах где используется memcpy с char массивами, а не short, все работает нормально.
-
Массивы объявлены глобально: short Per_OSC[2000]; short Per_OSC_Temp[2000]; Сначала было копирование в коде следующего вида: memcpy(Per_OSC_Temp, Per_OSC, sizeof(Per_OSC)); Написал функцию void memcpy_short(short *dest, const short *src, unsigned int len) {unsigned int i; for (i = 0; i < (len / 2); i++) { dest[i] = src[i]; } } Обращаюсь так memcpy_short(Per_OSC_Temp, Per_OSC, sizeof(Per_OSC)); Уже более 4 часов запущено устройство в режиме где были глюки - все ОК.
-
Проблема оказалась в функции memcpy - при копировании массива типа short из 2000 элементов в другой соразмерный массив происходила ошибка. Заменив использование memcpy на цикл for проблема исчезла.
-
с внешним источником питания постоянно software reset воспроизводится
-
Здравствуйте. Использую AT91SAM7S256, Keil uVision, RV. Возникла следующая проблема. Микроконтроллер при выполнении программы сам перезапускается. В начале main обработал флаг резета - получил срабатывание по AT91C_RSTC_RSTTYP_USER. Поcмотрел осциллографом вывод NRST - есть переход на ноль. Стоит внешняя микросхема сброса. Убрал микросхему и вывод NRST через 10 кОм подвязал на + питания. Получил срабатывание по AT91C_RSTC_RSTTYP_POWERUP. Получается вроде как проблемы с питанием. Запитал процессор от внешнего источника питания - получил срабатывание по AT91C_RSTC_RSTTYP_SOFTWARE - хотя его вызова ни где в коде вообще нет. Также обрабатываю Undef_Handler, PAbt_Handler и DAbt_Handler - ни разу не возникали. WDT отключен. Защел в тупик... Может у кого есть какие идеи?
-
Здравствуйте. Возникла необходимость загружать функции в RAM, но не статически, как это делается в примере "RAM Function" (указанием в свойствах проекта), а динамически в ходе выполнения программы (т.е. при выполнении программы мне нужно функцию из ПЗУ записать в ОЗУ и выполнить). Возможно ли это реализовать? Использую AT91SAM7S512, Keil uVision, RV. Спасибо.