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

ValeraVi

Свой
  • Постов

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

  • Посещение

Весь контент ValeraVi


  1. да, драйвер на чистом DDK, за основу взят пример bulkusb (просто добавил свой код туда). Правда компилируется не make файлом от DDK а в vs2005 как проект (как описано тут)
  2. Спасибо за советы, буду что-то пробовать. У меня сейчс фреймы с нулевой длиной не отправляются. Отправляются фреймы с меньшей чем wMaxPacketSize длиной чего по идее достаточно чтобы стек определил что данных больше не будет. У меня просто пустой фрейм получается перед каждым фреймом с булк пакетом.
  3. Может кто встречался с проблемой: Есть USB full speed девайс с двумя bulk ендпоинтами (один на вход, другой на выход). Написана фирмвара, драйвера под линух и винду, все работает. Для проверки работоспособности имеется простейшая апликуха, которая пишет 30 байт (это меньше wMaxPacketSize = 32) в девайс и сразу же вичитывает оттуда. Все это в цикле до бесконечности. Но по хардварному анализатору видно, что виндовский драйвер перед каждой транзакцией делает задержки в 1 мс, т.е. булк пакет посылается (принимается) только в каждом 2-м микрофрейме, т.е. перед каждой транзакцией я в логе анализатора вижу 2 SOF. При этом линуховый драйвер работает четко - задержек нет, перед каждой транзакцией по одному SOF, а в некоторых случаях умудряется даже в одном фрейме влепить по 2 транзакции (IN, потом OUT). Девайс и к линуху и к винде подключается один и тот же. Компы с виндой и линухом - разные, но другой периферии кроме этого девайса не подключено. Испытывали на нескольких виндовых компах - все одно и тоже - видна шлет булк пакет только в каждом 2-м фрейме (не первом, не 3-м, не 4-м...). Это какая-то особенность винды? Глюк моего драйвера виндовского? Писал его на базе примера из ДДК bulkusb. Может нужны какие-то хитрые настройки Дескрипторов usb девайса, которые для линуха подходят а для винды приводят к задержкам?
  4. 1. ~ЕА подтянут к VCC? (а лучше найдите любую схему на 51-м контроллере и сделайте также - в инете схем таких полно :)) 2,3,4 - насколько я помню, at89s53 не позиционируется как имеющий фичу подключения светодиодов на прямую. Так что лучше поставить доп. транзисторы. Хотя по даташиту там при лог. 0 максимумы: на 1 пин - 10 мА, на весь 0-й порт 26 мА, на всю микруху 71 мА... но - это максимумы... даташит... ;)
  5. Сенсор

    :blink: ... это всеравно что микроскопом гвозди забивать По-моему проще таймер заюзать, он как раз и предназначен для подсчета импульсов ;) (сорри, если оффтоп )
  6. 2 студерт Вот пусть модули его и слушают на предмет прихода от хоста общей команды типа "всем N секундная готовность к началу записи" (на эту команду модули ничего не должны отвечать). Для надежности, после этой команды можно каждый модуль по отдельности по-спрашивать (пока модули паралленьно отсчитывают заданное кол-во секунд) как он принял общую команду (главное успеть за эти N сек), и если кто-то не "понял" - отменить все и послать общую команду заново. Правда нужно как минимум 2 условия - каждый модуль умеет точно (1 мкс у вас) отсчитывать время и нужно чтобы хост не только знал когда будет следующий "выстрел" но и управлял им (чтоб, если не все модули приняли общую команду то можно было все отменить). Ну и еще маленькое условие :) - чтобы общая команда пришла на все модули одновременно, с погрешностью не больше 1 мкс...
  7. 2 arttab правильно так: while( UCSR1A & 0x06 ); и кто вам сказал что это для компилятора не очевидно??? Если вашему комилятору это не очевидно - выбросьте его :)... моему (iar4.11a) очевино и все работает: 1075: while( UCSR1A & 0x06 ); +00000725: 9100009B LDS R16,0x009B Load direct from data space +00000727: 7006 ANDI R16,0x06 Logical AND with immediate +00000728: F7E1 BRNE PC-0x03 Branch if not equal може у вас что-то не работает (виснет) по другой причине :)? например промому что вы ждете изменения одного из битов (U2X1) который никогда не изменится - он может измениться только вашей программой.
  8. 2 BzZz А почему бы для передачи данных по радио не использовать какой нибуть метод по проще и по дешевле. Например при момощи какого нить простого радиомодуля. Я использовал модули от RFM типа ТR3000 - это только трансивер сигналов, поэтому к нему пришлось еше городить управление и реализовывать простой низкоуровневый протокол передачи данных, для отслеживания ошибок в передаче / приеме. Чтобы этим не заниматься можно попробывать другие продукты, например типа CC1010. Я лично их не юзал, но по описанию там есть и микроконтроллер (можете заюзать для считывания данных с датчика) и передача данных там реализована (просто указываете что передавать и оно передает/принимает с отслеживанием ошибок и т.п.). Хотя, в принципе для вас можно, думаю и еще дешевле/проще вариант реализации подобрать, т.к. расстояния - не большие...
  9. на сайте производителя, где же еще ;) http://atmel.com/dyn/products/product_card...er&part_id=2598
  10. ... дрова можно скачать с FTP silabs :) _http://www.sparkfun.com/cgi-bin/phpbb/viewtopic.php?t=1223
  11. дрова на нее думаю и так, без кита, найти в инете можно ;) например там: _http://www.sparkfun.com/cgi-bin/phpbb/viewtopic.php?t=1223
  12. 1 - http://forum.electronix.ru/index.php?showtopic=7716 ;) 2 - я делал простую систему типа: "на кнопках набрали код, он передался смс-кой на спец. номера; спец номера и некоторые другие настроки настраиваются с клавиатуры". Заняло недельки 2 (с нуля знаний об этих модулях). Там все довольно хорошо продукоментировано, есть примеры (см. п.1 ;) ) так что думаю что больше времени потратите именно на реализацию своего устройства чем на разбирательство в SDK.
  13. а если в "Настройки e-mail" установить "... тип уведомления" = "Немедленное уведомление" оно тоже посылает только одно сообщение из темы? Поидее должно немедленно высылать все сообщения что постятся в форум...
  14. 2 lummox В основном (не знаю стандарт это или просто так сложилось) направлением рулят при помощи RTS. Вот у меня валяется PCI плата RS485/RS422 портов (Moxa вроде) и на ней, для RS485 есть переключатель управления направлением: AUTO или RTS. Например есть такая библиотечка для С++ билдера: Async Professional (APRO) - она умеет работать в режиме RS485 - рулит направлением при помощи RTS.
  15. 1. void запросто можно использовать с указателями на массивы (и др.). А если точнее, то void* это указатель на "ничто" :) поэтому тут уже нет разницы какой указатель (на строку, на функцию, на массив int и т.п.) вы приводите к типу void* 2. 2 jack_avenger Чтоб ваш код откомпилился нужно написать так: char cChar; char xChar[10]; void *pVoid; pVoid=&cChar; *((char*)pVoid) = 1; т.е., т.к void - это "ничто", то в этом "ничто" трудно выделить элемент, в который вы хотите затолкнуть 1, поэтому указатель на "ничто" нужно к чему-то привести (например к char), а потом уже в него записывать 1. НО, как сказал phantom - между указателем на массив char (строкой) и просто char (частный случай массива char размером = 1 элемент) разницы нет (и в том и в другом случае указатель - указывает на char) поэтому проще написать так: char cChar; char xChar[10]; char *pVoid; pVoid=&cChar; pVoid=xChar; //т.к массив char'ов это есть указатель на 0-й char. *pVoid = 1;
  16. ATMEGA64 глюк с UASR1

    2 arttab че-то не совсем ясно :), выше вы говорили что глобальные прерывания вы разрешили, а в примере они у вас запрещаются при инициализации: void main(void) { __disable_interrupt(); //CLI и больше нигде не разрешаются кроме как в прерывании по получению байта из ком порта, которое никогда не произойдет :) Поставте перед UDR1='k'; разрешение прерываний: __enable_interrupt(); и все должно заработать.
  17. я б написал примерно так: struct Value_tag; typedef struct Value_tag Value; typedef struct Tree_element_tag Tree_element; struct Tree_element_tag { Value * val; Tree_element *left, *right; }; struct Value_tag { int a; int b; //... }; и дальше не пришлось бы к Value и Tree_element постоянно приписывать struct :rolleyes:
  18. 2 Firer Чтоб получить BIN в IAR 4.11a нужно установить в Опциях проекта -> Linker -> Format -> Other -> Output Format = raw-binary
  19. intel-standard позволяет вмещать в себя до 64КБ данных, а в меге128 - 128КБ, поэтому, если кода будет больше 64КБ придется выбирать intel-extended - он хоть и по сложнее intel-standard но, по идее, все програмы управления программаторами должны их понимать (если ваша понимает - лучше сразу ставте intel-extended)
  20. ну, 100% работоспособности либов могут гарантировать только их аторы :), так что спросите у них. Но я думаю что они все рабочие, иначе нет смысла их выкладывать в и-нет... :) К тому же они маленькие в размерах - скачайте нужную, проверте на ваших программах, будут проблемы - пишите сюда - бум разбираться :)...
  21. 2 skopus при UBRR = 0 и U2X = 1 на вашем кварце мега128 может работать и на 904000 bps (RTFM) ... Проблемы могут возникнуть только если вы это дело будете связывать по ком порту с ПК ... хотя ... и они решаемые...
  22. Да - я тоже нашел только ссылку на поиск в гугле. Ясно - там наверно для очень хорошего софта всем доступ не дают.
  23. а с него можно все качать? Или кое что нельзя? Зарегился, нашел прогу (Xilinx ise 7.1) а оно мне что-то про то что у меня каких-то монет не хватает для скачки :(... Или там софт (варез?) только за деньги? :cranky:
  24. Спасибо... Про фулл версии я был не в курсе :)... по своему незнанию токо 44 метра трафа потратил :)...
  25. вопросы по TWI

    2 &-rey это вы какие еепромы имеете ввиду? :) AT24Cxxx (покрайней мере AT24C04, с которой я работал) без проблем можно писать по-байтово.
×
×
  • Создать...