Бортовой компьютер на атмега8 своими руками

Обновлено: 05.07.2024

В семействе AVR огромное множество микроконтроллеров на любой вкус. Для стандарт tinyAVR (ATtinyxxx) характерны небольшое количество флеш-памяти (до 16 килобайт) и количество линий ввода-вывода в совокупности с низким энергопотреблением, а для стандарта megaAVR (ATmegaxxx) доступно уже до 256 килобайт памяти и до сотни портов ввода-вывода (зависит от модели МК), так же доступна расширенная система команд и периферийных устройств. Сегодня будем прошивать ATmega8, цифра 8 в названии говорит нам о том, что у этого микроконтроллера 8 килобайт встроенной памяти. На картинке ниже расписаны выводы микроконтроллера в DIP корпусе. Кстати у ATmega48/88/168/328 выводы расположены аналогичным образом.

  • Ground (8 и 22 ноги) — земля, минус питания.
  • VCC (7 нога) — + питания.
  • Crystal (9 и 10 ноги) — сюда подключается кварцевый резонатор нужной частоты, в случае если МК настроен на работу от внешнего генератора.
  • AVCC (20 нога) — это + питание для аналоговой части МК, их разделяют с VCC в случаях когда необходимо получать сильно точные значения, питания подают отфильтрованное от помех и т.п. На практике для рядовых задач просто соединяют эту ногу с VCC.
  • AREF (21 нога) — на эту ногу можно подавать опорное напряжение отличное от пяти вольт питания микроконтроллера, например если есть необходимость измерять напряжение в пределах 3 вольт.
  • RESET — сброс настроек, перезагрузка МК. Кратковременная подача логического ноля на этот вывод приведет к перезапуску прошивки, так же необходим для перезаписи.
  • Остальные выводы — это порты ввода вывода такие же как и на плате Ардуино, их можно использовать по своему усмотрению.

Для прошивки нашего микроконтроллера понадобятся его порты последовательного периферийного интерфейса (SPI — Serial Peripheral Interface) — это синхронный протокол последовательной передачи данных, используемый для связи микроконтроллера с одним или несколькими периферийными устройствами. В нашем случае это выводы:

  • 17 вывод — MOSI(Master Out Slave In) — линия для передачи данных от ведущего устройства (Master) к ведомым (Slave)
  • 18 вывод — MISO(Master In Slave Out) — линия для передачи данных от ведомого устройства (Slave) к ведущему (Master)
  • 19 вывод — SCK(Serial Clock) — тактовые импульсы, генерируемые ведущим устройством (Master) для синхронизации процесса передачи данных



Дальнейшие действия по подключению МК к Ардуинке описаны в комментариях к коду который мы в неё загрузили, а именно подключаем следующие пины:

  • 17 нога микроконтроллера (MOSI) к 11 пину платы Ардуино
  • 18 нога микроконтроллера (MISO) к 12 пину
  • 19 нога микроконтроллера (SCK) к 13 пину
  • 1 нога (RESET) к 10 пину платы Ардуино
  • 8 ногу к GND
  • 7 ногу к +5V

Дополнительно подключим на нулевой цифровой выход ATmega8 (вторая ножка микросхемы) светодиод через токоограничивающий резистор на 220 Ом, для наглядного подтверждения того, что микроконтроллер работает.


// Put an LED (with resistor) on the following pins:
// 9: Heartbeat — shows the programmer is running
// 8: Error — Lights up if something goes wrong (use red if that makes sense)
// 7: Programming — In communication with the slave

Теперь почти всё готово, осталось только сообщить среде программирования, что именно мы собираемся прошивать. Для этого нужно добавить нашу ATmega8 в среду разработки Arduino IDE, тоесть нужно установить так называемое ядро, или как оно называется в самой IDE – плату.


Далее заходим в Инструменты —>> Плата —>> Менеджер плат находим и устанавливаем нужное ядро.


После всех манипуляций в менеджере плат должно появиться следующее:




Теперь МК знает от какого генератора и на какой частоте ему работать, можно загружать в него свои программы. Для примера загрузим классическую мигалку, только поменяем порт вывода на нулевой (вторая нога МК), именно к нему по схеме мы подключили светодиод.

void setup() pinMode(0, OUTPUT);
>

void loop() digitalWrite(0, HIGH);
delay(1000);
digitalWrite(0, LOW);
delay(1000);
>

Загружать нужно не кнопкой как обычно, а через меню Скетч —>> Загрузить через программатор, если все сделано правильно, то светодиод начнет мигать.



Данная схема USB программатора, построенного на микроконтроллере Atmega8, довольно проста в изготовлении, ее можно собрать своими руками буквально за один вечер.

Фактически это AVR-910 популярной схемы Prottoss-a. USB программатор надежен и имеет в своем арсенале функцию, позволяющая восстанавливать микроконтроллеры с неверно установленными фьюзами.

Следует отметить, что для прошивки самого микроконтроллера Atmega8 программатора понадобится простой LPT-программатор.

Печатную плату можно сделать своими руками по известной технологии ЛУТ. Поэтому на описании изготовления платы останавливаться не будем, а перейдем сразу к описанию.


Теперь необходимо занести программу в память Atmega8. В качестве программного обеспечения можно применить Uniprof или Code Vision AVR. Перед программированием необходимо выставить следующие фьюзы (для Uniprof):

Система предложит найти драйвер — отказываемся и указываем драйвер из нашего архива. По завершению установки драйвера для программатора, он полностью готов к работе.

Поговорим о программном обеспечении которое необходимо для работы с данным программатором. Он поддерживает такие оболочки как: AVR Prog, AVR Studio, ChipBlasterAVR и, конечно же, Code Vision AVR.

Достаточно удобной программой, я считаю, является Code Vision AVR, пример работы, которой подробно написано здесь.

Для справки, приведем типовую распиновку USB:

Список необходимых деталей:

  • Atmega8 — 1 шт.
  • Кварц 12МГц — 1 шт.
  • Диод 1N4007 – 2 шт.
  • Светодиод — 3 шт.
  • Резисторы: 68 Ом — 2 шт., 330 Ом — 8 шт., 1,5 Ом — 1 шт., 100 Ом -1 шт., 1,5 кОм -1 шт., 10 кОм -1 шт., 1 мОм -1 шт.
  • Конденсаторы: 0,1мк — 3 шт., 22мк х 10В — 1 шт., 22p — 2 шт.

Похожие записи:


редактор

64 комментария

Обработал протокол USB на обычтном AVR через внешние прерывания?! Браво!

На программе Code Vision AVR какие фюзи поставит

Здравствует админ я собрал программатор и у меня в запасе есть ltp программатор чтобы прошить мк провода от ltp на собранную программатор под соединять или просто к мк надо соединять

LPT программатор подключите к ISP разъему. Не забудьте переключатель SA2 перевести в положение МОД

Можно изменить резисторы R3, R6, R9-R15 330Ом на другую?
И конденсаторов С1, С4, С6 0,1Мкф?

Доброго времени суток! Автор, спасибо за статью, программатор спаял — работает штатно. К делу подошел с размахом и сделал сразу три платы: программатор, плату переходников и еще одну. Вопрос, для чего третья плата? И если, есть, принципиальная схема.

Извиняюсь за драйвера не ту папку глянул. Всё равно не обновляются.

Добрый вечер.
Объясните почему после прошивки атмеги 8 и установки Fuse как показано на фотке, программатор перестает видеть контроллер вообще, все проги выдают ошибку, что не могут связаться с контроллером, что я сделал не так.

Все дело в том, что после прошивки, микроконтроллер начинает работать от внешнего задающего генератора (кварца). Подключите кварц (можно на 8МГц) на выводы 9 и 10.

Спасибо, заработало)) Подскажите с какими программами avr910 работает?

Я использую Khazama AVR Programmer

В Usbasp (китайский) применен кварц 12 мгц, можно его заменить на кварц 8мгц?

Здравствуйте!
В программаторе ATmega8A-PU, будет работать?
Программатор поддерживает ATmega328P-PU ?

Подскажите, как в Proteus поставить ISP.

спасибо большой уважаемый админ

день добрый ребят размер печатной платы какой

ширина 80мм, высота 55мм

Добрый вечер, спасибо за статью.
Подскажите можно ли в место Atmega8
использовать Atmega328p-pu

можно ли вместо LTP программатора прошить COM-программатором Громова?

Можно ли им прошить Pic 18f 2685?

Подскажите, в чем может быть проблема, все сделал правильно, перепроверил раз 10. При подключении 3 раза мигают лампочки чтения и записи и на компе определяется как неизвестное устройство с ошибкой дескриптора. Кстати, я так понял нужна Атмега8 16pu, у меня Atmega8A-pu, это ни на что не влияет?

Скажите люди,зачем в списке деталей присутствует резистор 1.5 Ом,если в схеме его нет? И Рез. 330 Ом там 9 а не 8 судя по схеме.

Вроде все на месте:
Резистор 330 Ом (R3,R5,R8,R9,R11,R12,R13,R14,R15).
Резистор на плате указан 1,5к (R4).

В списке деталей и 1,5 Ом, и 1,5кОм. Как раз 1,5 Ом на схеме нет, а вот 330 Ом на схеме 9 штук, а в списке 8. Детали покупал по списку — как раз 1,5 Ом лишний, а 330 не хватило (

В архиве есть схемка переходника,на ней есть кондеры и кварц. Но какие?? Кто подскажет?

Кварц поставьте на 8 Мгц, конденсаторы 15…22 пФ (хотя можно и без них)

Добрый вечер.
Объясните почему после прошивки атмеги 8 и установки Fuse как показано на фотке, программатор перестает видеть контроллер вообще, все проги выдают ошибку, что не могут связаться с контроллером, что я сделал не так.

А какие меги он может шить, конкретного списка нет?Буду очень признателен.

Какой тип программатора выбирать в Codevision, com порт порт смотреть в системе?

ПРОШИВАЙТЕ ПРОШИВКУ АВРДОПЕР ДЛЯ АВР 910, (перезагруска)

собрал данный программатор на SMD компонентах(ток микруха в DIP-e),как и полагается фьюзы в первой микрухе не так выставил-в итоге залочил ее,вторую прошил корректно,ничего не греется,светодиоды горят только в момент прошивки,на LED-меандр 1MHz…теперь еще один программатор в коллекции….в общем все мучения того стоили.
Рекомендую к повторению.

подскажите новичку!! тока без умничания) куда подключается разъем ISP? и зачем его подключили к простому LPT-программатору.

В рамках данной статьи мы не станем сильно погружаться в многообразие внутренних процессов и дебри архитектуры микроконтроллера. А основной нашей задачей будет являться – освоение азов практической работы с микроконтроллером и получение навыков для самостоятельной разработки и изготовления какого-либо интересующего нас электронного устройства.

Итак, что нам нужно для полного счастья?

2. Отладочная плата для микроконтроллера, желательно с DIP28 панелькой для микросхемы.

Отладочная плата для микроконтроллера

Удачным вариантом такой платы я бы посчитал изделие под названием "плата разработки ATmega8 – сделай сам", предлагаемое нашими китайскими друзьями за символические 150 отечественных рублей.

В комплект поставки входят:
– собственно, сама плата;
– Панелька DIP28;
– Кварцевый резонатор на 8 МГц;
– Разъём для подключения программатора;
– Разные деталюшки в виде: конденсаторов, резисторов, кнопок, светодиодов, т. е. всего того, что позволит легко запрограммировать и проверить микропроцессор в работе.

Можно, конечно, обойтись и без отладочной платы и произвести прошивку ATmega8 непосредственно в готовом устройстве, тем более что микропроцессор это сделать позволяет. Однако на практике произвести эти манипуляции заранее, а уже потом устанавливать микросхему по месту прописки оказывается значительно удобнее.

3. Программатор AVR USB, для того чтобы запрограммировать микроконтроллер, то есть перенести в него информацию с компьютера.

