Arduino без Arduino

Недавно мы вытащили из Arduino кварц и успешно заставили ее работать. Так у нас получилась Arduino без кварца. Мы решили пойти дальше и сделать Arduino без Arduino. Спешите видеть!

Сегодня у нас в гостях чип Atmega168. Он полностью совместим с Atmega328, на котором обычно строится Arduino, единственная разница - размер флеша, который равен 16 Кбайтам вместо 32-х (и цена, соответственно).

Этот друг у нас в корпусе TQFP32, и чтобы его было удобнее прогать, засадим его в специальную панельку.

 

Теперь определим, куда же подключать программатор! Для этого воспользуемся замечательной картинкой (поможет правый клик и "открыть картинку в новой вкладке")

 

Находим на ней пины RST, VCC, GND, SCK, MOSI, MISO и подключаем к ним наш программатор. Заодно сразу подключим светодиод на первые попавшиеся подходящие пины. После непродолжительного но внимательного изучения панельки стало понятно, что левый верхний пин - это 29, а дальше все по кругу. Приведем табличку, чтобы не запутаться при подключении.

RST 29        28  
  30   27  
  31   26  
  32   25  
  1   24  
  2   23 LED+
GND 3     ----- 22  
VCC 4 |   ЧИП   | 21 LED-
  5 | ЗДЕСЬ | 20  
  6     ----- 19  
  7   18  
  8   17 SCK
  9   16 MISO
  10   15 MOSI
  11   14  
  12   13  

 Теперь подключим все. Получается вот так:

 

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

Итак, для нашей каши сложим в домашнюю папку вот такие два файла:

Arduino\hardware\arduinonsk\avr\boards.txt
Arduino\hardware\arduinonsk\avr\bootloaders\atmega\noboot.hex

Файл noboot.hex - это просто пустой файл. Он нужен, чтобы обмануть среду Arduino и заставить выставить фьюзы, которые мы хотим.

В файл boards.txt мы добавляем свое новое устройство, которое назовем NO Arduino 168:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
##############################################################
 
noarduino168.name=NO Arduino 168 
 
noarduino168.upload.protocol=arduino
noarduino168.upload.maximum_size=16384
noarduino168.upload.speed=57600
 
noarduino168.bootloader.low_fuses=0xE2
noarduino168.bootloader.high_fuses=0xDF
noarduino168.bootloader.extended_fuses=0x05
 
noarduino168.bootloader.file=atmega/noboot.hex
noarduino168.bootloader.unlock_bits=0x3F
noarduino168.bootloader.lock_bits=0x0F
 
noarduino168.build.mcu=atmega168p
noarduino168.build.f_cpu=8000000L
noarduino168.build.core=arduino:arduino
noarduino168.build.variant=arduino:standard
 
noarduino168.bootloader.tool=arduino:avrdude
noarduino168.upload.tool=arduino:avrdude

Проверяем, что в списке устройств появилась наша NO Arduino 168:

 

Жмем Burn Bootloader - выполняется команда:

1
2
3
"/usr/share/arduino/hardware\tools\avr/bin/avrdude" "-C/usr/share/arduino/hardware\tools\avr/etc/avrdude.conf" 
-v -patmega168p -cusbasp -Pusb "-Uflash:w:/home/nes/Arduino/hardware/arduinonsk/avr/bootloaders/atmega/noboot.hex:i" 
-Ulock:w:0x0F:m

AVRDUDE выкидывает ошибку, что не может прочитать файл:

1
2
3
avrdude: reading input file "/home/xxx/Arduino/hardware/arduinonsk/avr/bootloaders/atmega/noboot.hex"
avrdude: ERROR: No valid record found in Intel Hex file "/home/xxx/Arduino/hardware/arduinonsk/avr/bootloaders/atmega/noboot.hex"
avrdude: read from file '/home/xxx/Arduino/hardware/arduinonsk/avr/bootloaders/atmega/noboot.hex' failed

но нам пофиг, потому что фьюзы к этому моменту уже прошились.

 

Теперь напишем скетч блинк :)

1
2
3
4
5
6
7
8
9
10
11
void setup(){
	pinMode(15,OUTPUT);
}
 
void loop(){
	digitalWrite(15,HIGH);
	delay(1000);
 
	digitalWrite(15,LOW);
	delay(1000);
}

 Жмем Upload by Using Programmer. Всё! Светодиод моргает [примерно] раз в секунду :-)

 

 

 Так мы  научились делать проекты на Arduino без Arduino, используя один лишь чип Atmega168. Теперь, взяв такой чип и изготовив под него плату, можно делать всё более лучше!

Метки: программирование, Arduino, hack, хардкор, Atmega168

Добавить комментарий


Защитный код
Обновить