Перейти к содержанию
    

Vovanchik

Участник
  • Постов

    23
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Vovanchik

  • Звание
    Участник
    Участник
  • День рождения 11.09.1981

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Пробовал и сначала включить SCLK а потом выключить генератор, и пробовал просто переход на SCLK без выключения генератора - не запускается основная прога...
  2. MT-Link v6.0

    возможно память защищена для записи, поэтому может помочь полное стирание. у меня так было на J-Link - пока не сотрешь прошить не получится
  3. MT-Link v6.0

    В кратце нужно: 1. выключить питание 2. 40 вывод контроллера TST замкнуть на плюс 3. включить питание 4. чуть подождать 5. отключить питание 6. разомкнуть TST и плюс 7. включить питание возможно перед прошивкой придется полностью стереть память: вывод 55 ERASE нужно кратковременно замкнуть на плюс питания
  4. Попробовал отключить генератор и перевести в 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 не помогло.
  5. Спасибо. Завтра попробую.
  6. Я делал на основе примера от атмела, правда на другой процессор. И там были одинаковые настройки в Startup file для Bottloader'а и основной проги. Если не сложно не могли бы в кратце описать.
  7. Здравствуйте. Использую 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 таймера - после чего происходит нормальный запуск. С чем это может быть связано? Куда копать?
  8. Попробовал предложенный Вами вариант - при последовательном вызове функций наблюдается зависание прибора (проверил несколько раз). При использовании только memcpy_short прибор пока работает...
  9. Согласен. В программе реализован бесконечнй цикл while(). Все необходимые действия выполняются в прерываниях. Причем в прерываниях где вызывается memcpy все остальные прерывания выключаются вначале и включаются по завершении. Поэтому теоретически программа должна работать одинаково с разным временем выполнения функций. Но все равно попробую: но только в понедельник...
  10. Возможно Вы правы - тестирование покажет. Но до исправления микроконтроллер перегружался через 2-3 минуты, а тут 4 часа работы. В режимах где используется memcpy с char массивами, а не short, все работает нормально.
  11. Массивы объявлены глобально: 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 часов запущено устройство в режиме где были глюки - все ОК.
  12. Проблема оказалась в функции memcpy - при копировании массива типа short из 2000 элементов в другой соразмерный массив происходила ошибка. Заменив использование memcpy на цикл for проблема исчезла.
  13. с внешним источником питания постоянно software reset воспроизводится
  14. Здравствуйте. Использую 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 отключен. Защел в тупик... Может у кого есть какие идеи?
  15. Функция в RAM

    Здравствуйте. Возникла необходимость загружать функции в RAM, но не статически, как это делается в примере "RAM Function" (указанием в свойствах проекта), а динамически в ходе выполнения программы (т.е. при выполнении программы мне нужно функцию из ПЗУ записать в ОЗУ и выполнить). Возможно ли это реализовать? Использую AT91SAM7S512, Keil uVision, RV. Спасибо.
×
×
  • Создать...