PIC16x84 vs КР1878ВЕ1

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

Moderator: Shaos

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

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Lavr wrote:Декомпильнул...
Собирается TASM-ом без ошибок. EXE-шник стартует как и оригинал...
Проследил насколько хватило бдительности, что по тексту происходит с портами.
На первый взгляд всё примерно соответствует документации от ООО "Ангстрем":
09_acppzy.zip
Смущает, что программа программатора датирована: File Date: 7 Dec 1999
А многие пишут, что алгоритм изменили в 2000-м году... :-?

Наверное, надо рискнуть и прожечь одну штуку КР1878ВЕ1.
Просто как-то не хочется испортить себе впечатление об этих МК ещё на 5 лет вперёд... :neutral:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Lavr wrote:За полную корректность поручиться не могу - TASM вставляет выравнивающие NOP, NOP
и мой EXE-файл получается длиннее оригинала. :-?

Заставить TASM не вставлять NOP, NOP не смог, там в тексте и так выравнивание на байт. :osad:
Обычно я считаю дизассемблирование корректным, если собираю точную побитную копию оригинала.
Очень я не люблю, когда дизассемблированный код не собирается в копию оригинала побайтно... :-?
В этом случае неясно, можно ли коду верить, или есть ошибки декомпиляции.
И как избавится от лишних NOP, NOP было понятно сразу - надо было заменить в ассемблерном
тексте p386n на p286n. Это не делало код лучше, но позволяло сравнить с оригиналом побитно.
Я обычно делаю это утилитой fc.exe (file compare) с опцией /b - сравнить в бинарном виде.
Но замена p386n на p286n вызывала другие ошибки компиляции...

Пока я исследовал, как реализован протокол прошивки, исходник постоянно исправлял и корректировал,
и в итоге осталось заккомментировать ;p386n и то, что к 386 имеет непосредственное отношение (я пометил ***).

После этих исправлений дизассемблированный исходник собрался в *.ехе, идентичный оригиналу! :kruto:
p_wmct2.zip
Lavr wrote:Наверное, надо рискнуть и прожечь одну штуку КР1878ВЕ1.
Про прошивку - продолжу здесь...


P.S. Если кому-либо надо, утилиту fc.exe и её WIN-аналог я уже весьма давненько выкладывал здесь...
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Алгоритм прошивки КР1878ВЕ1

Post by Lavr »

Lavr wrote:... после долгого поиска я вроде как нашел этот алгоритм прошивки микроконтроллера КР1878ВЕ1,
возможно, что он даже правильный:
ciklogramma.rar
Про этот документ пишут, что вроде как он описывает "новый", измененный алгоритм прошивки микроконтроллера КР1878ВЕ1.

Я разрисовал для себя подробно "старый" алгоритм по документации ООО "Ангстрем":
DIA_1878.gif
DIA_1878WR.gif
DIA_1878RD.gif
Теперь надо попытаться "найти 10 отличий"... :wink:

На диаграмме записи - DIA_1878WR.gif - меня что-то смущает "третье состояние" - надо посмотреть,
как это реализовали по тексту программатора.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Дата изготовления

Post by Lavr »

Lavr wrote:
Кроме условного обозначения маркировка микросхем должна содержать:
товарный знак (или код) предприятия-изготовителя;
дату изготовления (ГОСТ В 20.39.402);
Что-то мы тут не добрались тогда до ГОСТ В 20.39.402, а я как раз достал свои первые 4 штуки КР1878ВЕ1,
чтобы посмотреть их год выпуска, ибо последние 20 штук у меня выпущены заведомо позже 2000 года.

Согласно сайту: Кодовая маркировка интегральных микросхем отечественного производства,
Дата изготовления обозначается следующим образом:
- две первые цифры соответствуют двум последним цифрам календарного года, две вторые цифры соответствуют календарной неделе года от 1-ой до 53-й (например, 0745 обозначают 2007 год, 45 неделю). Если календарная неделя состоит из одной цифры, перед ней ставят 0 (например, 0702). Первой неделей года считают ту, на которую приходится первый четверг года.
Так что на этой фоточке:

Image

микроконтроллер, действительно, выпущен в 11 неделю 2000 года, с которого и обещаны все траблы
с алгоритмом верификации.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Lavr wrote:Наверное, надо рискнуть и прожечь одну штуку КР1878ВЕ1.
Просто как-то не хочется испортить себе впечатление об этих МК ещё на 5 лет вперёд... :neutral:
В общем рискнул, прошил и впечатления себе не испортил, ибо мне этого очень не хотелось. :wink:
Photo0228.jpg
По текстам программатора я не выявил каких-либо заметных отклонений от документации ООО "Ангстрем",
поэтому решил прошивать их программой p_wmct.exe, но на всякий случай внёс изменения в схему
программатора, чтобы учесть всё, что я прочитал про микроконтроллер КР1878ВЕ1.
sxema001.gif
Также эта схема должна поддерживать ещё две других сторонних программы, поэтому имеет некоторые
отличия от имеющихся в сети "стандартных" схем.
Но первый блин комом не вышел, p_wmct.exe оригинальный от ООО "Ангстрем" исправно прошил экземпляр
КР1878ВЕ1 с датой изготовления 10.08, т.е. изготовленный в 8-ю неделю 2010 года. :kruto:

