|
Нужна помощь, сломал голову! (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в Единственная пока идея: может контроллеры бракованные??? Но мне кажется это маловероятно. Кто-нибудь сталкивался с подобным? Прошу помощи, проект горит, заказчик топает, а мы подвисли. 
|
|
|
|
|
 |
Ответов
(1 - 66)
|
Sep 11 2017, 13:27
|
Участник

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

|
Цитата(richie @ Sep 11 2017, 16:25)  1) А паршивка за это время не протухла, в смысле, не менялась?
2) Ревизия чипа отличается от остальных? Прошивка не менялась. Ревизия отличается.
|
|
|
|
|
Sep 11 2017, 13:37
|
Участник

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

|
Цитата(Сергей Борщ @ Sep 11 2017, 16:12)  Чудес не бывает. Кто-то из ваших программистов дрогнувшей рукой перевел ножку 91 на ввод и вы там наблюдаете напряжение встроенной подтяжки (она включена по умолчанию). Можете убедиться в этом, подгрузив на землю резистором с известным сопротивлением. Ток встроенной подтяжки по документации - 300мкА плюс-минус лапоть. Возможно, в предыдущих партиях контроллеров он был "плюс лапоть" и его хватало. Черт, похоже Вы правы! В другом форуме человек такое же сделал предположение. Однако мы не можем быстро разобраться с прошивкой, сейчас такого специалиста в штате нет. Можете посоветовать, что тут можно предпринять?
|
|
|
|
|
Sep 11 2017, 14:12
|
Участник

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

|
Цитата(richie @ Sep 11 2017, 16:35)  Если прошивка точно не менялась, тогда курить ревизию из даташита. Если не поможет, искать непропай, бракованную деталь.
P.S. А как вы платы перепрошиваете если это понадобится? Прошивка точно не менялась, а если даже дело в ревизии, то мы не можем быстро изменить прошивку. Тут все уже перепробовали, 4 платы с одним и тем же дефектом, явно дело в не случайном непропае или детали. Программатором JTAG. Цитата(Сергей Борщ @ Sep 11 2017, 16:46)  Повесьте резистор 1.5 кОм не на 91 ногу, а сразу на питание. Ваше устройство не сможет по собственной инициативе (без выдергивания USB-шнурка) переподключаться к компу, на остальном вроде не должно сказаться. Повесил. Теперь и прошитый и непрошитый контроллер определяются как "неизвестное устройство" в диспетчере задач. Вернул все обратно, непрошитый определяется как на моем скрине вначале темы.
|
|
|
|
|
Sep 11 2017, 14:20
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 11 2017, 17:12)  Повесил. Теперь и прошитый и непрошитый контроллер определяются как "неизвестное устройство" в диспетчере задач. Вернул все обратно, непрошитый определяется как на моем скрине вначале темы. А если поиграться номиналом 1.5К? То есть уменьшить его (сохранив ваши схему - подтяжка к 91 ноге )
Сообщение отредактировал 0men - Sep 11 2017, 14:21
|
|
|
|
|
Sep 11 2017, 14:26
|
Участник

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

|
Цитата(0men @ Sep 11 2017, 17:20)  А если поиграться номиналом 1.5К? То есть уменьшить его (сохранив ваши схему - подтяжка к 91 ноге ) Сейчас попробую. А вы понимаете как там устроены процессы? Я не пойму, почему непрошитый контроллер, когда подаешь Vcc напрямую на D+ определяется как "неизв.устройство", а убираешь и все в порядке. Постоянная составляющая напряжения на D+ становится выше нормы? Померил - 3.3в, когда напрямую от питания и 2.4, когда, когда убираешь.
|
|
|
|
|
Sep 11 2017, 14:29
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 11 2017, 17:26)  Сейчас попробую. А вы понимаете как там устроены процессы? Я не пойму, почему непрошитый контроллер, когда подаешь Vcc напрямую на D+ определяется как "неизв.устройство", а убираешь и все в порядке. Постоянная составляющая напряжения на D+ становится выше нормы? Померил - 3.3в, когда напрямую от питания и 2.4, когда, когда убираешь. Понимаю, так делать нельзя. Хост, по уровням на D+, D- определяет скорость подключенного устройства. А вообще, мне не очень понятна цель 91 ноги. Она используется для ре-енумерации устройства чтоли?
Сообщение отредактировал 0men - Sep 11 2017, 14:32
|
|
|
|
|
Sep 11 2017, 14:34
|
Участник

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

|
Цитата(0men @ Sep 11 2017, 17:29)  Понимаю, так делать нельзя. Хост, по уровням на D+, D- определяет скорость подключенного устройства. А вообще, мне не очень понятна цель 91 ноги. Она используется для ре-енумерации устройства чтоли? Ну так я переменником подгоню нужный уровень напряжения 2.4в и наверное должно заработать. 5 минут
|
|
|
|
|
Sep 11 2017, 14:37
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 11 2017, 17:34)  Ну так я переменником подгоню нужный уровень напряжения 2.4в и наверное должно заработать. 5 минут правильный уровень 2.8 В. Вот, посмотрите для быстрого понимания http://usb.fober.net/teoriya/Fizicheskij-interfejs/ПС, судя по вашей схеме, ножка 91 должна в программе быть определена на выход . Она сейчас у вас на вход с верхней подтяжкой (килоом в 50). Думаю, если она (91 нога) используется в программе и далее (для ре-енумерации), то проблема с подбором 1.5К до конца не решится.
Сообщение отредактировал 0men - Sep 11 2017, 14:51
|
|
|
|
|
Sep 11 2017, 15:00
|

Частый гость
 
Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460

|
Цитата(alex7577 @ Sep 11 2017, 17:12)  Повесил. Теперь и прошитый и непрошитый контроллер определяются как "неизвестное устройство" в диспетчере задач. Вернул все обратно, непрошитый определяется как на моем скрине вначале темы. Значит, не туда затянули, либо фронт долгий вышел. Предлагаю подключить USB, вернуть подтяжку на VUSB и ребутить устройство через сигнал RESET(не отключая от USB). Не прошитый девайс должен определятся! Затем проверить прошитый девайс. Также из поста не совсем понятно, запускается ли в целом прошивка, то-есть проблема только с USB? Остальной функционал исправен?
|
|
|
|
|
Sep 11 2017, 15:05
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(Integro @ Sep 11 2017, 18:00)  Значит, не туда затянули, либо фронт долгий вышел. Предлагаю подключить USB, вернуть подтяжку на VUSB и ребутить устройство через сигнал RESET(не отключая от USB). Не прошитый девайс должен определятся! Затем проверить прошитый девайс.
Также из поста не совсем понятно, запускается ли в целом прошивка, то-есть проблема только с USB? Остальной функционал исправен? Затянули то туда, но неправильно )) "когда подаешь Vcc напрямую на D+ определяется как "неизв.устройство" Нужно Vcc на D+ через 1.5К
|
|
|
|
|
Sep 11 2017, 15:18
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(Genadi Zawidowski @ Sep 11 2017, 18:16)  Попробуйте снять эту гроздь из конденсаторов на цепях USB. Могу предположить что SAMBA loader откатывается на USB 1, а прошивка не умеет. Изменились скорее всего электрические параметры хоста. не думаю, с кондерами там все ок (если стоят те, что на схеме)
|
|
|
|
|
Sep 11 2017, 15:34
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(Genadi Zawidowski @ Sep 11 2017, 18:32)  Можете не думать, я не настаиваю. Есть опыт борьбы с FT232RL, на которую навесили именно так как у Вас. Пока не сняли, опознавалось один из десяти раз. у меня сотни плат с такой схемой и на FTDI и на AT91SAM7S. И если вы внимательно почитаете топик сначала, то поймете, что уровни напряжения совсем не связаны с конденсаторами
|
|
|
|
|
Sep 11 2017, 16:09
|
Участник

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

|
Цитата(0men @ Sep 11 2017, 18:37)  правильный уровень 2.8 В. Вот, посмотрите для быстрого понимания http://usb.fober.net/teoriya/Fizicheskij-interfejs/ПС, судя по вашей схеме, ножка 91 должна в программе быть определена на выход . Она сейчас у вас на вход с верхней подтяжкой (килоом в 50). Думаю, если она (91 нога) используется в программе и далее (для ре-енумерации), то проблема с подбором 1.5К до конца не решится. Да, не решилось (( непрошитая определяется, прошитая нет. При этом после прошивки падает напряжение на D+ до 1.5 (с 2.8 до прошивки) и подбор перемещением результатов не даёт, определяется как неизвестное устройство Цитата(Integro @ Sep 11 2017, 19:00)  Значит, не туда затянули, либо фронт долгий вышел. Предлагаю подключить USB, вернуть подтяжку на VUSB и ребутить устройство через сигнал RESET(не отключая от USB). Не прошитый девайс должен определятся! Затем проверить прошитый девайс.
Также из поста не совсем понятно, запускается ли в целом прошивка, то-есть проблема только с USB? Остальной функционал исправен? Отъехал пока, вернусь, попробую. Проверить работу прошивки не могу, она работает с софтом на PC, т.е. пока usb не заработает, нельзя проверить работу платы Цитата(richie @ Sep 11 2017, 19:03)  1) Ага, всё-таки существует вероятность, что файл прошивки сейчас может отличаться от того что был ранее.
2) Ревизия скорее всего отпадает.
3) Перепрошивка. Это был наводящий вопрос. Почему при проектировании платы нельзя добавить джампер, при наличии которого плата предназначена для прошивки с гарантированным состоянием условий работы контроллера, не зависящих от "прошит", "не прошит", "прошит неправильной прошивкой"? Не, не, откуда вы взяли? Прошивка последний раз менялась в 2013г., с тех пор - нет. А плат за это время сделали сотни и всегда все ок. Цитата(Genadi Zawidowski @ Sep 11 2017, 19:16)  Попробуйте снять эту гроздь из конденсаторов на цепях USB. Могу предположить что SAMBA loader откатывается на USB 1, а прошивка не умеет. Изменились скорее всего электрические параметры хоста. Пробовал. Ни на что не влияет. Цитата(0men @ Sep 11 2017, 19:05)  Затянули то туда, но неправильно )) "когда подаешь Vcc напрямую на D+ определяется как "неизв.устройство" Нужно Vcc на D+ через 1.5К Это имелось ввиду, конечно через 1.5к. А напрямую - это смысле "не через 91 ногу"
|
|
|
|
|
Sep 11 2017, 16:18
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(alex7577 @ Sep 11 2017, 17:12)  Повесил. Теперь и прошитый и непрошитый контроллер определяются как "неизвестное устройство" в диспетчере задач. Вернул все обратно, непрошитый определяется как на моем скрине вначале темы. Так НЕ ДОЛЖНО быть. Проверьте еще раз. Цитата(Сергей Борщ @ Sep 11 2017, 16:12)  Чудес не бывает. Кто-то из ваших программистов дрогнувшей рукой перевел ножку 91 на ввод и вы там наблюдаете напряжение встроенной подтяжки (она включена по умолчанию). Можете убедиться в этом, подгрузив на землю резистором с известным сопротивлением. Ток встроенной подтяжки по документации - 300мкА плюс-минус лапоть. Возможно, в предыдущих партиях контроллеров он был "плюс лапоть" и его хватало. Я бы думал, что все с точностью до наоборот: загрузчик ничего не знает о 91 ноге, поэтому подключение хост видит через включенный pull-up, благо на AT91SAM они зверские. А вот что происходит в основной программе - науке неведомо. alex7577, снимите резистор, и посмотрите поведение 91 ноги в режиме загрузчика и в боевом - куда и в каком объеме она тянет/отдает ток.
|
|
|
|
|
Sep 12 2017, 12:30
|
Участник

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

|
Всем спасибо за помощь! Проблема пока не решена, но хотя бы понятно куда копать. Нашли пару МК с более старой ревизией, запаяли, все сразу заработало, т.о. понятно что дело только в новой ревизии. Блин! Такой удар со стороны классика )) 5 лет все было нормально и вдруг на тебе! Самое главное вовремя ) Цитата(jcxz @ Sep 11 2017, 22:09)  Для быстрого выявления "программной природы" бага, можно найти готовый пример какого-либо USB-устройства для отладочной платы с Вашим МК и с аналогичной распиновкой USB-интерфейса. Скомпилить, прошить, проверить. Боюсь это не быстро для нас ( Нам бы "костыль" влепить, лишь бы работало, отправить заказ, а потом уже посидим, покумекаем.
|
|
|
|
|
Sep 12 2017, 12:30
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(alex7577 @ Sep 12 2017, 14:58)  Блин! Такой удар со стороны классика )) 5 лет все было нормально и вдруг на тебе! Самое главное вовремя ) Ребят, ну вы же сами себе злобные буратины (ССЗБ). Даташит что гласит?
Если не нужна принудительная енумерация, то можно 1.5 кОм намертво к +3.3В подцепить.
|
|
|
|
|
Sep 12 2017, 13:16
|
Участник

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

|
Цитата(VladislavS @ Sep 12 2017, 15:30)  Ребят, ну вы же сами себе злобные буратины (ССЗБ). Даташит что гласит?
Если не нужна принудительная енумерация, то можно 1.5 кОм намертво к +3.3В подцепить. Подцепил. Непрошитый МК определяется нормально, как на скрине в начале темы. Прошитый как неизвестное устройство. На D+ при этом 2,9в. Это однозначно говорит о том, что принудительная енумерация присутствует?
|
|
|
|
|
Sep 12 2017, 13:19
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(VladislavS @ Sep 12 2017, 15:30)  Если не нужна принудительная енумерация, то можно 1.5 кОм намертво к +3.3В подцепить. Самое странное, что ТС пытался 1.5 кОм намертво к +3.3В подцепить (по его словам), ничего не помогло. Цитата(alex7577 @ Sep 12 2017, 16:16)  Подцепил. Непрошитый МК определяется нормально, как на скрине в начале темы. Прошитый как неизвестное устройство. На D+ при этом 2,9в.
Это однозначно говорит о том, что принудительная енумерация присутствует? очень похоже на это. Уровень напряжения нормальный Может вы кусок проекта сюда скините с инициализацией периферии?
|
|
|
|
|
Sep 12 2017, 13:28
|
Участник

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

|
Цитата(_4afc_ @ Sep 12 2017, 13:54)  А есть старые платы? Они с этим компом на этом виндоус с этим разъёмом работают?
Был случай, пришлось на другую реализацию стека USB уходить.... Да написал выше, старая плата работает на этом компе стабильно. Более того, перепаяли МК на новую, тоже работает. Цитата(0men @ Sep 12 2017, 16:19)  Самое странное, что ТС пытался 1.5 кОм намертво к +3.3В подцепить (по его словам), ничего не помогло.
очень похоже на это. Уровень напряжения нормальный Может вы кусок проекта сюда скините с инициализацией периферии? Конечно, только подскажите что скинуть. У меня в IAR, при открытом проекте вверху куча вкладок с исходниками, но я не знаю в какой ноги инициализируются. Как быстро найти?
|
|
|
|
|
Sep 12 2017, 13:33
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 12 2017, 16:28)  Конечно, только подскажите что скинуть. У меня в IAR, при открытом проекте вверху куча вкладок с исходниками, но я не знаю в какой ноги инициализируются. Как быстро найти? если не хотите кидать весь проект, кидайте файл, где функция мейн, по ней пробежимся, скажем что кинуть дальше ) Кстати, а вы можете осциллографом посмотреть поведение при работе ноги 91 на обеих платах?
Сообщение отредактировал 0men - Sep 12 2017, 13:35
|
|
|
|
|
Sep 13 2017, 07:21
|
Участник

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

|
Цитата(0men @ Sep 12 2017, 16:33)  если не хотите кидать весь проект, кидайте файл, где функция мейн, по ней пробежимся, скажем что кинуть дальше )
Кстати, а вы можете осциллографом посмотреть поведение при работе ноги 91 на обеих платах? Я готов скинуть и весь проект, там секретного ничего нет. Дайте контакты куда. Осциллографа нет. Мы давно ничего не меняли в электронике, обновляли только софт для PC, с которым работает плата, не меняя протокол обмена с платой. Соответственно нет ни специалистов ни оборудования, кроме тестера. Платы паялись и всегда работали, до этого момента
|
|
|
|
|
Sep 13 2017, 09:34
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 13 2017, 10:21)  Я готов скинуть и весь проект, там секретного ничего нет. Дайте контакты куда. Осциллографа нет. Мы давно ничего не меняли в электронике, обновляли только софт для PC, с которым работает плата, не меняя протокол обмена с платой. Соответственно нет ни специалистов ни оборудования, кроме тестера. Платы паялись и всегда работали, до этого момента  кидайте весь проект, контакт отправил в личке
|
|
|
|
|
Sep 13 2017, 09:44
|
Участник

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

|
Нашел такой код: //USB VBUS #define PIN_USB_VBUS {1 << 4, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_DEFAULT} //USB PULL_UP #define BOARD_USB_PULLUP_EXTERNAL #define PIN_USB_PULLUP {1 << 7, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT} //USB #define USB_Vbus 1<<4 #define USB_BUS_POWERED #define AT91C_VBUS AT91C_PIO_PA4 #define AT91C_PIO_VBUS AT91C_BASE_PIOA #define AT91C_ID_VBUS AT91C_ID_PIOA #define USB_PULLUP 1<<7 #define AT91C_PULLUP AT91C_PIO_PA7 #define AT91C_PIO_PULLUP AT91C_BASE_PIOA #define AT91C_ID_PULLUP AT91C_ID_PIOA #define USB_PULLUP_ON AT91C_PIO_PULLUP->PIO_SODR = USB_PULLUP; #define USB_PULLUP_OFF AT91C_PIO_PULLUP->PIO_CODR = USB_PULLUP; #define Cfg_Vbus_Detect AT91C_PIO_VBUS ->PIO_ODR = USB_Vbus;\ AT91C_PIO_VBUS ->PIO_PER = USB_Vbus;\ AT91C_PIO_VBUS ->PIO_IFER = USB_Vbus; Цитата(0men @ Sep 13 2017, 12:34)  кидайте весь проект, контакт отправил в личке Скинул Цитата(jcxz @ Sep 13 2017, 12:12)  Не боитесь, что форум читают и китайцы?  Не боюсь, у нас главная фишка не в платах, а в софте для PC
|
|
|
|
|
Sep 13 2017, 11:16
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 13 2017, 12:44)  Нашел такой код: //USB VBUS #define PIN_USB_VBUS {1 << 4, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_DEFAULT} //USB PULL_UP #define BOARD_USB_PULLUP_EXTERNAL #define PIN_USB_PULLUP {1 << 7, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT} //USB #define USB_Vbus 1<<4 #define USB_BUS_POWERED #define AT91C_VBUS AT91C_PIO_PA4 #define AT91C_PIO_VBUS AT91C_BASE_PIOA #define AT91C_ID_VBUS AT91C_ID_PIOA #define USB_PULLUP 1<<7 #define AT91C_PULLUP AT91C_PIO_PA7 #define AT91C_PIO_PULLUP AT91C_BASE_PIOA #define AT91C_ID_PULLUP AT91C_ID_PIOA #define USB_PULLUP_ON AT91C_PIO_PULLUP->PIO_SODR = USB_PULLUP; #define USB_PULLUP_OFF AT91C_PIO_PULLUP->PIO_CODR = USB_PULLUP; #define Cfg_Vbus_Detect AT91C_PIO_VBUS ->PIO_ODR = USB_Vbus;\ AT91C_PIO_VBUS ->PIO_PER = USB_Vbus;\ AT91C_PIO_VBUS ->PIO_IFER = USB_Vbus; Скинул Не боюсь, у нас главная фишка не в платах, а в софте для PC  чего то я нигде не увидел перевод ножки 91 (PA7) на выход (в мейне) Точнее, там есть настройка портов, но достаточно специфическая чтобы не разбираться долго, попробуйте в MAIN сразу после первой строчки PIO_Configure(pins, PIO_LISTSIZE(pins)); написать так: AT91C_BASE_PIOA->PIO_PER = AT91C_PIO_PA7; AT91C_BASE_PIOA->PIO_OER = AT91C_PIO_PA7; скомпилировать и проверить Цитата(alex7577 @ Sep 13 2017, 12:44)  Нашел такой код: И еще у вас есть непонятный момент. В мейне есть такой код // connect if needed VBus_Configure(); Cfg_Vbus_Detect; USB_PULLUP_ON; ISR_Vbus(&pinVbus); Так вот Vbus это PA4 судя по этому коду: #define USB_Vbus 1<<4 #define USB_BUS_POWERED #define AT91C_VBUS AT91C_PIO_PA4 #define AT91C_PIO_VBUS AT91C_BASE_PIOA #define AT91C_ID_VBUS AT91C_ID_PIOA PA4 это 88 нога, а на вашей схеме она тупо через резистор притянута к земле... зачем, почему.. И еще: попробуйте закомментировать строчку #define BOARD_USB_PULLUP_EXTERNAL в board.h Кстати, в проекте выбран чип at91sam7x512, а впаян at91sam7x256
Сообщение отредактировал 0men - Sep 13 2017, 10:26
|
|
|
|
|
Sep 13 2017, 11:48
|
Участник

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

