реклама на сайте
подробности

 
 
> AT91SAM7S64 в ресете и не выходит из него, Причём так на 6 платах, а год всё работало нормально
Pasha 111
сообщение Feb 27 2009, 20:59
Сообщение #1


Частый гость
**

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



Все привет! Делал больше года назад 6 плат для стендов в университете. На платах стоит по одному AT91SAM7S64. Там же разъём USB, подключение блока питания (питание и от USB и от БП: стоит диод для USB и диод на БП, выходы диодов объединяются и идут на линейник 3.3В с кондёрами), светодиоды, кнопочки и т.д. Вообщем типичная отладочная плата + клеммники + драйверы двигателей постоянного тока (A3949).

Целый год всё работало. А потом в течение трёх недель по очереди начали глючить все платы.

Симптомы: при включении (через БП или USB) загораются некоторые лампочки (теже, что и при ресете). При запуске консоля jlinka последний сообщает ID арма, т.е. находит его. При попытке прошить из ИАРа выскакивает сообщение:
Код
Fri Feb 27 23:50:06 2009: Loaded macro file: D:\Programs\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\config\flashloader\Atmel\FlashAT91SAM7Sx.mac
Fri Feb 27 23:50:06 2009: DLL version: V3.92
Fri Feb 27 23:50:06 2009: Firmware: J-Link compiled Jul 30 2008 11:24:37 ARM Rev.5
Fri Feb 27 23:50:06 2009: JTAG speed is initially set to: 32 kHz
Fri Feb 27 23:50:06 2009: TotalIRLen = 4, IRPrint = 0x01
Fri Feb 27 23:50:06 2009: Halting CPU core
Fri Feb 27 23:50:06 2009: Using DBGRQ to halt CPU
Fri Feb 27 23:50:06 2009: Resetting TRST in order to halt CPU
Fri Feb 27 23:50:06 2009: Halting CPU core
Fri Feb 27 23:50:06 2009: Using DBGRQ to halt CPU
Fri Feb 27 23:50:06 2009: Resetting TRST in order to halt CPU
Fri Feb 27 23:50:08 2009: Fatal error: Unable to halt ARM core

Session aborted!
Fri Feb 27 23:50:09 2009: Failed to load flash loader: D:\Programs\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\config\flashloader\Atmel\FlashAT91SAM7Sx.out


Что может быть? Неужели процы погорели? crying.gif
Вся схемотехника стандартная, везде всё залито полигоном. Студенты приличные, никто никуда ничего вроде не тыкал. Скоро лабы начнутся, надо что-то делать! help.gif

Да, забыл сказать, когда горели платы их подключали только по USB, т.е. никаких БП и двигателей не погключали (драйверы A3949 питаются от БП до диода на линейник).

Ещё забыл сказать: все напряжения (+3.3В, +1.8В) в полном порядке (+/- 0.1В)

На ножке резета высокий уровень
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 38)
KAlex
сообщение Feb 28 2009, 09:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719



Железный erase(55 нога на плюс при включении питания), а потом прошить, пробовали?
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Feb 28 2009, 10:59
Сообщение #3


Частый гость
**

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



Пробовал - никакой реакции на +3.3В на erase. Как при замыкании на включёном девайсе так и при замыкании до включения и последующем включении sad.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 28 2009, 11:27
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



А скорость нарастания питания в порядке?
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Feb 28 2009, 13:04
Сообщение #5


Частый гость
**

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



aaarrr
Не могу проверить - осциллографа нет sad.gif Напряжение берётся или от USB или от БП - всё одно и тоже. Конденсаторы все той ёмкости, что атмеловцы рекомендуют.

KAlex
Получилось! Видимо прошлый раз плохо проводком замкнул ножку erase на +3.3В. Теперь проц прошивается один раз, а потом таже хрень и невозможность повторно прошить без eras'а.

Решил сразу прошить и запустить в отладчике по Ctrl+D.
Проц успешно дошёл до функции main(), далее нормально выполнился код по инициализации кварца и PLL'а. После выполнения строчки
Код
    // Enable User Reset and set its minimal assertion to 960 us
    AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5 << 24);

вывалилась ошибка

Если нажать "Пропустить" то вываливается ошибка "faild to read next instruction" и так до упора пока "Отмена" не нажал. Что может быть??

Я закомментировал эту строчку инициализации reset'а и прошил ещё раз. Всё заработало, только теперь, естественно, нет реакции при нажатии на reset. Работают USB, PWM, PIO, ADC!

На плате есть 4 кнопочки. Так вот одна всегда как бы нажата (0 вольт). Посмотрел, а ножка PA25, на которой кнопка висит, прозванивается с землёй sad.gif Щас посмотрю что ещё на землю упало.

Что это, как вы думаете? (Может ПП с течением времени испортилась и начала коротить с полигоном?)

UPD. Прозвонил все ножки на АРМе: кроме тех, что GND, на землю замыкается только PA25. Не знаю, чей это глюк (кнопки, проца или печатной платы), ибо другие платы домой не взял - не могу проверить. Во всяком случае на плате уже можно провести лабы, что уже хорошо. Хорошо бы с остальными платами так же было....
Но разобраться, что произошло, всё равно хочется. Ни у кого никаких идей нет?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 28 2009, 13:13
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Pasha 111 @ Feb 28 2009, 16:04) *
Но разобраться, что произошло, всё равно хочется. Ни у кого никаких идей нет?

Я бы расставил вероятности так (в порядке убывания):
1. Убит вывод процессора
2. Сломалась кнопка
3. Глюк платы (почти невероятно)
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Feb 28 2009, 13:28
Сообщение #7


Частый гость
**

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



Я тоже так подумал, правда не ясно, как мог убиться вывод, который кнопкой на GND просто замыкался и был настроен в вход...
Кстати, на ножке резета 2.6В. На совсем другой (но работающей) плате, где тоже SAM7S64 стоит, на резете тоже 2.6В, видимо, это нормально. Сгорел контроллер сброса в проце? о_О
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 28 2009, 13:30
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Pasha 111 @ Feb 28 2009, 16:28) *
на резете тоже 2.6В, видимо, это нормально. Сгорел контроллер сброса в проце? о_О

Нет, это не нормально.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Feb 28 2009, 14:18
Сообщение #9


Частый гость
**

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



Хм... Посмотрел: на всех платах, где специально pull-up резистор на +3.3В не стоит, на резете 2.6-2.8В стоит и всё работает.
Попробовал заменить строчку так:
AT91C_BASE_RSTC->RSTC_RMR = 0 | (unsigned int)(0xA5 << 24);
Т.е. я запретил сброс. Теперь после выполнения строчки ошибка не возникает. Т.е. проблема была не с записью в регистр, а с тем, что проц сразу же после её выполнения ресетился. Но на ножку резета я специально зацепил +3.3В. Что может глючить?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 28 2009, 14:31
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Pasha 111 @ Feb 28 2009, 17:18) *
Хм... Посмотрел: на всех платах, где специально pull-up резистор на +3.3В не стоит, на резете 2.6-2.8В стоит и всё работает.

Ошибся я малость - глюк с pull-up'ом описан в еррате.

Цитата(Pasha 111 @ Feb 28 2009, 17:18) *
Т.е. проблема была не с записью в регистр, а с тем, что проц сразу же после её выполнения ресетился. Но на ножку резета я специально зацепил +3.3В. Что может глючить?

Надеюсь, не напрямую?

Прежде чем включать сброс от пина, нужно дождаться окончания генерации сброса наружу, т.е. NRSTL в RSTC_SR должен стоять в '1'.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Feb 28 2009, 21:10
Сообщение #11


Частый гость
**

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



