nedoPC.org

Community of electronics hobbyists established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 07 Aug 2022 19:04



Reply to topic  [ 71 posts ]  Go to page Previous  1, 2, 3, 4, 5
КР1878ВЕ1 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Если этот микроконтроллер до сих пор кому-либо еще интересен, то документацию
и софт для него можно раздобыть по адресам:
http://www.radioman-portal.ru/magazin/radiolubitel/2005/4.php

В этом номере журнала "Радиолюбитель" был опубликован программатор Черномырдина для COM порта.
Attachment:
Прог_Черномырдина.png
Прог_Черномырдина.png [ 32.95 KiB | Viewed 1174 times ]

Автор убеждает, что реализованный в программе алгоритм отлично "шьёт" КР1878ВЕ1, изготовленные после 2000 года.
Причем работоспособен в то время на Windows 2000 и Windows XP.

Программатор написан на Cpp и работает с COM портом корректно через функции WinAPI:
CreateFile(ComPort, ...)
GetCommModemStatus(...)
EscapeCommFunction(...)


Я оставил себе этот исходник в надежде, что через переходник USB2COM этот софт, возможно, тоже будет работать...
Ну и в программе на языке высокого уровня Cpp с комментариями автора на русском языке, возможно, алгоритм
программирования КР1878ВЕ1 более понятен, нежели в программе на ассемблере...

Здесь архив с исходником и исполняемым файлом от Черномырдина:
Attachment:
ve1write.zip [21.84 KiB]
Downloaded 39 times

Запускал я исполняемый файл под Win-7. Он запускается нормально и выходит с сообщением
о превышении времени ожидания от микроконтроллера.
Естественно, у меня на ноутбуке 2 порта USB и никаких железных COM портов нет.
По умолчанию программа лезет в COM1...

К сожалению у меня сейчас никаких компиляторов C на ноутбуке нет, но я попросил Шаоса протестировать
авторский исходник.
Шаос сказал, что вполне всё собирается компилятором от Борланда, который сейчас в свободном доступе.
На нашем сайте есть на него ссылки, если поискать.

Ну и - в архиве современная сборка софта от Черномырдина:
Attachment:
ve1write-exe.zip [37 KiB]
Downloaded 29 times

_________________
iLavr


18 May 2022 12:40
Profile
Junior

Joined: 15 May 2022 17:10
Posts: 8
Reply with quote
Lavr wrote:
В этом номере журнала "Радиолюбитель" был опубликован программатор Черномырдина для COM порта.


Спасибо!
Жаль, что этот программатор не попался мне раньше. Я бы не начал писать свой велосипед. Похоже, что раз в 5 лет кто-то обязательно писал свой программатор.
На выходных появится время - уже доделаю наверное. Мне тут подсказали, что ещё с лог. уровнями может быть проблема. У меня на К1878ВЕ1 на PB0 приходит 3.3В.


18 May 2022 14:37
Profile
Junior

Joined: 15 May 2022 17:10
Posts: 8
Reply with quote
Lavr wrote:


Программатор начинает читать команду побитно, начиная со старшего бита старшего байта слова:
Image
Поэтому старший байт в файле *.sav лежит первым, ибо это - файл прошивки.
После 16 сдвигов этот байт окажется на своём старшем месте, а следующий за ним - на своём младшем.


Когда пишешь по ночам, такие факты почему-то не складываются в одну картину :). Похоже, что Вы правы.
Я привык к тому, что компилятор на выходе отдаёт bin, который потом, если необходимо преобразуеся в то, что нужно прошивать уже другой утилитой, либо прошивающим софтом. Поэтому у себя я переворачивал биты. Оставался вопрос только с тем, нужно ли их было переворачивать, или они уже перевёрнуты. Ну вот и ответ. Спасибо!


18 May 2022 14:51
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
В этом номере журнала "Радиолюбитель" был опубликован программатор Черномырдина для COM порта.
http://www.radioman-portal.ru/magazin/radiolubitel/2005/4.php
...
Я оставил себе этот исходник в надежде, что через переходник USB2COM этот софт, возможно, тоже будет работать...
В общем, раз уж мы докатились до USB2COM, я решил хоть как-то на эту проблему глянуть.
Года 3 уже как я приобрёл себе самый распространённый в продаже шнурок:
Attachment:
B&P cable Adapter USB Am _ COM port 9pin.png
B&P cable Adapter USB Am _ COM port 9pin.png [ 97.36 KiB | Viewed 1151 times ]

