Статьи Первое свидание с МК

Discussion in 'Статьи' started by presidentua, 21 Aug 2008.

  1. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    Первое свидание с МК
    От автора

    Не советую это читать. Автор нифига не шарит, с терминологией путается, никакой системы, все как-то по друному расбросано... И вообще статью в топку! Кому это надо, есть нормально написаные статьи, есть даташиты, официальная документация. И тем более дурной стиль - типа видео-статья!

    Вступление
    В данном цикле статей в пошаговом режиме научимся программировать на языке С для МК в среде 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.

    [​IMG]

    На рисунке выше видно схематический вид сверху 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
     
    5 people like this.
  2. Folc

    Folc Elder - Старейшина

    Joined:
    12 Feb 2007
    Messages:
    245
    Likes Received:
    72
    Reputations:
    14
    Я ни хрена не разбираюсь в МК, но видел работы. Спасибо за статью, может как нить на досуге почитаю)
     
    1 person likes this.
  3. saitrizer

    saitrizer New Member

    Joined:
    23 Aug 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    слева на право
    лпт программатор 5 проводков
    программатор stk200
    мигание светикам на меге8
    плата для робота
    мигание светиком на тини2313
    [​IMG]