Изменил код так:
Код
while(!(AT91C_BASE_RSTC->RSTC_RSR & AT91C_RSTC_NRSTL)) {};
AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5 << 24);

Программа при выполнении зависает в цикле и не выходит. Т.е. тогда процессор не был в ресете, а просто ресетился с огромной скоростью, т.к. программа всегда доходила до записи в mode register и происходил сброс.
Так, собственно, почему процессор стал себя так вести и почему весь год было всё нормально? Как исправить?

Привожу кусок кода. Сначала выполняется стандартный код от атмела (асм и сишник с lowlevelinit). Потом

Код
int main()
{
    Init();

    ............
}

void Init()
{
    SetClock(1, 6); // <--- для кварца 16.000 MHz
    //SetClock(5, 26); // <--- для кварца 18.432 MHz

    uint32 RSR = 0;
    while(!(RSR & AT91C_RSTC_NRSTL))
    {
        RSR = AT91C_BASE_RSTC->RSTC_RSR;
    }
    AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5 << 24);

    ...............
}

void SetClock(uint8 div, uint8 mul)
{
    AT91PS_PMC pPMC = AT91C_BASE_PMC;
    // Set MCK at 48 000 000
    pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & div) |
                     (AT91C_CKGR_PLLCOUNT & (28<<8)) |
                     (AT91C_CKGR_MUL & ((mul - 1)<<16)));

    // Wait the startup time
    while(!(pPMC->PMC_SR & AT91C_PMC_LOCK));
    while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));
    // Selection of Master Clock and Processor Clock
    pPMC->PMC_MCKR =  AT91C_PMC_PRES_CLK_2;
    while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));
    // Select the PLL clock divided by 2
    pPMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK ;
    while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));
}


Всё зависает на while(!(RSR & AT91C_RSTC_NRSTL))

Пробовал комментировать вызов SetClock(), чтобы только атмеловская lowlevelinit выставила частоту (пусть и не 48 МГц, т.к. у меня кварц 16 МГц) - не помогло.
Go to the top of the page
 
+Quote Post
Dir
сообщение Mar 1 2009, 12:30
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830



Цитата(Pasha 111 @ Feb 28 2009, 15:28) *
Я тоже так подумал, правда не ясно, как мог убиться вывод, который кнопкой на GND просто замыкался и был настроен в вход...
Кстати, на ножке резета 2.6В. На совсем другой (но работающей) плате, где тоже SAM7S64 стоит, на резете тоже 2.6В, видимо, это нормально. Сгорел контроллер сброса в проце? о_О


Вообще то выходы проца, соединенные с кнопкой, убиваются статикой на ура. Особенно в зимнее время при низких температурах и малой влажности. Чтобы этого не происходило даже специальные тактовые кнопки изобрели: с металлической оправкой пластмассового штифта кнопки и 5 закороченным на землю выводом. Если у вас тактовая кнопка с 4 выводами и вы живете в Сибири, то в январе-феврале такое событие как умирание входа проца у вас почти со 100-процентной вероятностью должно было произойти. Решение очевидное: использовать кнопки с 5 заземляющим электродом + специальная защита входа от статики: последовательный резистор на кнопку, с другой стороны стабилитрон или BAV99 c одним выводом на землю, а вторым на +питания.
Go to the top of the page
 
+Quote Post
KAlex
сообщение Mar 2 2009, 16:28
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719



Настоятельно рекомендую поставить J-Flash. И поиграться с настройками.
rdikeygen, если надо, брошу.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 5 2009, 23:41
Сообщение #14


Частый гость
**

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



Dir
Ну в прошлом году платы успешно пережели январь, февраль, март и т.д. не понятно, почему именно сейчас возникли глюки. А вот диоды, да, я поставить не догадался sad.gif На входах АЦП, мышинально уже, поставил BAT54S (сдвоенный диод в SOT23), а вот на кнопки почему-то нет.

KAlex
Простите, торможу, что такое J-Flash?

