Skip to content

ATmega168P suport in Arduino IDE

Aprilie 6, 2014

UPDATE 23 aprilie 2014: Aceleasi modificari functioneaza si pentru Arduino 1.5.x

Oficial, acest microcontroler nu este suportat the Arduino IDE. ATmega168P este o varianta imbunatatita a ATmega168, cu un consum redus de energie (picoPower) in modul „sleep”.  De ce as folosi un astfel de microcontroler cand cel de pe placa Arduino UNO are dublu de memorie Flash si RAM? Pai este recomandat in aplicatiile finale, cand codul aplicatiei nu depaseste 16Kb Flash si 1Kb RAM necesar de memorie si nu te lasa inima (si buzunarul) sa consumi un ATmega328P. Haideti sa vedem cum obtinem suport in Arduino IDE 1.0.5.Urmatorul „tutorial” presupune ca aveti la dispozitie un programator ISP (sau macar o placa arduino functionala) pentru a putea inscrie bootloader-ul Optiboot in micocontrolerul tinta.

1. Intai, descarcam bootloader-ul Optiboot pentru ATmega168P de aici. Deschideti arhiva si copiati fisierul optiboot_atmega168p.hex in folderul

(arduino_folder)/hardware/arduino/bootloaders/optiboot/

2. Apoi trebuie sa includem specificatiile noii placi in fisierul „boards.txt” din folderul

(arduino_folder)/hardware/arduino/

Copiati urmatorul text la sfarsitul acestui fisier (sau la inceput, pentru a fi pe prima pozitie in meniu):

#############################################################

atmega168pext.name=Optiboot Arduino ATmega168P (5V, 16 MHz)

atmega168pext.upload.protocol=arduino
atmega168pext.upload.maximum_size=15872
atmega168pext.upload.speed=115200

atmega168pext.bootloader.low_fuses=0xff
atmega168pext.bootloader.high_fuses=0xdd
atmega168pext.bootloader.extended_fuses=0x04
atmega168pext.bootloader.path=optiboot
atmega168pext.bootloader.file=optiboot_atmega168p.hex
atmega168pext.bootloader.unlock_bits=0x3F
atmega168pext.bootloader.lock_bits=0x0F

atmega168pext.build.mcu=atmega168p
atmega168pext.build.f_cpu=16000000L
atmega168pext.build.core=arduino
atmega168pext.build.variant=standard

Reporniti Arduino IDE si in acest moment puteti inscrie bootloader-ul Optiboot in microcontrolerul ATmega168P folosind instructiunile de aici, insa la punctul (3.) din primul capitol, vom selecta placa noastra, „Optiboot Arduino ATmega168P (5V, 16 MHz)„.  Sau folositi direct utilitarul avrdude impreuna cu programatorul vostru ISP, specificand aceiasi fuzibili ca in codul de mai sus.

3. Pana acum a fost usor. De acum urmeaza partea cea grea. Trebuie adaugat in librariile si core-ul Arduino cod pentru microcontrolerul nostru. De exemplu, acolo unde intalniti cod de genul

#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)

inlocuiti cu

#if defined(__AVR_ATmega168__) || (__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)

Am ales versiunea 1.0.5 pentru ca acest lucru este deja facut pentru „core” insa unele biblioteci de functii cum este Firmata, nu au introduse modificarile necesare (incercati sa compilati exemplul „ServoFirmata” – vi se va cere sa modificati fisierul „Boards.h” si o faceti ca mai sus).

 

Lasă un comentariu

Va rog, nu folositi limbaj de messenger. Multumesc!

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s

%d blogeri au apreciat asta: