|
Нужна помощь, сломал голову! (Atmel AT91SAM7х256), после прошивки контроллера, компьютер не видит плату |
|
|
|
Sep 11 2017, 12:21
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-02-15
Пользователь №: 85 030

|
Есть плата обработки внешних сигналов на ATMEL AT91SAM7х256 Плата проверена годами, выпустили сотни штук и никогда не было такой проблемы, как сейчас. Проблема в том, что до прошивки контроллера, плата при подключении к компу по USB определяется в диспетчере устройств.  После прошивки, не определяется, потому что на контакте D+ USB-разъема напряжение слишко мало, 1.7в, а нужно хотя бы 2.4в. До прошивки напряжение присутствует, поэтому и нормально определяется. Требуемое напряжение на D+USB задается ножкой 91 через резистор 1.5к (см. схему). Если резистор отпаять, то на ножке 91 присутствует 3.3в, как и должно быть. Если припаять резистор обратно, то напряжение падает на ножке 91 до 2.3в, а на D+USB до 2.2в и это при отключенном кабеле USB, т.е. без нагрузки. Если подключить компьютер (через кабель USB), то на D+USB падает до 1.7в и соответственно плата не видна в диспетчере устройств. Если обнулить прошивку (3.3в на ножку 92), все восстанавливается, плата определяется. Все элементы заменял, проверял, прозванивал, ошибки нет. Запаял 4 такие платы, у всех одни и те же симптомы. При этом старая рабочая плата прекрасно работает, у нее напряжение на на D+USB 3.3в без подключения кабеля и 2.4в при подключении. Получается, что после прошивки падает входное сопротивление на ножке 94 и просаживается напряжение на ножке 91. Но как такое может быть в зависимости от наличия прошивки? Прошивки не менялись лет 5, сотни раз использовались, и их много, какую не залей, тот же эффект. Питание контроллера не просаживается, стабильно 3.3в Единственная пока идея: может контроллеры бракованные??? Но мне кажется это маловероятно. Кто-нибудь сталкивался с подобным? Прошу помощи, проект горит, заказчик топает, а мы подвисли. 
|
|
|
|
|
 |
Ответов
(45 - 59)
|
Sep 14 2017, 11:54
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-02-15
Пользователь №: 85 030

|
Цитата(0men @ Sep 14 2017, 14:34)  ээээ.. зачем там цикл while(1) то?? у вас там нужка РА7 дергается в 0-1 постоянно.
короче, нужно понять, переводится ножка РА7 на выход или нет. Напишите в самом начала мейна следующее:
AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PIOA); AT91C_BASE_PIOA->PIO_PER = AT91C_PIO_PA7; AT91C_BASE_PIOA->PIO_OER = AT91C_PIO_PA7; AT91C_BASE_PIOA->PIO_SODR = AT91C_PIO_PA7; for(;;);
И измерьте напряжение на самой ножке РА7 и на D+ Сделал. Ничего не изменилось: РА7 - 2.3в, D+ - 2.2в при отключенном кабеле USB. После подключения кабеля, на D+ падает до 1.7в и плата не определяется. Посмотрите код, так надо было?
|
|
|
|
|
Sep 14 2017, 12:12
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 14 2017, 14:54)  Сделал. Ничего не изменилось: РА7 - 2.3в, D+ - 2.2в при отключенном кабеле USB. После подключения кабеля, на D+ падает до 1.7в и плата не определяется. Посмотрите код, так надо было? да, код правильный, но результат полная ерунда.. Ножка не переводится на выход, что абсолютно непонятно. А сделайте плис тоже самое на рабочей плате кстати, все таки важно, какой чип указан: 256 или 512. В функции LowLevelInit #if defined(at91sam7x512) AT91C_BASE_EFC0->EFC_FMR = AT91C_MC_FWS_1FWS; AT91C_BASE_EFC1->EFC_FMR = AT91C_MC_FWS_1FWS; #elif defined(at91sam7x128) || defined(at91sam7x256) AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS;
|
|
|
|
|
Sep 14 2017, 12:12
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-02-15
Пользователь №: 85 030

