Помнится когда самопальный программатор для AT89C2051 делал там также нюянс был - задержка при начале обработки (уже подзабылось конкретика) - в даташитах похоже до сих пор не отмечено
на стр.52 второй абзац снизу- оно? На след. стр. код приведен
Имелась ввиду некоторая задержка при начальном этапе прошивки из внешнего программатора - вспоминать надо конкретику... Когда те 2051 появились еще программаторов готовых дешевых не имелось - воть и делалась управляюшша прожка по даташиту, а про задержку опыт да "народна молва" подсказали. Базовые алгоритмы и по сей день "в запасниках" лежат (под тот же вышевыложенный в качестве примера садомазохизма "монструозо" с опторазвязкой изготовленные - кстати это последняя версия была, его прототипы где-то еще в середине 90-х помогали в работе, только схемки и прожки были на простобумаге - перечерчивать и влом и не слишком актуально).
Бегло прошелся по вашим вопросам, вряд ли смогу что-то путное написать, т.к. разбирался с STC, не особо вгрызаясь в их нутро. Потом отпишусь подробнее, сейчас напряг со временем. Вот сюда гляньте пока.
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Меня более режимы самопрограммирования беспокоят... Все же не использовать ЕЕПРОМку грех, а затереть по случаю загрузочную область - еще большая досада. Протокол загрузки лишь косвенно - с точки зрения наличия минимального аварийного уровня для восстановления порушенной загрузочной записи. У АВРовских моделей для такого случая общее стирание и/или параллельный высоковольтный вариант имеется... А у STC вроде ничего подобного официально не наблюдается... Или же начальный загрузчик "пустышки" в виде примитива без особого обращения внимания у пользователя.
помоему парится насчет этого не стоитну затрете бут случайно - прошьете потом в паралелном режиме скока биосоав убитых в 27 28 29 49чипах так перешито
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Я в программе часов (потом отказался) и паяльной станции использовал ЕЕПРОМ для хранения данных. Затереть что-то критичное ни разу не получалось. По сути это не ЕЕПРОМ, а флэш, она перед использованием должна стираться блоками по 500 байт, коих в 204ЕА 2 штуки, т.е. всего 1к. В другую область из своей программы вы не влезете. Да и в ДШ есть типовые листинги стирания, чтения и записи, запутаться, особенно опытному кодеру, невозможно.
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Флаг iap_contr.iapen открывает доступ к обеим областям isp/iap т.е. результат зависит только от адреса в iap_addrh:iap_addrl. Имея заявленные 4к памяти программ и 1к еепром из всего 6к ПЗУ теоретически в оставшееся пространство влезть вполне можно. Тем более, что где-то в текстах мельком заметил образец бутлоадера для загрузки... (или обшибся/промерешшилося?). Другое дело ежли блокировка в настройках компилятора (файл указаний линковки на запрет выхода из диапазона допустимых адресов) или еще лучше внутренними битами защиты в самом МК. В отличии от СИ ассемблер штука жестокая, ежли сам себя не ограничиш - выполнится все, чего поначирикал... Вобщемсс... практика покажет...
в описании большего МК на стр.486 и далее стр.683 и далее приведено описание. Видимо, для работы с ISP разница только в объеме памяти. Еще описание, С реализация ISP, сниффер участника этого сайта, программирование с помощью одинакового МК, реверс с известного сайта, мелкий проект
Есть у мня предположения... Да формулировка еще сырая... Намудрствовали китайцы весьма сильно... Ежли общее непрерывное пространство ПЗУ, то просто ограничения на доступ командой movc a,@dptr для защиты от чтения кода достаточно (да и чтение еепром проще), ежли нельзя перезаписывать область ISP, то к чему режим запуска на исполнение прожки из ISP области после программного ресета?... И на кой вообще включать режим работы с ISP/IAP для и без того автономно существующего аппаратного блока, обслуживающего обмен с обастью еепром - ежли доступ только с помощью блока IAP - то само его использование уж есть разграничение области доступа... Или все ж таки заводской бутлоадер где-то в отдельной области памяти закопан без права перезаписи, а режим прерзагрузки со стартом из области ISP кода просто дает возможность полного доступа ко всем областям ПЗУ?... Вобшшемсс... ПОКА отложу на некоторо время "на отлежку"... Да еще нюёнс - в перечнях обычно всегда есть кристалл с префиксом IAPxxxxxxxx - вот то вроде как "отладочный вариант"...
c маркировкой IAP- не отладочный кристалл, а весь объем EEPROM объединен с flash, т.е. последний больше аналогичного без маркировки IAP и вместо объема EEPROM доступен весь flash. Стр.632 и дальше. В приложенном архиве есть описание в Word (которое копируется) и в т.ч. упомянутый в нем iapisp.hex Ещепопалосьсовсемнемного ПО и плата
Именно потому я и назвал его отладочным - пользовательский код доступен для перезаписи из программы пользователя без мудрствования с ISP.
Скорее всего по логике ЕЕПРОМка должна записываться, читаться и стираться с помощью регистров ISP/IAP без установки IAP_CONTR.IAPEN = 1, а при единичке - открывать доступ к области ISP... а доступ к перезаписи области AP выполняться из запущенной на исполнение ISP ( с IAP_CONTR.IAPEN = 1 или 0???) НО... То глядеть надо...
Дык... мне ж не примеры нужны, а принцип правильной работы аппаратной части. Прожку и сам нашкарябаю!
А с примерами у STC даже в даташите "полный СУСАНИН"... Похоже таки логика работы модуля ISP/IAP ближе к моим умозаключениям, чем к тому даташиту, представляющему перевод на англицкий со китаяского. Надо будет тест-прожку нашкарябать и проверить "кит правее"...
Пока только один вопроса гложеть... Область ISP это одно и то же , что и системный загрузчик изготовителя, или все же системный загрузчик изготовителя - это отдельный модуль, а "область ISP" все же спецкусманчик для пользователя?
для ответа на эти вопросы и есть примеры- надо просто повторить в базовом варианте, перезаписать и снова попробовать. Если не поможет- то написать по указанным адресам письмо. Зачем изобретать, то, что уже есть и работает? Достаточно декомплилятором найти способ русификации программы, переделать интерфейс и проверить работу с готовыми платами. Даже эта работа с заранее исправным железом и работающими программами займет кучу времени и сил. В случае со своим вариантом затраты всего на порядок больше (даже при получении полож. результата)
Мне проще свой тест по документации написать, да и самоделка - прожка автору значительно понятнее и всегда для соответствующей коррекции в нужном направлении доступна. В тех примерах также разночтение реала и теории: "...
Код:
;/*Disable ISP/IAP/EEPROM function, make MCU in a safe state*/ MOV IAP_CONTR, #00000000B ;Close ISP/IAP/EEPROM function MOV IAP_CMD, #00000000B ;Clear ISP/IAP/EEPROM command ;MOV IAP_TRIG, #00000000B ;Clear trigger register to prevent mistrigger ;MOV IAP_ADDRH, #0FFH ;Move 00 into address high-byte unit, ;Data ptr point to non-EEPROM area ;MOV IAP_ADDRL, #0FFH ;Move 00 into address low-byte unit, ;prevent misuse
..." Так что же в вышеприведенном в адрес-регистр записывается 0x00 или 0xFF?
Ну да то по мере "пережевывания" потреблять будемссшшшсс...
Current H/W Option: . Do not detect the level of P3.2 and P3.3 next download . Power-on reset, use the general power-on delay . RESET pin behaves as I/O pin . Interrupt while detect a Low-Voltage . Thresh voltage level of the built-in LVD : 3.61 V . Permit EEPROM operation under Low-Voltag . Hardware do not enable Watch-Dog-Timer . Watch-Dog-Timer pre-scalar : 64 . Watch-Dog-Timer stop count in idle mode . Program can modify the Watch-Dog-Timer scalar . Do not erase user EEPROM area at next download
. MCU type: STC15F204EA F/W version: 6.7R
Complete !(2017-05-21 11:25:55)
"
На том пока и остановился дабы "передохнуть и осмотреться"
Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 28
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения