kupiłem ją bo myślałem ze nie będzie żadnych problemów żeby ją zaprogramować gdyż miała
wspólną dokumentację z uC na Arduino. Niestety nie udało mi się znaleźć działającego
bootloadera. Postanowiłem poszukać sposobu na zaprogramowanie ATmegi bez bootloadera i
chyba mi się udało, bo jak na razie wszystko działa.
Wchodzimy na stronę http://www.engbedded.com/fusecalc i wybieramy model naszego uC, w
moim przypadku będzie to ATmega88PA. To co nas interesuje to bity konfiguracyjne tzw. fuse,
znajdują się one w ostatniej tabeli. W moim przypadku będzie to:
Low=0x62
High=0xdf
Extended=0xf9
W przypadku extended fuse trzeba uważać bo nie zawsze występuje np. ATmega8A, wtedy
ograniczamy się tylko do low i high fuse, dodatkowo w moim przypadku obok wartości extended
pojawiła się gwiazdka która sugeruje (czerwony tekst po prawej) zmianę extended fuse z 0xf9 na
0x01 a więc ostatecznie moje bity konfiguracji będą wynosić:
Low=0x62
High=0xdf
Extended=0x01
Teraz stworzymy własny wpis do pliku boards.txt
Kod: Zaznacz cały
atmega88.name=ATmega88 (internal 1 MHz)
atmega88.bootloader.low_fuses=0x62
atmega88.bootloader.high_fuses=0xdf
atmega88.bootloader.extended_fuses=0x01
atmega88.upload.maximum_size=8192
atmega88.build.mcu=abc
atmega88.build.f_cpu=1000000L
atmega88.build.core=arduino
atmega88.build.variant=standard
wpisy w pliku, nazwa ta jest dowolna. Pierwszy wiersz to nazwa która wyświetli się w menu Board,
kolejne trzy to fuse które już mamy. Piąta to rozmiar pamięci flash (8 * 1024 = 8192), w szóstej
polecam na razie wpisać byle co np. abc. Siódma to częstotliwość. Ostatnie dwie nie jestem pewien
za co odpowiadają ale muszą być :) Zapisujemy zmiany w pliku, uruchamiamy Arduino, z menu
Tools > Board wybieramy nasz właśnie dodany wpis, otwieramy program Blink i klikamy Verify.
Powinien pokazać się nam błąd „MCU 'abc' supported for assembler only” i lista obsługiwanych
uC, wyszukujemy nazwę najbardziej zbliżoną do naszej ATmegi (u mnie atmega88p) i kopiujemy ją
(wielkość liter ma znaczenie) do pliku boards.txt. Ostatecznie wpis będzie wyglądał:
Kod: Zaznacz cały
atmega88.name=ATmega88 (internal 1 MHz)
atmega88.bootloader.low_fuses=0x62
atmega88.bootloader.high_fuses=0xdf
atmega88.bootloader.extended_fuses=0x01
atmega88.upload.maximum_size=8192
atmega88.build.mcu=atmega88p
atmega88.build.f_cpu=1000000L
atmega88.build.core=arduino
atmega88.build.variant=standard
-Wgrywamy ArduinoISP na Arduino.
-Podłączamy ATmege według schematu http://arduino.cc/en/uploads/Tutorial/S ... ardAVR.png
-z menu Tools > board wybieramy nasz wpis
-wybieramy Tools > Programmer > Arduino as ISP
-Klikamy Burn Bootloader (ten punkt powtarzamy tylko jeśli zmienimy w pliku boards.txt fuse bity na inne)
-teraz możemy już wgrać swój program
UWAGA – nie zmieniajcie domyślnych fuse bitów, bo poprzez nieumiejętne modyfikacje tych
wartości można sobie zablokować uC. Polecam przeczytać artykuł http://www.drzasiek.cba.pl/fusebity.php
jak również forum elektroda w którym sporo osób opisuje jak zablokowali sobie uC
Sam dopiero zaczynam przygodę z programowaniem dlatego nie odpowiadam za ewentualne
problemy. Ja testowałem ten sposób na dwóch uC (ATmega88PA-PU i ATmega168P-20PU) i
wszystko działa.