nedoPC.org

Community of electronics hobbyists established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 30 Nov 2022 21:37



Reply to topic  [ 91 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7  Next
PIC16x84 vs КР1878ВЕ1 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Декомпильнул...
Собирается TASM-ом без ошибок. EXE-шник стартует как и оригинал...

Проследил насколько хватило бдительности, что по тексту происходит с портами.
На первый взгляд всё примерно соответствует документации от ООО "Ангстрем":
Attachment:
09_acppzy.zip [87.1 KiB]
Downloaded 229 times

Смущает, что программа программатора датирована: File Date: 7 Dec 1999
А многие пишут, что алгоритм изменили в 2000-м году... :-?

Наверное, надо рискнуть и прожечь одну штуку КР1878ВЕ1.
Просто как-то не хочется испортить себе впечатление об этих МК ещё на 5 лет вперёд... :neutral:

_________________
iLavr


16 Nov 2020 21:00
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
За полную корректность поручиться не могу - TASM вставляет выравнивающие NOP, NOP
и мой EXE-файл получается длиннее оригинала. :-?

Заставить TASM не вставлять NOP, NOP не смог, там в тексте и так выравнивание на байт. :osad:
Обычно я считаю дизассемблирование корректным, если собираю точную побитную копию оригинала.

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

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

После этих исправлений дизассемблированный исходник собрался в *.ехе, идентичный оригиналу! :kruto:
Attachment:
p_wmct2.zip [6.65 KiB]
Downloaded 206 times

Lavr wrote:
Наверное, надо рискнуть и прожечь одну штуку КР1878ВЕ1.
Про прошивку - продолжу здесь...


P.S. Если кому-либо надо, утилиту fc.exe и её WIN-аналог я уже весьма давненько выкладывал здесь...

_________________
iLavr


21 Nov 2020 09:52
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
... после долгого поиска я вроде как нашел этот алгоритм прошивки микроконтроллера КР1878ВЕ1,
возможно, что он даже правильный:
ciklogramma.rar

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

Я разрисовал для себя подробно "старый" алгоритм по документации ООО "Ангстрем":
Attachment:
DIA_1878.gif
DIA_1878.gif [ 32.52 KiB | Viewed 4916 times ]
Attachment:
DIA_1878WR.gif
DIA_1878WR.gif [ 35.58 KiB | Viewed 4916 times ]
Attachment:
DIA_1878RD.gif
DIA_1878RD.gif [ 19.5 KiB | Viewed 4916 times ]

Теперь надо попытаться "найти 10 отличий"... :wink:

На диаграмме записи - DIA_1878WR.gif - меня что-то смущает "третье состояние" - надо посмотреть,
как это реализовали по тексту программатора.

_________________
iLavr


24 Nov 2020 08:50
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Quote:
Кроме условного обозначения маркировка микросхем должна содержать:
товарный знак (или код) предприятия-изготовителя;
дату изготовления (ГОСТ В 20.39.402);
Что-то мы тут не добрались тогда до ГОСТ В 20.39.402, а я как раз достал свои первые 4 штуки КР1878ВЕ1,
чтобы посмотреть их год выпуска, ибо последние 20 штук у меня выпущены заведомо позже 2000 года.

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

Так что на этой фоточке:

Image

микроконтроллер, действительно, выпущен в 11 неделю 2000 года, с которого и обещаны все траблы
с алгоритмом верификации.

_________________
iLavr


24 Nov 2020 16:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Наверное, надо рискнуть и прожечь одну штуку КР1878ВЕ1.
Просто как-то не хочется испортить себе впечатление об этих МК ещё на 5 лет вперёд... :neutral:

В общем рискнул, прошил и впечатления себе не испортил, ибо мне этого очень не хотелось. :wink:
Attachment:
Photo0228.jpg
Photo0228.jpg [ 141.1 KiB | Viewed 4829 times ]

По текстам программатора я не выявил каких-либо заметных отклонений от документации ООО "Ангстрем",
поэтому решил прошивать их программой p_wmct.exe, но на всякий случай внёс изменения в схему
программатора, чтобы учесть всё, что я прочитал про микроконтроллер КР1878ВЕ1.
Attachment:
sxema001.gif
sxema001.gif [ 15.67 KiB | Viewed 4829 times ]

Также эта схема должна поддерживать ещё две других сторонних программы, поэтому имеет некоторые
отличия от имеющихся в сети "стандартных" схем.
Но первый блин комом не вышел, 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:
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:
Attachment:
ZLPT.zip [436 Bytes]
Downloaded 192 times
И утилита и сама программа программатора p_wmct.exe работают только с LPT1!

_________________
iLavr


Last edited by Lavr on 04 Dec 2020 09:43, edited 1 time in total.



04 Dec 2020 08:36
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Я не был уверен, что всё закончится успешно, поэтому...
... поэтому программатор собрал на беспаечной макетке, чтобы в случае неудачи вносить
в схему изменения, учитывая всё то, что уже известно по программированию КР1878ВЕ1.
Attachment:
Photo0231.jpg
Photo0231.jpg [ 90.38 KiB | Viewed 4826 times ]

В левом нижнем углу - К155ЛА3, которая не имеет отношения к программатору, но в начале
на ней был собран НЧ мультивибратор с частотой примерно 0.5 Гц для тестирования разных
элементов в схеме программатора.

Если кому нужно оперативно прошить 1...2 КР1878ВЕ1, оставшиеся из древних времён,
то - вот расфасовка деталей на макетке для ориентира, на макетке оно - быстрее.
Attachment:
P0087.gif
P0087.gif [ 61.37 KiB | Viewed 4826 times ]


Ну и приложу весь пакет программ, которые я приготовил, в процессе подготовки к прошивке:
Attachment:
PROG.zip [89.48 KiB]
Downloaded 191 times

_________________
iLavr


04 Dec 2020 09:33
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Впрочем, прошить КР1878ВЕ1 - это всего лишь пол-дела, поскольку в разных негативных отзывах
пишут, что и генератор не запускается у этого микроконтроллера, и порты, бывает, через один
не работают... :-?

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

С этой целью я прямо на макетке программатора собрал часть часов по следующей схеме:
Attachment:
clock-sc1.gif
clock-sc1.gif [ 9.59 KiB | Viewed 4795 times ]

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

И всё это прямо сразу и без проблем заработало! :kruto:
Attachment:
Photo1231.jpg
Photo1231.jpg [ 81.09 KiB | Viewed 4795 times ]

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

Ну и потыкал осциллографом по всем выводам портов - развертка на индикатор АЛС-318 работает!
Attachment:
Photo1232.jpg
Photo1232.jpg [ 67.28 KiB | Viewed 4795 times ]

В общем, можно со спокойной совестью простейшие часы собрать... :wink:


P.S. В разрисовке макетки постом выше есть одна недоработка: эмиттер VT3 должен быть подключен
к +12.1В, а он нарисован соединённым с шиной питания +5В
.

_________________
iLavr


05 Dec 2020 15:01
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
В общем, можно со спокойной совестью простейшие часы собрать...

И я их так "со спокойной совестью" сразу же собрал (фотки выложу) но меня как-то смущал
вот этот узел, который называют "супервизор питания" или же другие названия у него есть...
Attachment:
clock-sc2.gif
clock-sc2.gif [ 8.27 KiB | Viewed 4649 times ]

Я этот узел целиком взял у Б.Ю.Семёнова, лишь уменьшив до 30К сопротивление в цепи коллектора.
Номинал 100К для притяжки цепи сброса к 0 В, мне не понравился... :-?

И я решил подробнее посмотреть, как в принципе делают такие узлы на рассыпухе.
Посмотрел здесь: Супервизоры питания (BOD), и пришел к выводу, что Б.Ю.Семёнов плохому не
научил, и, собственно, всё во многом зависит от тока стабилитрона и коэффициента передачи
h21 примененного транзистора. А по сути - номиналы резисторов узла можно менять в
разумных пределах в весьма широком диапазоне (что я потом и сделал)...
Attachment:
supervizor.gif
supervizor.gif [ 21.41 KiB | Viewed 4649 times ]


Но меня притормозил один момент: фирменные трёхвыводные супервизоры питания содержат в
своём составе источник опорного напряжения, компаратор и выходной каскад с открытым
коллектором...
Attachment:
ris1.gif
ris1.gif [ 3.96 KiB | Viewed 4648 times ]

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

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

Дело в том, что супервизор должен вступать в действие при довольно низких уровнях питания,
начиная где-то с 1 В - уже удерживать "0" на входе микроконтроллера.
А таймер 555 кроме компараторов, содержит и цифровую часть:
Image
поэтому в НЕ КМОП (стандартной) версии он начинает работать с 4,5 В по даташиту,
и в супервизоры питания он явно не годится. :-?

_________________
iLavr


19 Dec 2020 18:00
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Ну и я из интересу немного поварьировал параметры дискретных супервизоров напряжения питания,
выполненных по схемам из предыдущего поста:
Attachment:
sup1.gif
sup1.gif [ 9.92 KiB | Viewed 4648 times ]
Attachment:
sup.gif
sup.gif [ 9.04 KiB | Viewed 4648 times ]

И пришел я к выводу, что Б.Ю. Семёнов выбрал довольно-таки не самый худший вариант! :kruto:
Кому интересно - можете сами попробовать:
Attachment:
SupV.zip [15.04 KiB]
Downloaded 180 times

_________________
iLavr


19 Dec 2020 18:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Ну и, честно говоря, я совершенно не понял сразу, зачем в цепь сброса включают
"токоограничивающий" (возможно) резистор...
Attachment:
Res0.gif
Res0.gif [ 3.21 KiB | Viewed 4644 times ]

Эту схему Б.Ю.Семёнов как раз ругал, как ненадёжную, и рекомендовал супервизор питания...

Но посмотрел я: в своих последних документах (Рекомендации.doc) специалисты
ООО "Ангстрем" от этого резистора-таки избавились.
Attachment:
Res.gif
Res.gif [ 3.49 KiB | Viewed 4644 times ]

_________________
iLavr


19 Dec 2020 21:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
и тут я подумал, а нельзя ли соорудить супервизор питания на микросхеме таймера 555
(он же 1006ВИ1), вот как мы тут обсуждали?

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

Но попался мне вдруг нежданно-негаданно один такой, который взял и сделал, причем давненько... :wink:
Attachment:
NE555.png
NE555.png [ 48.83 KiB | Viewed 2947 times ]

Таймер у него - NE555, вроде как он не КМОП, но информация к размышлению имеет место быть.

_________________
iLavr


01 Apr 2022 02:05
Profile
Maniac

Joined: 15 Jan 2019 16:48
Posts: 325
Location: Украина, Луганская обл.
Reply with quote
Для создания супервизора питания кроме компаратора потребуется ИОН источник опорого (образцового) напряжения, а с ними в 555 как-то не сложилось. :econfused:

Приведенная выше схема является формирователем импульса сброса, а не супервизором питания
так как не имеет порога срабатывания.


01 Apr 2022 09:16
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Konstantin18 wrote:
Для создания супервизора питания кроме компаратора потребуется ИОН источник опорого (образцового) напряжения, а с ними в 555 как-то не сложилось. :econfused:
А вот в подборке схем, приведённой выше, местами и без ИОН-ов вполне обошлись... :roll:

Konstantin18 wrote:
Приведенная выше схема является формирователем импульса сброса, а не супервизором питания
так как не имеет порога срабатывания.

Прямо-таки, значит, не имеет порога срабатывания? :roll:
А что там тогда делает вот этот делитель на входе между GND и Vcc ?
Attachment:
NE555_astable_.png
NE555_astable_.png [ 14.22 KiB | Viewed 2918 times ]

_________________
iLavr


01 Apr 2022 10:01
Profile
Maniac

Joined: 15 Jan 2019 16:48
Posts: 325
Location: Украина, Луганская обл.
Reply with quote
Lavr wrote:
Прямо-таки, значит, не имеет порога срабатывания? :roll:
А что там тогда делает вот этот делитель на входе между GND и Vcc ?


Ну понятно что, :esmile: делитель он это, он ДЕЛИТ. :rotate:

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

ПС. Хотя, возможно, добавление в эту схему одного стабилитрона решит эту проблему.
Но это не точно.


01 Apr 2022 10:41
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Konstantin18 wrote:
Ну понятно что, :esmile: делитель он это, он ДЕЛИТ. :rotate:
Я имел ввиду что нет определенного уровня ниже которого будет сброс.

Ну это вам так кажется, молодой человек, в виду вашей поспешности и неопытности... :-?

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

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

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

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

_________________
iLavr


01 Apr 2022 11:03
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 91 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7  Next

Who is online

Users browsing this forum: No registered users and 3 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

Search for:
Jump to:  
cron

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