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

microsin

Участник
  • Постов

    19
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о microsin

  • Звание
    Участник
    Участник

Посетители профиля

962 просмотра профиля
  1. Всем привет! Наконец-то моя платка gameduino заработала. Выражаю огромную благодарность хорошему человеку nerudo (которого нашел на Хабре) - он мне очень помог своими консультациями и подсказками, без него бы не разобрался. Если кому интересно: в проекте не хватало файла constraints с описанием ножек (на этапе Implementation система PlanAhead из Xilinx ISE назначала ножки как попало), и была проблема с загрузкой по SPI (в которой, кстати, так до конца и не разобрался). Когда по подсказке nerudo попробовал грузануть платку через JTAG, то все завелось с полоборота, и gameduino заработала в полном объеме. Причем - чудеса, да и только - автоматически заработала также загрузка с внешней памяти SPI, т. е. JTAG стал не нужен. Что-то наверное не-так было в настройке проекта iMPACT, но что не так - пока не понял. Компилировался проект gameduino с помощью установленного Xilinx WebPack 14.1, для него доступна бесплатная персональная лицензия.
  2. Последние новости - попробовал на железе запустить простейший тестовый проект - счетный одноразрядный триггер. Все заработало сразу. Поведение сигналов INIT_B и DONE при включении питания осталось такое же, но вот клоки с памяти пропадают примерно через 200 мс, и после этого триггер начинает нормально работать. А с проектом Gameduino такое не происходит - загрузка из микросхемы памяти не останавливается, SCK и SO работают без передышки. Подозреваю, что-то не так в настройках Verilog-проекта Gameduino, либо в проекте iMPACT, я составлял проекты тупо, как новичок (как, впрочем, и тестовый проект триггера), там все стоит по умолчанию. Но что там проверить в настройках, и какие они должны быть на самом деле - для меня пока что тайна. Не оставляю надежды, что кто-нибудь прочитает мой пост, откликнется и поможет советом.
  3. Путем долгих плясок с бубном все-таки разобрался. Нужно было установить ISE версии 14.1 в режиме WebPack и получить у Xilinx лицензию. После этого синтез и имплементация пошла. Теперь появилась новая проблемка - похоже что что-то не так с загрузкой моей FPGA xc3s200avq100-4 из микросхемы памяти AT45DB041D. Симптомы следующие: при включении питания на микросхему памяти постоянно от FPGA приходит активная выборка (~CS == 0) и такты данных (SCK порядка 4.4 МГц), и из микросхемы памяти постоянно выходят данные SO, не останавливаясь (на SI постоянно 0). Т. е. загрузка FPGA не прекращается, хотя по идее она должна была загрузиться и заработать, и передача данных от микросхемы памяти должна прекратиться. На ножке INIT_B при включении питания появляется импульс длительностью около 700 мс, и потом там постоянно 0 (вроде как сигнал о том, что не совпала CRC). После включения питания сигнал DONE устанавливается в 1 (вроде как сигнал о том, что загрузка завершена). И, само собой, вся система не работает, как надо, молчит, на экран ничего не выводит. Связь между памятью и FPGA похоже в порядке, так как утилита iMPACT нормально микросхему увидела и прописала, и даже проверила (verify). Где косяк, не подскажете?
  4. Привет всем посетителям форума! Пытаюсь скомпилировать проект Gameduino [1] с помощью Xilinx ISE Design Suite. Сам Gameduino с открытым исходным кодом на Verilog, применяемый чип XC3S200A-4VQG100C, семейство Xilinx Spartan-3A, исходные коды можно скачать по ссылке [2], или взять из проекта для Xilinx ISE Design Suite 14.1 по ссылке [3]. Вот краткая история моих приключений: 1. На версии Xilinx ISE Design Suite 14.1 (120609gameduino-bad-xilinx-prj.zip) синтез прошел, причем не нужно было комментировать ICAP_SPARTAN3A и DNA_PORT. Имплементация не пошла, так как не хватало лицензии. 2. На версии Xilinx ISE Design Suite 13.3 синтез не пошел из-за непонятной ошибки "отсутствие исходных модулей verilog". 3. На версии Xilinx ISE Design Suite 11.1 синтез прошел только после того, как закомментировал в файле top.v блоки кода с ICAP_SPARTAN3A и DNA_PORT. Имплементация не пошла с ошибкой размещения, превышено количество блоков BRAM: Number of bonded IOBs: 23 out of 63 36% Number of RAMB16s: 16 out of 12 133% (OVERMAPPED) Number of MULT18X18s: 6 out of 12 50% Number of BUFGMUXs: 1 out of 8 12% Number of DCMs: 1 out of 4 25% Что посоветуете, как скомпилировать исходники Gameduino, в какую сторону копать? [Ссылки] 1. Gameduino, игровой (видео, аудио) адаптер для AVR и других embedded платформ. 2. Making a Gameduino. 3. 120609gameduino-bad-xilinx-prj.zip - полностью проект для Xilinx ISE Design Suite 14.1.
  5. Читаю пост и за голову хватаюсь. Калёки/малёки в обработчике прерывания? Запрет прерываний? До чего только не додумается воспаленный разум программиста... RabidRabbit хороший совет дал - кольцевой буфер спасёт великого комбинатора. Работа с кольцевым буфером.
  6. Если Вам нужно экономичное решение (по энергопотреблению), то нельзя применять цифровую обработку сигнала для реализации ФНЧ (наподобие описанной в статье "AVR223: Digital Filters with AVR (цифровые фильтры на AVR)"), так как от микроконтроллера потребуется максимальная производительность. Нужно искать специализированные микросхемы для аппаратной реализации фильтров. Например, есть специализированные микросхемы фильтров на переключаемых конденсаторах, наподобие LMF100, см. [1], этот фильтр как раз двухканальный. На выходе фильтра нужно поставить амплитудный детектор (например, на операционном усилителе) и сигнал с него подать на АЦП микроконтроллера. Можно применить активные фильтры на операционных усилителях (как рассчитать см. [2]), на выходе фильтра также поставить аналоговый детектор амплитуды, и уже с выхода детектора также подавать сигнал на АЦП микроконтроллера. Тогда можно добиться низкого энергопотребления путем использования энергосберегающих режимов, либо путем снижения тактовой частоты микроконтроллера. Если не нужен анализ амплитуды сигнала, а нужен просто релейный тональный декодер (на срабатывание от частот 225 и 265 Гц), то можно применить очень хорошую микросхему KA567, см. [3]. Для детектирования двух частот понадобится 2 микросхемы KA567. С выхода микросхем информацию о наличии нужной частоты можно подать прямо на микроконтроллер. [Ссылки] 1. Микросхема LMF100 - аппаратный двухканальный ФНЧ. 2. Инструменты для радиоинженеров от National Semiconductor. 3. Тональный декодер KA567.
  7. Устройство должно выделять из звукового шума (фоновая бытовая обстановка - например, разговор людей, музыка) короткие хлопки ладонями или щелчок пальцами. Более подробно, с привязкой к технической реализации: 1. 10-битный АЦП непрерывно оцифровывает с частотой 4 кГц выборки звука в 8-битный буфер размером 1 килобайт (1024 выборки, 0.256 секунды). 2. В памяти программ процессора записаны два 8-битных оцифрованных сигнала, назовем их сигнал A и сигнал B. Под каждый образ сигнала выделено по 1 килобайту (каждый образ занимает в пямяти 1024 выборки, 0.256 секунды). Сигнал записан в виде последовательных выборок, точно также, как звук хранится в несжатом восьмибитном WAV-файле. 3. Математическая обработка должна в реальном времени найти в буфере АЦП подобие уже оцифрованного сигнала A и B. Подобие должно искаться по спектру и по времени появления спектральных составляющих (на усмотрение разработчика). 4. Если обнаружен сигнал A, то должен коротко мигнуть зеленый светодиод, если сигнал B - то красный светодиод. 5. Язык разработки - C (или C++). Предпочтительный процессор для обработки - ATmega32, AT91SAM7X256. На этих платформах могу предоставить макетный образец для проверки разработки и физической отладки программы. Если разработчик предпочел бы использовать другой процессор, готов выслушать пожелания разработчика. Если кто-нибудь готов за деньги выполнить эту работу, или предоставить уже готовый код - буду только рад.
  8. Один умный человек как-то скрестил V-USB с протоколом 1-Wire. См. AVR-USB-MEGA16: измеряем и контролируем температуру.
  9. Книжка Агурова, ИМХО, полная ерунда - подходит только для того, чтобы понять - что такое интерфейс USB. В ней надо прочитать первые несколько глав, и все. Для практического применения от этой книги толку мало - если попытаться осилить её полностью, то может только снести крышу и навсегда оттолкнуть новичка от желания что-то сделать самому. Намного полезнее для мозгов прочитать документик USB in a NutShell, теперь он доступен на русском. Практические примеры для программирования USB (примеры и для firmware USB-устройств на микроконтроллерах AVR, и примеры программ для компьютера, которые с этими устройствами работают) лучше взять из бесплатной библиотеки V-USB - для новичка лучше ничего нет.
  10. Абсолютно согласен! Всего-то делов - загрузить в память библиотеку libusb, и дальше просто тупо вызывать оттуда функции. Будет работать не только в Borland C+, но и в Visual Studio C++, Visual Basic, Delphi, GCC и т. д. Примеры готового кода (не только программ для компьютера, но и для firmware USB-устройств) можно найти в библиотеке V-USB. Русифицированную библиотеку V-USB можно скачать тут.
  11. XMEGA программатор

    Вот эта хорошо подойдет - AVR-USB162. Стоит недорого - 500 рублей (в сборе). Пустая плата - 300 рублей.
  12. 1. Библиотека V-USB (старое название AVR-USB) - программная реализация протокола USB на AVR. Есть примеры рабочих устройств USB и компутерных программ, работающих с этими устройствами. Библиотека бесплатная. Комментарии в библиотеке и примерах переведены на русский язык. 2. Макетные платы, на которых удобно применять библиотеку V-USB: AVR-USB-MEGA16, AVR-USB-TINY45. 3. Макетные платы с аппаратным интерфейсом USB: AVR-USB162, AT91SAM7X.
  13. Какой используете аппаратный отладчик (Wiggler, MT-LINK)? Когда задаете вопросы, побольше давайте исходной информации - тогда народу будет легче отвечать. 1. По этому вопросу не могу ответить, не сталкивался. 2. Насчет ошибок стека, которые вываливаются при отладке, не заморачивайтесь. Наверное, это особая "фича" IAR :) . Больше года с этим живу, полет нормальный. Вот например, что выводит мой IAR 5.20 при пошаговой отладке с помощью JTAG MT-LINK (он же J-Link): Fri Dec 25 09:59:08 2009: Loaded macro file: C:\asm\pkrc-m\ewp\..\at91lib\resources\flash.mac Fri Dec 25 09:59:09 2009: DLL version: V3.96|, compiled Oct 31 2008 19:06:25 Fri Dec 25 09:59:09 2009: Firmware: J-Link compiled Jul 30 2008 11:24:37 ARM Rev.5 Fri Dec 25 09:59:09 2009: JTAG speed is using adaptive clocking (RTCK signal) Fri Dec 25 09:59:09 2009: Initial reset was performed Fri Dec 25 09:59:09 2009: TotalIRLen = 4, IRPrint = 0x01 Fri Dec 25 09:59:09 2009: J-Link found 1 JTAG device(s). ARM core Id: 3F0F0F0F ARM7 Fri Dec 25 09:59:09 2009: Device at TAP0 selected Fri Dec 25 09:59:09 2009: JLINK command: ProjectFile = C:\asm\pkrc-m\ewp\settings\pkrc-m_at91sam7x256_flash.jlink, return = 0 Fri Dec 25 09:59:09 2009: JLINK command: device = AT91SAM7X256, return = 0 Fri Dec 25 09:59:09 2009: TotalIRLen = 4, IRPrint = 0x01 Fri Dec 25 09:59:11 2009: 240893 bytes downloaded (120.45 Kbytes/sec) Fri Dec 25 09:59:11 2009: Loaded debugee: C:\asm\pkrc-m\ewp\at91sam7x256_flash\Exe\at91sam7x256_flash.out Fri Dec 25 09:59:12 2009: Target reset Fri Dec 25 09:59:12 2009: execUserReset() Fri Dec 25 09:59:12 2009: TotalIRLen = 4, IRPrint = 0x01 Fri Dec 25 09:59:12 2009: Hardware reset with strategy 0 was performed Fri Dec 25 09:59:12 2009: Enable Main Oscillator Fri Dec 25 09:59:12 2009: Set PLL to 96MHz Fri Dec 25 09:59:12 2009: Set Master Clock to 48MHz Fri Dec 25 09:59:13 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) Fri Dec 25 09:59:20 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) Fri Dec 25 09:59:21 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) Fri Dec 25 09:59:21 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) Fri Dec 25 09:59:22 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) Fri Dec 25 09:59:22 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) Fri Dec 25 09:59:22 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) Fri Dec 25 09:59:22 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) Fri Dec 25 09:59:23 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) Fri Dec 25 09:59:23 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100) ... и так далее. 3. Если хотите, чтобы Вам что-то посоветовали, опять таки - нужно больше информации, чтобы не играть в телепатов (как Вы это сделали?). Есть уже готовые примеры и рекомендации в апноутах от Atmel. У меня вроде все получилось - я не парился, взял все готовенькое, из примеров Atmel для IAR. Сначала отправлял вывод printf в DBGU (для этого вообще ничего не надо делать, просто взять готовый пример, там уже все украдено до нас), а потом научился и на свой графический индикатор LCD. См. статью IAR EW ARM: как перенаправить вывод printf и putchar.
  14. Как самый простой вариант - можно переделать Ваше устройство на USB HID. Тогда вообще никакие драйвера не нужны, просто пишете ПО, которое с Вашим HID работает (по заданным параметрам VID и PID). Есть хорошие рабочие примеры для IAR от Atmel. ПО хоста можно написать как на вызовах функций из HID.dll (библиотечка от Микрософт, примеры в Интернете есть), так и с помощью вызова функций из libusb (свободная библиотека, примеры тоже есть). В случае libusb код легко будет работать как на Windows, так и на *NIX. [См. также] 1. AT91SAM7X256 - пишем USB HID и ПО хоста для него 2. IAR EW ARM: как сделать USB Mass Storage Device на основе MMC/SD
  15. Наш ответ Olimex-у :yeah: - недорогая макетка с чипом AT91SAM7X256 - 1600 рублей. Готов выслать почтой.
×
×
  • Создать...