Принёс домой остальные платы и купил новый проц. Завтра посмотрю, одинакого ли себя ведут остальные платы, а на одной из них ещё АРМ перепаяю, посмотрю на разницу в работе с новым процом и старыми.
Go to the top of the page
 
+Quote Post
Dir
сообщение Mar 6 2009, 19:30
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830



Цитата(Pasha 111 @ Mar 6 2009, 01:41) *
Dir
Ну в прошлом году платы успешно пережели январь, февраль, март и т.д. не понятно, почему именно сейчас возникли глюки. А вот диоды, да, я поставить не догадался sad.gif На входах АЦП, мышинально уже, поставил BAT54S (сдвоенный диод в SOT23), а вот на кнопки почему-то нет.


Абисняю wink.gif
В прошлом году кнопочки были новенькие, а в этом - уже замусоленные пальцами, заслюнявленные чихами и кашлями. Статический заряд через новенькие кнопочки не хочет сбегать на вход проца по поверхности кнопки, а через замусоленные делает это с удовольствием и чем ниже температура, тем меньше влажность и заряда на студентах накапливается больше. А поскольку кнопки 4-х выводные и через защитный ободок и 5 ножку заряд не стекает на землю, то он делает свое черное дело с входом проца. Тем более, как оказалось, вы его даже резистором и диодами не защитили.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 7 2009, 11:40
Сообщение #16


Частый гость
**

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



Dir
Вы прям так красноречиво всё рассказали, что я теперь даже не сомневаюсь, что причина именно в этом smile.gif

Мучил вчера весь день 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 на первой плате).

В чём может быть дело?? Перепайка проца, как выяснилось, не помогает crying.gif
Вот схема платы, если это поможет
Прикрепленный файл  URC220_Schematic.pdf ( 1.95 мегабайт ) Кол-во скачиваний: 553

Надеялся на худшее, а всё оказалось ещё хуже.

P.S. Когда я впаял новый проц на 2-ю плату и подал питание, у меня также загорелись все лампочки. Т.е. или проц моментально испортился, или что-то не так с платой или элементами на ней.

Смотрел специально питание ножки VDDFLASH и пробрасывал к ней отдельным проводком питание 3.3В - не помогло. Дополнительный электролит 47 мкФ в цепь питания 3.3В тоже не помог.

Вот ещё фото платы
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 7 2009, 11:53
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



А через SAM-BA программировать не пробовали?
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 7 2009, 14:48
Сообщение #18


Частый гость
**

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



aaarrr
Пробовал: замыкаю TST на 3.3В. В это время все лампочки горят, жду 10 секунд. Перезапускаю плату: все лампочки горят, USB устройство не опознано, на COM порту не отвечает. Да и кварц у меня не 18.432, а 16 МГц стоит...

Сейчас решил проверить проблему, связанную с нарастанием уровней: соединил GND двух плат, подал напряжение на одну из них, а потом соединил шины +3.3В. На второй плате опять зажглись все лампочки и при прошивке записались 0xFF...

Я уже даже не могу вообразить, что случилось, что не работает даже новый впаянный проц 01.gif
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Mar 7 2009, 14:55
Сообщение #19


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



А может у Вас кварцы сдохли на морозе и влажности?

По поводу АЦП - опорник?

Хуже всего если это сдохли переходные отверстия. Каких только чудесных глюков только не проявляется в подобных случаях.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 7 2009, 15:36
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 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. Выключить питание, снять перемычку.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 8 2009, 12:24
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 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. Что на плате может так влиять на проц?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 8 2009, 12:29
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 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 на входе.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 8 2009, 12:53
Сообщение #23


Частый гость
**

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