Написано на нём: B&P cable Adapter USB Am -> COM port 9pin, но это его ни в чему не обязывает... :wink:
Автоматом он не распознаётся Вендой, а на маленьком диске в комплекте лежат драйвера на все случаи жизни.
На любого производителя - ставь-не-хочу - вот только непонятно, что ставить... :(

Но сегодня через "устранитель неполадок" в Венде-7 я доковырял, наконец, что это:
Quote:
USB-Serial Controller
ID: USB\VID_067B&PID_2303\5&226D6A4C&0&1

И умный наш Интернет подсказал мне, что это:
Quote:
Это Device ID от Prolific USB-to-Serial Bridge.
Производитель устройства или основного чипсета Prolific Technology Inc.

Драйвера я взял вот здесь... все, даже для Венды ХР - у меня её на работе много:
https://getdrivers.net/drivers_by_id.php?download=1178
Они поновее оказались, нежели на маленьком диске в комплекте.
Ставил драйверы вот этим инсталлятором: PL2303_Prolific_DriverInstaller_v1.12.0.exe

Шнурок встал как полноценный СОМ6, что уже обрадовало! :kruto: Не то что этот гнусный
USB-Bitronix Gembird CUM-360 - встал не как LPT, а как некий USB0001... :-?

Ну и я Черномырдинский софт запустил на СОМ6...
Code:
@CLS
@ECHO OFF
ve1write.exe clock18.sav com6: /c:0x01C0
@PAUSE

Порт СОМ6 программатору понравился, и он попытался программировать микроконтроллер...
Attachment:
Prog1_.PNG
Prog1_.PNG [ 51.8 KiB | Viewed 1151 times ]
Но микроконтроллера на порту СОМ6 не было... :wink:

Без СОМ порта процесс завешается иначе:
Attachment:
Prog3.PNG
Prog3.PNG [ 28.28 KiB | Viewed 1151 times ]

В общем есть ненулевая возможность, что через переходник USB2COM этот софт с программатором работать будет.

А убедиться в этом, как пишут в этих наших Интернетах, довольно нетрудно:
если под отладчиком функция GetCommModemStatus(forComm,&forModemStatus) работает, то счастье - возможно!
В противном случае, всё это - бесполезная возня... :-?

_________________
iLavr


18 May 2022 17:42
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
К сожалению у меня сейчас никаких компиляторов C на ноутбуке нет, ...

Ну как-то это нехорошо - без компиляторов C... и я поставил Microsoft Visual C++ 5.0 .
Просто потому, что у меня на нём был написан вот этот проект: 4-trit Processor

Оригинальный код от Черномырдина скомпилировался безо всяких проблем! :kruto:
Он, кстати, на Microsoft Visual C++ и был написан, если заглянуть внутрь исходника...

Но скорее всего - на Microsoft Visual C++ 6.0, потому как авторский код занимает 48 кБайт,
скомпилированный под Microsoft Visual C++ 5.0 - 40 кБайт, а код, который Шаос скомпилировал
Борланд билдером - 71 кБайт.

_________________
iLavr


20 May 2022 19:00
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
если под отладчиком функция GetCommModemStatus(forComm,&forModemStatus) работает, то счастье - возможно!
В противном случае, всё это - бесполезная возня... :-?

Я подумал, что надо бы написать тестовую программу для переходников USB2COM с простейшей аппаратной
"затычкой", которую можно спаять чисто на проводках, чтобы определять, что умеет кабель, а чего и - нет...

По поводу функции GetCommModemStatus(forComm,&forModemStatus) в описании её сказано:
Quote:
Функция завершается ошибкой, если аппаратные средства не поддерживают значения регистра управления.


И неожиданно обратил внимание я, что на схеме Черномырдина распиновка COM-порта указана частично неправильно: :-?

Image

На работу его программатора это оказать влияние не должно, но правильная распиновка COM-порта по
моей шпаргалке выглядит несколько иначе...
Attachment:
Контакты RS-232C.png
Контакты RS-232C.png [ 23.81 KiB | Viewed 1095 times ]

Проверил по Интернету - моя шпаргалка верна: Сигналы и контакты интерфейса RS232

_________________
iLavr


21 May 2022 04:04
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Lavr wrote:
если под отладчиком функция GetCommModemStatus(forComm,&forModemStatus) работает, то счастье - возможно!
В противном случае, всё это - бесполезная возня... :-?
Я подумал, что надо бы написать тестовую программу для переходников USB2COM с простейшей аппаратной
"затычкой", которую можно спаять чисто на проводках, чтобы определять, что умеет кабель, а чего и - нет...

И я уж собрался было потратить свой выходной и написать... но жизненный опыт и лень-матушка подсказали мне,
что я, скорее всего, совсем не первый на 1/6 части суши, кому такой тестер понадобился... :lol:

Я поискал... и нашел программу, которую многие рекомендуют, и которая, действительно, умеет делать то,
что я и хотел: вручную управлять сигналами COM-порта и наблюдать отклики по входным линиям.

Самой подходящей оказалась программа ICSerial (взял здесь: https://www.tehnari.ru/2501548-post39.html)
Quote:
Простенькая программа для проверки портов под Виндой. Установки не требует, но надо спаять заглушку (распайка которой представлена непосредственно в окне программы).
Attachment:
IC_Serial.PNG
IC_Serial.PNG [ 34.27 KiB | Viewed 1085 times ]

Результат тестирования можно квалифицировать как: ни в "туду", но и не в Красную Армию... :ebiggrin:

Побитное управление через переходник USB2COM, такой, как у меня, в принципе возможно...
Вот только уровни сигналов не позволяют использовать программатор Черномырдина: все сигналы
идут с амплитудой +/-8.5 В - и это без нагрузки на линиях!
Для прошивки КР1878ВЕ1 этого недостаточно... :osad:

То есть, аппаратная часть программатора должна быть с внешним питанием +12 В.

И еще один момент довольно странный: по выводу TxD полярность сигнала на выводе правильная,
такая, как показывает программа ICSerial.
Но вот по выводам DTR и RTS сигналы на выводах выставляются с точностью до наоборот! :o
Там, где программа ICSerial показывает, что на выводе +12 В, реально устанавливается -8.5 В,
а при индикации -12 В, на выводе - +8.5 В ! :roll:

Надо будет проверить на реальном COM-порте старого ноутбука: кто же реально врёт - программа
ICSerial или же преобразователь USB2COM... :-?

И последнее, что может быть важно: на форумах, где я искал эти программы тестирования COM-портов, пишут,
что один и тот же кабель может быть способен или не способен к побитовому управлению в зависимости от версии драйвера.
Тот же самый Prolific, как у меня, со старыми драйверами может не уметь работать побитно...

В принципе я примерно такого результата и ожидал, потому как по собственному опыту знаю, что даже настоящие,
железные COM-порты в ноутбуках могут выдавать сигналы амплитудой лишь +/-5 В - этого достаточно
для передачи данных по интерфейсу RS-232, а питать наши поделия напругой +12 В - никто не обещал! :ewink:


P.S. А вот программу ICSerial я нашел не сразу... так что выложу для всех, кому лень... :wink:
Attachment:
icserial.zip [22.96 KiB]
Downloaded 30 times

_________________
iLavr


21 May 2022 08:52
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
И еще один момент довольно странный: по выводу TxD полярность сигнала на выводе правильная,
такая, как показывает программа ICSerial.
Но вот по выводам DTR и RTS сигналы на выводах выставляются с точностью до наоборот! :o
Там, где программа ICSerial показывает, что на выводе +12 В, реально устанавливается -8.5 В,
а при индикации -12 В, на выводе - +8.5 В ! :roll:

Всё-таки пришлось проверить эти функции самому... благо у меня была заготовочка для работы с COM-портом...
Добавил 4 лишних кнопочки. :wink:
Attachment:
COM_TEST.png
COM_TEST.png [ 12.46 KiB | Viewed 1071 times ]

Необходимые функции реально работают вот так:
Code:
                EscapeCommFunction(hcom,SETDTR) //--- DTR_On , DTR = +12 В
                EscapeCommFunction(hcom,CLRDTR) //--- DTR_Off, DTR = -12 В

                EscapeCommFunction(hcom,SETRTS) //--- RTS_On , RTS = +12 В
                EscapeCommFunction(hcom,CLRRTS) //--- RTS_Off, RTS = -12 В

На первый взгляд это совпадает с таблицей WinAPI...
Attachment:
COM_Func.png
COM_Func.png [ 8.33 KiB | Viewed 1071 times ]

Вот только на выходах COM-порта: лог."1" = -12 В, а лог."0" = +12 В ... :-?
Где-то опять происходит путаница... :(
Lavr wrote:
Надо будет проверить на реальном COM-порте старого ноутбука: кто же реально врёт - программа
ICSerial или же преобразователь USB2COM... :-?

Видимо, придётся всё-таки это проверить...

_________________
iLavr


21 May 2022 14:16
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Необходимые функции реально работают вот так:
Code:
                EscapeCommFunction(hcom,SETDTR) //--- DTR_On , DTR = +12 В
                EscapeCommFunction(hcom,CLRDTR) //--- DTR_Off, DTR = -12 В

                EscapeCommFunction(hcom,SETRTS) //--- RTS_On , RTS = +12 В
                EscapeCommFunction(hcom,CLRRTS) //--- RTS_Off, RTS = -12 В

В этом нашем Интернете подтверждают, что это есть правильно... :-?
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-порта:
Attachment:
ComTest.zip [194.43 KiB]
Downloaded 30 times

Программа жестко скомпилирована под COM6, для другого порта - пропатчить в коде эту сигнатуру.

_________________
iLavr


21 May 2022 16:37
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
... у меня была заготовочка для работы с COM-портом...
Добавил 4 лишних кнопочки. :wink:
Добавил ещё кнопочек и выбор COM-порта...
Attachment:
COM_TEST1.png
COM_TEST1.png [ 15.59 KiB | Viewed 1033 times ]

Следующие функции реально работают правильно вот так:
Code:
                EscapeCommFunction(hcom,SETBREAK) //--- TxD=1, TxD = +12 В
                EscapeCommFunction(hcom,CLRBREAK) //--- TxD=0, TxD = -12 В

Программа побитного управления линиями COM-порта:
Attachment:
ComTest1.zip [195.67 KiB]
Downloaded 30 times

_________________
iLavr


22 May 2022 13:17
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
А поскольку работающая Proteus-модель КР1878ВЕ1 у нас тоже есть, то "пошевелить ножками"
КР1878ВЕ1 теперь доступно каждому даже без попыток купить этот самый КР1878ВЕ1.

Вот только "шевелить ножками" с этой Proteus-моделью КР1878ВЕ1 следует весьма и весьма бдительно... :-?

Давно я хотел вот этот проект "пошевелить": Схема для RS232 (КР1878ВЕ1)
Attachment:
KP1878_RS232.gif
KP1878_RS232.gif [ 5.99 KiB | Viewed 357 times ]

Но поскольку проект этот не более чем демонстрация возможностей КР1878ВЕ1 в качестве приёмника
и передатчика UART
, я решил смоделировать устройство в PROTEUS и добавить необходимый мне функционал.
Attachment:
KP1878_RS232.PNG
KP1878_RS232.PNG [ 15.27 KiB | Viewed 357 times ]

Вот тут-то и всплыли "подарки" от модели! Воистину - бесплатного сыра не бывает! :lol:

1. Таймер модели не работает от внешнего источника (вывод PA4/TCLC).
2. Прерывания от выводов портов у модели также не работают.
3. У компилятора ассемблера tessa.exe есть две недокументированные команды: stie и clie.
Благо, авторский исходник богато комментирован, и к ним имеются пояснения:"разрешение
прерывания
" и "запрет прерывания"! :roll:

Но в официальной документации от Ангстрем эти операции обозначены вот как:
sst 00001000b ; разрешить прерывания: установит IE-бит 4 в регистре состояния
cst 00001000b ; запретить прерывания: сбросить IE-бит 4 в регистре состояния

То, что stie и clie - синонимы, выяснилось когда я скомпилировал их подряд - код
совершенно идентичный... :-?

Но... возможно, всё это - неправда, и у меня просто кривые руки, расточенные под всякие "некошерные"
PIC-и, AVR-ы, Intel-ы и иже с ними... :(
Поэтому выкладываю проект "as is" с моими попытками с помощью разных костыликов вдохнуть
в него жизнь:
Attachment:
KP1878BE1_RS232.zip [26.53 KiB]
Downloaded 8 times

Оригинальный исходник - там же внутри заархивированный, ну а как это всё должно по идее работать,
подробно изложено по адресу: https://www.qrz.ru/schemes/contribute/icenet/SC/sc000330.shtml

_________________
iLavr


11 Jul 2022 22:48
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 71 posts ]  Go to page Previous  1, 2, 3, 4, 5

Who is online

Users browsing this forum: No registered users and 1 guest


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

Search for:
Jump to:  

Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.