|
Цитата(0men @ Sep 14 2017, 14:59)  да, код правильный, но результат полная ерунда.. Ножка не переводится на выход, что абсолютно непонятно. А сделайте плис тоже самое на рабочей плате Сделал. Держит напряжение нормально, 3.3в на D+ при отключенном USB и 2.9 при подключенном. Определяется как неизвестное устройство, но это понятно, из-за изменения в коде.
|
|
|
|
|
Sep 14 2017, 12:20
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 14 2017, 15:12)  Сделал. Держит напряжение нормально, 3.3в на D+ при отключенном USB и 2.9 при подключенном. Определяется как неизвестное устройство, но это понятно, из-за изменения в коде. у AT91C_BASE_EFC0 AT91C_BASE_EFC1 AT91C_BASE_MC абсолютно разные базовые адреса. Выбирая 512 в яре и прошивая прошивку в 256 вы не правильно инициализируете работу флэш памяти
|
|
|
|
|
Sep 14 2017, 12:25
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-02-15
Пользователь №: 85 030

|
Цитата(0men @ Sep 14 2017, 15:20)  у AT91C_BASE_EFC0 AT91C_BASE_EFC1 AT91C_BASE_MC
абсолютно разные базовые адреса. Выбирая 512 в яре и прошивая прошивку в 256 вы не правильно инициализируете работу флэш памяти Мы паяли разные: 128, 256, 512 и всегда они работали и одной и той же прошивкой. Вроде разработчик что-то предусмотрел в коде, чтобы можно было ставить любые модификации. Сейчас и рабочие и нерабочие платы с вариантом 256, но вот старые работают, а новые нет.
|
|
|
|
|
Sep 14 2017, 12:42
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 14 2017, 15:25)  Мы паяли разные: 128, 256, 512 и всегда они работали и одной и той же прошивкой. Вроде разработчик что-то предусмотрел в коде, чтобы можно было ставить любые модификации. Сейчас и рабочие и нерабочие платы с вариантом 256, но вот старые работают, а новые нет. не упрямьтесь, а попробуйте )) В последних ревизиях атмел очень серьезно ухудшил характеристики флеш памяти, этот код отвечает за время доступа к ней. Ваш разработчик ничего не предусмотрел в этом плане
Сообщение отредактировал 0men - Sep 14 2017, 12:42
|
|
|
|
|
Sep 14 2017, 13:47
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-02-15
Пользователь №: 85 030

|
Цитата(0men @ Sep 14 2017, 15:42)  не упрямьтесь, а попробуйте )) В последних ревизиях атмел очень серьезно ухудшил характеристики флеш памяти, этот код отвечает за время доступа к ней. Ваш разработчик ничего не предусмотрел в этом плане Да я готов попробовать, подскажите, что именно нужно сделать? что-то не могу найти подходящие настройки в IAR
|
|
|
|
|
Sep 14 2017, 14:05
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 14 2017, 16:47)  Да я готов попробовать, подскажите, что именно нужно сделать? что-то не могу найти подходящие настройки в IAR мышкой ткнитесь в EIM-v3-Debug потом - Project->Options-General options-Device и там меняете Atmel AT91SAM7X512 на Atmel AT91SAM7X256 потом все перекомпилируйте И еще нужно исправить в настройках линкера: Project->Options-Linker-Config-Linker configuration file изменить на 256 и еще )) Project->Options-С/С++ Compiler->Preprocessor изменить AT91SAM7X512 на Atmel AT91SAM7X256
Сообщение отредактировал 0men - Sep 14 2017, 14:08
|
|
|
|
|
Sep 14 2017, 14:09
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-02-15
Пользователь №: 85 030

