Модуль AT89C51ED2 для Pinboard II

  Контроллер изначально ускорен в два раза (по сравнению с прототипом i8051), т.е. просто установив бит в регистре можно сократить время исполнения команды с 12 циклов до 6.
  Кроме AT89C51ED2 применить в нем можно любой контроллер из серии AT89C51, AT89S51, AT89C52, AT89S52 в корпусе TQFP44 но функциональность будет урезана соответственно. Выпускается более улучшенный вариант контроллера AT89LP51(ED2) со временем исполнения команды 1 такт.




Выводы контроллера

Все выводы контроллера разведены на гребенки (J1), параллельные гребенкам краевого разьема модуля (J0). Там где это имеет смысл, выводы контроллера и краевого разьема расположены напротив. Это упрощает их соединение джампером.



Например выводы SPI (SS, MOSI, SCK, MISO) и UART (TxD, RxD). Т.к. у данного контроллера один UART канал, а у платы их два, выбор канала производится соответствующими джамперами (16, 17 или 18, 19).



Вывод выбора внутренней/внешней памяти программ (EA, 30) подтянут к VCC резистором (по умолчанию выбрана внутренняя) и расположен напротив GND.

Напряжение питания

Модуль имеет два стандартных напряжения питания, 5V и 3,3V. Они выбираются джампером J3 и не требуют настроек и переключений на самой Pinboard II.

Подключение кварцевого резонатора

Иногда, когда не хватает возможностей встроенного тактового генератора, или нужна какая-то специфическая частота, например для UART, используют внешний кварцевый резонатор. Для него на плате модуля предусмотрена цанговая панелька, куда можно воткнуть любой из выводных кварцевых резонаторов. Для получения точных частот UART нужно использовать кварцевые резонаторы из следующего ряда:
  • 1,8432 МГц
  • 3,6864 МГц
  • 4,9152 МГц
  • 6,1440 МГц
  • 7,3728 МГц
  • 9,8304 МГц
  • 11,0592 МГц
  • 12,2880 МГц
  • 14,7456 МГц
  • 18,4320 МГц
  • 19,6608 МГц
  • 22,1184 МГц
Вот здесь можно посмотреть относительную ошибку от частоты кварца UART.

Интерфейс внешней памяти

  Контроллер имеет интерфейс внешней памяти и он разведен на модуле, поэтому выходы регистра-защелки адреса также выведены на разьем (J2). Контакт RAM (J2.1) в этом разьеме служит для feedback, т. е. возможности отключения произвольных адресов установленной SRAM внешним дешифратором.
Контроллеры i51 изначально расчитаны на работу с интерфейсом внешней памяти. Т. е. ядро контроллера одно, а если не хватает стандартных возможностей, необходимые устройства ввода/вывода навешиваются извне по необходимости, используя этот интерфейс



Сброс и программирование

  Контроллер сбрасывается высоким уровнем на ножке RESET при включении питания за счет зарядки конденсатора через внутренний pull-down резистор. Для ручного сброса предусмотрена тактовая кнопка в нижней части модуля. На модуле применена кнопка SWT-7 (от CD-ROM), рабочая поверхность расположена сбоку.
Данный контроллер имеет возможность ISP программирования через интерфейс SPI, и при этом может использоваться сигнал RESET. Для удобства этот сигнал выведен на гребенку рядом с разьемом SPI. Конденсатор и внешний сигнал пришлось развязать через диодно-резисторный элемент ИЛИ (CVD1, внутренний pull-down резистор). Предусмотрена возможность установки внешнего pull-down резистора R*.
  Контроллер имеет специальную область ROM размером 2048 байт. В ней расположены неубиваемый и неперешиваемый загрузчик и низкоуровневые процедуры работы с Flash памятью. Программно из кода эта область недоступна. Для аппаратного доступа извне нужно:
  • Физически соединиться с USART контроллера.
  • Запустить на компьютере программу FLIP от Atmel.
  • На контроллере посадить на землю PSEN (J4).
  • Подать питание на контроллер, или нажать RESET.
После этого должна установиться связь, FLIP выведет сигнатуру и характеристики контроллера. Связь устанавливается на максимально возможной скорости, у меня это 115KБод.

Отладка программ

  Архитектура i51 разрабатывалась тогда, когда о JTAG не только не говорили, о нем даже не задумывались. Вся отладка ограничивалась дерганьем ножкой и выводом в консоль. Для облегчения отладки было предложено множество мониторов — резидентных отладочных программ. Модуль задумывался для возможности работы с одним из самых совершенных — Keil Monitor-51 (или подобным). Для этого на модуле предусмотрена панелька для SRAM памяти XDATA и логика переключения ее в режим фон-Неймана. Модуль спроектирован под чипы памяти в узком корпусе PDIP32, это чипы от кеш памяти 386/486 процессоров. У меня нашлись TE12512A-15K (TM TECH), UM61512AK-15 (UMC). Маркировки еще нескольких можно посмотреть здесь.
Коротко о принципе работы Monitor-51.
  МК i51 имеет Гарвардскую архитектуру, т. е. области памяти программы (ROM, Flash) и данных (RAM) физически разделены и программа не может исполняться из области данных. Поэтому динамически изменять (для установки и снятия брекпойнтов) память программ невозможно. Это возможно в архитектуре фон-Неймана, где память программ и память данных занимают общее адресное пространство в RAM. Здесь такого принципиального ограничения нет, и программа может сама себя перезаписывать. Именно на этом основана работа резидентных Monitor51 и подобных. Аппаратным довеском процессор Гарвардской архитектуры на время отладки превращается в процессор архитектуры фон-Неймана. Это позволяет отладчику ставить в прозвольных местах программы брекпойнты и при этом ходить взад/вперед. Аппаратный довесок, это наличие дополнительной RAM и логики дешифратора, нужных только на время отладки, и в рабочем режиме (гарвардская архитектура) доступных только по инструкции MOVX.
На субплате роль дешифратора выполняет диодно-резисторный элемент И (CVD2, R7) который при помощи джампера J4 переключает дополнительную RAM на время отладки в режим доступа по фон-Нейману.
Обратная связь монитора с отладчиком должна осуществляться по USART контроллера. Остальное уже предусмотрено в Monitor51, нужно только его правильно сконфигурировать. Monitor51 поддерживает программирование на ASM и C. Вот аппаратные и программные требования Monitor51 (с сайта Keil, файл Mon51.pdf):
Следующие требования должны быть выполнены для правильной работы Monitor-51:
  • ядро 8051 CPU
  • 5 Кбайт памяти кода (Flash), начиная с адреса 0 (загружаемая программа Monitor-51)
  • 256 байт внешней памяти данных (RAM XDATA) и 5 Кбайт буфера трассировки (опционально). Кроме того, внешняя память данных должна быть достаточно большой, чтобы вместить всю программу (код и данные). Вся эта область внешней памяти должна иметь архитектуру фон Неймана, это означает, что доступ к ней должен быть из пространств XDATA и CODE. Общий способ это сделать заключается в обьединении сигналов процессора /PSEN и /RD логическим элементом И. Выход этого элемента затем подключается к контакту /RD оперативной памяти.
  • Последовательный интерфейс с таймером, как генератором скорости передачи.
  • От 1 до 5 выводов порта, если вы используете аппаратную адресацию банков памяти (2-32 банков). См. пример аппаратных схем в руководстве 8051 Utilities User's Guide в разделе «Bank Switching Configuration» для более подробной информации. Все эти банки памяти должны иметь структуру фон Неймана!
  • Дополнительные 6 байт стека (IDATA) в программе пользователя для тестирования.

Все остальные аппаратные компоненты могут быть использованы в приложении при отладке.

Печатная плата, верх, дорожки и надписи:



Печатная плата, верх, монтаж и спецификации:


Печатная плата, низ, дорожки и надписи:



Печатная плата, низ, монтаж и спецификации:



Приложены:
AT89C51ED2.zip — печатка в lay6;
Circuit.png — увеличенная схема;
SubMobule.png — увеличенная распиновка разьемов;
  • +6
  • 01 декабря 2014, 19:11
  • anakost
  • 3
Файлы в топике: AT89C51ED2.zip, Circuit.png, SubMobule.png

Комментарии (33)

RSS свернуть / развернуть
осталось догадаться зачем.
0
  • avatar
  • xar
  • 01 декабря 2014, 19:38
а так все красивенько, аккуратненько. особенно оформление.
0
и чем так красиво всё рисуем?
0
MS Uffice Visio 2007
0
Шоб було! А серьезно, иногда приходиться поддерживать такую технику…
+1
где то валяется тренировочная с 8212/32RAM/EE/RTC, с самопальным монитором/дизассемблером/ассемблером. Классика, однако…
0
8252 склероз…
0
Винтаж, однако. Говорите что хотите, платы с жирными керамическими дипами, резисторами с цветовой маркировкой и россыпью джамперов услаждают мой взор и волнуют сердце. Третьего дня выгреб из сусеков самопальный STK200 так чуть не целовал его из ностальгии.
+4
Раз уж зашло за 51… может, есть смысл сделать модуль на C8051xxx (Silabs)? Предположительно — F97x, они достаточно «нафаршированы» при вменяемом ценнике.
(Ну, каждый кулик своё болото хвалит. :) )
0
  • avatar
  • Katz
  • 03 декабря 2014, 00:04
Но чтобы он начал продаваться надо чтобы кто-то написал цикл статей о 8051 :). Хотя конечно ядро 51 и старинные системы с внешним ОЗУ, резидентами-отладчиками это две большие разницы. Что мне нравилось в старых 51 так это быстрые прерывания благодаря 4 наборам регистров.
+1
Но чтобы он начал продаваться надо чтобы кто-то написал цикл статей о 8051
За 30 лет статей написано предостаточно.
51 так это быстрые прерывания благодаря 4 наборам регистров.
Разве была у них такая фича? Может перепутали их с какими-то другими МК?
Там и регистров-то пару штук, зачем там наборы?
0
Была, всё правильно. Восемь регистров, четыре банка.
0
Восемь регистров, четыре банка.
Но банк при этом автоматически не переключался при входе в обработчик прерывания? Да и прерываний всего два уровня было.
Или не так?
0
Не «всего два» а целых два. Цимес в том что смена контекста делалась в один момент: прыгнули в прерывание и безо всяких пушей с попами прокрутили прерывание и моментально назад. Вообще по сравнению со своим ровесником 8086, 51 это на редкость продуманная и гармоничная архитектура. Да, в наличии лёгкая ебатория с памятью — переключения банков, длинные прыжки итд, но это издержки технологии тех лет. Именно за быстрые прерывания (а значит лучшая работа в реальном времени) и продвинутую битовую арифметику и полюбили эмбедщики 51.
+1
Не «всего два» а целых два.
Ну в общем не так и мало для тех времён, да.
прыгнули в прерывание и безо всяких пушей с попами прокрутили прерывание и моментально назад.
PSW при входе в прерывание автоматом сохранялось? Тогда да — быстро. Нужный банк выставил и работай с ним.
0
PSW при входе в прерывание автоматом сохранялось?
По моему нет. Но все равно, сохранить только один регистр быстрее, чем несколько.
0
Время не стоит на месте, у данного контроллера:
«9 источников запроса на прерывание с 4 уровнями приоритета»
0
Одно дело — рабочие регистры, их-то во всех 51 4 банка по 8, и совсем другое — SFR. И как раз у силабсов банков SFR несколько штук (обычно 2-3). Классические SFR дублируются по всем банкам, а вот специфическая периферия — нет; хуже того, в зависимости от конкретного семейства имеет место быть различная адресация — как номер банка, так и адрес внутри банка. То, что после изменения банка SFR нужно вернуть всё в исходное состояние — аксиома, которую частенько забывают…
(А, хватит лирики...) ;)
0
По всем семействам понаписывали всякого, но таких качественных курсов как по AVR от DIHALTа или по STM32 здесь в сообществе не так много. А из такого и начинается массовое использование.
0
По всем семействам понаписывали всякого
Документации от производителя недостаточно что ли?
AVR от DIHALTа или по STM32 здесь в сообществе не так много. А из такого и начинается массовое использование.
Зачем преувеличивайте значение этих курсов — и без них Меги и иксмеги и АРмы осваиваются, было бы зачем их осваивать.
0
Не надо путать «туризм с эмиграцией». Если мне прикажут и заплатят- буду программировать хоть КР580. Но большинство присутствующих делают электронику в своё удовольствие, и для многих именно статьи здесь, на радиокоте, вертепе и помогли начать. Учебные курсы делают для дополнения документации, а не вместо.
+2
Не надо путать «туризм с эмиграцией»
Ок не будем.
вертепе
Что за вертеп такой?
0
vrtp.ru/
Спасибо.
0
дак вряд ли тем, кто делает в свое удовольствие будут интересны эти контроллеры.
0
Да фарша хватает, и скорость аналогична AVR. Смущает Crossbar на выводах. При разной используемой аппаратной конфигурации номера выводов с одинаковыми функциями будут отличаться. Или нет?
AT89LP51ED2 имеет ту же скорость и похожие возможности, проигрывает только в аппаратной отладке…
0
Касательно отладки: клон EC3 вполне себе можно запустить в серию. Не сложнее, чем ST-Link, и по ценнику сопоставимо. Но спросу нет…
0
Ого куда ответ уехал…
Это на комментарий Katz о возможности модуля на C8051F97x.
0
Crossbar — да, та ещё штучка, там же не произвольное назначение пинов на периферию, а сдвиг… тут придётся крепко попыхтеть и не факт, что что-то толковое получится. Во всяком случае появляются ограничения, которые можно решить разве что коммутацией уже на самом модуле. :(
0
На сегодняшний день Silab очень дорогие. Из всей номенклатуры С8051Fxx — самые востребованные это мелкокорпусные, со стандартным набором перефирии и объемами памяти. Пример: C8051F300 and C8051F330.
0
Это старые серии дорогие (0xx...4xx). А 800-я и 900-я серии стоят вполне вменяемо.
www.findchips.com/search/C8051F920
Есть и в районе доллара за штуку.
www.findchips.com/search/C8051F850
Кроме прочего, у них потребление почти вчетверо ниже, чем у старых серий (150...170 мкА/МГц против 500...600; сравнимо с STM8L и т.п.).
0
F920 — очень интересный контроллер в соотношении корпус/функционал/цена. Правда у нас его продают по 4,5 убитых енотов.
В плане миниатюризации и функционала — Silab в движется в первых рядах (кроме BGA корпусов). Часто встречаются именно их мелкие контроллеры. Да я и сам грешен, тоже использую F300. Только положительное впечатление.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.