|
|
  |
Как перевести AVREAL на работу с USB?, AVREAL работает через LPT, как заставить через USB? |
|
|
|
Feb 4 2008, 09:21
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
Цитата С USB и avrdude не все радужно, в ветке http://electronix.ru/forum/index.php?showtopic=42389 есть обсуждение Возможно, но человеку нужен программатор, а не джитаг, сам я пользовался связкой: AVR910USB с прошивкой от AVRDOPER(STK500) и AVRDUDE, Нареканий не было, использовалось это и в виндовс и в линукс.
--------------------
|
|
|
|
|
Feb 5 2008, 08:02
|
Участник

Группа: Свой
Сообщений: 40
Регистрация: 29-08-05
Из: новосибирск
Пользователь №: 8 054

|
Цитата(hd44780 @ Feb 1 2008, 12:47)  Да, адреса показывает, не вопрос, но, например, всем известный PonyProg вообще адрес не спрашивает, стоят 3 радиокнопки - LPT1 .. LPT3 и все. Как он определяет базовые адреса - загадка. в Ponyprog есть Help, в Help есть FAQ. Самый последний ответ. Удачи. Кстати Ponyprog недавно обновился.
|
|
|
|
|
Feb 5 2008, 20:19
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(hd44780 @ Feb 1 2008, 11:47)  Да, адреса показывает, не вопрос, но, например, всем известный PonyProg вообще адрес не спрашивает, стоят 3 радиокнопки - LPT1 .. LPT3 и все. Как он определяет базовые адреса - загадка. Есть такой Jan Axelson parallel port FAQ, там приведён способ через некий ключ в реестре определяются наличествующие порты и потом в их ключах в одной двоичной записи берутся два байта и составляется базовый адрес порта. Беда в том, что работает это только с набортными LPT (возможно - с портами, для которых у 2000/XP есть драйвер). А для стоящего у меня PCI-LPT+2COM адаптера (драйвер был на компакте с платой) и ключи в реестре другие, и смещение адреса в двоичном ключе другое (т.е. просто зная адрес я его нашёл в другом месте). А с набортные имеют стандартные адреса 378/278/3BC и для них достаточно ключиков -p1/-p2/-p3. Универсального способа я не нашёл (плохо искал?) потому и забросил это дело.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 6 2008, 08:03
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(rezident @ Feb 6 2008, 00:39)  В программаторе Курта для MSP430 в режиме RAW пользователем тупо адрес LPT-порта в настройках программы может задаваться. У avreal - уже не помню, с 1.00beta0 или немного позже, но во всяком случае с момента начала выкладывания в интернет году в 1999-том - в ключе -p может задаваться не номер LPT, а его адрес. Число в ключе воспринимается как шестнадцатеричное и если оно больше 0x100 - то это адрес, на адреса меньше 0x100 лазить нефиг. Люди как раз просят задавать номер, а адрес чтобы искала программа сама. Хотя я обхожусь адресом, выцепленным вручную из свойств оборудования - я не каждый день глобально меняю конфигурацию компа, а добавление сетевухи и видеозахватчика адрес LPT не подвинуло. Года три-четрые назад игрался с другой PCI-LPT картой, была другая мамка, адрес той карты был другой, но он тоже не подвинулся при мелких изменениях в компе (типа того же видеозахватчика). На всех компах, на которых я работаю, в окружении прописал переменную AVREAL_PORT и в makefile в вызове avreal стоит -p$(AVREAL_PORT) (в батниках не-для-себя соответственно -p%AVREAL_PORT%), поэтому я просто не замечаю, где какой адрес.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 6 2008, 09:20
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(forever failure @ Feb 6 2008, 10:34)  Тов. 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 взяться. Надеюсь
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 6 2008, 10:42
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(ReAl @ Feb 6 2008, 12:03)  Люди как раз просят задавать номер, а адрес чтобы искала программа сама. Все доступные для открывания порты как СОМ так и LPT на момент запуска программы в символических именах ,можно определить через API.Там несложно ,могу примерчик скинуть. Можно поискать и в Gogle типа "COM LPT API" даст кучу ссылок  А вот работать с ними через API глухой номер ,я пытался поработать с СОМ ,у меня зараза на больших скоростях пропускает байты при приеме,плюнул ,переполз опять на драйвер,а LPT нужет протокольный обмен ,тоесть отработка сигналов STROBE и ACK на порте,тупо дернуть ногой не удастся. ИМХО ,лучше сразу подыскивать нормальный драйвер и закладываться на него.
|
|
|
|
|
Feb 6 2008, 17:23
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
А зачем вам базовый адресс ? Я допустим по сей день не знаю какие у меня адресса  Обратиться можно по имени или по номеру. Вот например для АПИ. Код ' 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
|
|
|
|
|
Feb 6 2008, 20:55
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(bodja74 @ Feb 6 2008, 19:23)  А зачем вам базовый адресс ? А чтобы значение ножки BUSY узнать, прочитав регистр статуса, или там на ножку STROBE выдать "0", потом пощёлкать на данных, потом на STROBE выдать "1". Вот такие извращения. Цитата(bodja74 @ Feb 6 2008, 19:23)  Я допустим по сей день не знаю какие у меня адресса  Обратиться можно по имени или по номеру. Вот например для АПИ. Код ' 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. Цитата(bodja74 @ Feb 6 2008, 19:23)  Порты могут не увидиться в случаях если заняты под принтер,мышку,другим приложением или вообще винда не видит оборудования .У меня дополнительные платы под порты тоже стоят ,уже нераз палил LPT  Винда видит (раз через свойства/оборудование/... и так далее для LPT1 на закладке "ресурсы" базовый адрес показывает), принтера на ней нет и не ставился. Не винда не видит, а применяемый в стандартных примерах код поиска базового адреса по реестру, я же писал уже. А вручную подбирать для имеющейся платы и потом нарываться на то, что на другом производителе может и не пойти - вломно как-то. Поэтому предпочитаю указывать вручную, как и у упоминавшегося выше чьего-то программатора для MSP430.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 7 2008, 17:30
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
ReAlЕсли брать по большому счету ,то у вас проблема ,которой не существует  Если ваш драйвер не поддерживает выражения типа : Код тыры-пыры_имя_драйвера.тыры-пыры_назначить_порт=1 или 2 или 3 а требует только базовый адресс ,то пошлите его лесом гулять,и подыщите нормальный. Не нужно будет извращаться с копаниями в реестре вообще. К примеру если для LPT нужно ,есть драйвер TVicPort ,ложится под любой язык ,начиная с Билдера кончая .NET . Сам определяет какие есть порты ,сколько их,какие у них базовые адресса,дергает любой ногой, есть даже дополнительные фичи - типа определить серийник винта или назначить лицензию на определенное количество дней . Можно и другой подыскать на свой вкус. Я с LPT редко работал ,поэтому коллекцию себе не собирал. ИМХО если чтото новое мутить ,то лучше на LPT и не закладываться,но это дело хозяйское  Насчет СОМ ,функции CreateFile, ReadFile, SetupComm, WriteFile и т.д. у меня в коде они есть,я выдернул с инета уже четыре варианта и у всех одна и таже проблема с пропуском байтов. Если подкинете свой рабочий вариант ,с меня будет пиво и уважуха
|
|
|
|
|
Feb 7 2008, 18:00
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(bodja74 @ Feb 7 2008, 20:30)  Насчет СОМ ,функции CreateFile, ReadFile, SetupComm, WriteFile и т.д. у меня в коде они есть,я выдернул с инета уже четыре варианта и у всех одна и таже проблема с пропуском байтов. Если подкинете свой рабочий вариант ,с меня будет пиво и уважуха  Пиво по интернету передавать умеете ? пользуетесь ли Вы таймаутами ком порта ? (в SetupComm) пользуетесь ли Вы функцией Sleep(x) ?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|