Перейти к содержанию
    

Нужна помощь, сломал голову! (Atmel AT91SAM7х256)

Конечно, только подскажите что скинуть. У меня в IAR, при открытом проекте вверху куча вкладок с исходниками, но я не знаю в какой ноги инициализируются. Как быстро найти?

 

если не хотите кидать весь проект, кидайте файл, где функция мейн, по ней пробежимся, скажем что кинуть дальше )

 

Кстати, а вы можете осциллографом посмотреть поведение при работе ноги 91 на обеих платах?

Изменено пользователем 0men

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если не хотите кидать весь проект, кидайте файл, где функция мейн, по ней пробежимся, скажем что кинуть дальше )

 

Кстати, а вы можете осциллографом посмотреть поведение при работе ноги 91 на обеих платах?

 

Я готов скинуть и весь проект, там секретного ничего нет. Дайте контакты куда.

Осциллографа нет. Мы давно ничего не меняли в электронике, обновляли только софт для PC, с которым работает плата, не меняя протокол обмена с платой.

Соответственно нет ни специалистов ни оборудования, кроме тестера. Платы паялись и всегда работали, до этого момента :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я готов скинуть и весь проект, там секретного ничего нет. Дайте контакты куда.

Не боитесь, что форум читают и китайцы? :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я готов скинуть и весь проект, там секретного ничего нет. Дайте контакты куда.

Осциллографа нет. Мы давно ничего не меняли в электронике, обновляли только софт для PC, с которым работает плата, не меняя протокол обмена с платой.

Соответственно нет ни специалистов ни оборудования, кроме тестера. Платы паялись и всегда работали, до этого момента :)

 

кидайте весь проект, контакт отправил в личке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел такой код:

 

//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;

 

кидайте весь проект, контакт отправил в личке

 

Скинул

 

Не боитесь, что форум читают и китайцы? :biggrin:

 

Не боюсь, у нас главная фишка не в платах, а в софте для PC :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел такой код:

 

//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;

 

скомпилировать и проверить

 

 

 

Нашел такой код:

 

 

И еще у вас есть непонятный момент. В мейне есть такой код

 

// 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чего то я нигде не увидел перевод ножки 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 нога, а на вашей схеме она тупо через резистор притянута к земле... зачем, почему..

 

 

Вот начальная схема

 

image.jpg

image.jpg

 

но по факту, диод никогда не паяли, поэтому цепь VBUS была разомкнута и получается, что ножка на землю только через 15к. Зачем это было сделано не знаю, разработчик давно не работает у нас.

 

 

 

Кстати, в проекте выбран чип at91sam7x512, а впаян at91sam7x256

 

Это не влияет, я так понимаю, что просто разный объем паммяти.

Мы ставили 128, 256, 512, всегда работали.

 

И еще: попробуйте закомментировать строчку

 

#define BOARD_USB_PULLUP_EXTERNAL

 

в board.h

 

Тоже не помогло. После прошивки напряжение на D+ 2.2в без подключения к компу (со стертой прошивкой 3.3в), а при подключении кабеля usb падает до 1.7, ну то есть все как раньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тоже не помогло. После прошивки напряжение на 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+

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Давайте от простого пойдем, посмотрим, переводится вообще РА7 на выход 1.

Для этого в мейне после

 

PIO_Configure(pins, PIO_LISTSIZE(pins));

USB_PULLUP_OFF;

wait(100000);

USB_PULLUP_ON;

 

напишите

 

for(;;);

 

то есть дальше код исполняться не будет. Подключите к компу и измерьте напряжение на D+

 

Ничего не изменилось.

На всякий случай вот скрин результатов компиляции

image.jpg

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ничего не изменилось.

На всякий случай вот скрин результатов компиляции

 

ничего не изменилось это что означает? какое напряжение на D+? 1.7?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ничего не изменилось это что означает? какое напряжение на D+? 1.7?

 

Да. 1.7 при подключенном usb, 2.2 при отключенном.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да. 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, похоже проблема именно в этом )) Клоки на порты у вас включаются в функции

PIO_InitializeInterrupts(0);

 

а она находится значительно ниже

Для работы пинов на выход в серии SAM7 клоки не нужны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это означает, что нога на выход не работает..

 

перед

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+.

вот скрин кода, посмотрите, пожалуйста, все ли правильно.

 

image.jpg

 

 

Раскопали в хламе старые паянные МК. Запаяли вместо новых на эти же платы, все работает, блин!

Но три нам к сожалению мало, а хлам закончился.

Проблема по-прежнему актуальна.

Готов выставить хороший коньяк или иное вознаграждение по Вашему выбору за конструктивную помощь )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема по-прежнему актуальна.

Готов выставить хороший коньяк или иное вознаграждение по Вашему выбору за конструктивную помощь )

 

ээээ.. зачем там цикл 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+

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...