Итак продолжим вчерашние изыскания (https://orlovsn.wordpress.com/2011/01/05/ares-custom-package/) по созданию своего корпуса для ISIS/ARES. Корпуса для ARES мы создавать научились, теперь давайте прикрепим наш корпус к модели в ISIS (Proteus)
Штатные модели в ISIS можно разделить на три класса – модели реальных устройств (например 74HC595), модели виртуальных устройств (например осциллограф или Voltage probe) и моделируемые примитивы. Моделируемые примитивы это условные модели реальных устройств, без привязки к конкретной марке устройства – например устройство RESISTOR из библиотеки ASIMMDLS это условная модель резистора, которая как и положено имеет сопротивление, но не имеет ни корпуса ни производителя ни чего-либо еще. С резистором все просто — при импорте в ARES, система сама предложит выбрать для него корпус и сама его радостно привяжет – действительно, резистор то привязать не сложно, а вот с нашим 7ми сегментным индикатором все несколько хуже – если просто импортировать схему с его участием в ARES, то мы … его не увидим, даже если снять галку в его свойствах с “Exclude from PCB layout”. Это плохо, но мы это исправим!
Итак для начала открываем ISIS и создаем новый документ, добавляем новый компонент из библиотеки
Наш дисплей лежит в категории “Optoelectronics” в подкатегории “7-Segment Displays”, моделька называется 7SEG-MPX2-CA, его и добавляем на схему
Выглядит он вот так:
Тут нас ждет маленькое (а для кого-то и большое!) разочарование – у модели всего один комплект выводов A-G, и поделать с этим увы если что-то и можно, то довольно сложно (я лично простого пути увы не нашел, а учить isis sdk ради пары нужных мне моделек откровенно говоря желания не возникло). С другой стороны, многие (и я в их числе) используют только один комплект выводов в 7ми сегментных дисплеях, подключая второй комплект (для 3х цифровых дисплеев и третий и так далее) ножек к первому и выбирая включаемое число ножками 1/2(/3 для 3х цифрового и т.д) – в общем это стандартная практика позволяющая экономить ноги микроконтроллера или сдвиговых регистров, так что беда то в целом и не беда, но надо немного переделать наш вчерашний корпус. Открываем ARES, создаем пустой файл, размещаем на нем наш корпус 7S2D, выделяем его нажав правой мышкой например на вывод под ножку (напомню что нажимать надо в серую “дырку” по центру вывода) и выбираем Decompose Tagged Objects
Это разберет наш корпус на составляющие
Я долго пытался сообразить как добавить нетлист к модели, но так и не сообразил, к счастью на радиокоте подсказали что если назначить пинам в корпусе одинаковые номера, то они станут автоматически объединяться при автоматической прокладке дорожек! Разобрав корпус лезем в даташит и смотрим какие ноги с какими нам надо объеденить:
Это пин-аут нашего дисплея, видно что номер пина А1 = 15, а номер пина А2 = 10 т.е. что-бы они автоматически объединялись в одну дорожку, надо номер 10 заменить на 15, и так со всеми парными буквами (12 меняем на 13, 8 на 1, 6 на 3 и т.д). В результате у нас получается вот такой набор пинов в корпусе:
Корпус готов, надо его снова собрать – выделяем все элементы, кликаем правой мышкой и нажимаем Make Package – заметьте что надо выделять не только пины и ободок корпуса, но и название (строчку NAME=7S2D)!
При сборке корпуса система сама подхватит имя, описание и все опции что мы вводили при начальном его создании, при нажатии на ОК в окошке диалога создания корпуса, система спросит действительно ли мы хотим обновить уже имеющийся в библиотеке корпус с таким названием … да хотим! )
Надо нажать на Yes, система спросит обновить ли все вхождения корпуса в текущем документе – не критично но лучше тоже нажать на OK
Теперь возвращаемся из ARES в ISIS, где нам надо нашу модельку дособрать! Насколько я понял, ряд свойств модели, ISIS использует только при создании собственно модели, и редактировать или добавлять их к уже готовому устройству увы бесполезно. Итак клацаем правой мышкой на нашем дисплее и нажимаем на Decompose
Наш дисплей развалился на атомы, но самое главное что мы видим над ним строчки с кодом, который описывает собственно модель:
Аккуратно нажимаем на текст с кодом правой кнопкой мыши (аккуратно это что-бы не нажать на дисплей например) и выбираем Edit Properties
В результате выскакивает менюшка с кодом описания пока еще не нашей модели:
Вот код стандартной модели из протеуса:
{*DEVICE}
NAME=7SEG-MPX2-CA
ACTIVE=7SEG,8,BITWISE,DLL
HELP=DISPLAYS>POPUP,1
{*PROPDEFS}
{MODDLL=»VSM Model»,READONLY STRING}
{PRIMITIVE=»Primitive Type»,HIDDEN STRING}
{INVERT=»Cathodes»,HIDDEN STRING}
{TTRIGMIN=»Minimum Trigger Time»,FLOAT,PNZ}
{PACKAGE=PCB Package,HIDDEN PACKAGE}
{*INDEX}
{CAT=Optoelectronics}
{SUBCAT=7-Segment Displays}
{DESC=Red, 2 Digit, Common Anode, 7-Segment Display}
{*COMPONENT}
{MODDLL=LEDMPX}
{PRIMITIVE=DIGITAL,LEDMPX}
{INVERT=A,B,C,D,E,F,G,H}
{TTRIGMIN=1ms}
Нам же нужно добавить всего две строки и изменить одну, а именно:
NAME=7S2D-CA-RED <- Это будет имя нашего устройства, вообще его можно добавить и в следующем шаге (при компоновке устройства), но мне лично почему-то так удобней. Имя естественно можно придумать свое – я пользовался вчерашней логикой по сокращениям: 7Segment2Digits-CommonAnode-Red т.е. 7ми сегментник 2х цифровой с общим анодом, красный. Вроде просто )
{PREFIX=7S2DR} <- Это префикс, который будет инициализатором устройства при переносе в ARES, опять-же может быть своим, но у него есть ограничение – его длинна не может быть больше пяти символов!. Его надо добавить где-нить под строчкой {*DEVICE}, например прямо перед строкой {*PROPDEFS}. Опять-же его можно ввести и позже ручками при создании компонента
{*PROPDEFS} <- Эта строка у вас уже есть, нам она указывает что начались настройки свойств модели и далее под ней надо найти вот эту строку:
{PACKAGE=»PCB Package»,PACKAGE,1,7S2D} <- Эту строчку надо найти и заменить, штатно ISIS считает что у этой модели HIDDEN PACKAGE т.е. корпус “спрятан”, нам же нужно указать имя, вчера созданного корпуса в ARES – у меня это было 7S2D
В итоге у меня получилось так:
{*DEVICE}
NAME=7S2D-CA-RED
ACTIVE=7SEG,8,BITWISE,DLL
HELP=DISPLAYS>POPUP,1
{PREFIX=7S2DR}
{*PROPDEFS}
{MODDLL=»VSM Model»,READONLY STRING}
{PRIMITIVE=»Primitive Type»,HIDDEN STRING}
{INVERT=»Cathodes»,HIDDEN STRING}
{TTRIGMIN=»Minimum Trigger Time»,FLOAT,PNZ}
{PACKAGE=»PCB Package»,PACKAGE,1,7S2D}
{*INDEX}
{CAT=Optoelectronics}
{SUBCAT=7-Segment Displays}
{DESC=Red, 2 Digit, Common Anode, 7-Segment Display}
{*COMPONENT}
{MODDLL=LEDMPX}
{PRIMITIVE=DIGITAL,LEDMPX}
{INVERT=A,B,C,D,E,F,G,H}
{TTRIGMIN=1ms}
Нажимаем на ОК в нашей форме редактирования кода, и выделяем все элементы разобранного дисплея (просто выделяем их как файлики в проводнике например), после чего жмакаем правой кнопкой мыши и выбираем Make Device
И видим вот такую форму:
Если мы ввели имя и префикс во время редактирования кода, то они автоматически подхватятся и будут отображены в соответствующих полях, если вы их не вводили то введите тут – дальше возможности не будет )
Нажимаем на Next и видим наш чудесный корпус 7S2D с одинаковыми номерами пинов, нажимаем на Add/Edit.
Цель этой формы – задать соотношение выводов модели к пинам в корпусе. Опять лезем в даташит на дисплей и смотрим что к чему должно подключаться. Что-бы задать связку вывод-пин, надо щелкнуть мышкой в ячейку в колонке А в ряду с тем выводом, который мы привязываем, после чего надо щелкнуть мышкой на номер пина на рисунке с корпусом в правой части формы:
Вначале сюда:
Потом вот сюда:
По факту нам надо заполнить все ячейки с номерами выводов, кроме последнего вывода Н, который в нашем дисплее не используется (это видимо точка – у нас ее нет). Выводы модели 1 и 2 это пины ПЕРЕКЛЮЧЕНИЯ ЦИФР! т.е. питание индкатора (которым меняем включенную на определенный момент цифру!) Когда дойдем до пина H делаем следующую вещь – нажимаем на его ряд (в табличке) правой мышкой и выбираем Suppress Pin
Это создаст пустое сопоставление этого вывода в модели т.е. пин ни к чему подключен не будет – а нам и не надо! )
Для моего дисплея таблица в итоге получается вот такая:
Нажимаем на Assign Package(s), Нам снова показывают наш корпус, нажимем Next, видим свойства модели, жмем снова Next – тут можно добавить ссылку на даташит (полезно чтоб не рыться в инете/локальном диске в поиске нужного файла), нажимаем еще раз Next – тут можно добавить комментарии и если вы планируете использовать много разных дисплейчиков одной фирмы, до добавить производителя в библиотеку … а еще артикул! )) В итоге нажимаем ОК … и ничего не происходит – правильно, компонент добавился в библиотеку – удаляем куски дисплея с рабочего листа (просто очищаем все или можно создать новый пустой документ) и добавляем нам компонент из библиотеки:
Теперь можно создать простенькую схемку с дисплеем и экспортировать ее в ARES:
Схема немного бредовая но корпуса покажет )) Вообщем атмега 168 рулящая дисплейчиком через 595ый сдвиговый регистр и сама выбирающая цифру на дисплее. Нажимаем на кнопочку ARES в тулбаре либо идем в tools и там netlist to ares:
Открывается ARES, расставляем как обычно в нем наши компоненты и нажимаем auto router (можно и auto placer’ом расставить – кому как нравится) В результате видим вот такую картинку:
Как видим все пины в нашем корпусе удачно соединились с другими компонентами, а нужные соединились и внутри корпуса!
За сим победа, пускай и маленькая но победа – на выходе у нас рабочая моделька 2х цифрового 7ми сегментного дисплея, показывающая все что надо показывать в ISIS и корпус, готовый к размещению в ARES!