Замечания по схеме: буфер 74НС244 я поставил с двоякой целью: поберечь сам LPT-порт, ибо они
сейчас стали редкостью, и второе - все сигналы в этой схеме подаются на КР1878ВЕ1 только
когда включено через LPT-порт питание +5В
. Читал, что микроконтроллер не любит подачи сигналов
на свои выводы (особенно напряжения программирования +12В), если питание +5В не подано.

Второй очень важный момент, который я сам заметил при отладке: LPT-порт должен быть включен в
стандартный однонаправленный режим
. У меня был включен режим bidirectional - это конкретно мешало.
Даже в статике просто при отладке.

Прошивал под чистым DOS 7.1 на IBM Thinkpad 600E (PII 366 MHz).
Пишут, что можно из-под Windows 95(98) прошить, но я не рискнул, хотя у меня и Windows 98, но
в процессе отладки видел, что Венда имеет привычку полезть в свой LPT-порт (возможно, это процесс
SPOOL32 забавляется, но я не стал экспериментировать).

Отлаживал под Windows 98 с помощью вот этой программы:

Image

Обратил внимание вот на что - напряжения питания и программирования должны быть близки, на мой
взгляд, к номинальным. Поэтому напряжение программирования выставил +12.1В - учесть падение на
транзисторе. И 620 Ом в базе VT4 - также, чтобы увеличить ток коллектора. В результате напряжение
питания было 4.9В точно (142ЕН5А тоже не даёт чистые +5.0В - в моей практике всегда занижает),
напряжение программирования было точно +12В на коллекторе VT3.

Во время отладки от контактов микроконтроллера PB0, PB1, PB2 прицепил на землю светодиоды
FYL-5013URC через 1 К, они яркие, через 1 К вполне прилично светят.
При подаче "1" на выходы D3, D4 включается питание +5В, и горит светодиод HL2.
При подаче "1" на выходы D1, D2 включается питание +12В, и горит светодиод HL1.
Если питание +5В не включено, то питание +12В не включится, и светодиод HL1 - не горит.
При подаче "1" на выход D5 - загорится светодиод HL3 - это индикация включения +12В в программе
p_wmct.exe и для программирования КР1878ВЕ1 он не нужен. HL1, HL2 индицируют питание.
Через программу управления портом подавал "1"/"0" на выход /STROBE, при этом изменяется /BUSY,
и горит/гаснет светодиод. При подаче "1"/"0" на выход /AUTOLF - изменяется ACKNLG, и горит/
гаснет светодиод. При подаче "1"/"0" на выход INIT только горит/гаснет светодиод на PB2.

Транзисторы VT1, VT2 притянуты через 12К по базам к земле, чтобы не открылись, если потеря
контакта в разъёме LPT. С этой же целью - на землю от вывода A1 буфера DD1.

Порядок программирования:
1. Подсоединяем программатор к LPT при выключенном компьютере и выключенном питании +12.1В.
2. Микроконтроллер КР1878ВЕ1 в панельку НЕ ВСТАВЛЯЕМ!
3. Включаем компьютер, он тестирует порты и светодиоды могут моргать!
Питание проходит от выводов порта LPT через защитные диоды 74НС244!!!
4. После процедуры POST на выходах LPT могут быть лог."1" - надо их сбросить в "0" любой
программой (кто не умеет могу выложить).
5. Вставляем КР1878ВЕ1 в панельку, подаём питание +12.1В.
6. Запускаем программу программатора, к примеру так:
C:\TEMP\PROG\p_wmct.exe clock18.sav /c:011 /d:EEPROM.DAT
7. Если прошивка прошла удачно, программа программатора сама переводит все сигналы в "0".
8. Отключаем питание +12.1В, вынимаем КР1878ВЕ1 из панельки.

Я не был уверен, что всё закончится успешно, поэтому данная схема может работать со сторонними
программами программатора: p_1878.exe, we1.exe - вторая делает прошивку без верификации чтением,
поскольку, как пишут, ошибки случаются в основном при верификации чтением.


P.S. Если нет нужды априори записывать что-то в EEPROM, то файл EEPROM.DAT - обычный текстовый файл
следующего содержания.

Code: Select all