Программатор AVR USB

Такой программатор оценивается на aliexpress примерно в ту же стоимость, что и предыдущее изделие.

Программатор подсоединяется к USB порту компьютера, а другим своим концом к плате микроконтроллера.
Данное соединение осуществляется через ISP разъём кабеля, который также входит в комплект поставки.

Питание берётся от USB разъёма компьютера.
Работать программатор может под разными операционными системами, в том числе – под Windows.

Если тип приобретённого программатора не будет поддерживаться Atmel Studio, то придётся скачать и бесплатную программу прошивки микроконтроллеров, например, AVRDude.

4. Контактная макетная плата для монтажа без пайки.

Контактная макетная плата для монтажа без пайки

Такая макетная плата совместно с набором соединительных проводов (джамперов) будет весьма полезна на начальном этапе освоения микроконтроллера.

Она без какого-либо напряга и паяльника позволит соединить любые электронные элементы обвеса микроконтроллера в единую конструкцию, превращая весь процесс создания схемы в увлекательную игру с конструктором LEGO.

Подобный набор, состоящий из беспаечной макетной платы и комплекта проводов, обойдётся не дороже 200 рублей.


5. Для того чтобы в процессе отладки не перепрошивать ATmega8 бесчисленное количество раз, жизненно необходима программа, позволяющая отладить прошивку без участия микроконтроллера.
Для этой цели как нельзя лучше подходит программа для автоматизированного проектирования электронных схем (в том числе и микроконтроллеров) – Proteus. Она значительно упрощает процесс отладки программы без участия микроконтроллера, ведь любой накопитель имеет конечное число перезаписей, хотя это число и достаточно большое.

6. Если написать и отладить программу для микроконтроллера можно и без его непосредственного участия, то, по-любому, рано или поздно встанет конкретный вопрос: "А на фига мы всё это делали?".
Поэтому хочешь, не хочешь, а приобрести ATmega8 нам также всё ж таки придётся. Стоит она на Али, как и всё остальное, довольно-таки гуманных денег – около 100 рублей за единицу продукции, поэтому кошелёк опорожнит не сильно, но уважительного к себе отношения потребует.

Внешний вид и назначение выводов Atmega8

А теперь давайте-ка посмотрим: А что это за штука ATMEGA8 попала к нам в руки?

Рис.1 Внешний вид и назначение выводов Atmega8

Ещё один непомеченный цветом вывод (Рис.1) – 21 вывод (AREF).
AREF означает Analog Reference и является входом для подачи (при необходимости) опорного напряжения от внешнего источника питания.

Каждый вывод порта может работать либо как вход, либо как выход. Для того чтобы выбрать режим работы ножки микроконтроллера необходимо прописать нужные биты в соответствующие регистры.
Однако есть у части портов ввода-вывода и специфические функции, прописанные в документации на микросхему. Давайте посмотрим, что это за функции:

1. Порты PB0. РВ7. Два вывода (РВ6 и PB7) используются для подключения кварцевого резонатора. Выводы РВ2. РВ5 зарезервированы для программирования МК. Таким образом, для общего применения остаются порты PB0 и PB1.
2. Порты PC0. РС6. Порты PC0. РС5 есть возможность использовать в качестве аналоговых входов. РС6 обычно используется для общего внешнего сброса настроек, т. е. перезагрузки прошивки МК.
3. Порты PD0. РD7. Эти порты можно использовать для общего применения.

Atmega8 выпускается с уже настроенным для использования встроенным RC-генератором с частотой 1МГц, который позволяет запустить МК без внешних элементов. Посредством конфигурационных манипуляций, значения этой частоты могут принимать также значения: 2, 4 и 8 MHz. Однако для решения многих задач стабильности RC-генератора оказывается явно недостаточно, в связи с чем для тактирования микроконтроллера используется внешний кварцевый резонатор.

Следует запомнить, что МК не является устройством, которое управляет большими мощностями, для этого есть транзисторы, тиристоры и прочие силовые элементы. Максимальный ток линии ввода/вывода составляет 40мА, максимальный суммарный ток по цепям питания и GND – 200мА.
И под занавес:

Основные технические параметры ATmega8:

Ну, на этом, пожалуй, и всё.
Для желающих посерьёзней углубиться в знания, могу порекомендовать datasheet производителя и русскоязычное описание ATmega8, с которым можно познакомиться по ссылке - ATMEGA8.

А на следующих страницах будем осваивать язык программирования, а также запускать несложные устройства, выполненные на микроконтроллерах.


Связь двух микроконтроллеров AVR ATmega8 через радиочастотные модули


Беспроводная связь может значительно расширить возможности микроконтроллеров по управлению какими либо процессами, поэтому изучение взаимодействия микроконтроллеров с радиочастотными модуля является весьма актуальной задачей для специалистов в этой области. В самом простом случае беспроводная связь на короткие расстояния организуется с помощью … Читать далее →

Подключение Bluetooth-модуля HC-05 к микроконтроллеру AVR ATmega8


В этой статье мы рассмотрим подключение Bluetooth-модуля HC-05 к микроконтроллеру ATmega8 (семейство AVR), а затем установим связь между смартфоном под управлением операционной системы Android и микроконтроллером ATmega8 с помощью Bluetooth-модуля, который будет использовать для связи с микроконтроллером универсальный асинхронный приемопередатчик … Читать далее →

Подключение светодиодной матрицы 8х8 к микроконтроллеру AVR ATmega8


В этой статье мы рассмотрим подключение светодиодной матрицы 8х8 к микроконтроллеру ATmega8 (семейство AVR), на которой после этого можно отображать буквы алфавита. Типовая светодиодная матрица 8х8 показана на следующем рисунке. Светодиодная матрица 8х8 содержит 64 светодиода, которые упорядочены в форме … Читать далее →

Связь AVR ATmega8 и Arduino Uno через универсальный асинхронный приемопередатчик (UART)

В этой статье мы рассмотрим процесс взаимодействия микроконтроллера ATmega8 (семейство AVR) и платформой Arduino Uno через последовательный порт. Взаимодействие будет осуществляться через универсальный асинхронный приемопередатчик (UART — Universal Asynchronous Receiver Transmitter) – это последовательный порт связи. Подобное взаимодействие часто бывает … Читать далее →

Подключение оптопары к микроконтроллеру AVR ATmega8


Пожарная сигнализация на микроконтроллере AVR ATmega8


В этой статье мы рассмотрим пожарную сигнализацию на микроконтроллере ATmega8 (семейство AVR) и датчике огня. Датчик огня может быть любого типа, мы в нашей схеме будем использовать инфракрасный датчик огня – он не отличается точностью, но зато он самый дешевый … Читать далее →

Измерение интенсивности света с помощью фоторезистора и микроконтроллера AVR ATmega8


В этой статье мы подключим фоторезистор к микроконтроллеру ATmega8 (семейство AVR) и с его помощью будем измерять интенсивность света. Для этой цели мы будем использовать 10 битный аналого-цифровой преобразователь микроконтроллера (АЦП). Общие сведения о фоторезисторах Фоторезистор представляет собой преобразователь, чье … Читать далее →

Амперметр на 100 мА на микроконтроллере AVR ATmega8


В этой статье мы рассмотрим низкодиапазонный амперметр на микроконтроллере ATmega8 (семейство AVR). Для реализации этой идеи мы задействуем 10 битный аналого-цифровой преобразователь (АЦП) данного микроконтроллера. Для упрощения схемы используем резистивный метод, являющийся самым простым способом определения нужных нам параметров. В … Читать далее →

Взаимодействие двух микроконтроллеров AVR ATmega8 через UART


В этой статье мы рассмотрим процесс взаимодействия двух микроконтроллеров ATmega8 (семейство AVR) через последовательный порт. Взаимодействие будет осуществляться с помощью универсальных асинхронных приемопередатчиков (UART — Universal Asynchronous Receiver Transmitter), имеющихся в микроконтроллерах. Подобное взаимодействие часто бывает востребовано в различных системах. … Читать далее →

Читайте также: