GDI 0 4 февраля, 2008 Опубликовано 4 февраля, 2008 · Жалоба С USB и avrdude не все радужно, в ветке http://electronix.ru/forum/index.php?showtopic=42389 есть обсуждение Возможно, но человеку нужен программатор, а не джитаг, сам я пользовался связкой: AVR910USB с прошивкой от AVRDOPER(STK500) и AVRDUDE, Нареканий не было, использовалось это и в виндовс и в линукс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvs5 0 5 февраля, 2008 Опубликовано 5 февраля, 2008 · Жалоба Да, адреса показывает, не вопрос, но, например, всем известный PonyProg вообще адрес не спрашивает, стоят 3 радиокнопки - LPT1 .. LPT3 и все. Как он определяет базовые адреса - загадка. в Ponyprog есть Help, в Help есть FAQ. Самый последний ответ. Удачи. Кстати Ponyprog недавно обновился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 5 февраля, 2008 Опубликовано 5 февраля, 2008 · Жалоба Да, адреса показывает, не вопрос, но, например, всем известный PonyProg вообще адрес не спрашивает, стоят 3 радиокнопки - LPT1 .. LPT3 и все. Как он определяет базовые адреса - загадка.Есть такой Jan Axelson parallel port FAQ, там приведён способ через некий ключ в реестре определяются наличествующие порты и потом в их ключах в одной двоичной записи берутся два байта и составляется базовый адрес порта. Беда в том, что работает это только с набортными LPT (возможно - с портами, для которых у 2000/XP есть драйвер). А для стоящего у меня PCI-LPT+2COM адаптера (драйвер был на компакте с платой) и ключи в реестре другие, и смещение адреса в двоичном ключе другое (т.е. просто зная адрес я его нашёл в другом месте). А с набортные имеют стандартные адреса 378/278/3BC и для них достаточно ключиков -p1/-p2/-p3. Универсального способа я не нашёл (плохо искал?) потому и забросил это дело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 5 февраля, 2008 Опубликовано 5 февраля, 2008 · Жалоба Универсального способа я не нашёл (плохо искал?) потому и забросил это дело. А его скорее всего и нет - конкретные драйвера знают а другим и не надо :). Однако полууниверсальный сделать несложно - базовые адреса и прочие ресурсы железок PnP-плеятся и лежат по унифицированным фиксированым адресам в конфигурации железа. По Vendor и Device прочитать и пользоваться. Производителей PCI LPT где-то 3-4. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 5 февраля, 2008 Опубликовано 5 февраля, 2008 · Жалоба Универсального способа я не нашёл (плохо искал?) потому и забросил это дело.В программаторе Курта для MSP430 в режиме RAW пользователем тупо адрес LPT-порта в настройках программы может задаваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vesago 0 6 февраля, 2008 Опубликовано 6 февраля, 2008 · Жалоба Слепить на m8 клон аврисп. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 6 февраля, 2008 Опубликовано 6 февраля, 2008 · Жалоба В программаторе Курта для MSP430 в режиме RAW пользователем тупо адрес LPT-порта в настройках программы может задаваться.У avreal - уже не помню, с 1.00beta0 или немного позже, но во всяком случае с момента начала выкладывания в интернет году в 1999-том - в ключе -p может задаваться не номер LPT, а его адрес. Число в ключе воспринимается как шестнадцатеричное и если оно больше 0x100 - то это адрес, на адреса меньше 0x100 лазить нефиг. Люди как раз просят задавать номер, а адрес чтобы искала программа сама. Хотя я обхожусь адресом, выцепленным вручную из свойств оборудования - я не каждый день глобально меняю конфигурацию компа, а добавление сетевухи и видеозахватчика адрес LPT не подвинуло. Года три-четрые назад игрался с другой PCI-LPT картой, была другая мамка, адрес той карты был другой, но он тоже не подвинулся при мелких изменениях в компе (типа того же видеозахватчика). На всех компах, на которых я работаю, в окружении прописал переменную AVREAL_PORT и в makefile в вызове avreal стоит -p$(AVREAL_PORT) (в батниках не-для-себя соответственно -p%AVREAL_PORT%), поэтому я просто не замечаю, где какой адрес. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forever failure 0 6 февраля, 2008 Опубликовано 6 февраля, 2008 · Жалоба Тов. ReAl, а в *никсовых версиях Вашего программатора обращение к порту идёт через соответствующие файлы устройств или через прямой вызов функций inb ()/ outb () ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 6 февраля, 2008 Опубликовано 6 февраля, 2008 · Жалоба Тов. ReAl, а в *никсовых версиях Вашего программатора обращение к порту идёт через соответствующие файлы устройств или через прямой вызов функций inb ()/ outb () ?Там сейчас винегрет - в FreeBSD на /dev/ppi, в линуксе - ioperm() и inb()/outb(). "Исторически сложилось". Сейчас дописываю единый код - для линукса будет и /dev/parport, для bsd- и прямое обращение, просто в зависимости от формы ключа -p (число или строка). Заодно делаю для win32 - если не NT-шный ряд осей, то не грузить dlportio и лазить напрямую, всё равно, если я правильно понимаю, в этом случае сама dlportio.dll не обращается к dlportio.sys а лазит напрямую. DOS-версия будет приостановлена до получения аргументированных возражений против такого положения вещей (а дальше будем торговаться dos16 или dos32-dpmi). p.s. по дороге я там ещё кое-что в структуре программы поменяю и после этого надеюсь за ft2232 взяться. Надеюсь ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bodja74 0 6 февраля, 2008 Опубликовано 6 февраля, 2008 · Жалоба Люди как раз просят задавать номер, а адрес чтобы искала программа сама. Все доступные для открывания порты как СОМ так и LPT на момент запуска программы в символических именах ,можно определить через API.Там несложно ,могу примерчик скинуть. Можно поискать и в Gogle типа "COM LPT API" даст кучу ссылок :) А вот работать с ними через API глухой номер ,я пытался поработать с СОМ ,у меня зараза на больших скоростях пропускает байты при приеме,плюнул ,переполз опять на драйвер,а LPT нужет протокольный обмен ,тоесть отработка сигналов STROBE и ACK на порте,тупо дернуть ногой не удастся. ИМХО ,лучше сразу подыскивать нормальный драйвер и закладываться на него. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 6 февраля, 2008 Опубликовано 6 февраля, 2008 · Жалоба Все доступные для открывания порты как СОМ так и LPT на момент запуска программы в символических именах, можно определить через API. Там несложно, могу примерчик скинуть.enum-нуть их наличие - таких примеров пруд пруди, "но мне туда не надо", если это не даёт возможность определить базовый адрес порта. А вот с этим не так просто. В доступных мне на момент "ещё не надоело искать" (года четыре назад) примерах находилось не всё, адрес имеющейся у меня тогда платы не находился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bodja74 0 6 февраля, 2008 Опубликовано 6 февраля, 2008 · Жалоба А зачем вам базовый адресс ? Я допустим по сей день не знаю какие у меня адресса :) Обратиться можно по имени или по номеру. Вот например для АПИ. ' Initialize Communications lngStatus = CommOpen(1, "COM1" , _ "baud=9600 parity=N data=8 stop=1") If lngStatus <> 0 Then ' Handle error. lngStatus = CommGetError(strError) MsgBox "COM Error: " & strError End If Вот для драйвера MSComm.CommPort=1 Порты могут не увидиться в случаях если заняты под принтер,мышку,другим приложением или вообще винда не видит оборудования .У меня дополнительные платы под порты тоже стоят ,уже нераз палил LPT Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 6 февраля, 2008 Опубликовано 6 февраля, 2008 · Жалоба А зачем вам базовый адресс ?А чтобы значение ножки BUSY узнать, прочитав регистр статуса, или там на ножку STROBE выдать "0", потом пощёлкать на данных, потом на STROBE выдать "1". Вот такие извращения. Я допустим по сей день не знаю какие у меня адресса :) Обратиться можно по имени или по номеру. Вот например для АПИ. ' Initialize Communications lngStatus = CommOpen(1, "COM1" , "baud=9600 parity=N data=8 stop=1") А, COM-порт... Под win32 предпочитаю так: void eunit_interface_rs232::open_com_port(const char *portstr, uint32_t baud) { hcom = CreateFile(portstr, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); if (hcom == INVALID_HANDLE_VALUE) throw eunit_error(EU_CMD_NOCOMM, ... EscapeCommFunction(hcom, SETDTR); EscapeCommFunction(hcom, SETRTS); На 115200 байтики не теряются, быстрее не пробовал. Но это не решает проблемы, связанные с "ногодрыжеством" на LPT. Порты могут не увидиться в случаях если заняты под принтер,мышку,другим приложением или вообще винда не видит оборудования .У меня дополнительные платы под порты тоже стоят ,уже нераз палил LPT Винда видит (раз через свойства/оборудование/... и так далее для LPT1 на закладке "ресурсы" базовый адрес показывает), принтера на ней нет и не ставился. Не винда не видит, а применяемый в стандартных примерах код поиска базового адреса по реестру, я же писал уже. А вручную подбирать для имеющейся платы и потом нарываться на то, что на другом производителе может и не пойти - вломно как-то. Поэтому предпочитаю указывать вручную, как и у упоминавшегося выше чьего-то программатора для MSP430. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bodja74 0 7 февраля, 2008 Опубликовано 7 февраля, 2008 · Жалоба ReAl Если брать по большому счету ,то у вас проблема ,которой не существует :) Если ваш драйвер не поддерживает выражения типа : тыры-пыры_имя_драйвера.тыры-пыры_назначить_порт=1 или 2 или 3 а требует только базовый адресс ,то пошлите его лесом гулять,и подыщите нормальный. Не нужно будет извращаться с копаниями в реестре вообще. К примеру если для LPT нужно ,есть драйвер TVicPort ,ложится под любой язык ,начиная с Билдера кончая .NET . Сам определяет какие есть порты ,сколько их,какие у них базовые адресса,дергает любой ногой, есть даже дополнительные фичи - типа определить серийник винта или назначить лицензию на определенное количество дней . Можно и другой подыскать на свой вкус. Я с LPT редко работал ,поэтому коллекцию себе не собирал. ИМХО если чтото новое мутить ,то лучше на LPT и не закладываться,но это дело хозяйское :) Насчет СОМ ,функции CreateFile, ReadFile, SetupComm, WriteFile и т.д. у меня в коде они есть,я выдернул с инета уже четыре варианта и у всех одна и таже проблема с пропуском байтов. Если подкинете свой рабочий вариант ,с меня будет пиво и уважуха Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 7 февраля, 2008 Опубликовано 7 февраля, 2008 · Жалоба Насчет СОМ ,функции CreateFile, ReadFile, SetupComm, WriteFile и т.д. у меня в коде они есть,я выдернул с инета уже четыре варианта и у всех одна и таже проблема с пропуском байтов. Если подкинете свой рабочий вариант ,с меня будет пиво и уважуха Пиво по интернету передавать умеете ? :) пользуетесь ли Вы таймаутами ком порта ? (в SetupComm) пользуетесь ли Вы функцией Sleep(x) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться