Лекция 8 Проектирование устройств на универсальных микроконтроллерах Лектор: Люличева И.А. 1 Рассматриваются вопросы Система команд и примеры программ МК фирмы ATMEL Интерфейс пользователя – типы клавиатур, примеры подключения. Интерфейс пользователя – типы индикаторов Подключение к МК системе через стандартные интерфейсы. 2 Рекомендуемая литература Стандартные семейства AVR: tinyAVR megaAVR Флеш-память 8 Кб, SRAM 512 б, EEPROM 512 б Число линий В/В 6-18 (общее количество выводов 8-32) Ограниченный набор периферийных устройств Флеш-память 256 Кб, SRAM 8 Кб, EEPROM 4 Кб Число линий В/В 23-86 (общее количество выводов 28-100) Аппаратный умножитель Расширенная система команд и периферийных устройств XMEGA AVR Флеш-память 384 Кб, SRAM 32 Кб, EEPROM 4 Кб 4-ех канальный DMA-контроллер Инновационная система обработки событий Семейства AVR: Микроконтроллеры адаптированные под конкретные приложения: со встроенными интерфейсами USB, CAN, контроллером LCD; со встроенным радио приёмопередатчиком – серии ATAхxxx, ATAMxxx; для управления электродвигателями – серия AT90PWMxxxx; для автомобильной электроники; для осветительной техники. С или ассемблер? Это вопрос в отношении программирования МК имеет совершенно иной оттенок, т.к инженер, работающий с МК, всегда в большей степени электронщик, чем программист: для него программа не самоцель, а средство заставить систему работать. Особенности программирования МК делают, в общем, не слишком актуальным вопрос о том, как программист добивается своих целей. Правда, память программ в МК исчисляется килобайтами, а скорость работы их не очень-то велика, и потому тут на первый план нередко выходят соображения компактности кода или скорости выполнения процедур: нередко специально составляются библиотеки подпрограмм, оптимизированные либо по количеству команд, либо по времени выполнения - смотря, что важнее. В общем случае, разумеется, программы, написанные на С, дают менее компактный код (даже для AVR, система команд которой специально оптимизирована для программирования на С), и это стоит учитывать. Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает 16 бит. Большинство команд выполняется за 1 такт. Всё множество команд микроконтроллеров AVR можно разбить на несколько групп: команды пересылки данных команды арифметических операций команды логических операций и команды сдвига команды операции с битами команды передачи управления команды управления системой Особенности АЛУ Выполнять арифметико-логические операции и операции сдвига непосредственно над содержимым ячеек памяти нельзя. Нельзя также записать константу или очистить содержимое ячейки памяти. Система команд AVR позволяет лишь выполнять операции обмена данными между ячейками SRAM и оперативными регистрами. Достоинством системы команд можно считать разнообразные режимы адресации ячеек памяти. Как видно из Таблицы 1 (см. группу команд передачи данных), кроме прямой адресации имеются следующие режимы: косвенная, косвенная с пост-инкрементом, косвенная с пре-декрементом и косвенная со смещением. команды пересылки данных Основных мнемоник немного, однако допустимы различные очетания операндов Mov reg, reg – прямая адресация Ld, Ldi, Ldd – команды загрузки St, Sti, Std - команды сохранения Push, Pop – сохр/извлечь из стека In, Out – ввод/вывод из портов команды пересылки данных команды безусловной передачи управления Регистр флагов Бит С (carry) устанавливается, если во время выполнения операции был перенос из старшего разряда результата; Бит Z (zero) устанавливается, если результат операции равен 0; Бит N устанавливается, если MSB (Most Significant Bit - старший бит) результата равен 1 (правильно показывает знак результата, если не было переполнения разрядной сетки знакового числа); Бит V устанавливается, если во время выполнения операции было переполнение разрядной сетки знакового результата; Бит S = N + V (правильно показывает знак результата и при переполнении разрядной сетки знакового числа); Бит H устанавливается, если во время выполнения операции был перенос из 3-го разряда результата. Признаки результата операции могут быть затем использованы в программе для выполнения дальнейших арифметико-логических операций или команд условных переходов. команды ветвления (условные переходы) операции с битами Примеры программ del: ldi r18,50 ;задержка ~40 мкс при кварце 4 МГц l4: dec r18 ; brne l4 ; ret delay: ldi r17,9 ;задержка ~1,8 ms при кварце 4 МГц l: ldi r18,255 ; l1: dec r18 ; brne l1 ; dec r17 ; brne l ; ret Примеры программ initlcd_8515: ldi r16, (1<<sre)+(1<<srw) ;разрешение работы с внешней памятью out mcucr, r16 ;и разрешение такта ожидания ldi r25,$30 ;8-битный интерфейс, 1-строка, шрифт-5х7 точек rcall icom_8515 rcall del ldi r25,12 ;включить дисплей, выключить курсор rcall icom_8515 rcall del ldi r25,$30 ;8-битный интерфейс, 1-строка, шрифт-5х7 точек rcall icom_8515 rcall del ldi r25,$1 ;очистить дисплей и установить курсор в rcall icom_8515 ; начальную позицию rcall delay ; ret Программатор AVR МК Dallas Semiconductor Контроллеры, производимые этой компанией, очень быстрые, но дорогие. Продаются, как ни удивительно, довольно хорошо. Их приобретают большей частью те, кто занимается системами разграничения доступа — им очень нравится, что у этих МК два независимых последовательных порта. К тому же, у некоторых из этих контроллеров 1 кбайт ОЗУ на кристалле, что тоже очень нравится разработчикам. Но Dallas — это не массовый контроллер, как PIC, перед ним не ставится задача завалить им весь рынок, контроллеры ценой от 8 до 30 долларов — это не ширпотреб, а эксклюзив. Идут они только в специальные разработки, где разработчикам не хочется уходить от х51, но нужна повышенная скорость, два последовательных порта и т. д. Типы клавиатур Отдельные кнопки (как в пейджере) Цифровая клавиатура 3х4 (простой телефон или калькулятор) Цифро-буквенная клавиатура (мобильный телефон) Кодирующие типы клавиатур (в ПК – на базе МК) Пример подключения – одна кнопка Пример подключения – три кнопки Пример подключения клавиатуры к PIC24 Пример подключения клаиатуры к МК 51 Типы индикаторов Промышленно выпускается огромное количество моделей индикаторов, начиная от светодиодов и оканчивая матричными дисплеями, наиболее часто встречаются: Светодиод – отображает 1 бит 7-сегментный индикатор – отображает 1 цифру Линейка из нескольких 7-сегм. индикаторов Одно- и дву-строчные матричные индикаторы со встроенным контроллером Многострочный дисплей, управляемый видеокартой. Выбор индикаторов в среде Proteus 8-разрядный АЦП на РIС12 Пример таймера на 4 7сегментных индикаторах Измеритель напряжения на МК Цифровые часы Пример подключения двустрочного индикатора AT90S2313 имеет маленькие EEPROM и RAM, и портов ввода/вывода явно маловато, поэтому подключать его будем к порту D по параллельному 4-х битному интерфейсу. Кодовая таблица контроллера Hitachi соответствует ASCII (Латиница и специальные символы). Есть возможность запрограммировать свои собственные 8 символов. При отладке пригодились светодиоды на порту B, оставшиеся от светодиодной мигалки. Кодовые таблицы Буфер данных имеет больше ячеек, чем число знакомест дисплея. Смещая окно индикатора относительно буфера данных (см. систему команд), можно отображать на дисплее различные области буфера. У двустрочных индикаторов первые 40 ячеек буфера данных, обычно, отображаются на верхней строке дисплея, а вторые 40 ячеек - на нижней строке. Сдвиг окна дисплея относительно буфера данных для верхней и нижней строк происходит синхронно. Курсор будет виден на индикаторе только в том случае, если он попал в зону видимости дисплея (и если предварительно была подана команда отображать курсор). Кодовые таблицы Кроме DDRAM, контроллер ЖКИ содержит еще один блок памяти - знакогенератор. Его "прошивка", то есть соответствие ASCIIкодов начертанию символов, обычно имеется в описании индикатора. Знакогенератор состоит из двух частей. Основная его часть представляет собой ПЗУ (CGROM) и ее, следовательно, нельзя изменить. Вторая часть, в которой задаются начертания символов для первых 16-ти кодов таблицы знакогенератора, представляет собой перепрограммируемое ОЗУ(CGRAM). Имеется возможность задать начертание 8 символов. Электрическая схема Пример подключения Порядок инициализации дисплея: включить питание (ждать 30 мкс) 0b00000011 (ждать 40 мкс) 0b00000011(ждать 40 мкс) 0b00000011(ждать 40 мкс) здесь происходит переход в четырехбитный режим(0b00000010)(ждать 40 мкс) 0b00000010,0b00001000 (ждать 40 мкс) выключить дисплей (0b00000000,0b00001000)(ждать 40 мкс) установить направление сдвига курсора и разрешить сдвиг дисплея (0b00000000,0b00000110)(ждать 40 мкс) включить индикатор и разрешить курсор, установить его тип* (0b00000000,0b00001111)(ждать 40 мкс) очистить индикатор, курсор домой (0b00000000,0b00000001)(ждать 1500 мкс) Пример подключения Пример просмотра состояния регистров Цифровой осциллограф В наше время портативным цифровым осциллографом с экраном на ЖКИ никого не удивишь. Фирмы Fluke, Velleman, Metrix, Hameg, и др. предлагают разные модели А ведь сделать самодельный осциллограф не сложно. Из крупных деталей потребуются МК, ЖКИ, 3 переменных резистора и кнопка (рис.8). Параметры осциллографа: диапазон входных напряжений 0…5 В; диапазон входных частот 0…33 кГц; количество отображаемых на ЖКИ аналоговых уровней - 8; максимальная частота дискретизации - 66 кГц; LCD-дисплеи с контроллером HD44780 LCD-дисплеи с контроллером HD44780 являются пожалуй одними из самых популярных символьных дисплеев для встраиваемых систем. Единственным их недостатком можно считать необходимость задействования для управления дисплеем шести I/O-линий микроконтроллера в 4-разрядном режиме либо одиннадцати I/Oлиний в 8-разрядном режиме. Для сокращения числа управляющих линий можно использовать преобразователи последовательного кода в параллельный на основе стандартной логики. LCD-дисплеи с контроллером HD44780 Однако, управлять HD44780-совместимыми LCD-дисплеями можно даже по одной линии. Такую функцию гораздо удобнее возложить не на микросхемы жёсткой логики, а на программируемый микроконтроллер, сократив, таким образом, стоимость и занимаемую схемой на печатной плате площадь. Этим целям в полной мере удовлетворяют микроконтроллеры Microchip серии PIC10F в миниатюрном корпусе SOT23–6. Вопросы для самоконтроля Перечислите типы клавиатур, приведите пример подключения матричной клавиатуры. Перечислите типы индикаторов, приведите пример подключения матричного индикатора.