Vaša IP adresa: 18.188.10.246
Počet návštev: 30489

Programovanie AVR bez programátora

Programovanie AVR v prostredí Atmel Studio bez programátora

Na programovanie mikrokontrolérov (MCU) sa obyčajne vyžaduje programátor, ktorý je určený pre daný typ MCU. V prípade programovania MCU Atmel AVR je to napríklad AVR Dragon (už sa nevyrába) alebo Atmel ICE. Výhodou programátorov býva okrem možnosti nahratia programu do MCU, aj ladenie programu, tzv. debbuging, priamo na čipe za behu programu. Nevýhodou býva pomerne vysoká cena profesionálnych programátorov.

Ak má MCU v sebe zavedený takzvaný zavádzač (bootloader), tak je možné ho naprogramovať napr. po sériovej linke (UART). Takýto zavádzač v sebe obsahujú vývojové dosky platformy Arduino. Pomocou Arduino zavádzača je možné nahrať do MCU kód cez rozhranie UART bez nutnosti vlastniť programátor. Ak MCU takýto zavádzač neobsahuje, tak je možné ho nahrať len pomocou spomínaného programátora. Dosky Arduino sa programujú cez jednoduché prostredie Arduino IDE (Integrated Development Environment). Arduino sa natívne programuje v jazyku Wiring, ktorý predstavuje akýsi metajazyk s vylepšenou sadou makier nad C++. Viac o programovaní Arduina sa dočítate tu. Dôležité je, že kód môžeme písať aj v jazyku C. V prípade programovania MCU z rodiny AVR (Arduino UNO, Arduino Mega, ...) Arduino IDE rozpoznáva makrá registrov daného MCU. To znamená, že MCU môžeme v prostredí Arduino IDE programovať rovnako ako v prostredí Atmel Studio, ktoré je profesionálnym IDE na programovanie MCU od výrobcu Atmel. Výhodou prostredia Atmel Studio je napr. prehľadnejšie farebné zvýrazňovanie kódu, kontrola syntaxe, kontrola existencie premenných, funkcií, registrov a odkazovanie na definície funkcií.

Postup nastavenia Atmel Studia na nahrávanie kódu do dosky Arduino:

Pred aplikáciou nasledujúcich krokov je nutné mať nainštalované:

  • Atmel Studio 7 a Arduino IDE, alebo
  • Atmel Studio 7 a potrebné súbory avrdude.conf a avrdude.exe, ktoré si môžete stiahnuť tu.

1. Spustite Atmel Studio IDE.

Atmel Studio IDE
2. Z menu programu vyberte Tools -> External Tools…

External Tools Menu
3. Do okna External Tools zadajte nasledovné:

External Tools
  • Title:

    Arduino UNO

  • Command:

    C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe

    Je uvedená štandardná cesta k avrdude.exe. Skontrolujte cestu a umiestenie súboru avrdude.exe.
  • Arguments:

    -C"c:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -v -patmega328p -carduino -PCOM6 -b115200 -D -Uflash:w:"$(ProjectDir)Debug\$(TargetName).hex":i

    POZOR: Ak nastavujete nahrávanie programu pre MDB2, tak nutné zmeniť rýchlosť nahrávania na 250 000 Baud (-b250000)!!!
    Význam argumentov:
    -C<Path_to_avrdude.conf> – a path to avrdude.conf, you can find this file in Arduino IDE’s installation directory. Ensure you enter the path in quotes in case there are any spaces in your path.
    -p<part number> – AVR processor model
    -c<programmer type> – programmer type being used to program the board
    -P<port> – COM port you should have noted in stage 2
    -b<baud rate> – baud rate for the programmer.
    -D – disables auto erase for flash memory (required for wiring programmer used with Arduino Mega 2560)
    -U<memorytype>:<operation>:<path to HEX file>:<format> – this is where you should leverage Atmel Studio’s variables to always point to freshly complied and generated HEX file. List of variables and their descriptions can be found at Atmel’s help page.
  • Zaškrtnite políčko Use Output Window a kliknite na OK.
4. Skompilujte program výberom z menu: Build -> Build Solution alebo stlačte tlačidlo F7. Skontrolujte výstup:

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========


5. Nahrajte program výberom z menu: Tools -> Arduino UNO

Nahrávanie programu cez zavádzač (bootloader) Arduino

Skontrolujte výstup:

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude.exe: Device signature = 0x1e950f (probably m328p)
avrdude.exe: safemode: lfuse reads as 0
avrdude.exe: safemode: hfuse reads as 0
avrdude.exe: safemode: efuse reads as 0
avrdude.exe: reading input file "C:\Users\...\AVR_Arduino.hex"
avrdude.exe: writing flash (276 bytes):

Writing | ################################################## | 100% 0.06s

avrdude.exe: 276 bytes of flash written
avrdude.exe: verifying flash memory against C:\Users\...\AVR_Arduino.hex:
avrdude.exe: load data flash data from input file C:\Users\...\AVR_Arduino.hex:
avrdude.exe: input file C:\Users\...\AVR_Arduino.hex contains 276 bytes
avrdude.exe: reading on-chip flash data:
Reading | ################################################## | 100% 0.05s

avrdude.exe: verifying ...
avrdude.exe: 276 bytes of flash verified

avrdude.exe: safemode: lfuse reads as 0
avrdude.exe: safemode: hfuse reads as 0
avrdude.exe: safemode: efuse reads as 0
avrdude.exe: safemode: Fuses OK (E:00, H:00, L:00)

avrdude.exe done. Thank you.

Použité zdroje

Arduino po slovensky: Programovanie Arduina
Programming Arduino with Atmel Studio 7
Arduino / ATmega328p Embedded C Firmware Programming Tutorial