ATmega328 programozása

Az ATmega328 egy egycsipes mikrovezérlő, amelyet az Atmel állít elő és a megaAVR sorozat tagja. A 8 bites Atmel AVR processzoron alapul, amelyet flashmemória és különböző perifériák egészítenek ki. A vezérlők programozás után akár önmagukban is működőképesek, tápfeszültség és órajelütemező kvarckristály segítségével.[1]

A frissen vásárolt csipek általában nem tartalmaznak bootloader-t vagyis rendszerbetöltő programot, ezt az első használat előtt nekünk kell beleégetni. Ezzel a témával kapcsolatban rengeteg, főleg angol nyelvű leírást lehet találni, az alábbiakban összegyűjtöttem néhányat:

https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

http://www.instructables.com/id/Burning-the-Bootloader-on-ATMega328-using-Arduino-/

http://www.instructables.com/id/burning-atmega328-pu-and-atmega328p-pu-bootloader/step2/The-software/

Én ez a videó alapján dolgoztam, a bekötést és a bootloader égetés folyamatát részletesen leírja. A bootloader arduino kifejezésre keresve a youtube-on az első találat.

Mielőtt hozzákezdenénk, vessünk egy pillantást az ATmega328 lábkiosztására.

atmega328whttp://jobs.arduinoexperts.com/wp-content/uploads/2013/03/atmega328w.png

Összekötés

Működés közbeni összeköttetések az ATmega328 csipen belül

7,20 5V
8,22 GND ground-image-th
9⇔10 16MHz kristállyal kötjük össze 9-es és a 10-es lábat
9 → GND 9. láb és a GND kötött egy 16-33pF kondenzátor van
10 → GND 10. láb és a GND kötött egy 16-33pF kondenzátor van

 

Bootloader égetése, és a felprogramozás közben alkalmazott összeköttetések

ATmega328  Arduino                                                                          
1 10
17 11
18 12
19 13

 

1. Miután megvagyunk az összeköttetéssel USB porton keresztül csatlakoztatjuk az Arduino-t a számítógéphez, elindítjuk az Arduino szoftvert (https://www.arduino.cc/en/Main/Software).

2. Ami a videóból kimaradt, megnyitjuk az ArduinoISP programot, majd feltöltjük az Arduino modulra. File→Examples→ArduinoISP

3. Arduino-t programozó módba állítjuk
Tools→Programmer→Arduino as ISP

4. Majd beégetjük a bootloadert
Tools→Burn bootloader

Ez néhány mp alatt megvan, ha a TX és RX ledek az Arduino-n vadul villognak, akkor mindent jól csináltunk. Ezután egy próbaprogramot töltünk fel File→Examples→01.Basic→Blink. A program megnyitása után nyomva tartjuk a shift billentyűt, majd az Upload nyílra kattintunk, ami ebben az esetben Upload Using Programmer-re változik. Ha ezt nem tesszük meg a program az Arduino-ra fog feltöltődni és nem a programozni kívánt csipre.  Persze ki is cserélhetjük a csipet ahogy a srác a videóban csinálta, de így szerintem egyszerűbb.

10524-01

Az ATmega328 csip 19 lábára, ami most az Arduino 13 digitális kimenetének felel meg rákötünk egy LED-et (220Ω ellenállások keresztül), ha ez villog akkor jók vagyunk.

 

2018-08-25

Egy kis kiegészítés a cikkhez, a minap belefutottam egy hibaüzenetbe bootloader égetés közben: Expected signature for ATmega328P is 1E 95 0F

Mindig ATMEGA 328P-PU csipet használtam, amikor kifogyott a készlet újrarendeltem és ATMEGA 328-PU-t kaptam, amibe nem tudtam beégetni a bootloader-t.  Felszínesen utánaolvastam a neten, és arra jutottam, hogy nagyon hasonlóak, amire én használom a különbség nem érzékelhető, szerencsére megoldást is találtam a problémára így nem kellett visszaküldenem sem a mikrovezérlőket.

Arduino/hardware/arduino/avr könyvtárban a boards.txt file-t kell átírni úgy hogy a benne szereplő összes ATMEGA328P jelölésből kitöröljük a P-t (kis p-t is) elmentjük majd a bootloader égetés sikeres lesz. Természetesen korábban csináltunk egy mentést a boards.txt file-ról, amivel visszaállítjuk az eredeti formájába.

Felhasznált irodalom

[1] https://hu.wikipedia.org/wiki/ATmega328

https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

http://www.instructables.com/id/Burning-the-Bootloader-on-ATMega328-using-Arduino-/

http://www.instructables.com/id/burning-atmega328-pu-and-atmega328p-pu-bootloader/step2/The-software/