aaarrr
Провёл эксперимент: из 10 включений платы от блока питания было 3 глюка, а после включения от USB - 8 (2 раза включилась нормально). Блок питания - 12В 1А, врят ли его не хватает, чтобы пустить 2 линейника и кондёры (правда если подключать плату от БП, а не от USB, то заряжаются ещё кондёры, которые нужны для двух драйверов двигателя - два кондёра по 100 мкФ танталовые). Кстати, могут кондёры как-то испортиться (значительно уменьшиться ESR, например), из-за чего могут быть глюки с питанием? Все детали для плат покупались разом, т.е. скорее всего из одной партии, так что что-то могло испортиться, но не до конца, и глючит теперь всё.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 8 2009, 13:20
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да Вы осциллографом посмотрите питание 1.8V в момент включения. Если нарастание медленнее 6V/ms, то процессор имеет полное право не запуститься.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 8 2009, 15:31
Сообщение #25


Частый гость
**

Группа: Свой
Сообщений: 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), вот флеш и не прошивается. Или я не туда мыслю? Почему вообще проц в дата аборт вываливается?

Всё, голова уже болит, продолжу завтра... wacko.gif
Go to the top of the page
 
+Quote Post
merk0
сообщение Mar 8 2009, 18:55
Сообщение #26


Участник
*

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



не совсем понятно...вы описываете проблемы с питанием - от источника - 2 раза из 10 зависло, от usb - 8 раз.... и при этом пытаетесь писать во флеш и смотреть - что там получается.
может сначалас питанием как-то разобраться?
12 в - 1 ампер, источник вообщем-то слабосильный. в момент зарядки конлеров платы от может и не дать нужного тока. пиковый ток то у него какой? может у него выходные конденсаторы фильтра(если они вообще есть) померли, и там какая-нить пульсация и слабый пиковый ток.
может поставить промежуточный буферный кондер - ну там 5000 мкф, между источником и устройством? и после него тумблер питания - на плату. Чтобы давал пиковый ток?
наблюдается ли какая- то зависимость между питающим устройством и багами? мождет у вас плат много, все одинаково сбоят, а питающее устойство то одно!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 8 2009, 23:36
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Pasha 111 @ Mar 8 2009, 18:31) *
Или я не туда мыслю? Почему вообще проц в дата аборт вываливается?

Не туда. С питанием надо сначала разобраться, как уже правильно посоветовали выше. Отладчик, кстати, какой? Уж не вигглер ли?
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 9 2009, 02:09
Сообщение #28


кекс
******

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 14 2009, 13:28
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 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 плат crying.gif
Подскажите, что ещё можно сделать? Сам пойду прочту "AT91SAM7S Microcontroller Series Schematic Check List", может там что увижу, что не так у меня...

Да, кварц на трёх платах работает нормально (по USB всё нормально в комп передаётся, например).

Забыл сказать, что пин erase на второй плате, которая не прошивается, я на GND запаял, всё равно не прошивается.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 14 2009, 14:38
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Сглазили их, не иначе smile.gif

ИМХО, такое обилие разных проблем должно навести на мысли о косяках в использованных инструментах (паяльник с фазой на жале) или матералах (флюс, например, медь медленно уничтожает). А платы, похоже, лучше выбросить sad.gif
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 14 2009, 17:42
Сообщение #31


Частый гость
**

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



Ужас!
Сейчас на второй плате, где флеш не прошивалась и где я процессор менял, мерил уровни на ножках, так вот на соседних соединённых ножках 58 и 59 были разные уровни. На 58-й ножке почему-то 1.6 вольта! Я всё ещё раз пропаял как следует и проц прошился (58-я ножка как раз VDDFLASH).

