Начиналось вот с этого: https://radiokot.ru/forum/viewtopic.php ... 1#p3435971 В кратце... Базовая платка на основе MCS51 (AT89S52) с совмещенной внешней памятью программ/данных на 64 килобайта (на основе ОЗУ). AT89S52 в режиме микропроцессора. Основное программное обеспечение на сегодняшний день написано под ассемблером (компилятор от Атмел c51asm.exe версии1.2). Базовая платформа имеет 8+3 линий программно определяемого пользователем ввода - вывода (текущая конфигурация) и оснащена бутлоадером, позволяющим загрузить из персонального компьютера файл формата intel hex8 (созданный под любым компилятором) и/или передать управление загруженной программе или использовать бутлоадер для подгрузки файла подкачки (забыл как такое по-мудреному называется). Для связи с ПК используется СОМ порт (или мост USB-COM) исключительно по сигналам RxD и TxD. Протоколов "притормаживания" не требуется (расплата довольно низкая скорость UART). Для обеспечения работы с котуинко в ПК используется свободно-бесплатная программа "терминал". Основное назначение - расширитель портов ввода-вывода ПК (замена прямого доступа к LPT к примеру) Частные проекты (уже реализованные) - программаторы для AT89C2051/4051, AT89S51/S52 и ныне лениво шкарябаемый для AT89C51 и прочих 40-лапых... В проекте используются МК семейств AVR и PIC10/12/16 (ассемблер соответствующих семейств) а также платформы ардуино (Си/С++ в рамках референса IDE) в качестве вспомогательных периферийных устройств и/или "интеллектуальных расширителей".
Пы.Сы. Адаптации платформы аналогично иным продуктам ардуиноIDE нету в связи с моими ограниченными возможностями. ("нельзя объять необъятное") Примером подобного для MCS51 можно считать https://z-uno.z-wave.me (там в основе ядро MCS51, но несколько с иной периферией). Ежли кому интересно будет - могут присоединяться к текущему проекту со своими дополнениями... Однако как и основной проект - на бесплатной основе...
в fbc_util_1.txt исправлены операции инверсии портов и выполнена подгонка под библиотеку bspi_m.txt применена модифицированная библиотека протокола побитово-синхронного протокола передачи данных (BSPI) bspi_m.txt Версия тестировщика для самой базовой котуинки (пока в стадии "ленивого написания") для работы в комплекте
Заложена интерактивная менюшка для ввода односимвольных команд из терминала. Ввод делается в нижней строчке в ответ на запрос в окошке. Решил, что удобнее будет использовать только циферки 0=возврат/выход в старшее меню, а 1-9 для исполнения (по контексту) команда - один символ, без дополнительных "скрытых" (см.пример на скрине). В принципе "заготовка" вполне себе работает, хотя и не является полноценным консольно-экранным приложением. Далее уже вопрос по собственно целевой программке - программатору для АТ89С51/52 прорабатываться будет. Ну и чего там на "жгучей платке" еще соорудить можно будет... Тот же фузе доктор или еще чего... запуск котуинки сначала проходят внутренние тесты, затем сообщение о версии бутлоадера и вывод приглашения к загрузке файла программки https://img.radiokot.ru/files/20529/2l6kokeg2k.png В ответ жмем кнопу SendFile в окошке Transmit и в выпадающем окне выбираем требуемый файл (в данном случае mb.hex) Далее запускается процесс загрузки с эхом в окне терминала: https://img.radiokot.ru/files/20529/2l6ktiutlr.png завершается процесс загрузки следующим окном: https://img.radiokot.ru/files/20529/2l6l0lyfiv.png в отмеченной стрелочкой позиции стоит нулик. Если поставить за нуликом курсор и нажать Send (или клавиш enter на клавиатуре ПК) то произойдет возврат в режим бутлоадера (soft restart) - только без тестирования. Для продолжения работы текущей программки надо в ту позицию вместо 0 ввести 1 https://img.radiokot.ru/files/20529/2l6l5lvbx5.png и нажав send продолжить работу программы. Выпадает следующее меню с предложением провести проверку/настройку напряжения +12 вольт Vpp: https://img.radiokot.ru/files/20529/2l6l7olpz5.png оставив единичку и нажав send включим подачу +12 вольт Vpp на соответствующий вывод панельки макета с выводом сопровождающего сообщения: https://img.radiokot.ru/files/20529/2l6lb2fcjg.png для отключения достаточно снова нажать send. Замечание - кнопа send работает только в случае, если курсор будет установлен за символом в окне терминала - иначе окажемся в том окне, где в данный момент находится позиция курсора. Если в момент, когда в окне терминала имеется предложение о тесте Vpp в строчке ответа ввести 0 то данный пункт будет игнорирован. Далее (и после теста Vpp или минуя оный) будет выдано следующее: https://img.radiokot.ru/files/20529/2l6li9q280.png поскольку прожка пока в стадии написания при подтверждении единичкой далее последует каскад контрольных тестов с выводом на индикатор, подключенный к Р1 МК, установленного на FB4012. Тесты проходят в "кольцевом режиме" сначала однократно выпадает вот такое окошко: https://img.radiokot.ru/files/20529/2l6llkg2mc.png с завершением https://img.radiokot.ru/files/20529/2l6ln62mjc.png далее или играемся включая соответствующий цифирке индикатор(1-8) или запускаем следующее кольцо теста введя нулик. https://img.radiokot.ru/files/20529/2l6lp53vdk.png Воть... В менюшечной системе устранена "узкость" - теперь в строчке команд можно вводить сколько угодно символов - все равно устойчиво будет анализироваться (и исполняться) только самый первый
там было "немножко грязючки" ... теперь нету... Теперь дописать до полного программатора может любой желающий - основные заготовки в тестовой оболочке уже сделаны, старая версия под ISP для AT89S51/52 так же ранее опубликована (как и еще более "древний" вариант для AT89C2051/4051). Так что мне можно и не слишком торопиться с окончательным вариантом...
файл-заготовка программы для AT98S52 ; version 1.01 KOBRA softvare ; only c51asm.exe assembler! ;---------- ; ; Projekt _______kotios ( kotuino mode2 ) ; Filename ______kotios.asm ; File version __0.1 ; начато 16 мая 2021 года ; Autor _________BORIS KRUTITSKIY ; ;---------- $pagewidth (255) $da $include (kotios\baseinc\kotuinko.inc) ;---------- $include (kotios\librus\dfn_ios.txt) ; файл объявленных имен, бит и констант $include (kotios\librus\mac_ios.txt) ; файл описания макросов ; вместо name project подставляется имя файла соответствующего проекта ; шаблоны имеют name project = proto ; системная обработка $include (kotios\librus\io_sys.txt) ; файл переключения в автовыбор для ; переключения памяти программ с РПП на ВПП ;---------- ; ; файлы пользовательской программы ;
Ранее уже писано было - это МК семейства MCS51 выпускаемые ATMEL - AT89C/S и там с десяток разновидностей. Атмел студио поддерживает только AVR микроконтроллеры. Для MCS51 атмелем был сделан кейл-подобный ассемблер (c51asm.exe) с запуском из командной строки. Ссылки на инструмент разработки были еще где-то в начале "винной"... ( https://radiokot.ru/forum/viewtopic.php?f=62&t=94201 ) А как сегодня разыскать на сайте микрощипа - сказать трудно... там и до документации по современным AVRкам докопаться не так легко... Разве что еще разок подготовить архивчик для каталога с настроенными прожками и запускающими батниками да в сундук КОТА предложить к размещению (чтоб потом по ковырдесят раз не копаться в архивах)...
Пока что вот такая "напоминалка" - архив каталога, размещаемого в корневом каталоге диска D (иначе переписываем *.bat файлы в соответствие имеющемуся). https://disk.yandex.ua/d/acM65G-9okpINw Рассчитано для работы в DOS окне (как в ХР х32, так и в DOS окне 7ки и 10ки) - единственно cmd.exe для ХР х32 уже в каталоге, а для 7-10 надо будет его соответственно туда скопировать. В каталоге также портабле версия редактора dpad. Запускающий батник для AD2500 комплекта - a.bat для c51asm - at.bat Так что - разобраться таки можно будет.
И постигла меня ПЕЧАЛЬКА... Все в теории и на макетке вроде так как требуется, но вот старую AT89C51 никак в режим программирования вогнать не удалось... Сигнатурку видим, ПЗУ читаем, а прошивать - никак. Предположительно ошибки разводки платки... возможно преобразователь (хотя на осциллограммах все без нареканий...) или вариант обмена с шинным расширителем придется модернизировать... Вобщем пока придется отложить ту "жгучу платку" в приложении к AT89C51 да проверить на всяк случай сам МК на заведомо исправном программаторе все ж валялся весьма долго... В худшем случае модернизированная схемка "прожигайки" https://img.radiokot.ru/files/20529/2ldyvr98hd.GIF и "менюшкин интерфейс" пойдут для работы с менее привередливыми к скоростям железячками.
Придется таки отказаться от комбинированной системы управления, задав все критичные функции на шинный расширитель. В принципе как-то не ново - уже на ISP варианте сталкивался с "ограичением на медлительность", да ранее примерно тот же подход был... Так что перепахамс схемку "прожигалки" в плане "новых мыслей" вот под такое: https://img.radiokot.ru/files/20529/2lfi1e39e3.JPG а далее ... все заново переписывать... мнндяаа... Вот, кстати, весьма древний вариант подобного устройства (самого простейшего) https://img.radiokot.ru/files/20529/2lelek3h67.GIF Кому-то давненько отдал - да и чегодня бы все равно пришлось интерфейс переделывать - та железяка под LPT была заточена... ЭЭЭХХХхххх.... Антикварьять - ностальжи...
Продолжаемссс работу над программатором для 40-лапых... Вторая попытка для модуля "прожигайки" с измененной чуток схемкой и подизвращенная прожка для контроллера "прожигайки":
ДОСАДКО... Совсем упустил из виду пакостную особенность параллельного режима - при установленных флагах защиты кристалл читается как "пустой"("чистый"), но запись данных в него провести невозможно. А вот статус бит защиты у АТ89С51/АТ89С52 аналогично сигнатуре просмотреть невозможно (их можно только установить или сбросить). Неделя к.... Зато и схемку и алгоритм вычухал по максимуму... Теперь чуток отредактировать "грязючку" да описание работы и можно будет выгрузить "на всеобщий поцарапс".
Для работы в ПК как и ранее применяется терминал: https://sites.google.com/site/terminalbpp/ выбираем версию Terminal20130116.zip - эта стабильна и наиболее наворочена. Для работы с АТ89С51/АТ89С52 была изготовлена «жгучая плата» FB4012 с собственным МК «периферийного расширителя» на базе AT89S51 (прошивка для которого одинаково работает и в АТ89С51) с прошивкой fb.hex версии 0.4.
Прошу прощения, что влажу с немного посторонним вопросом. Но возможно здесь, как в довольно близкой по смыслу теме мне подскажут решение. Жизнь принуждает искать параллельный программатор для 89C51RD2 с памятью программ 64КБ. Доставлись пару таких МК, в которых умудрились затереть заводской загрузчик, и теперь они не программируются через утилиту Flip, но путем тщательных поисков на просторах интернетов была найдена статья https://ra4nal.ontvtime.ru/prgrd2.shtml где в прикрепленных файлах нашелся драгоценный загрузчик. Осталось его восстановить. В продаже необходимого программатора я найти не могу, даже знаменитый TL866 его не поддерживает, как и Willem для LPT-порта. Все найденые варианты программируют максимум 32КБ памяти. Возможно прийдется что-то мудрить самому. Я не уверен, что потяну самостоятельную разработку софта для ПК, но небольшой опыт написания программ под ПК на Pascal имеется. Пока со стороны железа рассмативаю самодельный вариант на AT89S52+КР580ВВ55 (имеются в наличии). 2 порта КР580ВВ55 использовать для задачи адреса, а 3-й для шины данных. Еще пару выводов AT89S52 для всяких служебных входов 89C51RD2 (типа ALE, PSEN и пр.). На стороне ПК простенькая прога, которая будет слать в СОМ-порт команды/данные, и на стороне программатора AT89S52, которая все это принимает и выставляет необходимые уровни на своих ногах и ногах расширителя КР580ВВ55. Почему КР580ВВ55 ? Она 1 по количеству выводов заменяет кучу всяких мультиплексоров/шинных формирователей, а мне важна простая аппаратная часть (как можно меньше корпусов микросхем). Жизнеспособная идея ? Если вам известен готовый программатор, который может запрограммировать загрузчик в самый конец 64КБ памяти 89C51RD2 - пожалуйста дайте знать.
Последний раз редактировалось Пока_без_кота Пт авг 27, 2021 09:50:19, всего редактировалось 1 раз.
давно это было... но вроде как для параллельного программирования КР580ВВ55 не нужна, ног и так должно хватать. или там USART по пинам пересекается с шинами данных/адреса?
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Главный вопрос - протокол загрузки... когда-то пытался подобраться к этим RD (и "понавороченнее") да кроме Flip ни Х/З не обнаружил... Может плохо искал.... Грузить дамп из ПК задача осложняемая необходимостью "притормаживания" протокола обмена по последовательному каналу. Для обхода данного пункта и применяются подобные котуинке решения - сброс сразу всего массива в буферное ОЗУ. А уже делее работает сам "удаленный прошивальщик" всего-то с применением простейшего интерактива с ПК. Второй пункт - минимизация "петель сигнальных токов" - генерацию тайм-слотов и контроль критичных данных передаем конечному "жгучему МК" - так и в прошивайке для АТ89Сх051 и в прошивайке для АТ89С51/52 сделано - "жгучая голова" непосредственно под безнажимкой. А вот командный МК можно и на удалении выставить. В качестве приемника - накопителя я бы чего-то способного управлять двумя-четырьмя микросхемами ОЗУ поставил... Там любой кристалл с возможностью грузить внешнее ОЗУ хош в аппаратном, хош в программном варианте подойдет. Второй кристалл - обеспечение шин сигналов управления. В конструкции надо много "вольных лапок".... Как вариант... платку ардуино-мега возможно будет эффективнее использовать для интерфейса с ОЗУ и шинами адреса/данных при дополнительном "жгучем периферийнике" или на 40-лапке MCS51 или на АВРке. Кстати... шины адреса/данных ОЗУ можно совместить с шинами адреса/данных безнажимки - так уже в прошлом делал. Вот примерно как это решение: https://img.radiokot.ru/files/20529/2lelek3h67.GIF Хотя... такой вариант можно и в AT89S8252/8253 при условии, что основная программа жестко привязана к текущей конструкции и к конкретному МК (несменяемая - т.е. программатор только для определенного типа МК). Тогда базовый загрузчик дампа от котуинки b52m1(грузит только данные) плюс собственная программа для программатора, внешнее ОЗУ в 64к*8 с "двусторонним доступом" и (возможно - если лапок не хватит) дополнительная "жгуча головушка" на чем удобнее. Интерфейс с ПК аналогично котуинке для PG4012 интерфейс со жгучей головой - bspi. Единственно тогда лапок и на управляющие выводы хватило (прошивались не такие "жирные" кристаллы). На сегодня с загрузчиком котуинки пара выводов может быть в той схеме высвобождена.
Последний раз редактировалось BOB51 Пт авг 27, 2021 10:41:38, всего редактировалось 3 раз(а).
вообще говоря, если задача состоит только в восстановлении парочки доставшихся в наследство МК, то городить собственный программатор и писать для него софт - крайне неразумное решение. куда разумнее поискать в округе кого-либо с профессиональным программатором и решить проблему за пару банок пива. ну или чего-то там другого... выйдет и быстрее, и дешевле, и надежнее.
Добавлено after 4 minutes 5 seconds: у меня, кстати, есть такой программатор для DIP-корпусов
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Кому уж чего проще - до определенного размера массива дампа у котуинки больше преимуществ - всего-то "жгучку"-приставку собрать да прожку написать. Единственно пока у меня накопительный буфер до 32к*8 абсолютно свободно использоваться может. Вариант собственного "дисковода" на ОЗУ/ЕЕПРОМках еще вылеживается...
... городить собственный программатор и писать для него софт - крайне неразумное решение... у меня, кстати, есть такой программатор для DIP-корпусов
Да, я понимаю, неразумно. Поэтому и рассматривал в первую очередь покупной вариант. Знакомых с таким железом нет, я тут сам местный прошивальшик AVR/PIC. А от Вас я далеко. А восстановить хочется, эти МК у меня уже пару лет валяются, и мысль довольно навязчива. Глянул даташит - вроде как не хватит мне голого МК без расширителей. На прошивающей стороне 32 управляемых вывода. Минус 2 вывода на UART, остается 30 штук. Минус 24 (8+16) на данные/адрес. Остается 6 шт. А прошиваемый МК аж 9 для контроля требует. Я все правильно посчитал ?
если судить по рисунку (не вникая в специфику) у нас 12 лап управления и 16+6=22 линии "двойного использования" (если ОЗУ используется как в моем варианте выше) итогом 34 лапки надо плюс две на RS232 -> 36 свободных лап (не считая интерфейса буферного ОЗУ)... атмега8515/162 под ассемблером....? или таки ардуино-мега как более универсально-избыточный вариант (с внешней платкой расширения)...?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения