Easyelectronics.ru

Электроника для всех
Текущее время: 26 фев 2021, 03:56

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 13 мар 2013, 18:52 
Заглядывает иногда

Зарегистрирован: 13 мар 2013, 17:30
Сообщения: 36
Доброго времени суток уважаемые форумчане. Пишу программу на Си для одного измерительного устройства на базе данного МК, точнее переписываю, программист, который ее писал на АСМ уволился и не доделал, соответственно задачу поставили мне. Дело в том, что устройство уже собрано, программатора пока нет и нет желания выпаивать МК для его прошивки. Покопавшись в даташите и в сети наткнулся на возможность прошивки МК без программатора и не выпаивая его. Раньше с этим не сталкивался и инфа немного сумбурна. Кто-нибудь сталкивался с этой возможностью, не могли бы поделиться опытом, как лучше организовать прошивку?

PS Как я понял из даташита, то выполнения основной программы должно начинаться с проверки определенных регистров для разрешения внутрисхемной прошивки, только какие-то регистры должны быть установлены аппаратно, а какие-то программно, вот тут я в тупике, замкнутый круг получается, т.е. в МК изначально должна быть какая-то прошивка, позволяющая его перепрошивать в дальнейшем без использования программатра


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 13 мар 2013, 22:12 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 12 дек 2012, 00:42
Сообщения: 129
Прошивал когда-то давно AT89C51ED2 и Themic T89C51RD2 через UART
Для прошивки нужна программа Flip (поищите на сайте атмела) и кажется какую-то ножку замкнуть на питание или землю, не помню уже. В новый чистый МК всё заливается без установки каких-то битов. Возможно, битами там запрещалось программирование в дальнейшем, не помню уже, читайте документацию


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 16 мар 2013, 02:28 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4381
Откуда: г. Липецк
Посмотрите здесь - http://forum.easyelectronics.ru/viewtopic.php?f=6&t=10755&hilit=+at89c51ed2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 16 мар 2013, 17:26 
Заглядывает иногда

Зарегистрирован: 13 мар 2013, 17:30
Сообщения: 36
Ага, спасибо прочел эту тему и еще кое-что нарыл, может кому-нибудь понадобится

Целый день сегодня рылся в документации и кое-что нарыл. Это ссылка с официальной страницы МК
http://www.atmel.com/Images/doc7716.pdf
Если я все правильно понял то для внутрисхемной загрузки достаточно прицепить ножку PSEN на землю (установить в 0), а ножку EA подключить к Vdd (установить 1) далее скачать бесплатную программу загрузчик FLIP (FLexible In-system Programmer) и с его помощью прошить МК. Я так понял после прошивки эти ножки надо вернуть в исходное состояние, так как это может вызвать порчу МК или его некорректную работу, еще в примечании написано, что к PSEN надо подключить резистор в 1 кОм.

И вот еще одна интересная ссылка, где эта информация так же находит подтверждение
http://ecee.colorado.edu/~mcclurel/AT89 ... _Guide.pdf
В документации я прочитал, что режим ISP изначально доступен с завода, но при желании его можно перепрограммировать и вообще стереть всю флеш-память.

Подробная информация в руководстве МК с 85 стр, но там немного запутано, но выше написанная информация подтверждается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 16 мар 2013, 20:35 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4381
Откуда: г. Липецк
shitoryu писал(а):
...
Если я все правильно понял то для внутрисхемной загрузки достаточно прицепить ножку PSEN на землю (установить в 0), а ножку EA подключить к Vdd (установить 1) далее скачать бесплатную программу загрузчик FLIP (FLexible In-system Programmer) и с его помощью прошить МК. Я так понял после прошивки эти ножки надо вернуть в исходное состояние, так как это может вызвать порчу МК или его некорректную работу, еще в примечании написано, что к PSEN надо подключить резистор в 1 кОм.
...

Цитата:
- PSEN — разрешение внешней памяти программ; выдается только при обращении к внешнему ПЗУ;
- ЕА — отключение внутренней программной память; уровень 0 на этом входе заставляет микроконтроллер выполнять программу только внешнее ПЗУ; игнорируя внутреннее(если последнее имеется);

Про PSEN вы поняли все правильно, а EA на этих МК и так всегда на VCC, т. к. размера флеша им хватает и подключать внешний ни к чему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 08 июл 2013, 14:44 
Заглядывает иногда