ff ff ff ff ff ff ff ff ;0...7 Bytes
ff ff ff ff ff ff ff ff ;8...15 Bytes
ff ff ff ff ff ff ff ff ;16...23 Bytes
ff ff ff ff ff ff ff ff ;24...31 Bytes
ff ff ff ff ff ff ff ff ;32...39 Bytes
ff ff ff ff ff ff ff ff ;40...47 Bytes
ff 07 ff ff ff ff ff ff ;48...55 Bytes
ff ff ff ff ff ff ff ff ;56...63 Bytes
Если нужно занести что-то в EEPROM, то правим файл EEPROM.DAT в текстовом редакторе.

P.S. Следующая утилита сбрасывает в "0" выводы LPT1:
ZLPT.zip
И утилита и сама программа программатора p_wmct.exe работают только с LPT1!
You do not have the required permissions to view the files attached to this post.
Last edited by Lavr on 04 Dec 2020 08:43, edited 1 time in total.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Lavr wrote:Я не был уверен, что всё закончится успешно, поэтому...
... поэтому программатор собрал на беспаечной макетке, чтобы в случае неудачи вносить
в схему изменения, учитывая всё то, что уже известно по программированию КР1878ВЕ1.
Photo0231.jpg
В левом нижнем углу - К155ЛА3, которая не имеет отношения к программатору, но в начале
на ней был собран НЧ мультивибратор с частотой примерно 0.5 Гц для тестирования разных
элементов в схеме программатора.

Если кому нужно оперативно прошить 1...2 КР1878ВЕ1, оставшиеся из древних времён,
то - вот расфасовка деталей на макетке для ориентира, на макетке оно - быстрее.
P0087.gif
Ну и приложу весь пакет программ, которые я приготовил, в процессе подготовки к прошивке:
PROG.zip
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Впрочем, прошить КР1878ВЕ1 - это всего лишь пол-дела, поскольку в разных негативных отзывах
пишут, что и генератор не запускается у этого микроконтроллера, и порты, бывает, через один
не работают... :-?

Поэтому, прежде, чем собирать часы (а в прошивке были именно простейшие часы), мне срочно
хотелось убедиться, что вся эта возня с прошивкой была не зря, и микроконтроллер всё-таки
работает по прошитой программе.

С этой целью я прямо на макетке программатора собрал часть часов по следующей схеме:
clock-sc1.gif
Здесь супервизор питания на транзисторе (Б.Ю.Семёнов пишет, что эта схема, в отличие от RC-цепи,
просто-таки отлично запускает данный микроконтроллер при включении.
На выход звука прицеплен высокоомный телефон, ну и кварц с задающими цепями.

И всё это прямо сразу и без проблем заработало! :kruto:
Photo1231.jpg
Со схемой супервизора Б.Ю.Семёнов, похоже, прав - многократно включал/выключал питание, чтобы
услышать стартовый писк часов при включении... 8)

Ну и потыкал осциллографом по всем выводам портов - развертка на индикатор АЛС-318 работает!
Photo1232.jpg
В общем, можно со спокойной совестью простейшие часы собрать... :wink:


P.S. В разрисовке макетки постом выше есть одна недоработка: эмиттер VT3 должен быть подключен
к +12.1В, а он нарисован соединённым с шиной питания +5В
.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Lavr wrote:В общем, можно со спокойной совестью простейшие часы собрать...
И я их так "со спокойной совестью" сразу же собрал (фотки выложу) но меня как-то смущал
вот этот узел, который называют "супервизор питания" или же другие названия у него есть...
clock-sc2.gif
Я этот узел целиком взял у Б.Ю.Семёнова, лишь уменьшив до 30К сопротивление в цепи коллектора.
Номинал 100К для притяжки цепи сброса к 0 В, мне не понравился... :-?

И я решил подробнее посмотреть, как в принципе делают такие узлы на рассыпухе.
Посмотрел здесь: Супервизоры питания (BOD), и пришел к выводу, что Б.Ю.Семёнов плохому не
научил, и, собственно, всё во многом зависит от тока стабилитрона и коэффициента передачи
h21 примененного транзистора. А по сути - номиналы резисторов узла можно менять в
разумных пределах в весьма широком диапазоне (что я потом и сделал)...
supervizor.gif
Но меня притормозил один момент: фирменные трёхвыводные супервизоры питания содержат в
своём составе источник опорного напряжения, компаратор и выходной каскад с открытым
коллектором...
ris1.gif
и тут я подумал, а нельзя ли соорудить супервизор питания на микросхеме таймера 555
(он же 1006ВИ1), вот как мы тут обсуждали?

В общем дня три я потратил на поиски в Интернете, и увидел, что никто супервизоров питания
на таймере 555 не делает, несмотря на то, что там на входе прецизионные компараторы.
И, подумав, я пришел к выводу, что, на мой взгляд, мне понятно почему.

Дело в том, что супервизор должен вступать в действие при довольно низких уровнях питания,
начиная где-то с 1 В - уже удерживать "0" на входе микроконтроллера.
А таймер 555 кроме компараторов, содержит и цифровую часть:
Image
поэтому в НЕ КМОП (стандартной) версии он начинает работать с 4,5 В по даташиту,
и в супервизоры питания он явно не годится. :-?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Ну и я из интересу немного поварьировал параметры дискретных супервизоров напряжения питания,
выполненных по схемам из предыдущего поста:
sup1.gif
sup.gif
И пришел я к выводу, что Б.Ю. Семёнов выбрал довольно-таки не самый худший вариант! :kruto:
Кому интересно - можете сами попробовать:
SupV.zip
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Ну и, честно говоря, я совершенно не понял сразу, зачем в цепь сброса включают
"токоограничивающий" (возможно) резистор...
Res0.gif
Эту схему Б.Ю.Семёнов как раз ругал, как ненадёжную, и рекомендовал супервизор питания...

Но посмотрел я: в своих последних документах (Рекомендации.doc) специалисты
ООО "Ангстрем" от этого резистора-таки избавились.
Res.gif
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Lavr wrote:и тут я подумал, а нельзя ли соорудить супервизор питания на микросхеме таймера 555
(он же 1006ВИ1), вот как мы тут обсуждали?

В общем дня три я потратил на поиски в Интернете, и увидел, что никто супервизоров питания
на таймере 555 не делает
, несмотря на то, что там на входе прецизионные компараторы.
Но попался мне вдруг нежданно-негаданно один такой, который взял и сделал, причем давненько... :wink:
NE555.png
Таймер у него - NE555, вроде как он не КМОП, но информация к размышлению имеет место быть.
You do not have the required permissions to view the files attached to this post.
iLavr
Konstantin18
Maniac
Posts: 325
Joined: 15 Jan 2019 15:48
Location: Украина, Луганская обл.

Re: PIC16x84 vs КР1878ВЕ1

Post by Konstantin18 »

Для создания супервизора питания кроме компаратора потребуется ИОН источник опорого (образцового) напряжения, а с ними в 555 как-то не сложилось. :econfused:

Приведенная выше схема является формирователем импульса сброса, а не супервизором питания
так как не имеет порога срабатывания.
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Konstantin18 wrote:Для создания супервизора питания кроме компаратора потребуется ИОН источник опорого (образцового) напряжения, а с ними в 555 как-то не сложилось. :econfused:
А вот в подборке схем, приведённой выше, местами и без ИОН-ов вполне обошлись... :roll:
Konstantin18 wrote:Приведенная выше схема является формирователем импульса сброса, а не супервизором питания
так как не имеет порога срабатывания.
Прямо-таки, значит, не имеет порога срабатывания? :roll:
А что там тогда делает вот этот делитель на входе между GND и Vcc ?
NE555_astable_.png
You do not have the required permissions to view the files attached to this post.
iLavr
Konstantin18
Maniac
Posts: 325
Joined: 15 Jan 2019 15:48
Location: Украина, Луганская обл.

Re: PIC16x84 vs КР1878ВЕ1

Post by Konstantin18 »

Lavr wrote: Прямо-таки, значит, не имеет порога срабатывания? :roll:
А что там тогда делает вот этот делитель на входе между GND и Vcc ?
Ну понятно что, :esmile: делитель он это, он ДЕЛИТ. :rotate:

Я имел ввиду что нет определенного уровня ниже которого будет сброс.

ПС. Хотя, возможно, добавление в эту схему одного стабилитрона решит эту проблему.
Но это не точно.
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PIC16x84 vs КР1878ВЕ1

Post by Lavr »

Konstantin18 wrote:Ну понятно что, :esmile: делитель он это, он ДЕЛИТ. :rotate:
Я имел ввиду что нет определенного уровня ниже которого будет сброс.
Ну это вам так кажется, молодой человек, в виду вашей поспешности и неопытности... :-?

Делитель, естественно, ДЕЛИТ... 8) на самом деле - просто делит, :wink: в результате чего компараторы
отслеживают напряжение питания - там всегда 1/3 и 2/3 от Vcc.
На входе "Порог" (TRE) - RC-цепь с большой постоянной времени, значит на этом входе напряжение
спадает медленнее, нежели само питание Vcc.

Так что там без особой надобности прецизионный ИОН - порог переключения четко отслеживается делителем.

И в схемах с транзисторами никакой ИОН не нужен... так что как-то "мимо кассы" этот вброс. :-?

Меня вот больше беспокоит, что на выходе 555, когда он вне своего диапазона питания...
Но, скорее всего, таймер и процессор достигнут своих номинальных напряжений питания
практически одновременно, и за счет RC-цепи таймер всё же удержит процессор от старта
на сколько там надо тактов.
iLavr