|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В этом номере журнала "Радиолюбитель" был опубликован программатор Черномырдина для COM порта. Автор убеждает, что реализованный в программе алгоритм отлично "шьёт" КР1878ВЕ1, изготовленные после 2000 года. Причем работоспособен в то время на Windows 2000 и Windows XP. Программатор написан на Cpp и работает с COM портом корректно через функции WinAPI: CreateFile(ComPort, ...) GetCommModemStatus(...) EscapeCommFunction(...)Я оставил себе этот исходник в надежде, что через переходник USB2COM этот софт, возможно, тоже будет работать... Ну и в программе на языке высокого уровня Cpp с комментариями автора на русском языке, возможно, алгоритм программирования КР1878ВЕ1 более понятен, нежели в программе на ассемблере... Здесь архив с исходником и исполняемым файлом от Черномырдина: Запускал я исполняемый файл под Win-7. Он запускается нормально и выходит с сообщением о превышении времени ожидания от микроконтроллера. Естественно, у меня на ноутбуке 2 порта USB и никаких железных COM портов нет. По умолчанию программа лезет в COM1... К сожалению у меня сейчас никаких компиляторов C на ноутбуке нет, но я попросил Шаоса протестировать авторский исходник. Шаос сказал, что вполне всё собирается компилятором от Борланда, который сейчас в свободном доступе. На нашем сайте есть на него ссылки, если поискать. Ну и - в архиве современная сборка софта от Черномырдина:
_________________ iLavr
|
18 May 2022 11:40 |
|
|
kotofalk
Junior
Joined: 15 May 2022 16:10 Posts: 8
|
Спасибо! Жаль, что этот программатор не попался мне раньше. Я бы не начал писать свой велосипед. Похоже, что раз в 5 лет кто-то обязательно писал свой программатор. На выходных появится время - уже доделаю наверное. Мне тут подсказали, что ещё с лог. уровнями может быть проблема. У меня на К1878ВЕ1 на PB0 приходит 3.3В.
|
18 May 2022 13:37 |
|
|
kotofalk
Junior
Joined: 15 May 2022 16:10 Posts: 8
|
Когда пишешь по ночам, такие факты почему-то не складываются в одну картину . Похоже, что Вы правы. Я привык к тому, что компилятор на выходе отдаёт bin, который потом, если необходимо преобразуеся в то, что нужно прошивать уже другой утилитой, либо прошивающим софтом. Поэтому у себя я переворачивал биты. Оставался вопрос только с тем, нужно ли их было переворачивать, или они уже перевёрнуты. Ну вот и ответ. Спасибо!
|
18 May 2022 13:51 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В общем, раз уж мы докатились до USB2COM, я решил хоть как-то на эту проблему глянуть. Года 3 уже как я приобрёл себе самый распространённый в продаже шнурок: Написано на нём: B&P cable Adapter USB Am -> COM port 9pin, но это его ни в чему не обязывает... Автоматом он не распознаётся Вендой, а на маленьком диске в комплекте лежат драйвера на все случаи жизни. На любого производителя - ставь-не-хочу - вот только непонятно, что ставить... Но сегодня через "устранитель неполадок" в Венде-7 я доковырял, наконец, что это: И умный наш Интернет подсказал мне, что это: Драйвера я взял вот здесь... все, даже для Венды ХР - у меня её на работе много: https://getdrivers.net/drivers_by_id.php?download=1178Они поновее оказались, нежели на маленьком диске в комплекте. Ставил драйверы вот этим инсталлятором: PL2303_Prolific_DriverInstaller_v1.12.0.exeШнурок встал как полноценный СОМ6, что уже обрадовало! Не то что этот гнусный USB-Bitronix Gembird CUM-360 - встал не как LPT, а как некий USB0001... Ну и я Черномырдинский софт запустил на СОМ6... Порт СОМ6 программатору понравился, и он попытался программировать микроконтроллер... Но микроконтроллера на порту СОМ6 не было... Без СОМ порта процесс завешается иначе: В общем есть ненулевая возможность, что через переходник USB2COM этот софт с программатором работать будет. А убедиться в этом, как пишут в этих наших Интернетах, довольно нетрудно: если под отладчиком функция GetCommModemStatus(forComm,&forModemStatus) работает, то счастье - возможно! В противном случае, всё это - бесполезная возня...
_________________ iLavr
|
18 May 2022 16:42 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну как-то это нехорошо - без компиляторов C... и я поставил Microsoft Visual C++ 5.0 . Просто потому, что у меня на нём был написан вот этот проект: 4-trit ProcessorОригинальный код от Черномырдина скомпилировался безо всяких проблем! Он, кстати, на Microsoft Visual C++ и был написан, если заглянуть внутрь исходника... Но скорее всего - на Microsoft Visual C++ 6.0, потому как авторский код занимает 48 кБайт, скомпилированный под Microsoft Visual C++ 5.0 - 40 кБайт, а код, который Шаос скомпилировал Борланд билдером - 71 кБайт.
_________________ iLavr
|
20 May 2022 18:00 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я подумал, что надо бы написать тестовую программу для переходников USB2COM с простейшей аппаратной "затычкой", которую можно спаять чисто на проводках, чтобы определять, что умеет кабель, а чего и - нет... По поводу функции GetCommModemStatus(forComm,&forModemStatus) в описании её сказано: И неожиданно обратил внимание я, что на схеме Черномырдина распиновка COM-порта указана частично неправильно: На работу его программатора это оказать влияние не должно, но правильная распиновка COM-порта по моей шпаргалке выглядит несколько иначе... Проверил по Интернету - моя шпаргалка верн а: Сигналы и контакты интерфейса RS232
_________________ iLavr
|
21 May 2022 03:04 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
И я уж собрался было потратить свой выходной и написать... но жизненный опыт и лень-матушка подсказали мне, что я, скорее всего, совсем не первый на 1/6 части суши, кому такой тестер понадобился... Я поискал... и нашел программу, которую многие рекомендуют, и которая, действительно, умеет делать то, что я и хотел: вручную управлять сигналами COM-порта и наблюдать отклики по входным линиям. Самой подходящей оказалась программа ICSerial (взял здесь: https://www.tehnari.ru/2501548-post39.html) Результат тестирования можно квалифицировать как: ни в "туду", но и не в Красную Армию... Побитное управление через переходник USB2COM, такой, как у меня, в принципе возможно... Вот только уровни сигналов не позволяют использовать программатор Черномырдина: все сигналы идут с амплитудой +/-8.5 В - и это без нагрузки на линиях! Для прошивки КР1878ВЕ1 этого недостаточно... То есть, аппаратная часть программатора должна быть с внешним питанием +12 В. И еще один момент довольно странный: по выводу TxD полярность сигнала на выводе правильная, такая, как показывает программа ICSerial. Но вот по выводам DTR и RTS сигналы на выводах выставляются с точностью до наоборот! Там, где программа ICSerial показывает, что на выводе +12 В, реально устанавливается -8.5 В, а при индикации -12 В, на выводе - +8.5 В ! Надо будет проверить на реальном COM-порте старого ноутбука: кто же реально врёт - программа ICSerial или же преобразователь USB2COM... И последнее, что может быть важно: на форумах, где я искал эти программы тестирования COM-портов, пишут, что один и тот же кабель может быть способен или не способен к побитовому управлению в зависимости от версии драйвера. Тот же самый Prolific, как у меня, со старыми драйверами может не уметь работать побитно... В принципе я примерно такого результата и ожидал, потому как по собственному опыту знаю, что даже настоящие, железные COM-порты в ноутбуках могут выдавать сигналы амплитудой лишь +/-5 В - этого достаточно для передачи данных по интерфейсу RS-232, а питать наши поделия напругой +12 В - никто не обещал! P.S. А вот программу ICSerial я нашел не сразу... так что выложу для всех, кому лень...
_________________ iLavr
|
21 May 2022 07:52 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
| | | | Lavr wrote: И еще один момент довольно странный: по выводу TxD полярность сигнала на выводе правильная, такая, как показывает программа ICSerial. Но вот по выводам DTR и RTS сигналы на выводах выставляются с точностью до наоборот! Там, где программа ICSerial показывает, что на выводе +12 В, реально устанавливается -8.5 В, а при индикации -12 В, на выводе - +8.5 В ! | | | | |
Всё-таки пришлось проверить эти функции самому... благо у меня была заготовочка для работы с COM-портом... Добавил 4 лишних кнопочки. Необходимые функции реально работают вот так: На первый взгляд это совпадает с таблицей WinAPI... Вот только на выходах COM-порта: лог."1" = -12 В, а лог."0" = +12 В ... Где-то опять происходит путаница... Видимо, придётся всё-таки это проверить...
_________________ iLavr
|
21 May 2022 13:16 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В этом нашем Интернете подтверждают, что это есть правильно... | | | | Quote: > Можно управлять, конечно. SetCommBreak() & ClearCommBreak() Эквиваленты этих функций: EscapeCommFunction(hCom, SETBREAK); EscapeCommFunction(hCom, CLRBREAK);
Это из того же "комплекта", что и EscapeCommFunction(hCom, SETDTR); //установить DTR +12В EscapeCommFunction(hCom, CLRDTR); //установить DTR -12В EscapeCommFunction(hCom, SETRTS); //установить RTS +12В EscapeCommFunction(hCom, CLRRTS); //установить RTS -12В
Если кто не игрался с COM портом и интересуется, то вот особенность: при открытии порта функцией CreateFile("COM1", ...) сигналы DTR и RTS устанавливаются в состояние +12В. Происходит это потому, что по умолчанию (при старте Windows) включается режим использования этих сигналов при операциях обмена. Конечно, можно их сразу же сбросить в -12В, либо отменить их использование элементами структуры DCB.fRtsControl и DCB.fDtrControl. В последнем случае повторное открытие порта не приведет к включению этих сигналов.
Но будьте, как говориться, готовы... а также будьте готовы к тому, что при старте, Windows посылает в порт запрос (тестирует на предмет наличия подключенных устройств), а значит состояние вых. линий в этот момент меняется. | | | | |
P.S. Моя версия программы управления линиями COM-порта: Программа жестко скомпилирована под COM6, для другого порта - пропатчить в коде эту сигнатуру.
_________________ iLavr
|
21 May 2022 15:37 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Добавил ещё кнопочек и выбор COM-порта... Следующие функции реально работают правильно вот так: Программа побитного управления линиями COM-порта:
_________________ iLavr
|
22 May 2022 12:17 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вот только " шевелить ножками" с этой Proteus-моделью КР1878ВЕ1 следует весьма и весьма бдительно... Давно я хотел вот этот проект " пошевелить": Схема для RS232 (КР1878ВЕ1)Но поскольку проект этот не более чем демонстрация возможностей КР1878ВЕ1 в качестве приёмника и передатчика UART, я решил смоделировать устройство в PROTEUS и добавить необходимый мне функционал. Вот тут-то и всплыли " подарки" от модели! Воистину - бесплатного сыра не бывает! 1. Таймер модели не работает от внешнего источника (вывод PA4/TCLC). 2. Прерывания от выводов портов у модели также не работают. 3. У компилятора ассемблера tessa.exe есть две недокументированные команды: stie и clie. Благо, авторский исходник богато комментирован, и к ним имеются пояснения:" разрешение прерывания" и " запрет прерывания"! Но в официальной документации от Ангстрем эти операции обозначены вот как: sst 00001000b ; разрешить прерывания: установит IE-бит 4 в регистре состоянияcst 00001000b ; запретить прерывания: сбросить IE-бит 4 в регистре состоянияТо, что stie и clie - синонимы, выяснилось когда я скомпилировал их подряд - код совершенно идентичный... Но... возможно, всё это - неправда, и у меня просто кривые руки, расточенные под всякие " некошерные" PIC-и, AVR-ы, Intel-ы и иже с ними... Поэтому выкладываю проект " as is" с моими попытками с помощью разных костыликов вдохнуть в него жизнь: Оригинальный исходник - там же внутри заархивированный, ну а как это всё должно по идее работать, подробно изложено по адресу: https://www.qrz.ru/schemes/contribute/icenet/SC/sc000330.shtml
_________________ iLavr
|
11 Jul 2022 21:48 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22716 Location: Silicon Valley
|
Про DOSBox-X отрезано в другой топик
|
28 Nov 2022 20:08 |
|
|
Who is online |
Users browsing this forum: No registered users and 2 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|