![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
0men
Свой-
Постов
142 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Весь контент 0men
-
Давайте так, если до понедельника ничего не решится, то я вам напишу, куда отправить :) У вас в программе есть управление светодиодами, на плате они есть? Моргают?
-
я Питере :( пока идеи иссякли (( А процессор вообще работает? Другие ноги управляются?
-
во всех 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(;;);
-
мышкой ткнитесь в 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
-
не упрямьтесь, а попробуйте )) В последних ревизиях атмел очень серьезно ухудшил характеристики флеш памяти, этот код отвечает за время доступа к ней. Ваш разработчик ничего не предусмотрел в этом плане
-
у AT91C_BASE_EFC0 AT91C_BASE_EFC1 AT91C_BASE_MC абсолютно разные базовые адреса. Выбирая 512 в яре и прошивая прошивку в 256 вы не правильно инициализируете работу флэш памяти
-
да, код правильный, но результат полная ерунда.. Ножка не переводится на выход, что абсолютно непонятно. А сделайте плис тоже самое на рабочей плате кстати, все таки важно, какой чип указан: 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;
-
ээээ.. зачем там цикл 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+
-
это означает, что нога на выход не работает.. перед 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));
-
ничего не изменилось это что означает? какое напряжение на D+? 1.7?
-
Давайте от простого пойдем, посмотрим, переводится вообще РА7 на выход 1. Для этого в мейне после PIO_Configure(pins, PIO_LISTSIZE(pins)); USB_PULLUP_OFF; wait(100000); USB_PULLUP_ON; напишите for(;;); то есть дальше код исполняться не будет. Подключите к компу и измерьте напряжение на D+
-
чего то я нигде не увидел перевод ножки 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
-
кидайте весь проект, контакт отправил в личке
-
если не хотите кидать весь проект, кидайте файл, где функция мейн, по ней пробежимся, скажем что кинуть дальше ) Кстати, а вы можете осциллографом посмотреть поведение при работе ноги 91 на обеих платах?
-
Самое странное, что ТС пытался 1.5 кОм намертво к +3.3В подцепить (по его словам), ничего не помогло. очень похоже на это. Уровень напряжения нормальный Может вы кусок проекта сюда скините с инициализацией периферии?
-
у меня сотни плат с такой схемой и на FTDI и на AT91SAM7S. И если вы внимательно почитаете топик сначала, то поймете, что уровни напряжения совсем не связаны с конденсаторами
-
не думаю, с кондерами там все ок (если стоят те, что на схеме)
-
Затянули то туда, но неправильно )) "когда подаешь Vcc напрямую на D+ определяется как "неизв.устройство" Нужно Vcc на D+ через 1.5К
-
правильный уровень 2.8 В. Вот, посмотрите для быстрого понимания http://usb.fober.net/teoriya/Fizicheskij-interfejs/ ПС, судя по вашей схеме, ножка 91 должна в программе быть определена на выход . Она сейчас у вас на вход с верхней подтяжкой (килоом в 50). Думаю, если она (91 нога) используется в программе и далее (для ре-енумерации), то проблема с подбором 1.5К до конца не решится.
-
Понимаю, так делать нельзя. Хост, по уровням на D+, D- определяет скорость подключенного устройства. А вообще, мне не очень понятна цель 91 ноги. Она используется для ре-енумерации устройства чтоли?
-
А если поиграться номиналом 1.5К? То есть уменьшить его (сохранив ваши схему - подтяжка к 91 ноге )
-
stm32f4 spi dma возврат HAL_BUSY
0men ответил Alex_Golubev тема в STM
клок разрешен? ПС увидел эээ!!! Так у вас в одном место spi3, а в другом spi4 ))) -
stm32f4 spi dma возврат HAL_BUSY
0men ответил Alex_Golubev тема в STM
Так может он еще передает? Через какой промежуток идет следующий вызов? -
Сколько тратит на вход в функцию это можно в ассемблере посмотреть. Менять местами - посмотрите pragma inline