poniedziałek, 20 stycznia 2014

Wgrywanie bootloadera przez ISP do Atmega16, wgrywanie programu

Wgrywanie bootlader-a i programu do mikro kontrolera Atmega16


KROK 1:


wchodzimy w katalog: arduino\hardware\arduino\variants
(katalog arduino oznacza folder w którym znajduje się program arduino)

następnie w folderze variants tworzymy nowy folder i zmieniamy jego nazwę na: mega16

w stworzonym folderze "mega16" zapisujemy plik
pins_arduino.h
który pobieramy ze strony:
https://github.com/sudar/arduino-extra-cores/blob/master/variants/mega16/pins_arduino.h

(jeśli nie możemy pobrać - tworzymy w folderze mega16 nowy dokument tekstowy, wklejamy do niego cały kod z powyższej strony, i zmieniamy nazwę pliku na: pins_arduino.h )



KROK 2:


na stronie:
http://www.engbedded.com/fusecalc

1. Wybieramy z rozwijanej listy "AVR part name:" interesujący nas mikrokontroler
w tym przypadku jest to "ATmega16".

2. Wybieramy z rozwijanej listy rodzaj i częstotliwość oscylatora którym taktowany będzie procesor mikrokontrolera ( Int. - oscylator wewnętrzny ; Ext - oscylator zewnętrzny)
Ja wybrałem wewnętrzny oscylator RC o częstotliwości taktowania 8MHz

3. Jeśli nie korzystamy z interfejsu JTAG odznaczamy zaznaczenie "JTAG Interface Enabled; [JTAGEN=0]"
jeśli tego nie odznaczymy, niektóre wyjścia mikokontrolera nie będą dostępne do normalnego użytkowania.

Wszystkie zmiany ustawień zaznaczone są na poniższym obrazku:



Klikamy na przycisk "Apply feature settings" aby zapisać  dokonane zmiany.

Przewijamy stronę na dół aż do tabelki:


Zapisujemy sobie wartości Low i High
Wartości te są różne dla innych ustawień. Dla ustawień jak na pierwszym obrazku otrzymamy:
Low = 0xE4
High = 0xD9

otwieramy plik:
 arduino-x.x.x-windows\arduino-1.0.4\hardware\arduino\boards.txt


najlepiej to zrobić za pomocą programu Notepad++ dostępny za darmo w internecie

na samym końcu pliku boards.txt wpisujemy:

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

 atmega16.name=ATmega16 (internal 8 MHz)
 atmega16.bootloader.low_fuses=0xE4
 atmega16.bootloader.high_fuses=0xD9
 atmega16.upload.maximum_size=16384
 atmega16.build.mcu=atmega16
 atmega16.build.f_cpu=8000000L
 atmega16.build.core=arduino
 atmega16.build.variant=mega16


W tym momencie należy zwrócić szczególną uwagę na linijki:

 atmega16.bootloader.low_fuses=0xE4
 atmega16.bootloader.high_fuses=0xD9

aby wartości low_fuses i high_fuses zgadzały się z zapisanymi wcześniej wartościami
(Jeżeli zrobiłeś wszystko jak w tym poradniku wartości powinny wyglądać jak wyżej.)

Zapisujemy plik i przechodzimy do wgrywania bootloadera

KROK 3:


łączymy arduino z atmegą16
Przyjrzyj się powyższemu obrazkowi i zwróć uwagę na piny nr 6, 7, 8, 9.
są to piny MOSI MISO SCK i RESET które należy podłączyć następująco:

Dla arduino mega1280 lub mega2560
RESET  -> 53
MOSI   -> 51
MISO   -> 50
SCK     -> 52

dla pozostałych arduino np. Arduino UNO:

RESET  -> 10
MOSI    -> 11
MISO    -> 12
SCK      -> 13

następnie podłączamy do Atmegi zasilanie:
5V -> VCC (pin nr 10 na powyższym obrazku)
GND -> GND


Dla zwrokowców:
Źródło: http://arduinoj.blogspot.com/2013/04/pierwsza-produkcyjna-implementacja_4.html
Sprawdzamy 2 razy czy wszystko jest dobrze podłączone i podłączamy arduino do komputera.

włączamy program Arduino.
Następnie wgrywamy na naszą płytkę arduino program "ArduinoISP" który będzie pośredniczył w programowaniu naszej ATmegi:

jeśli mamy podłączone arduino do komputera, wybieramy odpowiedni port COM:
Narzędzia(Tools)/ Port Szeregowy(Serial Port) i wybieramy port COM do którego mamy podłączoną płytkę.

Następnie:
wybieramy: Plik/Przykłady/ArduinoISP
lub w wersji anglojęzycznej : File/Examples/ArduinoISP
w zakładce Narzędzia (Tools) / Płytka (Boards) wybieramy nazwę naszego Arduino
w zakładce Narzędzia (Tools) / Programator (Programmer) wybieramy USBasp
i wysyłamy program ArduinoISP do naszej płytki klikając przycisk "wyślij"
po wgraniu programu przechodzimy do wgrywnia bootloadera


w menu Narzędzia/Płytka wybieramy: ATmega16 (internal 8 MHz)
(jeśli nie możesz znaleźć tej pozycji - wyłącz i włącz program Arduino i sprawdź czy na pewno dopisałeś kod do pliku boards.txt jak w kroku 2),
w menu Narzędzia/Programator wybieramy Arduino as ISP
a następnie klikamy Narzędzia/Wypal Bootloader

(jeśli pojawi się błąd tzn że źle zrobiliśmy poprzednie kroki lub źle połączony jest układ lub należy skorzystać z innej wersji Arduino (pamiętając o dodawaniu pliku pins_arduino.h i dodaniu wpisu do pliku boards.txt)

KROK 4

rozmieszczenie pinów Digital i Analog:



Wgrywamy napisany program na ATmega16:

Ustawiamy kompilator jak przy wgrywaniu bootloadera tzn:
- odpowiedni port COM
- PłytkaATmega16 (internal 8 MHz)
- Programator - Arduino as ISP

Sprawdzamy poprawność programu i klikamy "Wyślij"

jeśli program nie chce się przesłać sprawdź połączenie pomiędzy atmegą16 a Arduino, i upewnij się czy wgrałeś bootloader.

Artykuł ma charakter edukacyjny

Artykuł oparty o wiadomości ze strony http://arduinoj.blogspot.com/2013/04/pierwsza-produkcyjna-implementacja_4.html
Autor nie ponosi żadnej odpowiedzialności za skutki wykorzystania treści zawartych w artykule.

1 komentarz:

  1. Wielkie dzięki za ten poradnik bez niego nie mógł bym uruchomić swojej atmegi 16 ;) Wszystkie pięknie działa.Pozdrawiam

    OdpowiedzUsuń