КР1878ВЕ1

Другие микроконтроллеры и микропроцессоры, не попавшие в предыдущие разделы

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: КР1878ВЕ1

Post by Lavr »

Lavr wrote:Если этот микроконтроллер до сих пор кому-либо еще интересен, то документацию
и софт для него можно раздобыть по адресам:
http://www.radioman-portal.ru/magazin/r ... 2005/4.php
В этом номере журнала "Радиолюбитель" был опубликован программатор Черномырдина для COM порта.
Прог_Черномырдина.png
Автор убеждает, что реализованный в программе алгоритм отлично "шьёт" КР1878ВЕ1, изготовленные после 2000 года.
Причем работоспособен в то время на Windows 2000 и Windows XP.

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


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

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

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

Ну и - в архиве современная сборка софта от Черномырдина:
ve1write-exe.zip
You do not have the required permissions to view the files attached to this post.
iLavr
kotofalk
Junior
Posts: 8
Joined: 15 May 2022 16:10

Re: КР1878ВЕ1

Post by kotofalk »

Lavr wrote: В этом номере журнала "Радиолюбитель" был опубликован программатор Черномырдина для COM порта.
Спасибо!
Жаль, что этот программатор не попался мне раньше. Я бы не начал писать свой велосипед. Похоже, что раз в 5 лет кто-то обязательно писал свой программатор.
На выходных появится время - уже доделаю наверное. Мне тут подсказали, что ещё с лог. уровнями может быть проблема. У меня на К1878ВЕ1 на PB0 приходит 3.3В.
kotofalk
Junior
Posts: 8
Joined: 15 May 2022 16:10

Re: КР1878ВЕ1

Post by kotofalk »

Lavr wrote:

Программатор начинает читать команду побитно, начиная со старшего бита старшего байта слова:
Image
Поэтому старший байт в файле *.sav лежит первым, ибо это - файл прошивки.
После 16 сдвигов этот байт окажется на своём старшем месте, а следующий за ним - на своём младшем.
Когда пишешь по ночам, такие факты почему-то не складываются в одну картину :). Похоже, что Вы правы.
Я привык к тому, что компилятор на выходе отдаёт bin, который потом, если необходимо преобразуеся в то, что нужно прошивать уже другой утилитой, либо прошивающим софтом. Поэтому у себя я переворачивал биты. Оставался вопрос только с тем, нужно ли их было переворачивать, или они уже перевёрнуты. Ну вот и ответ. Спасибо!
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: КР1878ВЕ1

Post by Lavr »

Lavr wrote:В этом номере журнала "Радиолюбитель" был опубликован программатор Черномырдина для COM порта.
http://www.radioman-portal.ru/magazin/r ... 2005/4.php
...
Я оставил себе этот исходник в надежде, что через переходник USB2COM этот софт, возможно, тоже будет работать...
В общем, раз уж мы докатились до USB2COM, я решил хоть как-то на эту проблему глянуть.
Года 3 уже как я приобрёл себе самый распространённый в продаже шнурок:
B&P cable Adapter USB Am _ COM port 9pin.png
Написано на нём: B&P cable Adapter USB Am -> COM port 9pin, но это его ни в чему не обязывает... :wink:
Автоматом он не распознаётся Вендой, а на маленьком диске в комплекте лежат драйвера на все случаи жизни.
На любого производителя - ставь-не-хочу - вот только непонятно, что ставить... :(

Но сегодня через "устранитель неполадок" в Венде-7 я доковырял, наконец, что это:
USB-Serial Controller
ID: USB\VID_067B&PID_2303\5&226D6A4C&0&1
И умный наш Интернет подсказал мне, что это:
Это 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: Select all

@CLS
@ECHO OFF
ve1write.exe clock18.sav com6: /c:0x01C0
@PAUSE
Порт СОМ6 программатору понравился, и он попытался программировать микроконтроллер...
Prog1_.PNG
Но микроконтроллера на порту СОМ6 не было... :wink:

Без СОМ порта процесс завешается иначе:
Prog3.PNG
В общем есть ненулевая возможность, что через переходник USB2COM этот софт с программатором работать будет.

А убедиться в этом, как пишут в этих наших Интернетах, довольно нетрудно:
если под отладчиком функция GetCommModemStatus(forComm,&forModemStatus) работает, то счастье - возможно!
В противном случае, всё это - бесполезная возня... :-?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: КР1878ВЕ1

Post by Lavr »

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
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: КР1878ВЕ1

Post by Lavr »

Lavr wrote:если под отладчиком функция GetCommModemStatus(forComm,&forModemStatus) работает, то счастье - возможно!
В противном случае, всё это - бесполезная возня... :-?
Я подумал, что надо бы написать тестовую программу для переходников USB2COM с простейшей аппаратной
"затычкой", которую можно спаять чисто на проводках, чтобы определять, что умеет кабель, а чего и - нет...

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

Image

На работу его программатора это оказать влияние не должно, но правильная распиновка COM-порта по
моей шпаргалке выглядит несколько иначе...
Контакты RS-232C.png
Проверил по Интернету - моя шпаргалка верна: Сигналы и контакты интерфейса RS232
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: КР1878ВЕ1

Post by Lavr »

Lavr wrote:
Lavr wrote:если под отладчиком функция GetCommModemStatus(forComm,&forModemStatus) работает, то счастье - возможно!
В противном случае, всё это - бесполезная возня... :-?
Я подумал, что надо бы написать тестовую программу для переходников USB2COM с простейшей аппаратной
"затычкой", которую можно спаять чисто на проводках, чтобы определять, что умеет кабель, а чего и - нет...
И я уж собрался было потратить свой выходной и написать... но жизненный опыт и лень-матушка подсказали мне,
что я, скорее всего, совсем не первый на 1/6 части суши, кому такой тестер понадобился... :lol:

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

Самой подходящей оказалась программа ICSerial (взял здесь: https://www.tehnari.ru/2501548-post39.html)
Простенькая программа для проверки портов под Виндой. Установки не требует, но надо спаять заглушку (распайка которой представлена непосредственно в окне программы).
IC_Serial.PNG
Результат тестирования можно квалифицировать как: ни в "туду", но и не в Красную Армию... :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:
icserial.zip
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: КР1878ВЕ1

Post by Lavr »

Lavr wrote:И еще один момент довольно странный: по выводу TxD полярность сигнала на выводе правильная,
такая, как показывает программа ICSerial.
Но вот по выводам DTR и RTS сигналы на выводах выставляются с точностью до наоборот! :o
Там, где программа ICSerial показывает, что на выводе +12 В, реально устанавливается -8.5 В,
а при индикации -12 В, на выводе - +8.5 В ! :roll:
Всё-таки пришлось проверить эти функции самому... благо у меня была заготовочка для работы с COM-портом...
Добавил 4 лишних кнопочки. :wink:
COM_TEST.png
Необходимые функции реально работают вот так:

Code: Select all

                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...
COM_Func.png
Вот только на выходах COM-порта: лог."1" = -12 В, а лог."0" = +12 В ... :-?
Где-то опять происходит путаница... :(
Lavr wrote:Надо будет проверить на реальном COM-порте старого ноутбука: кто же реально врёт - программа
ICSerial или же преобразователь USB2COM... :-?
Видимо, придётся всё-таки это проверить...
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: КР1878ВЕ1

Post by Lavr »

Lavr wrote:Необходимые функции реально работают вот так:

Code: Select all

                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 В
В этом нашем Интернете подтверждают, что это есть правильно... :-?
> Можно управлять, конечно. 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-порта:
ComTest.zip
Программа жестко скомпилирована под COM6, для другого порта - пропатчить в коде эту сигнатуру.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: КР1878ВЕ1

Post by Lavr »

Lavr wrote:... у меня была заготовочка для работы с COM-портом...
Добавил 4 лишних кнопочки. :wink:
Добавил ещё кнопочек и выбор COM-порта...
COM_TEST1.png
Следующие функции реально работают правильно вот так:

Code: Select all

                EscapeCommFunction(hcom,SETBREAK) //--- TxD=1, TxD = +12 В
                EscapeCommFunction(hcom,CLRBREAK) //--- TxD=0, TxD = -12 В
Программа побитного управления линиями COM-порта:
ComTest1.zip
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: КР1878ВЕ1

Post by Lavr »

Lavr wrote:А поскольку работающая Proteus-модель КР1878ВЕ1 у нас тоже есть, то "пошевелить ножками"
КР1878ВЕ1 теперь доступно каждому даже без попыток купить этот самый КР1878ВЕ1.
Вот только "шевелить ножками" с этой Proteus-моделью КР1878ВЕ1 следует весьма и весьма бдительно... :-?

Давно я хотел вот этот проект "пошевелить": Схема для RS232 (КР1878ВЕ1)
KP1878_RS232.gif
Но поскольку проект этот не более чем демонстрация возможностей КР1878ВЕ1 в качестве приёмника
и передатчика UART
, я решил смоделировать устройство в PROTEUS и добавить необходимый мне функционал.
KP1878_RS232.PNG
Вот тут-то и всплыли "подарки" от модели! Воистину - бесплатного сыра не бывает! :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" с моими попытками с помощью разных костыликов вдохнуть
в него жизнь:
KP1878BE1_RS232.zip
Оригинальный исходник - там же внутри заархивированный, ну а как это всё должно по идее работать,
подробно изложено по адресу: https://www.qrz.ru/schemes/contribute/i ... 0330.shtml
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: КР1878ВЕ1

Post by Shaos »

Про DOSBox-X отрезано в другой топик
Я тут за главного - если что шлите мыло на me собака shaos точка net