Всё бы ничего, но я паял первый раз глядя через увеличительное стекло и видел, что ножка пропаялась. Ну да фиг с ним, главное, что проц теперь прошился smile.gif
Но USB устройство всё равно не определялось и кварц не работал. Чисто случайно заметил, что когда пальцем касаюсь проца, то все лампочки гаснут и программа запускается. Методом тыка выяснил, что если держа металлическую отвёртку в любом месте коснуться шины +1.8В, то программа в прце запускается! Вообщем пропаял я заного все ножки поцессора, еонденсаторы на +1.8В, PLL фильтра и всё заработало! Плата работает, USB устройство находится, PWM, ADC, PIO - всё работает (проц то новый). Вообщем сейчас пойду на третьей плате попробую заного все ножки пропаять и попробовать прошить ещё раз.
Есть мысль положить вылеченную плату в спирт, чтобы отмыть флюс. Стоит это делать? В качестве флюса использую СКФ - канифоль в спирту.
Теперь полностью работают 2 платы из шести smile.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 14 2009, 17:47
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Pasha 111 @ Mar 14 2009, 20:42) *
Есть мысль положить вылеченную плату в спирт, чтобы отмыть флюс. Стоит это делать? В качестве флюса использую СКФ - канифоль в спирту.
Теперь полностью работают 2 платы из шести smile.gif

Просто положить в спирт - мало что даст, хотя хуже не будет. А по поводу флюса - мне попадалась "канифоль в спирту", которая при легком нагреве растворяла дорожки на плате. Так тоже бывает sad.gif
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 14 2009, 17:54
Сообщение #33


Частый гость
**

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



Цитата
которая при легком нагреве растворяла дорожки на плате

Ну у меня ничего не растворялось вроде smile.gif всегда её использовал. Выглядит как прозрачная жёлтая жижкость. Пахнет спиртом, когда попадает на руку и высыхает, рука делается липкой и пахнет смолой, так что тут, вроде, всё в порядке smile.gif
Наверное надо за студентами внимательнее смотреть, а то они одни самостоятельно всё делают smile.gif
Видимо прийдётся на остальных платах процессоры перепаять.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 14 2009, 17:57
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Pasha 111 @ Mar 14 2009, 20:54) *
Наверное надо за студентами внимательнее смотреть, а то они одни самостоятельно всё делают smile.gif
Видимо прийдётся на остальных платах процессоры перепаять.

Да, студенты - они такие smile.gif Удачи.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 14 2009, 19:48
Сообщение #35


Частый гость
**

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



Спасибо! Отпишусь о результатах, как процы заменю smile.gif
Go to the top of the page
 
+Quote Post
gonkon
сообщение Mar 14 2009, 20:55
Сообщение #36





Группа: Новичок
Сообщений: 1
Регистрация: 14-03-09
Пользователь №: 46 101



Цитата(Pasha 111 @ Mar 14 2009, 22:48) *
Спасибо! Отпишусь о результатах, как процы заменю smile.gif

Павел! Ты герой. Покажу ББ, все зачеты твои.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Mar 15 2009, 08:50
Сообщение #37


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Pasha 111 @ Mar 14 2009, 12:42) *
Есть мысль положить вылеченную плату в спирт, чтобы отмыть флюс. Стоит это делать? В качестве флюса использую СКФ - канифоль в спирту.

Конечно! Уже хотябы потому, что через слой флюса рассмотреть качество пайки весьма проблематично.
Go to the top of the page
 
+Quote Post
Pasha 111
сообщение Mar 20 2009, 14:24
Сообщение #38


Частый гость
**

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



Заменил все процессоры на платах и промыл в спирте. Всё работает как надо! Значит глюки были исключительно в процах. Общее во всех глюках всё-таки прослеживается: не работает или работает с ошибками PMC и ADC. Наверное было перенапряжение (возможно шину 5В случайно ткнули в 3.3В).

Всем спасибо за помощь!
Go to the top of the page
 
+Quote Post
ЛеонидК
сообщение Mar 22 2009, 13:36
Сообщение #39


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 27-01-09
Пользователь №: 44 027



Буду очень благодарен, в пределах разумного, если кто-нибудь вышлет rdikeygen на home_leonid@mail.ru.
Спасибо большое.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01775 секунд с 7
ELECTRONIX ©2004-2016