Программатор микросхем I2С BUS
Программатор микросхем I2С BUS
Содержание Введение 1. Анализ поставленной задачи 1.1 Обоснование достаточности аппаратных средств и программных ресурсов 1.2 Доопределение набора аппаратных средств для реализации устройства 1.3 Распределение функций устройства между узлами микроконтроллера 1.4 Выбор и обоснование режимов функционирования узлов микроконтроллера и периферийных устройств 2. Проектирование принципиальной схемы устройства 2.1 Проектирование схемы питания 2.2 Проектирование схемы включения микроконтроллера 2.2.1 Анализ, выбор и обоснование тактового генератора 2.2.2 Распределение периферийных устройств и портов 2.2.3 Проектирование схемы сброса 2.2.4 Реализация внутрисхемного программатора 3. Проектирование программного обеспечения микроконтроллера 3.1 Анализ поставленных программе задач и проектирование алгоритма 3.2 Проектирование процедур обработки прерываний (при необходимости) 3.3 Создание проекта. Расчет делителей периферийных устройств 3.4 Листинг программы с комментариями 4. Проектирование печатной платы устройства (PCad, OrCad) 5. Рекомендации по разработке программных и аппаратных диагностических средств для проверки работоспособности устройства Заключение Литература Введение В данном курсовом проекте необходимо разработать программатор микросхем AT17C010 - она используется для конфигурирования микросхем ПЛИС таких марок: Atmel AT6000, AT40K FPGAs, Altera FLEX® Devices, Lucent ORCA® FPGAs, Xilinx XC3000, XC4000, XC5200, SPARTAN® and Virtex® FPGAs. Данное устройство будет построено на базе Mega серии микроконтроллеров Atmel. Микросхема АТ17ххх использует интерфейс I2C, с помощью которого невозможно наладить связь с ПК. Поэтому для связи с компьютером необходимо использовать интерфейс RS-232. 1. Анализ поставленной задачи 1.1 Обоснование достаточности аппаратных средств и программных ресурсов Для реализации поставленной задачи предложенных аппаратных средств недостаточно. Это связано с тем, что питание всех микросхем лежит в диапазоне +4,5В - +5,5В, а по заданию используется питание +6В - нужен блок питания. Также применяемые в RS-232 уровни сигнала несовместимы с ТТЛ уровнями. Учитывая все приведенные аргументы, следует добавить в разрабатываемое устройство дополнительные элементы. 1.2 Доопределение набора аппаратных средств для реализации устройства Для реализации необходимы дополнительные модули: преобразователь уровней MAX232, блок питания. Т.к. по заданию схема питается от 6В, а все микросхемы питаются от 5В, то необходимо применить понижающий стабилизатор напряжения. Для защиты от нестабильного напряжения задействуем емкостной фильтр. Так же необходимо включить схему защиты от переполюсовки и перенапряжения. Для преобразования протокола RS-232 в I2С используется АТMEGA8. Стандарт RS232 использует напряжения логических уровней +12В и -12В, а АТМEGA8 - ТТЛ уровни (0В,5В), поэтому для согласования используем преобразователь МАХ232. АТ17010 - микросхема памяти, которая подлежит программированию. Для программирования подойдет любой ПК с СОМ портом. Обобщив замечания построим функциональную схему устройства. Также следует заметить, что программатор должен физически находиться отдельно от программируемой микросхемы. Также будет удобно питать программируемую микросхему от программатора, что повысит гибкость и удобство использования. Рис.1 Функциональная схема БП - блок питания; ATMEGA8 - контроллер программатора; МАХ232 - преобразователь уровней; АТ17010 - ППЗУ для конфигурирования ПЛИС; ПК - персональный компьютер; ПЛИС - программируемая логическая интегральная схема 1.3 Распределение функций устройства между узлами микроконтроллера На контроллер возлагаются следующие функции: - инициализация связи с ПК и вход в режим программирования АТ17010, - прием данных от ПК по протоколу RS-232, - передача принятых данных по протоколу I2С, - индикация работоспособности устройства. 1.4 Выбор и обоснование режимов функционирования узлов микроконтроллера и периферийных устройств Контроллер ATMEGA8 имеет аппаратный блок UART, что представляет собой протокол RS-232, в котором есть буфера приема/передачи, что значительно упрощает программу и увеличивает надежность. Также в контроллере присутствует интерфейс TWI, который является аналогом I2C. Применение его также значительно упростит программу. Таким образом, программу можно сделать асинхронной, т.к. для формирования синхроимпульсов будет использован аппаратный генератор. Это говорит о том, что нет необходимости применять таймера. Также есть смысл применить WatchDogTimer, для предотвращения возможного зависания программы. Для стабильной работы и возможности использования различных скоростей UART применим генератор с внешним кварцевым резонатором с частотой 3,6864 МГц. 2. Проектирование принципиальной схемы устройства 2.1 Проектирование схемы питания Исходные данные и требования: - входное напряжение +6В; - выходное напряжение +5В; - защита схемы от пульсаций напряжения и высокочастотных помех по питанию; - защита схемы от перенапряжения; - защита схемы от противовключения; - защита от короткого замыкания. При данных условиях имеет смысл применить линейный стабилизатор напряжения, который отличается простотой, надежностью, доступностью. Таким, к примеру, может быть LM7805. Такой стабилизатор имеет большой диапазон входных напряжений и обеспечивает достаточный ток. Для защиты от противовключения можно применить такие схемы: - последовательно включенный диод во входной цепи, при подаче обратного напряжения диод запирается, и ток во входной цепи не течет; - параллельно входу включенный диод в обратном направлении с ограничителем тока, при подаче обратного напряжения диод открывается и обратное напряжение не превышает 0,7В, что безопасно для используемых узлов. Рис 2.1 - Схема защиты с последовательно включенным диодом Рис. 2.2 - Схема защиты с параллельно включенным диодом Проанализируем достоинства и недостатки этих схем. В схемы с последовательно включенным диодом при прямом включении (нормальная работа) на диоде образуется падение напряжение 0.7В, в результате чего на входе стабилизатора будет не 6В, а 5,3В, что не допустимо. Преимуществом этой схемы является то, что при обратном включении ток не течет. В схеме с параллельно включенным диодом при прямом включении (нормальная работа) не образуется никакого падения напряжения и на входе стабилизатора те же 6В. Однако при обратном включении протекает ток ограниченный ограничителем тока. Так как обратное включение - это не штатная ситуация, то недостаток параллельного включения становится несущественным. А недостаток последовательного включения для нас является не допустимым, поэтому выбираем схему с параллельным включением. Для защиты от перенапряжения будем использовать параллельно включенный стабилитрон с ограничителем тока. Это защитит от пробоя стабилизатор, что может повлечь за собой выход из строя остальных элементов. В качестве ограничителя тока можно использовать один и тот же, как для защиты от противовключения, так и от перенапряжения. Стабилитрон выберем с двойным запасом - 12В. Для надежной и стабильной работы стабилизатора желательно защитить его от пульсаций напряжения и высокочастотных помех. Этого можно достичь, применив конденсаторный фильтр. Следует учесть, что для защиты от пульсаций напряжения применяется электролитический конденсатор в связи с его большой емкостью. А для высокочастотных помех - керамический конденсатор, из-за того, что у него меньшая индуктивность. Так же стоит применять по одному керамическому конденсатору на каждую отдельную микросхему. Для защиты от короткого замыкания применим предохранитель. Имеет смысл использовать предохранитель в качестве одноразового ограничителя тока. Для индикации работоспособности схемы добавим индикатор напряжения, применив светодиод зеленого цвета при наличии напряжения и светодиод красного цвета при обрыве в цепи предохранителя. Для правильной работы светодиода через него должен протекать ток не более 20мА, что невозможно при напряжении 6В. Необходимо ограничить ток резистором. Рассчитаем резистор по формуле: R = (U-Uvd)/Ivd; где R - искомое сопротивление резистора U - напряжение питания = 6В Uvd - падение напряжения на диоде при заданном токе = 2В Ivd - ток протекающий через светодиод = 10мА R = (6-2)/0,01 = 400 Ом. Выберем оба токоограничивающих резистора для светодиодов с номиналом 390 Ом. ВНИМАНИЕ - ИСПОЛЬЗОВАНИЕ УСТРОЙСТВА С «ЖУЧКОМ» ВМЕСТО ПРЕДОХРАНИТЕЛЯ КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО !!! Учитывая все выше перечисленное, спроектируем схему блока питания. Рис. 2.3 - Схема блока питания 2.2 Проектирование схемы включения микроконтроллера 2.2.1 Анализ, обоснование и выбор тактового генератора Существует несколько способов выработки тактовых импульсов для контроллера: - внешний генератор; - внутренний RC-генератор; - внутренний RC-генератор с внешней RC цепочкой; - внутренний генератор с внешним кварцевым резонатором. Для использования внешнего генератора требуются дополнительные элементы и его целесообразно использовать для многоузловых синхронных устройств. Рис. 2.4 - Схема подключения внешнего генератора Внутренний RC-генератор обладает максимальной экономичностью и простотой в использовании, однако имеет малую гибкость и не стабильную частоту. Контроллер ATMEGA8 имеет встроенный генератор с возможностью подстройки частоты в диапазоне 7,3 - 8,1 МГц с точностью 2%. Также эту частоту можно поделить встроенным делителем на 8. Генератор с внешним кварцевым резонатором обладает высокой стабильностью и частоту задает внешний элемент, который можно легко заменить. Рис. 2.6 - Схема генератора с внешним кварцевым резонатором Выбор очевиден. Необходимо использовать генератор с внешним кварцевым резонатором. Учитывая особенности блока универсального приемо-передатчика, следует использовать кварц с частотой 3,6864 МГц. Таким образом, можно использовать весь стандартный диапазон скоростей обмена информацией с ошибкой обусловленной только погрешностью самого кварца. 2.2.2 Распределение периферийных устройств и портов Контроллер подключен к таким элементам как преобразователь уровней RS_232, шина I2С, управляющие линии программирования АТ17010, внутрисхемное программирование. Одним из встроенных периферийных устройств в контроллер является универсальный синхронно-асинхронный приемо-передатчик. Он работает по протоколу RS-232, имеет встроенные буфера приема-передачи, управляемый делитель тактовой частоты и подключен к выводам PD0-RxD, PD1-TxD. Приемо-передатчик не нуждается в отдельной настройке этих портов, т.к. при включении блока он берет управление на себя. Рис. 2.7 - Использование портов и подключение UART Модуль UART подключается к ПК через преобразователь уровней, для согласования амплитуд сигналов. По приведенной ниже схеме видно, что МАХ232 имеет умножитель напряжения и инвертор напряжения. Так образуется сигнал с уровнями +10В, _10В (при питании +5В). Поэтому у микросхемы одно питание +5В, что очень удобно и практично. Микросхема имеет два канала приемо-передатчиков, однако мы будем использовать любой один из них. Таблица 2.1 Стандартное подключение СОМ порта |
№ | Сигнал | Описание сигнала | | 1 | DCD | Data Carry Detect | | 2 | SIN | Serial In or Receive Data | | 3 | SOUT | Serial Out or Transmit Data | | 4 | DTR | Data Terminal Ready | | 5 | GND | Ground | | 6 | DSR | Data Set Ready | | 7 | RTS | RequestToSend | | 8 | CTS | Clear To Send | | 9 | Rl | Ring Indicate | | |
Рис. 2.8 - Преобразователь уровней MAX232 Преобразованные сигналы подключим к стандартному разъему COM порта, который имеет следующую конфигурацию: Из всех сигналов достаточно подключить три: 2-SIN, 3-SOUT, 5-GND. Естественно, что данная таблица приведена со стороны ПК, поэтому SIN, или прием данных, подключается к линии TxD (передача данных). И, следовательно, RxD к SOUT. Микросхема MAX232 предусматривает защиту входов, поэтом нет нужды в дополнительном схемном решении. Для программирования микросхем серии AT17xxx производитель рекомендует такую схему: Стандарт шины указывает на то, что сигнал передается двумя состояниями 0В и третье состояние (источник сигнала отключен). При такой схеме на стороне получателя информации должен быть установлен подтягивающий к плюсу резистор. Номинал резистора отвечает за ток, протекающий при нулевом уровне. Рис. 2.9 - Рекомендованная производителем схема программатора для AT17 Для подключения шины I2C можно использовать аппаратный модуль TWI контроллера. Рис 2.10 - Использование портов модулем TWI. Выбор номинала представляет собой компромисс межу экономичностью (большое сопротивление, малый ток) и помехозащищенностью (отношение наведенного, шумового тока к сигнальному току будет меньше). Для надежной связи зададимся протекающим током в 0,1 от максимального тока нуля микроконтроллера. Ires = 0,1 * Imax; Imax = 20mA - максимальный ток ноля микроконтроллера, Ires - ток протекающей через резистор в сигнальной цепи. Ires = 2mA. Рассчитаем сопротивление подтягивающего резистора по закону Ома: R=U/I; U = 5В, I=2*10-3; R=5/0,002=2500; Сопротивление подтягивающего резистора - 2500 Ом. Так как программатор физически находиться отдельно от микросхемы памяти АТ17010 то необходимо предусмотреть разъемы, соединяющие эти две платы. Всегда существует возможность короткого замыкания проводов и встречного включения источников, что может вывести их из строя. Поэтому необходимо защитить выходные цепи программатора от таких случайностей. Это можно сделать, применив буферную микросхему или защитную цепь на диодах с токоограничителем. Буферная схема нежелательна т.к. при значительном усложнении схемы нет полной защиты устройства, а только одного контроллера. Защитная цепь на диодах выглядит следующим образом (Рис. 2.11). Схема работает таким образом: при подаче на выход напряжения больше чем 5,7В диод VD1 открывается и через резистор течет повышенный ток, приводящий к падению избыточного напряжения на нем. При подаче отрицательного напряжения открывается диод VD2, что также приводит к увеличению тока, протекающего через резистор и стабилизации обратного напряжения на порте контроллера на уровне -0,7В. При коротком замыкании резистор будет ограничивать ток протекающий через источник и таким образом защитит его от повреждения. Рис. 2.11 - Схема защиты на диодах с токоограничителем Сопротивление такого резистора должно быть не больше 0,1 от входного сопротивления приемника. Таким образом, максимальное сопротивление должно составлять 250 Ом (если подтяжка будет 2500 Ом). Выберем сопротивление с двойным запасом и номиналом 100 Ом. В пользу такой схемы можно добавить, что диоды VD1 и VD2 интегрированы в каждый порт микроконтроллера. Таким образом, достаточно добавить всего по одному резистору на порт. Это также позволит без опасения программировать микросхемы с напряжением питания +2,7В. Для программирования микросхемы АТ17010 также используются дополнительные сигналы: RESET/OE, /CE, /SER_EN. Их можно подключить к любому порту контроллера и использовать для защиты резистор. Для этих сигналов будем использовать PORTC(1:3). Это облегчит трассировку платы, т.к. они физически расположены рядом с шиной TWI. Для индикации процесса программирования достаточно использовать один светодиод, который инвертирует свое состояние при приеме каждого 128 бита информации. Его можно подключить к PORTC(0) через резистор 270 Ом. Рис. 2.12 - Использование портов для подключения АТ17010 Рис. 2.13 - Использование портов для индикации состояния программирования 2.2.3. Проектирование схемы сброса Существует много способов обеспечить микроконтроллер надежным, своевременным сбросом. Схема сброса должна: a) сбрасывать контроллер по включению питания; b) сбрасывать контроллер при заниженном питании (когда его работа не гарантируется); c) не сбрасывать от наводимых помех извне. Пункты (а) и (с) можно реализовать с помощью RC-цепочки такого вида: При подаче питающего напряжения конденсатор начинает заряжаться через резистор и напряжение на выводе сброса некоторое время (зависящее от параметров цепочки) находиться на уровне логического нуля и удерживает контроллер в сброшенном состоянии. При наличии помех конденсатор поддерживает напряжение, и контроллер не сбрасывается. Однако при полном пропадании напряжения на короткое время конденсатор не успеет разрядиться, контроллер останется не сброшенным, но работа его нарушиться. Рис. 2.14 - Схема сброса с RC-цепочкой Для устранения этого недостатка можно включить параллельно резистору в обратном направлении. Тогда при пропадании напряжения конденсатор разрядиться через диод, и сбросит контролер. Рис. 2.15 - Схема сброса с RCVD-цепочкой Но такая схема не решает проблемы с работой на пониженном напряжении, когда работоспособность не гарантируется. Для этого можно использовать специальную микросхему - супервизор питания, который решает все проблемы сразу. Супервизор представляет собой интегральную схему с компаратором напряжения, источником опорного напряжения, интегратором напряжения. Рис. 2.16 - Схема сброса с супервизором питания Но в случае применения контроллеров серии AVR все эти элементы включены в состав микросхемы. Поэтому допускается работа контроллера с полностью отключенным выводом сброса или подтяжкой к питанию. Такое решение позволяет упростить схему и снизить стоимость устройства. 2.2.4 Реализация внутрисхемного программатора Под реализацией внутрисхемного программатора понимается вывод разъема под программатор STK200 - распространенный и доступный. Таблица 2.2 Разъем программирования STK200 |
№ вывода разъема | № вывода контроллера | Название | | 1 | 15 | MOSI | | 2 | 4 | VCC | | 3 | - | LED | | 4 | 3 | GND | | 5 | 29 | RESET | | 6 | 4 | GND | | 7 | 17 | SCK | | 8 | 4 | GND | | 9 | 16 | MISO | | 10 | 4 | GND | | |
Рис. 2.17 - Использование портов для внутрисхемного программирования Заключение: благодаря знанию внутренней структуры контроллера, его технических характеристик и периферии можно значительно упростить схему, что и было описано в этом разделе. Результатом стала принципиальная схема устройства, приведенная на рисунке 2.18. Рис. 2.18 - Принципиальная схема устройства. 3. Проектирование программного обеспечения микроконтроллера 3.1 Анализ поставленных программе задач и проектирование алгоритма Задачи программы: - прием данных по протоколу RS-232; - инициализация программатора при приеме данных и отключение программатора при отсутствии входных данных; - передача данных по протоколу TWI; - индикация процесса программирования; - защита от зависания программы; Для реализации программы подойдет алгоритм приведенный далее. Работа устройства начинает работу после подачи питания и инициализирует переменные и порты. Затем, первым делом, настраивается UART. Таким образом, устройство уже готово к приему данных в буфер. Следующим инициализируется таймер приема, который считает время после приема последнего байта. Эту информацию будем использовать для определения окончания приема. Если последний байт был получен больше чем 4*tUART назад, т.е. с интервалом в три байта, значит, передача завершена. Далее инициализируется модуль TWI, затем WatchDogTimer. После инициализации оборудования ожидаем приема первого байта информации, который послужит сигналом начала программирования. После того как это произошло, инициализируем AT17xxx (переводим в режим программирования) установив адрес ячейки в нулевое значение. Далее переписываем принятое значение в регистр данных модуля TWI и активируем передачу. Т.к. передатчик аппаратный, программа может не ждать окончания передачи и переходить к следующему этапу - ожидание следующего байта. Если во время ожидания сработал таймер приема, то программа выходит из режима программирования и программа перезапускается переходом в нулевой адрес. Рис. 3.1 - Алгоритм работы программы Существует более простой способ реализации программы - перевод в режим программирования сразу после включения и без окончания работы, но тогда значительно ухудшается удобство эксплуатации, т.к. нужно будет вручную сбрасывать контроллер при каждом программировании для обнуления адреса ячейки памяти. И при подключенном программаторе программируемое устройство будет в нерабочем состоянии. Предложенный же алгоритм после завершения программирования моментально переведет устройство в рабочее состояние и сбросит адрес в ноль. 3.2 Проектирование процедур обработки прерываний (при необходимости) Анализ поставленной задачи показал, что возможностей контроллера достаточно, для того чтобы не использовать прерывания. В пользу этого утверждения можно привести следующие факты: - вход в прерывание может произойти в любой момент и тем самым поменять ход программы; - применение в данном проекте программного буфера значительно усложнит программу, а преимущества мы не получим; - при использовании прерывания усложниться анализ событий, т.к. требуется реализация программных флагов или дублирование кода. В результате принято решение не использовать прерывания. 3.3 Создание проекта. Расчет делителей периферийных устройств Напишем программу на языке С, при помощи компилятора IAR C/C++ Compiler for AVR. Рис. 3.2 - Создание проекта совместимого с AVRStudio Для того чтобы проинициализировать устройства необходимо провести некоторые расчеты. Рассчитаем делитель модуля UART: UBRR = fosc/16/baud - 1 где fosc - частота тактового генератора baud - скорость передаваемых данных (по заданию 2400) UBRR = 3686400/16/2400 - 1 = 95 Ошибка равна 0%, так как число получилось не дробное. Следовательно, в регистр UBRR необходимо записать число 95 или 0х5F Для расчета скорости TWI зададимся байтовой скоростью в 2 раза быстрее модуля UART, чтобы данные успевали переписываться, но не в ущерб надежности (высокая скорость - выше вероятность ошибки). Байтовая скорость UART: 2400/(8+1+1) = 240 байт/сек; Байтовая скорость TWI: 240*2 = 480 байт/сек; Битовая скорость TWI: SCL = 480*(8+1) = 4320 бит/сек. Рассчитаем делитель модуля TWI по формуле: TWBR = (fosc/SCL - 16) / 2 / 4^(0,1,2,3); TWBR = (3686400/4320 - 16) / 2 / 4^0 = 418,6666667; Значение больше 255 и поэтому не подходит. Необходимо изменить значение предделителя. TWBR = (3686400/4320 - 16) / 2 / 4^1 = 104,6666667; Округлим значение до 105. Рассчитаем таймер приема на частоту 240/4=60 Гц и проверим правильность расчета в AVR Studio. Для этого добавим точку останова при срабатывании таймера и при запуске таймера, чтобы обнулить счетчик тактов в симуляторе. Рис. 3.3 - Окно симулятора, где видно, что период таймера равен 16669,11 uS Пересчитаем период в частоту f=1/T; f=1/16,66911E-3= 59,99121 Гц. Это доказывает, что таймер рассчитан правильно. 3.4 Листинг программы с комментариями Ниже приведем листинг программы с комментариями: #define ENABLE_BIT_DEFINITIONS #include <iom8.h> #define AT17 0xa6 команда АТ17 на программирование #define bytemax 128 число байт в странице памяти #define adressmax 1024 число страниц памяти #define SEREN (1<<3) номер порта С к которому подключен сигнал #define RESET (1<<2) номер порта С к которому подключен сигнал #define CE (1<<1) номер порта С к которому подключен сигнал #define LED (1<<0) номер порта С к которому подключен светодиод макрос ожидания передачи TWI #define waitTWI(); while (!(TWCR & (1<<TWINT))); void main( void ) { //otklyuchit preryvaniya asm("CLI"); // inicializaciya portov PORTB = 0x00; DDRB = 0x00; PORTC = 0xFF; DDRC = 0x0F; PORTD = 0x00; DDRD = 0x00; // nastroyka RS232/UART 2400 8,n,1 UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UBRRL = 0x5F; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRC = 0x86; UCSRB = 0x18; // nastroyka taymera na 4bayta UART TCCR1B = 0x00; //stop TCNT1H = 0x00; //setup TCNT1L = 0x00; OCR1AH = 0x03; OCR1AL = 0xBF; OCR1BH = 0xE0; OCR1BL = 0xFF; ICR1H = 0xE0; ICR1L = 0xFF; TCCR1A = 0x00; //TWI initialize // bistree na 25% chem UART TWCR= 0x00; //disable twi TWBR= 105; //set bit rate TWSR= 0x01; //set prescale TWAR= 0x00; //set slave address TWCR= 0x44; //enable twi asm("WDR"); включение WatchDogTimer WDTCR = 0x09; //WATCHDOG ENABLED //while ((UCSRA&(1<<RXC))==0) asm("WDR"); // jdem dannyh TCCR1B = 0x03; //start Timer unsigned int adress=0; while (adress<adressmax) цикл записи страниц (1<<TWEN); waitTWI(); //jdem okonchaniya peredachi TWDR = adress>>1; TWCR = (1<<TWINT) по окончанию программирования выполняем переход по нулевому адресу, чем выводим АТ17 из режима программирования (инициализация портов в начале программы) asm("JMP 0"); Вывод: использовав аппаратные блоки контроллера в полной мере можно значительно сократить размер кода и повысить производительность программы. К примеру в данной программы не используется ни одно прерывание т.к нет необходимости сохранять принятые данные в программный буфер сразу при приеме - они сохраняются в аппаратном. А скорость вывода данных выбрана в два раза выше, что обеспечит своевременную вычитку из буфера. При зависании программы счетчик WatchDog'а не будет сброшен (сбрасывается при приеме после передачи данных) и контроллер перезагрузится. 4. Проектирование печатной платы устройства (PCad, OrCad) Для трассировки воспользуемся пакетом PCAD Как предполагалось программатор желательно сделать компактным для удобства эксплуатации, поэтому применим корпуса элементов для поверхностного монтажа (SMD). В связи с этим контроллер будет не PDIP (28pin), а TQFP (32pin). Также желательно сделать плату односторонней, для упрощения производства. Неиспользуемое место «зальем» землей. Такой метод позволяет повысить технологичность изготовления платы, а также может выступать экраном. Важное место занимает расположение элементов, ведь от этого зависит не только удобство эксплуатации (следует располагать разъемы по краям платы, элементы управления и индикации должны быть понятно расположены), но и сложность трассировки. При неправильном расположении трассировка усложняется, плата становиться больше (если нет заданного размера), становиться невозможным применение односторонней трассировки, влечет к увеличению длины дорожек и количества переходных отверстий. Результатом трассировки схемы проекта стала односторонняя плата, рисунки которой приведены ниже. Рис. 4.1 - Рисунок печатного проводника программатора АТ17ххх 5. Рекомендации по разработке программных и аппаратных диагностических средств для проверки работоспособности устройства Проверку работоспособности платы производить в такой последовательности: - подать на плату питание 6В при отсутствии предохранителя (должны гореть оба светодиода питания) - вставить предохранитель - подключить программатор STK200 - прочитать контроллер для проверки его работоспособности - запрограммировать FuseBits (настроечные биты) на кварцевый генератор и включение схемы BOD (BrownOutDetector аналог SuperVisor'a питания) -запрограммировать тестовую программу, которая определяет по отдельности все узлы программатора (UART, индикатор, таймер и т.д.) - запрограммировать рабочую программу - проверить работоспособность с реальной микросхемой АТ17ххх Заключение Целью этой работы было разработать программатор для микросхем АТ17ххх на контроллере ATMEGA8 с заданным питающим напряжением и входным интерфейсом. В ходе разработки стало ясно, что применение контроллера ATMEGA8 является излишним, можно тот же программатор реализовать и на более младших и дешевых моделях, однако наличие аппаратных модулей у ATMEGA8 дает ему несомненное преимущество. Также существует возможность усложнить устройство с целью повышения функциональности. Например: Индикация процесса программирования (процент выполнения, наличие АТ17ххх и т.д.). Однако это не целесообразно, т.к. на сам процесс программирования (основная цель) это никак положительно не влияет.
|