|
|
  |
Нужна помощь, сломал голову! (Atmel AT91SAM7х256), после прошивки контроллера, компьютер не видит плату |
|
|
|
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+
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|