|
Цитата(0men @ Sep 13 2017, 14:16)  чего то я нигде не увидел перевод ножки 91 (PA7) на выход (в мейне) Точнее, там есть настройка портов, но достаточно специфическая чтобы не разбираться долго, попробуйте в MAIN сразу после первой строчки PIO_Configure(pins, PIO_LISTSIZE(pins)); написать так: AT91C_BASE_PIOA->PIO_PER = AT91C_PIO_PA7; AT91C_BASE_PIOA->PIO_OER = AT91C_PIO_PA7; скомпилировать и проверить Сделал, к сожалению ничего не изменилось, так же падает напряжение на D+ до 1.7 и плата не определяется. После стирания прошивки, определяется. Два повторил, результата нет ( И еще у вас есть непонятный момент. В мейне есть такой код // connect if needed VBus_Configure(); Cfg_Vbus_Detect; USB_PULLUP_ON; ISR_Vbus(&pinVbus); Так вот Vbus это PA4 судя по этому коду: #define USB_Vbus 1<<4 #define USB_BUS_POWERED #define AT91C_VBUS AT91C_PIO_PA4 #define AT91C_PIO_VBUS AT91C_BASE_PIOA #define AT91C_ID_VBUS AT91C_ID_PIOA PA4 это 88 нога, а на вашей схеме она тупо через резистор притянута к земле... зачем, почему.. Вот начальная схема   но по факту, диод никогда не паяли, поэтому цепь VBUS была разомкнута и получается, что ножка на землю только через 15к. Зачем это было сделано не знаю, разработчик давно не работает у нас. Цитата(0men @ Sep 13 2017, 14:16)  Кстати, в проекте выбран чип at91sam7x512, а впаян at91sam7x256 Это не влияет, я так понимаю, что просто разный объем паммяти. Мы ставили 128, 256, 512, всегда работали. Цитата(0men @ Sep 13 2017, 14:16)  И еще: попробуйте закомментировать строчку
#define BOARD_USB_PULLUP_EXTERNAL
в board.h Тоже не помогло. После прошивки напряжение на D+ 2.2в без подключения к компу (со стертой прошивкой 3.3в), а при подключении кабеля usb падает до 1.7, ну то есть все как раньше.
|
|
|
|
|
Sep 13 2017, 12:11
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 13 2017, 14:48)  Тоже не помогло. После прошивки напряжение на D+ 2.2в без подключения к компу (со стертой прошивкой 3.3в), а при подключении кабеля usb падает до 1.7, ну то есть все как раньше. Давайте от простого пойдем, посмотрим, переводится вообще РА7 на выход 1. Для этого в мейне после PIO_Configure(pins, PIO_LISTSIZE(pins)); USB_PULLUP_OFF; wait(100000); USB_PULLUP_ON; напишите for(;;); то есть дальше код исполняться не будет. Подключите к компу и измерьте напряжение на D+
|
|
|
|
|
Sep 13 2017, 13:04
|
Участник

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

|
Цитата(0men @ Sep 13 2017, 15:11)  Давайте от простого пойдем, посмотрим, переводится вообще РА7 на выход 1. Для этого в мейне после
PIO_Configure(pins, PIO_LISTSIZE(pins)); USB_PULLUP_OFF; wait(100000); USB_PULLUP_ON;
напишите
for(;;);
то есть дальше код исполняться не будет. Подключите к компу и измерьте напряжение на D+ Ничего не изменилось. На всякий случай вот скрин результатов компиляции
|
|
|
|
|
Sep 13 2017, 13:16
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 13 2017, 16:04)  Ничего не изменилось. На всякий случай вот скрин результатов компиляции ничего не изменилось это что означает? какое напряжение на D+? 1.7?
|
|
|
|
|
Sep 13 2017, 13:22
|
Участник

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

|
Цитата(0men @ Sep 13 2017, 16:16)  ничего не изменилось это что означает? какое напряжение на D+? 1.7? Да. 1.7 при подключенном usb, 2.2 при отключенном.
|
|
|
|
|
Sep 13 2017, 14:05
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 13 2017, 16:22)  Да. 1.7 при подключенном usb, 2.2 при отключенном. это означает, что нога на выход не работает.. перед PIO_Configure(pins, PIO_LISTSIZE(pins)); вставьте вот такую строчку: AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PIOA); это включение клока да, похоже проблема именно в этом )) Клоки на порты у вас включаются в функции PIO_InitializeInterrupts(0); а она находится значительно ниже перенесите функцию PIO_InitializeInterrupts(0); перед PIO_Configure(pins, PIO_LISTSIZE(pins));
Сообщение отредактировал 0men - Sep 13 2017, 14:24
|
|
|
|
|
Sep 14 2017, 10:46
|
Участник

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

|
Цитата(0men @ Sep 13 2017, 17:05)  это означает, что нога на выход не работает..
перед PIO_Configure(pins, PIO_LISTSIZE(pins));
вставьте вот такую строчку: AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PIOA); это включение клока
да, похоже проблема именно в этом )) Клоки на порты у вас включаются в функции PIO_InitializeInterrupts(0);
а она находится значительно ниже
перенесите функцию PIO_InitializeInterrupts(0);
перед PIO_Configure(pins, PIO_LISTSIZE(pins)); К сожалению, опять не помогло, ситуация ровно таже 1.7в, на D+. вот скрин кода, посмотрите, пожалуйста, все ли правильно.  Раскопали в хламе старые паянные МК. Запаяли вместо новых на эти же платы, все работает, блин! Но три нам к сожалению мало, а хлам закончился. Проблема по-прежнему актуальна. Готов выставить хороший коньяк или иное вознаграждение по Вашему выбору за конструктивную помощь )
|
|
|
|
|
Sep 14 2017, 11:34
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 14 2017, 13:46)  Проблема по-прежнему актуальна. Готов выставить хороший коньяк или иное вознаграждение по Вашему выбору за конструктивную помощь ) ээээ.. зачем там цикл 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+
|
|
|
|
|
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)  Давайте так, если до понедельника ничего не решится, то я вам напишу, куда отправить  У вас в программе есть управление светодиодами, на плате они есть? Моргают? Ок! Раньше были светодиоды, но как только опытные образцы заработали стабильно от них отказались.
|
|
|
|
|
Sep 14 2017, 14:58
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(alex7577 @ Sep 14 2017, 17:52)  Ок! Раньше были светодиоды, но как только опытные образцы заработали стабильно от них отказались. впаяйте в рабочую и нерабочую платы, посмотрите.. попробуйте купить несколько процессоров другой ревизии, в элитане есть С Что еще можно попробовать, но это уже сродни танцу с бубном: в LowLevelInit исправить AT91C_MC_FWS_1FWS на AT91C_MC_FWS_2FWS
Сообщение отредактировал 0men - Sep 14 2017, 15:07
|
|
|
|
|
Sep 14 2017, 19:01
|
Участник

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

|
Попробовал прошить example "usb-device-cdc-serial-project". Плата со старым МК определяется нормально. Плата с новым не определяется. На D+ у нее так же 1.7в Цитата(0men @ Sep 14 2017, 17:58)  впаяйте в рабочую и нерабочую платы, посмотрите..
попробуйте купить несколько процессоров другой ревизии, в элитане есть С
Что еще можно попробовать, но это уже сродни танцу с бубном:
в LowLevelInit исправить AT91C_MC_FWS_1FWS на AT91C_MC_FWS_2FWS Да некуда впаять, не предусмотрены уже на плате светодиоды. Для пробы купили один МК в "Чип и Дип", та же история, видимо одна партия. Эксперимент с прошивкой примера однозначно говорит о дефектности МК?
|
|
|
|
|
Sep 14 2017, 19:43
|
Участник

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

|
Цитата(mantech @ Sep 14 2017, 22:07)  Для полной уверенности нужно скачать свежий пример с сайта атмела под данную ревизию, проверить, если работает - для вас печальная новость, ибо программу нужно будет править, нет - неисправные или поддельные МК, надо будет покупать у официальных представителей. Если не сложно, подскажите ссылку. Поискал и не нашел, доков куча, а примеров готовых проектов не нашел. Они там точно должны быть?
|
|
|
|
|
Sep 18 2017, 08:50
|

Профессионал
    
Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565

|
Цитата(richie @ Sep 11 2017, 19:03)  2) Ревизия скорее всего отпадает. А я бы грешил на ревизию, и ухудшешуюся технологию изготовления флеш памяти. Т.е. поставил бы в программе до повышения частоты работы на ~48МГц: AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_ 2FWS; Цитата EFC: Embedded Flash Access Time 2 The embedded Flash maximum access time is 20 MHz (instead of 30 MHz at zero Wait State (FWS = 0). The maximum operating frequency with one Wait State (FWS = 1) is 48.1 MHz (instead of 55 MHz). Above 48.1 MHz and up to 55MHz, two Wait States (FWS = 2) are required. PS: У AT91SAM7X512 вообще 16MHz Flash, так что и AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_ 3FWS; будет полезным.
|
|
|
|
|
Sep 19 2017, 06:53
|
Местный
  
Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339

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