реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Как перевести AVREAL на работу с USB?, AVREAL работает через LPT, как заставить через USB?
GDI
сообщение Feb 4 2008, 09:21
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
С USB и avrdude не все радужно, в ветке http://electronix.ru/forum/index.php?showtopic=42389 есть обсуждение

Возможно, но человеку нужен программатор, а не джитаг, сам я пользовался связкой: AVR910USB с прошивкой от AVRDOPER(STK500) и AVRDUDE, Нареканий не было, использовалось это и в виндовс и в линукс.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
vvs5
сообщение Feb 5 2008, 08:02
Сообщение #17


Участник
*

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



Цитата(hd44780 @ Feb 1 2008, 12:47) *
Да, адреса показывает, не вопрос, но, например, всем известный PonyProg вообще адрес не спрашивает, стоят 3 радиокнопки - LPT1 .. LPT3 и все. Как он определяет базовые адреса - загадка.

в Ponyprog есть Help, в Help есть FAQ. Самый последний ответ.
Удачи.
Кстати Ponyprog недавно обновился.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 5 2008, 20:19
Сообщение #18


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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.
Универсального способа я не нашёл (плохо искал?) потому и забросил это дело.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 5 2008, 21:17
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ReAl @ Feb 5 2008, 23:19) *
Универсального способа я не нашёл (плохо искал?) потому и забросил это дело.

А его скорее всего и нет - конкретные драйвера знают а другим и не надо smile.gif. Однако полууниверсальный сделать несложно - базовые адреса и прочие ресурсы железок PnP-плеятся и лежат по унифицированным фиксированым адресам в конфигурации железа. По Vendor и Device прочитать и пользоваться. Производителей PCI LPT где-то 3-4.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 5 2008, 22:39
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(ReAl @ Feb 6 2008, 01:19) *
Универсального способа я не нашёл (плохо искал?) потому и забросил это дело.
В программаторе Курта для MSP430 в режиме RAW пользователем тупо адрес LPT-порта в настройках программы может задаваться.
Go to the top of the page
 
+Quote Post
vesago
сообщение Feb 6 2008, 07:02
Сообщение #21


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Слепить на m8 клон аврисп.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 6 2008, 08:03
Сообщение #22


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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%), поэтому я просто не замечаю, где какой адрес.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
forever failure
сообщение Feb 6 2008, 08:34
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Тов. ReAl, а в *никсовых версиях Вашего программатора обращение к порту идёт через соответствующие файлы устройств или через прямой вызов функций inb ()/ outb () ?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 6 2008, 09:20
Сообщение #24


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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 взяться. Надеюсь wink.gif


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
bodja74
сообщение Feb 6 2008, 10:42
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(ReAl @ Feb 6 2008, 12:03) *
Люди как раз просят задавать номер, а адрес чтобы искала программа сама.


Все доступные для открывания порты как СОМ так и LPT на момент запуска программы в символических именах ,можно определить через API.Там несложно ,могу примерчик скинуть.
Можно поискать и в Gogle типа "COM LPT API" даст кучу ссылок smile.gif
А вот работать с ними через API глухой номер ,я пытался поработать с СОМ ,у меня зараза на больших скоростях пропускает байты при приеме,плюнул ,переполз опять на драйвер,а LPT нужет протокольный обмен ,тоесть отработка сигналов STROBE и ACK на порте,тупо дернуть ногой не удастся.
ИМХО ,лучше сразу подыскивать нормальный драйвер и закладываться на него.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 6 2008, 12:38
Сообщение #26


Нечётный пользователь.
******

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



Цитата(bodja74 @ Feb 6 2008, 12:42) *
Все доступные для открывания порты как СОМ так и LPT на момент запуска программы в символических именах, можно определить через API. Там несложно, могу примерчик скинуть.
enum-нуть их наличие - таких примеров пруд пруди, "но мне туда не надо", если это не даёт возможность определить базовый адрес порта. А вот с этим не так просто.
В доступных мне на момент "ещё не надоело искать" (года четыре назад) примерах находилось не всё, адрес имеющейся у меня тогда платы не находился.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
bodja74
сообщение Feb 6 2008, 17:23
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



А зачем вам базовый адресс ?
Я допустим по сей день не знаю какие у меня адресса smile.gif
Обратиться можно по имени или по номеру.
Вот например для АПИ.
Код
    ' 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 biggrin.gif
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 6 2008, 20:55
Сообщение #28


Нечётный пользователь.
******

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



Цитата(bodja74 @ Feb 6 2008, 19:23) *
А зачем вам базовый адресс ?
А чтобы значение ножки BUSY узнать, прочитав регистр статуса, или там на ножку STROBE выдать "0", потом пощёлкать на данных, потом на STROBE выдать "1". Вот такие извращения.

Цитата(bodja74 @ Feb 6 2008, 19:23) *
Я допустим по сей день не знаю какие у меня адресса smile.gif
Обратиться можно по имени или по номеру.
Вот например для АПИ.
Код
    ' 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 biggrin.gif
Винда видит (раз через свойства/оборудование/... и так далее для LPT1 на закладке "ресурсы" базовый адрес показывает), принтера на ней нет и не ставился. Не винда не видит, а применяемый в стандартных примерах код поиска базового адреса по реестру, я же писал уже. А вручную подбирать для имеющейся платы и потом нарываться на то, что на другом производителе может и не пойти - вломно как-то. Поэтому предпочитаю указывать вручную, как и у упоминавшегося выше чьего-то программатора для MSP430.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
bodja74
сообщение Feb 7 2008, 17:30
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



ReAl
Если брать по большому счету ,то у вас проблема ,которой не существует smile.gif
Если ваш драйвер не поддерживает выражения типа :

Код
тыры-пыры_имя_драйвера.тыры-пыры_назначить_порт=1 или 2 или 3


а требует только базовый адресс ,то пошлите его лесом гулять,и подыщите нормальный.
Не нужно будет извращаться с копаниями в реестре вообще.
К примеру если для LPT нужно ,есть драйвер TVicPort ,ложится под любой язык ,начиная с Билдера кончая .NET .
Сам определяет какие есть порты ,сколько их,какие у них базовые адресса,дергает любой ногой,
есть даже дополнительные фичи - типа определить серийник винта или назначить лицензию на определенное количество дней .
Можно и другой подыскать на свой вкус.
Я с LPT редко работал ,поэтому коллекцию себе не собирал.
ИМХО если чтото новое мутить ,то лучше на LPT и не закладываться,но это дело хозяйское smile.gif

Насчет СОМ ,функции CreateFile, ReadFile, SetupComm, WriteFile и т.д. у меня в коде они есть,я выдернул с инета уже четыре варианта и у всех одна и таже проблема с пропуском байтов.
Если подкинете свой рабочий вариант ,с меня будет пиво и уважуха biggrin.gif
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 7 2008, 18:00
Сообщение #30


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(bodja74 @ Feb 7 2008, 20:30) *
Насчет СОМ ,функции CreateFile, ReadFile, SetupComm, WriteFile и т.д. у меня в коде они есть,я выдернул с инета уже четыре варианта и у всех одна и таже проблема с пропуском байтов.
Если подкинете свой рабочий вариант ,с меня будет пиво и уважуха biggrin.gif
Пиво по интернету передавать умеете ? smile.gif

пользуетесь ли Вы таймаутами ком порта ? (в SetupComm)
пользуетесь ли Вы функцией Sleep(x) ?
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01446 секунд с 7
ELECTRONIX ©2004-2016