todo navbar etc

Arduino на дискретных элементах

Купил на базаре деталек на 19грн(~$2.375). Подключил по схеме:

Контроллер попался ATmega8L-8PU. Выбирал подешевле и корпусе dip. Лишь потом вчитался в доки, где написано, что проц будет работать на частотах не более 8МГц. Правда на многих форумах идут споры об правильной интерпретации даташитов :-) Значительная часть юзеров утверждают, что чип ни чем не отличается от атмег с явной маркировкой 16МГц. Это обнадеживает, т.к. кварц я купил на 16. Еще взял 2 конденсатора на 22пФ и панельку на DIP28.

Изображена типовая схема включения микроконтроллера. При чем тут Ардуино? Делаю не полный аналог по всем пинам, размерам. Хотел решить такую задачку - прошить туда бутлоадер и ардуиновский скетч из среды Arduino IDE.

Использую имеющуюся плату Arduino Mega в качестве программатора. Сначала прошиваю бутлоадер. Собираю такую схемку:
Zoom +
На макетной плате будет выглядеть примерно так (у меня самого такой макетки нет):

Желтый, черный провода - питание, синие - индикация состояния программатора.

  1. Подключаем usb к ардуине. Загружаем в IDE скетч File > Examples > ArduinoISP. В оригинальном скетче используются пины 7, 8, 9 для светодиодов. Мне было удобнее чтобы был задействован только один разъем ардуины, поэтому в скетче программатора переопределяю:
    	#define LED_HB    49 //9 original pins
    	#define LED_ERR   47 //8
    	#define LED_PMODE 45 //7
    
    На картинке понятно, зачем это было надо: Zoom+
  2. Делаем upload скетча
  3. Выбираем целевую платформу (которую программировать будем) Tools > Board > название девайса, в который входит программируемый контроллер, у меня Atmega8
  4. Задаем протокол программатора Tools > Programmer > Arduino as ISP
  5. Шьем бутлоадер Tools > Burn Bootloader
  6. Имеем ардуино почтисовместимый девайс. "Почти" потому, что шилды сюда не воткнешь, но это и не нужно для данной задачи. Так же не будет работать передача отладочной информации на компьютер командами Serial.print(123); и т.п, но это можно пофиксить подключив переходник USB<->UART. Надеюсь, что китайцы пришлют и я опробую этот вариант.
Пробую тестовый скетч. Открываю File > Examples > 01.Basics > Blink. Внимание! Прошиваем не кнопкой на тулбаре, т.к. в основной плате должен быть загружен ArduinoISP, а через меню File > Upload Using Programmer (Ctrl+Shift+U). Вешаем на 19-ю ногу контроллера светодиод с резистором и наблюдаем мигание pin13.

Все заработало с первого раза. Было несколько моментов, из-за которых у меня были сомнения в успехе. Это и амега с индексом 8L-8PU и кварц непонятный дали на базаре :-) Но он стОит копейки, поэтому пока не заморачивался. На кварце вместо частоты 16MHz написана маркировка, о которой даже google не слыхал. Приведу ее здесь, чтобы услыхал: A83NDK:74, продавец уверял, что ему надо просто поверить. Контроллер завелся, как определить точную частоту, пока не знаю. Пробовал на глаз по секундомеру функцию delay(30000); - отмеряет нормально.

Добавлено 2013-03-22. Прошивка скетчей без использования программатора

#21
Тут могла бы быть ваша реклама :-)
Tags