• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Minimalne "Arduino" na płytce stykowej a bootloader
#1
Pod tak enigmatycznym tytułem chciałbym poruszyć temat bootloader'a, którego za bardzo nie rozumiem.
Mam kilka (mam nadzieję że prostych) pytań i problem do rozwiązania.

Chciałem zrobić sobie minimalne Arduino na płytce stykowej z pomocą Atmegi328p (wewnętrzny oscylator 8MHz). Prosta rzecz.

Dodatkowo, ponieważ nie posiadam programatora chciałem użyć Arduino jako ISP - opis można znaleźć choćby tu:
https://www.arduino.cc/en/Tutorial/ArduinoISP
oraz https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

To również się udało. Po załadowaniu Arduino ISP skech'a założyłem kondensator na Arduino UNO (tak jak pisze w tutorialu: "you'll need to add a 10 uF capacitor between reset and ground.") i podłączyłem Atmege328p siedzącą na płytce stykowej zgodnie z obrazkiem (tutorial) , wybrałem programator "Arduino as ISP" oraz odpowiedni board (wcześniej oczywiście dodałem odpowiednie wpisy do boards.txt).
Wypaliłem bootloader. Poszło.

I teraz samo sedno: wydaje mi się że w przypadku używania Arduino jako ISP jest to (wypalenie bootloadera) krok zbędny (?)
Mogę przecież wybrać sketch (choćby Blink z examples) i wypalić przez "Upload" - bez wypalania wcześniej bootloadera (?)
To było pierwsze pytanie Smile

Teraz drugie: czym różni się opcja "Upload" od "Upload using programmer".
Jak dla mnie wybranie zarówno jednej jak i drugiej skutkowało tym samym. Jeżeli są dwie opcje to chyba się czymś różnią ?

I jeszcze trzecie pytanie: czym różni się opcja z menu "Arduino as ISP" od "Arduino ISP" ?

Bootloader miałby dla mnie sens gdyby dało się się później wgrywać sketche za pomocą jakiegoś interfejsu FTDI - mam taki, ale po podłączeniu do mikrokontrolera (RX do TX, TX do RX, DTR do RESET przez kondensator 100nF, masa do masy) - niestety upload nie działa - mam błąd:

avrdude: usbdev_open(): did not find any usb device "usb"

(wybrałem domyślny programator Arduino - "AVRISP mkII" , oczywiście bootloader wcześniej został wgrany)
Sugerowałem się tutorialem https://www.arduino.cc/en/Main/Standalone

Czy to podejście jest OK ? Czy o czymś zapomniałem ?

Używam Arduino IDE 1.6.11
 
Odpowiedź
#2
OK, problem rozwiązany, prawdopodobnie był to zły bootloader (znaleziony gdzieś na Majsterkowo.pl), użyłem innego i wszystko śmiga. Może komuś się przyda wpis jaki mam w boards.txt:

# --- START ---

atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock)

atmega328bb.upload.tool=avrdude
atmega328bb.upload.protocol=arduino
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600

atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F

atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.core=arduino:arduino
atmega328bb.build.variant=arduino:standard
atmega328bb.bootloader.tool=arduino:avrdude
atmega328bb.build.board=AVR_ATMEGA328BB

# --- END ---

Ale zadane pytania pozostają nadal w mocy :)
 
Odpowiedź
#3
Programowanie poprzez isp nie wymaga wcześniejszego wypalania bootloadera wgrywa się poprzez "Upload using programmer"
Programowanie poprzez uart wymaga wcześniej wypalania bootloadera wgrywa się poprzez "Upload"
avrdude: usbdev_open(): did not find any usb device "usb" czyli nie wykrył interfejsu USB -> UART
"wybrałem domyślny programator Arduino - "AVRISP mkII"" aby wgrać poprzez UART trzeba wybrać port COM a nie programator on podczas wgrywania poprzez np. FTDI nie ma żadnego znaczenia .
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#4
(03-09-2016, 23:13)JasQ napisał(a): Programowanie poprzez isp nie wymaga wcześniejszego wypalania bootloadera wgrywa się poprzez "Upload using programmer"
Programowanie poprzez uart wymaga wcześniej wypalania bootloadera wgrywa się poprzez "Upload"
avrdude: usbdev_open(): did not find any usb device "usb" czyli nie wykrył interfejsu USB -> UART
"wybrałem domyślny programator Arduino - "AVRISP mkII"" aby wgrać poprzez UART trzeba wybrać port COM a nie programator on podczas wgrywania poprzez np. FTDI nie ma żadnego znaczenia .

Dzięki. Jeszcze jedno - widzę ze w menu "Szkic" jest opcja "Eksport skompilowanego programu" i poniżej "Pokaż folder szkicu". Gdy się tego użyje to widać że do folderu trafiają dwa pliki:
<nazwa_szkicu>.arduino_standard.hex
<nazwa_szkicu>.with_bootloader.arduino_standard.hex

czy ten drugi plik hex zawiera skompilowany kod szkicu wraz z bootloaderem ?
 
Odpowiedź
#5
Tak zobaczysz różnicę po ilości bajtów
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#6
(04-09-2016, 20:49)JasQ napisał(a): Tak zobaczysz różnicę po ilości bajtów

zobaczyłem różnicę i tak powstało pytanie Smile
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości