Первое свидание с МК
От автора
Не советую это читать. Автор нифига не шарит, с терминологией путается, никакой системы, все как-то по друному расбросано... И вообще статью в топку! Кому это надо, есть нормально написаные статьи, есть даташиты, официальная документация. И тем более дурной стиль - типа видео-статья!
Вступление
В данном цикле статей в пошаговом режиме научимся программировать на языке С для МК в среде CodeVision, потом увидим нашу работу в симуляторе Proteus. И дальше спаяем схему, запрограммируем МК и насладимся работой вашего первого творения.
Когда кто-то рассказывает о МК, то всегда почему-то делает мигающий светодиод. Это не совсем интересно, поэтому лучше подсоединим несколько разных светодиодов и попробуем сделать подобие радуги. Это не намного сложнее, но зато эффект немного больше.
Стиль изложения несколько странноватый может показаться. Сначала будут идти ссылки на материал и на видео, который понадобиться. Вам нужно будет все это скачать. Просмотреть видео, дальше прочитать статью к этому видео, где будет рассказано - почему именно так делалось на видео. И, конечно же, желательно все повторить у себя на компьютере.
Создание программ для МК. CodeVision. Proteus.
Part 1
Нужно скачать:
CodeVision, Proteus, Справка по микроконтроллеру AVR Mega8 от фирмы Atmel -
качаем с этой страницы.
Видео к статье № 1-1
Видео к статье № 1-2
Видео к статье № 1-3
Пояснения к видео № 1-1
Вначале идет установка программы. Дальше создается новый файл и включается генератор начального кода. Генератору говорим, что будем использовать микроконтроллера AVR Mega8. Проект делается именно на нем в связи с отличным соотношением качества, функциональности и цены. А также устанавливаем частоту работы его в 1 МГц, потому что в соответствии с даташитом (документацией) по этому МК – 1 МГц это частота роботы с настройками по умолчанию.
Теперь пришло время немного рассказать про устройство МК. Микроконтроллер это такая микросхема в которую можно записать определенный код, определенные команды, а после подачи питания на него он подряд, начиная с первой строчки, исполняет код. Скорость исполнения называется частотой и может изменяться. В самом МК встроенный внутренний генератор, который задает частоту роботы и в настройках с завода уже определенная частота установлена, в нашем случае в 1 МГц.
Общение с внешним миром происходит через выводы МК. AVR Mega8 имеет 28 ножек в DIP-корпусе, который очень удобен для паяния, так как достаточно большой имеет размер. Поскольку МК это цифровое устройство, то и на его выводах может быть лишь 1 или 0 если смотреть со стороны программы.
Для управление МК и его частями с помощью программы используется регистры. Регистр это 1 байт в МК который имеет определенный адрес и имя. В зависимости от того что мы запишем в этот регистр и будет работать МК. Одни из самых главных регистров это регистры управление выходами МК. Тоесть которые определяют, что будет на ножках.
В МК AVR Mega8 есть шесть регистров для управления выходами МК – PORTB, PORTC, PORTD, DDRB, DDRC, DDRD. Мы видим что названия регистра состоит с PORT и DDR а также букв B, C, D. Дело в том что по архитектуре 8 ножек объединяются в один порт – и эти порты управляются 2-мя регистрами. Для порта C, например, это – PORTC, DDRC.
На рисунке выше видно схематический вид сверху Mega8. И с нее видно что в порт C входят ножки с номерами 1,23-28. Два регистра нам дано чтобы с помощью одного управлять направлением (определим ножка будет служить для считывания значения напряжения, или сама будет изменять напряжение), а вторая будет непосредственно управлять напряжением на выводе. Ну об этом немного позже.
Перейдем к видео, дальше удаляем лишние комментарии и код, который не нужен. Дело в том что при включении МК во все регистры заноситься 0, а тогда не имеет смысла те команды которые при начальной инициализации еще записывают туда 0.
Ну немного отошли от практики, теперь давайте перейдем к симуляторе…
Пояснения к видео № 1-2
Сначала идет установка Proteus, а потом соберем нужную нам схему, а именно радугу. Для этого идем в библиотеку и ищем там нужные нам элементы. А именно МК, светодиоды, а также резисторы. МК для управление, светодиоды для отображения, а резисторы чтобы ограничить ток. Дело в том что мы будем работать с напряжением 5 вольт – будем брать его от USB, и если мы подключим напрямую светодиоды то можем посчитать что там будет довольно большой ток по закону Ома и они сгорят. Но резистры ограничат ток, и их надо будет подбирать экспериментальным путем от 300 Ом до приблизительно 600 Ом – это связано с тем, что разные светодиоды (а у нас они разные - цветом) могут по-разному светить и для регулирования этого будем использовать разные резисторы.
Посмотрим, как можно управлять горением светодиодов…
Пояснения к видео № 1-3
Видим что сначала установим в регистре направления первые три бита в 1, чтобы показать что они будут работать как выходы. Делается это командой
DDRC=0x07;
В видео видели, что чтобы вручную все это не просчитывать, можно в генераторе начального кода выставить все, а потом скопировать нужное.
Дальше идут команды
PORTC.0=0;//off
PORTC.1=1;//on
PORTC.2=0;//off
Например PORTC.2=0 означает такое – записать в регистр PORTC в бит 2-рой 0.Тоесть указать ему что на ножке PC2 с номером 25, должен быть на выходе 0, то есть 0 вольт.
Дальше командой #include подключаем библиотеку для работы с задержками. А именно что бы использовать функцию - delay_ms() где в скобках указываем сколько миллисекунд МК должен подождать.
В вас может возникнуть вопрос – а почему я не удалил
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
А потому что все устройства в начале выключены, так как МК в них записывает 0. А такое мудрое устройство как аналоговый компаратор если в его регистре ACSR в старшем 7-мом бите 0, то он включается и будет тратить электроэнергию, а что бы сэкономить выключим его записав в старший регистр 1.
Теперь советую немного по играться со всем этим и ждать продолжения, где будет написана и отлажена полностью программа с кодовым названием "Радуга".
Автор не несет ответсвенности вообще!
Оригинал находиться по адресу - http://tutamc.com/page/avr4all1.html