|
|
  |
AT91SAM7S64 в ресете и не выходит из него, Причём так на 6 платах, а год всё работало нормально |
|
|
|
Mar 7 2009, 11:40
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515

|
DirВы прям так красноречиво всё рассказали, что я теперь даже не сомневаюсь, что причина именно в этом  Мучил вчера весь день 4 платы. Первая, та, которую взял домой изначально, отказывается нормально запускать сброс и зависает в цикле while(!(RSR & AT91C_RSTC_NRSTL)) { RSR = AT91C_BASE_RSTC->RSTC_RSR; } Теперь про остальные три. Сначала все их по очереди подключил к USB: всё тоже самое, загораются все лампочки и всё (Windows пишет, что неизвестное устройство). Подумал, что всё 1 в 1 как и с первой платой, поэтому решил сразу выпаять процессор из 2-й платы и посмотреть, что будет. Выпаял, впаял новый. Открыл проект и прошил (Ctrl+D). Всё "прошилось", т.е. всё выглядело нормально (сначала в озу переписался загрузчик, а потом произошла запись программы во флеш), но проверка не прошла, а во флеше записаны только 0xFFFFFFFF!! Причём в окне дизассемблера они везде и при проверке (сразу после загрузки во флеш, у меня галочка "verify download" стоит), тоже все байты 0xFF! Если выбрать конфигурацию проекта не "Flash Debug", а "RAM Debug" и грузить программу только в ОЗУ, то всё работает (АЦП, USB, PWM и т.д. нет глючащих PIO)! Взял 3-юю плату: всё тоже самое, что и со второй с перепаянным процом! Во флеше 0xFF после прошивки, а если грузить прогу в ОЗУ, то всё работает! С 4-й платой всё тоже самое, но после 4-х или 5-ти попыток (открывая разные проекты, в том числе и стандартный Basic Tools) каким-то невероятным образом программа прошилась-таки! Но у этой платы не работает АЦП у проца о_О Т.е. результат измерения на всех каналах - 0. Дальше начал опять мучить 2 и 3 платы, но безуспешно. Я сначала подумал, что сгорел флеш, но ведь на 2-й плате я перепаял процессор, а 4-я в конце концов прошилась. На всех платах уровни 3.3В и 1.8В в полном порядке, никакие PIO не замыкаются в выключенном состоянии на землю (ну кроме PA25 на первой плате). В чём может быть дело?? Перепайка проца, как выяснилось, не помогает Вот схема платы, если это поможет
URC220_Schematic.pdf ( 1.95 мегабайт )
Кол-во скачиваний: 553Надеялся на худшее, а всё оказалось ещё хуже. P.S. Когда я впаял новый проц на 2-ю плату и подал питание, у меня также загорелись все лампочки. Т.е. или проц моментально испортился, или что-то не так с платой или элементами на ней. Смотрел специально питание ножки VDDFLASH и пробрасывал к ней отдельным проводком питание 3.3В - не помогло. Дополнительный электролит 47 мкФ в цепь питания 3.3В тоже не помог. Вот ещё фото платы
|
|
|
|
|
Mar 7 2009, 14:48
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515

|
aaarrrПробовал: замыкаю TST на 3.3В. В это время все лампочки горят, жду 10 секунд. Перезапускаю плату: все лампочки горят, USB устройство не опознано, на COM порту не отвечает. Да и кварц у меня не 18.432, а 16 МГц стоит... Сейчас решил проверить проблему, связанную с нарастанием уровней: соединил GND двух плат, подал напряжение на одну из них, а потом соединил шины +3.3В. На второй плате опять зажглись все лампочки и при прошивке записались 0xFF... Я уже даже не могу вообразить, что случилось, что не работает даже новый впаянный проц
|
|
|
|
|
Mar 7 2009, 15:36
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Pasha 111 @ Mar 7 2009, 17:48)  На второй плате опять зажглись все лампочки и при прошивке записались 0xFF... Хм, а на ERASE не оказалось случайно высокого уровня? Как раз такая картина наблюдалась бы. Запуск самбы лучше сделать так: 1. Стереть процессор при помощи ERASE, можно на включенном устройстве. 2. На выключенном устройстве замкнуть TST на VCC. 3. Включить питание, подождать 15-20 секунд (10 зачастую недостаточно). 4. Выключить питание, снять перемычку.
|
|
|
|
|
Mar 8 2009, 12:24
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515

|
SpiritDance Кварц попробую проверить на этой неделе, если осциллограф найду, или в магазине новые куплю и перепаяю вместе с пусковыми кондёрами. Опорное напряжение на 1-й ножке VDDREF +3.3В (мерил прям на ноге процессора).
aaarrr Сделал так несколько раз - всё одно и тоже. Горят все лампочки и всё.
Очень странно это. Если программу залить в ОЗУ через JTAG, то лампочки гаснут только тогда, когда я их инициализирую на выход и пишу соответствующие биты в clear register. Т.е. эффект такой, будто все ножки сразу после включения настроены на выход и высокий уровень на выходе.
Ещё одну вещь заметил: четвёртая плата, которая еле-еле пришилась, во-первых, теперь всё время прошивается (хотя до этого я несколько раз и на ней и на 2-й и 3-й плате стирал прошивку через erase), а во-вторых, если её подключать к USB, то она иногда не заводится: загорается несколько лампочек (иногда все) и всё. Вытыкаю USB, заного втыкаю - всё работает, при этом лампочки один раз вспыхивают, т.к. изначально они все загораются, а потом я пишу в clear register. Питание в USB материнская плата выдаёт +4.58В. Далее идёт диод, после него уже +3.82В, а на выходе линейника +2.76, чего не хватает процу и он, видимо из-за этого, не стартует. Но если подождать пару секунд, то программа стартует, а напряжение на USB поднимается до +4.85В (было +4.58В). При подключении блока питания +12В все уровни нормальные (+3.3В) и таких багов вообще никогда нет. Что такое происходит с платами?
Плата, на которой я перепаивал проц, работает тока при записи программы в ОЗУ и все светодиоды горят до тех пор, пока не запишу в clear register. Что на плате может так влиять на проц?
|
|
|
|
|
Mar 8 2009, 12:29
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Pasha 111 @ Mar 8 2009, 15:24)  Очень странно это. Если программу залить в ОЗУ через JTAG, то лампочки гаснут только тогда, когда я их инициализирую на выход и пишу соответствующие биты в clear register. Т.е. эффект такой, будто все ножки сразу после включения настроены на выход и высокий уровень на выходе. После сброса включены pull-up'ы на PIO, а их более чем достаточно для включения светодиодов. Цитата(Pasha 111 @ Mar 8 2009, 15:24)  Что такое происходит с платами? Очень похоже на медленное нарастание питания ядра. Внутреннему источнику нужно минимум 3.0V на входе.
|
|
|
|
|
Mar 8 2009, 12:53
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515

|
aaarrr Провёл эксперимент: из 10 включений платы от блока питания было 3 глюка, а после включения от USB - 8 (2 раза включилась нормально). Блок питания - 12В 1А, врят ли его не хватает, чтобы пустить 2 линейника и кондёры (правда если подключать плату от БП, а не от USB, то заряжаются ещё кондёры, которые нужны для двух драйверов двигателя - два кондёра по 100 мкФ танталовые). Кстати, могут кондёры как-то испортиться (значительно уменьшиться ESR, например), из-за чего могут быть глюки с питанием? Все детали для плат покупались разом, т.е. скорее всего из одной партии, так что что-то могло испортиться, но не до конца, и глючит теперь всё.
|
|
|
|
|
Mar 8 2009, 15:31
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515

|
aaarrrОсциллографом я обязательно тыкать буду, если не разберусь в чём баг, просто я до него в лучшем случае в среду доберусь... Вот, ещё одна странность. На второй плате, где я поменял процессор и где, также как и на 3-й, не прошивается флеш (0xFF) программа работает в ОЗУ только в том случае, если я по F10 прохожу строчку в функции SetClock (см. код выше). Если я ДО строчки Код // Set MCK at 48 000 000 pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & div) | (AT91C_CKGR_PLLCOUNT & (28<<8)) | (AT91C_CKGR_MUL & ((mul - 1)<<16))); нажму F5, программа вываливается в Data Abort. Если я прохожу эту строчку нажатием F10, а дальше нажимаю F5, то программа выполняется нормально. Не знаю с чем это связано, но ведь boot loader, который загружается в ОЗУ и прошивает флеш, скорее всего тоже что-то пишет в AT91C_BASE_PMC->PMC_PLLR. Тогда он неправильно работает (Data abort), вот флеш и не прошивается. Или я не туда мыслю? Почему вообще проц в дата аборт вываливается? Всё, голова уже болит, продолжу завтра...
|
|
|
|
|
Mar 8 2009, 18:55
|
Участник

Группа: Новичок
Сообщений: 47
Регистрация: 5-05-05
Пользователь №: 4 763

|
не совсем понятно...вы описываете проблемы с питанием - от источника - 2 раза из 10 зависло, от usb - 8 раз.... и при этом пытаетесь писать во флеш и смотреть - что там получается. может сначалас питанием как-то разобраться? 12 в - 1 ампер, источник вообщем-то слабосильный. в момент зарядки конлеров платы от может и не дать нужного тока. пиковый ток то у него какой? может у него выходные конденсаторы фильтра(если они вообще есть) померли, и там какая-нить пульсация и слабый пиковый ток. может поставить промежуточный буферный кондер - ну там 5000 мкф, между источником и устройством? и после него тумблер питания - на плату. Чтобы давал пиковый ток? наблюдается ли какая- то зависимость между питающим устройством и багами? мождет у вас плат много, все одинаково сбоят, а питающее устойство то одно!
|
|
|
|
|
Mar 9 2009, 02:09
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Pasha 111 @ Mar 8 2009, 17:31)  нажму F5, программа вываливается в Data Abort. Если я прохожу эту строчку нажатием F10, а дальше нажимаю F5, то программа выполняется нормально. Не знаю с чем это связано, Одно из двух: - проблема с тактовым генератором (для проверки поменяйте кварц и PLL фильт). - источник питания не тянет! (в момент перехода на PLL резко возрастает потребляемый ток). Цитата(Pasha 111 @ Mar 8 2009, 14:24)  Плата, на которой я перепаивал проц, работает тока при записи программы в ОЗУ.... Что на плате может так влиять на проц? 1. тактовый генератор 2. ножка erase.
|
|
|
|
|
Mar 14 2009, 13:28
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515

|
merk0Цитата может сначалас питанием как-то разобраться? 12 в - 1 ампер, источник вообщем-то слабосильный. в момент зарядки конлеров платы от может и не дать нужного тока. пиковый ток то у него какой? может у него выходные конденсаторы фильтра(если они вообще есть) померли, и там какая-нить пульсация и слабый пиковый ток. может поставить промежуточный буферный кондер - ну там 5000 мкф, между источником и устройством? и после него тумблер питания - на плату. Чтобы давал пиковый ток? наблюдается ли какая- то зависимость между питающим устройством и багами? мождет у вас плат много, все одинаково сбоят, а питающее устойство то одно! С питанием и платами разобрался. Я добрался до осциллографа и, во-первых, посмотрел на уровень от БП - пульсаций почти нет (шум миливольтовый идёт). Во-вторых, я сделал как вы предложили: взял конденсатор на 3300 мкф 50 вольт, поставил на шину 3.3В. Включил плату. Соедининил землю с другой платой, а потом тумблером на её шину 3.3В. Разницы нет никакой. Цитата не совсем понятно...вы описываете проблемы с питанием - от источника - 2 раза из 10 зависло, от usb - 8 раз.... и при этом пытаетесь писать во флеш и смотреть - что там получается. И с этим разобрался. Это одна такая плата была - четвёртая - у неё выход стабилизатора 1.8В почемуто 2.2 вольта. Так что тут всё что угодно может быть. У других плат 1.8В, как и должно быть. aaarrrЦитата Отладчик, кстати, какой? Уж не вигглер ли? MT-Link defunctЦитата - проблема с тактовым генератором (для проверки поменяйте кварц и PLL фильт). - источник питания не тянет! (в момент перехода на PLL резко возрастает потребляемый ток). Импульс даёт конденсатор на 3300 мкф. А вот кварц действительно не работает! Смотрел осциллографом на второй плате, которая при прошивке пишет 0xFF и работает прога только в ОЗУ. У неё что-то синусообразное идёт, но это никак не нормальная частота. Синус как бы бежит куда-то, т.е. на экране осциллографа (аналоговый) несколько наложенных друг на друга синусоид разного периода о_О (частоты мегагерцовые). Поменял кварц - всё равно не работает. Принёс домой пятую плату из шести (шестая - рабочая). У неё тоже был циклический сброс как и у первой. Стёр через erase, залил новую прошивку с отключённым user reset'ом и всё заработало. Но у этой платы все каналы АЦП выдают 1023!! Т.е. все платы ведут себя совершенно по-разному и сломались в одно время спустя год. Общее у них (те, что удалось прошить) - не работает user reset (при его влючении на этой строчке кода сразу же происходит сброс и так в цикле). У двух заведённых плат из трёх не работают АЦП (на одной 0, а на другой 1023). Что тут может быть? Я уже всё перепробовал, кажется, что проще спаять заного 5 плат  Подскажите, что ещё можно сделать? Сам пойду прочту "AT91SAM7S Microcontroller Series Schematic Check List", может там что увижу, что не так у меня... Да, кварц на трёх платах работает нормально (по USB всё нормально в комп передаётся, например). Забыл сказать, что пин erase на второй плате, которая не прошивается, я на GND запаял, всё равно не прошивается.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|