|
Цитата(0men @ Sep 14 2017, 17:05)  мышкой ткнитесь в EIM-v3-Debug
потом - Project->Options-General options-Device
и там меняете Atmel AT91SAM7X512 на Atmel AT91SAM7X256
потом все перекомпилируйте
И еще нужно исправить в настройках линкера:
Project->Options-Linker-Config-Linker configuration file
изменить на 256
и еще ))
Project->Options-С/С++ Compiler->Preprocessor
изменить AT91SAM7X512 на Atmel AT91SAM7X256 Сделал. Все тоже самое. Но это дефолтная прошивка. Если нужно внести изменения в код, которые вы рекомендовали, то какие именно?
|
|
|
|
|
Sep 14 2017, 14:10
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 14 2017, 17:09)  Сделал. Все тоже самое. Но это дефолтная прошивка. Если нужно внести изменения в код, которые вы рекомендовали, то какие именно? во всех 3х местах изменили на AT91SAM7X256? вот это в начале мейна вставьте и проверьте напряжение на D+ AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PIOA); AT91C_BASE_PIOA->PIO_PER = AT91C_PIO_PA7; AT91C_BASE_PIOA->PIO_OER = AT91C_PIO_PA7; AT91C_BASE_PIOA->PIO_SODR = AT91C_PIO_PA7; for(;;);
Сообщение отредактировал 0men - Sep 14 2017, 14:11
|
|
|
|
|
Sep 14 2017, 14:29
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-02-15
Пользователь №: 85 030

|
Цитата(0men @ Sep 14 2017, 17:10)  во всех 3х местах изменили на AT91SAM7X256?
вот это в начале мейна вставьте и проверьте напряжение на D+
AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PIOA); AT91C_BASE_PIOA->PIO_PER = AT91C_PIO_PA7; AT91C_BASE_PIOA->PIO_OER = AT91C_PIO_PA7; AT91C_BASE_PIOA->PIO_SODR = AT91C_PIO_PA7; for(;;); Все сделал как написали, в 3-х местах и код. Тоже самое ( В любом случае огромное спасибо за время и терпение, если получится, то с меня прочитается  Надеюсь на ваш опыт. Если вы в Москве, то я могу подвести все рабочую и нерабочую платы, исходники у вас есть.
|
|
|
|
|
Sep 14 2017, 14:35
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 14 2017, 17:29)  Все сделал как написали, в 3-х местах и код. Тоже самое ( В любом случае огромное спасибо за время и терпение, если получится, то с меня прочитается  Надеюсь на ваш опыт. Если вы в Москве, то я могу подвести все рабочую и нерабочую платы, исходники у вас есть. я Питере  пока идеи иссякли (( А процессор вообще работает? Другие ноги управляются?
|
|
|
|
|
Sep 14 2017, 14:39
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-02-15
Пользователь №: 85 030

|
Цитата(0men @ Sep 14 2017, 17:35)  я Питере  пока идеи иссякли (( А процессор вообще работает? Другие ноги управляются? Могу отправить DHL ) Если это вообще удобно для вас. А как понять управляются ли другие ноги? Мы результаты работы платы можем видеть только в программе на PC, а USB не работает.
|
|
|
|
|
Sep 14 2017, 14:46
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 14 2017, 17:39)  Могу отправить DHL ) Если это вообще удобно для вас. А как понять управляются ли другие ноги? Мы результаты работы платы можем видеть только в программе на PC, а USB не работает. Давайте так, если до понедельника ничего не решится, то я вам напишу, куда отправить  У вас в программе есть управление светодиодами, на плате они есть? Моргают?
Сообщение отредактировал 0men - Sep 14 2017, 14:46
|
|
|
|
|
Sep 14 2017, 14:52
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-02-15
Пользователь №: 85 030

|
Цитата(0men @ Sep 14 2017, 17:46)  Давайте так, если до понедельника ничего не решится, то я вам напишу, куда отправить  У вас в программе есть управление светодиодами, на плате они есть? Моргают? Ок! Раньше были светодиоды, но как только опытные образцы заработали стабильно от них отказались.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|