Зарегистрирован: 13 мар 2013, 17:30
Сообщения: 36
Что бы не плодить темы спрошу тут, достал программатор AutoProg, пробовал прошить им, так вот и во время прошивки, и во время стирания выдается ошибка "Сработала защита по току", в руководстве написано, что такое сообщение выдается, если микросхема повреждена, есть ли еще какие-нибудь варианты? Кстати, когда считываю биты защиты, то все 3 стоят якобы


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 27 авг 2013, 18:57 
Заглядывает иногда

Зарегистрирован: 13 мар 2013, 17:30
Сообщения: 36
Никак не разберусь с внутрисхемным программированием, может помимо выше написанного, есть еще какие-то тонкости?
Для сенбя пока такой алгоритм наметил из информации полученной из сети
(1) ЕА = 1
(2) Нажать и задержать RESET
(3) Нажать и задержать PSEN = 0 у меня джампер, который замыкает на землю
(4) Отпустить RESET
(5) Отпустить PSEN

После этого МК может быть прошит с помощью FLIP, однако программка для прошивки выдает Timeout error


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 28 авг 2013, 08:11 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4381
Откуда: г. Липецк
1. FLIP должен быть запущен до отпускания RESET.
2. Отпускать PSEN нужно после входа в загрузчик. Хотя это не критично, можно вообще не отпускать при прошивке, а отпустить перед последующей перезагрузкой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 28 авг 2013, 10:32 
Заглядывает иногда

Зарегистрирован: 13 мар 2013, 17:30
Сообщения: 36
anakost писал(а):
1. FLIP должен быть запущен до отпускания RESET.
2. Отпускать PSEN нужно после входа в загрузчик. Хотя это не критично, можно вообще не отпускать при прошивке, а отпустить перед последующей перезагрузкой.

Спасибо за отклик, я все так и делаю, дело в том, что FLIP даже не соединяется, т.е. ошибка выдается при попытке соединиться с устройством, пробовал разные варианты, результат тот же.
А Вы написали, что отпускать PSEN после входа в загрузчик, а как понять, что он в загрузчике, если нет соединения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 28 авг 2013, 11:30 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4381
Откуда: г. Липецк
shitoryu писал(а):
... как понять, что он в загрузчике, если нет соединения?

Никак, стандартный проявляет себя только через интерфейс.
А вы правильно запускаете FLIP? Последовательность:
Запускаем программу FLIP, выбираем в меню Device -> Select... -> AT89С51RC2, жмем вторую кнопочку со шнурком на картинке (Select a Communication Medium), выбираем итерфейс, в появившемся маленьком окошке жмем Open. Появилось окошко программатора FLIP, отпускаем RESET, FLIP должен прочитать сигнатуру камня и версию загрузчика.
Если вы используете СОМ поверх USB нужно к FLIP подключить драйвер.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 28 авг 2013, 12:15 
Заглядывает иногда

Зарегистрирован: 13 мар 2013, 17:30
Сообщения: 36
anakost писал(а):
shitoryu писал(а):
... как понять, что он в загрузчике, если нет соединения?

Никак, стандартный проявляет себя только через интерфейс.
А вы правильно запускаете FLIP? Последовательность:
Запускаем программу FLIP, выбираем в меню Device -> Select... -> AT89С51RC2, жмем вторую кнопочку со шнурком на картинке (Select a Communication Medium), выбираем итерфейс, в появившемся маленьком окошке жмем Open. Появилось окошко программатора FLIP, отпускаем RESET, FLIP должен прочитать сигнатуру камня и версию загрузчика.
Если вы используете СОМ поверх USB нужно к FLIP подключить драйвер.

запускаю флип, подключаю к устройству питание и RS-232 (пробовал и наоборот, сначала устройство потом флип), выбираю мой МК, зажимаю RESET, зажимаю PSEN, нажимаю иконку со шнурком, выбираю порт RS-232, далее появяется окно где можно выбрать порт, тут собственно только СОМ1 и baudrate (в даташите вроде написано выбирайте скорость по дефолту, я перепробовал все варианты), далее жму кнопку Connect и вылетает ошибка, о которой я выше писал.

Это один из вариантов, а так я все варианты перепробовал.
PS использую только RS-232, USB нету.
PPS а может быть вариант, что разработчик Rx и Tx местами перепутал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 28 авг 2013, 12:36 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4381
Откуда: г. Липецк
К сожалению сейчас под руками нет камня, даже СОМ шнурка нет, поэспериментировать не на чем.
Кстати а какую OS вы применяете?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 28 авг 2013, 12:47 
Заглядывает иногда

Зарегистрирован: 13 мар 2013, 17:30
Сообщения: 36
anakost писал(а):
К сожалению сейчас под руками нет камня, даже СОМ шнурка нет, поэспериментировать не на чем.
Кстати а какую OS вы применяете?

Ось ХР.
А что Вы говорили по поводу драйверов на сом-порт?
А по поводу очередности все верно, еще раз для надежности:
(1) вкл флип
(2) вкл устройство
(3) зажать reset
(4) зажать psen=0
(5) попытаться приконнектиться и только потом отпустить reset
Просто в руководстве, которое я дал выше написано, что перед соединением устройство уже должно быть в режиме программирования. Хотя мне почему-то кажется, что очередность не имеет сильного значения, а проблема в чем-то другом. начну пожалуй с распиновки сом-порта


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 28 авг 2013, 13:50 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4381
Откуда: г. Липецк
Прошивал так же под ХР, драйвера стандартные. С очередностью мог немного напутать, подзабыл уже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 28 авг 2013, 15:48 
Заглядывает иногда

Зарегистрирован: 13 мар 2013, 17:30
Сообщения: 36
anakost писал(а):
Прошивал так же под ХР, драйвера стандартные. С очередностью мог немного напутать, подзабыл уже.

Спасибо за помощь проблема решилась, я оказался прав сигналы Rx и Tx вообще не доходили до МК, разрыв был. Осталось разобраться почему FLIP не хочет HEX файл загружать
в настройках кейла НЕХ формат НЕХ-80, а флип предлагает 386 и 86, возможно причина в этом...

проблема решилась, вот ответ:
Цитата:
It is possible that it is the path to your file that is the source of problems for Flip. Try copying your file to the root directory and opening it from there with Flip.

Example : copy your file to C:\myhexfile.hex


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 28 авг 2013, 16:08 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4381
Откуда: г. Липецк
Папка может быть любая, не обязательно корневая (ROOT). Но неанглийских (русских) букв FLIP не принимает. Я думал это уже всем программистам известно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 30 окт 2013, 11:00 
Заглядывает иногда

Зарегистрирован: 13 мар 2013, 17:30
Сообщения: 36
Не хочу плодить нубских тем, тут спрошу.
Что делать, если оперативки не хватает и я вылез за пределы 128 байт области памяти data, как я понял есть еще одна область в 128 байт с косвенной адресацией, если ничего не путаю, то эта область в кейле именуется, как idata, можно ли ее использовать для переменных, не влезающих в data? Еще раскопал некую область xram, судя по даташиту она таки внутренняя и принимает размер от 256 до 1024 байт, видимо можно использовать и ее, но пока не понятно как именно.

Кстати, в настройках проекта есть вкладка Memory Model, с 3-мя пунктами по дефолту стоял Small: variables in DATA, но после выбора
Compact: variables in PDATA или Large: variables in XDATA проект стал компилиться и ошибка *** ERROR L107: ADDRESS SPACE OVERFLOW больше не вылезает, но в зависимости от того, какой пункт выбран 2 или 3 конечный файл имеет отличающийся размер. Для XRAM я не задействовал регистр AUXR, хотелось бы контролировать процесс, а не слепо доверяться компилятору.

ЗЫ Покопался сейчас... idata судя по всему действительно около 128 байт ram, однако при объявлении переменных типа unsigned long xdata name bkb unsigned long pdata name они все записываются в область xdata, причем в настройках проекта вернул Small: variables in DATA


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AT89C51RC2 ISP внутрисхемное программирование
СообщениеДобавлено: 30 окт 2013, 19:26 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4381
Откуда: г. Липецк
Не люблю бурчать, но сишный подход налицо. Там где ассемблерщик просто пропишет конфигурацию в регистр управления RAM и будет ее легко использовать, сишнику надо прописывать какие то конфигурации компилятора, линкера, и т. д. Если хотите, подскажу мнемонические имена регистров конфигурации RAM, но для этого придется полазить по даташиту.
Описание - http://www.gaw.ru/html.cgi/txt/ic/Atmel/micros/mcs51/at89c51rd2_ed2.htm
Цитата:
•Встроенное расширенное ОЗУ емкостью 1792 байт (XRAM)
Программно выбираемый размер (0, 256, 512, 768, 1024, 1792 байт)
768 байт выбирается при сбросе для совместимости с T89C51RD2

Команда MOV позволяет адресовать только 256 байт памяти, для доступа к XRAM используется MOVX.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB