Programowanie Atmega328P-PU przez Arduino ISP

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 6 lut 2014, 23:23

Witam.


1. Czy potrzeby będzie jakiś kwarc do tego? Z tego co widzę to bez problemu idzie wgrać bootloader.
2. Poniżej skopiowałem listę kroków które trzeba wykonać podczas wgrywania bootloader też z artykułu wyżej.

Kod: Zaznacz cały

    1.Otwieramy arduino IDE
    2. plik / przykłady/ arduino ISP
    3. wgrywamy program na arduino
    4. narzędzia /płytka – wybieramy nasz mikrokontroler                          <-- CHODZI MI O TEN PUNKT
    5. narzędzia / programator Arduino as ISP
    6. podłączamy mikrokontroler według poniższej listy
    7. narzędzai /wypal bootloade
    
Po tej operacji będziemy mieć możliwość programowania mikrokontrolerów ATmega8 z taktowaniem 8 MHz, oraz ATmega328P z taktowaniem 8 MHz lub 16 MHz.
Wybrać mam z listy arduino leonardo czy ten co chcę programować na arduino leonardo mam atmega32u4.

4. Oraz tutaj jaki mikrokontroler ten Atmega328P czy arduino leonardo mam wybrać?

Kod: Zaznacz cały

Teraz w arduino IDE musimy dokonać jednej zmiany:

Narzędzia > płytka > wybieramy nasz mikrokontroler, następnie narzędzia > programator Arduino as ISP. Wgrywamy program na mikrokontroler i podłączmy według powyższych schematów.
Z listy nie mam możliwości wyboru atmegi 328P. Jeżeli jest konieczne dodanie tego to prosiłbym o przesłanie linku do pobrania jeżeli ktoś taki posiada. Atiny pobrałem tutaj z majsterkowa także kiedyś z tego artykułu http://majsterkowo.pl/programowanie-mik ... ra-usbasp/

Moja lista poniżej na screenie.

5. Gdy chcę wgrać prgoram to pozostawiam takie podłączanie arduino -> atmega328P?
Ostatnio zmieniony 26 maja 2014, 20:14 przez Pixelx, łącznie zmieniany 2 razy.

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
wefhy
Majsterkowicz
Posty: 100
Rejestracja: 26 sie 2013, 15:06
Lokalizacja: Łódź, Poland

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: wefhy » 6 lut 2014, 23:57

1. Kwarc może być, ale nie musi. ATmega może pracować na wewnętrznym oscylatorze. Przy uzywaniu wewnętrznego oscylatora taktowanie wyniesie 8MHz i trzeba zmienić plik boards
2, 4 Wybierasz płytkę, za pomocą której programujesz, wgrywasz do niej szkic ArduinoISP, następnie Zmieniasz programator na "Arduino as ISP" oraz płytke na PŁYTKĘ PROGRAMOWANĄ i wypalasz bootoloader. Szkice możesz wgrywac w ten sam sposób, tylko używasz funkcji "załaduj za pomocą programatora"(powinna się pojawic gdy przytrzymasz shift w miejscu gdzie zwykle jest zwykle "załaduj")
5. Zły pomysł, rozwali cąłą logikę programu. Jak się nie znasz dobrze na programowaniu i nie ogarniesz ccalego kodu, to lepiej nie próbuj tam nic wciskać(zawsze mozesz poeksperymentować, żeby coś się popsuło musiałbyś mieć na serio niezły talent)
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 7 lut 2014, 10:03

Kod: Zaznacz cały

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

majsterkowo_atmega8a.name=ATmega8a @ 8 MHz

majsterkowo_atmega8a.upload.maximum_size=7168
majsterkowo_atmega8a.upload.using=arduino:arduinoisp

majsterkowo_atmega8a.bootloader.low_fuses=0xe4
majsterkowo_atmega8a.bootloader.high_fuses=0xc4
majsterkowo_atmega8a.bootloader.path=atmega
majsterkowo_atmega8a.bootloader.file=ATmegaBOOT_8.hex
majsterkowo_atmega8a.bootloader.unlock_bits=0x3F

majsterkowo_atmega8a.build.mcu=atmega8
majsterkowo_atmega8a.build.f_cpu=8000000L
majsterkowo_atmega8a.build.core=arduino
majsterkowo_atmega8a.build.variant=standard

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

majsterkowo_atmega328p8.name=ATmega328P @ 8 MHz

majsterkowo_atmega328p8.upload.maximum_size=30720
majsterkowo_atmega328p8.upload.using=arduino:arduinoisp

majsterkowo_atmega328p8.bootloader.low_fuses=0xE2
majsterkowo_atmega328p8.bootloader.high_fuses=0xDA
majsterkowo_atmega328p8.bootloader.extended_fuses=0x05

majsterkowo_atmega328p8.bootloader.path=atmega
majsterkowo_atmega328p8.bootloader.file=ATmegaBOOT_328.hex
majsterkowo_atmega328p8.bootloader.unlock_bits=0x3F
majsterkowo_atmega328p8.bootloader.lock_bits=0x0F

majsterkowo_atmega328p8.build.mcu=atmega328p
majsterkowo_atmega328p8.build.f_cpu=8000000L
majsterkowo_atmega328p8.build.core=arduino
majsterkowo_atmega328p8.build.variant=standard

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

majsterkowo_atmega328p16.name=ATmega328P @ 16 MHz

majsterkowo_atmega328p16.upload.maximum_size=30720
majsterkowo_atmega328p16.upload.using=arduino:arduinoisp

majsterkowo_atmega328p16.bootloader.low_fuses=0xE2
majsterkowo_atmega328p16.bootloader.high_fuses=0xDA
majsterkowo_atmega328p16.bootloader.extended_fuses=0x05

majsterkowo_atmega328p16.bootloader.path=atmega
majsterkowo_atmega328p16.bootloader.file=ATmegaBOOT_328.hex
majsterkowo_atmega328p16.bootloader.unlock_bits=0x3F
majsterkowo_atmega328p16.bootloader.lock_bits=0x0F

majsterkowo_atmega328p16.build.mcu=atmega328p
majsterkowo_atmega328p16.build.f_cpu=16000000L
majsterkowo_atmega328p16.build.core=arduino
majsterkowo_atmega328p16.build.variant=standard

Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony 26 maja 2014, 20:16 przez Pixelx, łącznie zmieniany 1 raz.
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 7 lut 2014, 21:59

Dzięki za b. dobry opis.

Skad bierzesz ta atmege328 w narzędzia -->płytka?

9. W ArduinoIDE z zakładki Narzędzia->Płytka
- wybieram Atmega328 z taktowaniem 8 albo 16Mhz, zależy co robię.
Z tym bootloaderem mnie zaskoczyłeś myślałem, że wcale nie da rady wgrać programu bez tego.
Kwarcu nie mam wiec raczej bez tego będę robił.

I dziwi mnie to, że czytając jakiś artykuł pisze że mam podłączać pod te piny.
aTmega 328:

Arduino pin 10 atmega pin 1

Arduino pin 11 atmega pin 17

Arduino pin 12 atmega pin 18

Arduino pin 13 atmega pin 19
A ty podłączasz tak.
- pin 13 (arduino) - pin 19 atmega
- pin 12 (arduino) - pin 18 atmega
- pin 11 (arduino) - pin 17 atmega
- pin 10 (arduino) - pin 1 atmega
Ale i tak się dostosuje do twojego opisu. Tylko napisz jak dodać tą Atmega328P do narzędzia -->płytka
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 7 lut 2014, 22:24

Rzeczywiście to z pośpiechu xD, wiesz podekscytowanie itd :D :P. Ale wtopa :P

Ok jest zmodyfkowałem dodałem i jest git. Zamawiam to z allegro.

Próbowałeś już bez tego kwarca? Wszystko przeszło?

Zapomniałeś chyba tam jeszcze dodać, że należy wybrać jaki programator czyli Arduino as ISP.

A programy jak wgrywam to przez arduino na atmegę328P to z wciśniętym shiftem ("załaduj za pomocą programatora)?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 7 lut 2014, 22:52

Znaczy się z tym shiftem tak napisał wefhy
wefhy pisze: Szkice możesz wgrywac w ten sam sposób, tylko używasz funkcji "załaduj za pomocą programatora"(powinna się pojawic gdy przytrzymasz shift w miejscu gdzie zwykle jest zwykle "załaduj")
Ale chyba to jest nie istotne.

A ten kwarc to 16MHz i używam go tylko podczas programowania układu?
Dodatkowo wypale sobie bootloader przed wgraniem jakiegoś programu.
Awatar użytkownika
wefhy
Majsterkowicz
Posty: 100
Rejestracja: 26 sie 2013, 15:06
Lokalizacja: Łódź, Poland

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: wefhy » 8 lut 2014, 00:01

Mi się udaje bez problemu programować zarówno z kwarcem jak i bez. Oczywiście w zależności od tego czy jest kwarc, czy nie ma musimy wgrać inny bootloader(te do pracy bez kwarca - na wewnętrznym oscylatorze powinny mieć z reguły w nawiasie "internal"). Znacznie lepszym rozwiązaniem jest jednak używanie go, najlepiej 16MHz. Używasz go zarówno przy programowaniu, jak i potem przy używaniu. Po wciśnięciu shifta w miejscu "załaduj" pojawia się "załaduj za pomoca programatora" - W ten sposób możesz programować ATmegę za pomocą leonardo w tym samym połączeniu, co przy wgrywaniu bootloadera. Jaęli by się kliknęło bez shifta, komputer próbowałby wgrać szkic na leonardo. Z tymi 20MHz to nie zaden błąd, ATmega328P może pracować na kwarcu 20MHz

Uwaga, taka ciekawostka. Jeśli będziesz wgrywał szkice tylko w ten sposób, bootloader wcale nie jest potrzebny, można używać ukladu nawet bez jego wypalania.

Od razu mówię, że ustawienia do pracy na wewnętrznym oscylatorze zostawilem na starym komputerze :/ wiec niezbyt je mogę podać. Ale gdzieś się w internetach pałętają.
Ostatnio zmieniony 8 lut 2014, 00:08 przez wefhy, łącznie zmieniany 2 razy.
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 8 lut 2014, 01:25

To ten plik boards.txt mam zły jak na allegro pisze, żę atmega tam jest 20MHz a wg tych informacji co dodałem to moge do 16MHz? Teraz już się trochę pogubiłem.

Kupie kwarc na 16MHz.
I potwierdźcie to czy jak kupię bo jeszcz nie nie kupiłem tej atmegi z aukcji http://allegro.pl/mikrokontroler-avr-at ... 07442.html to wszystko będzie pasować. Jak ten to będę pisał w przyszłości.

Zrobię tak jak w tym pliku w pdf poniżej. Z waszych wypowiedzi zrobiłem sobie taki tutorial co kiedy robić.
Głównie oparłem się na wypowiedzi MrLewerence oraz dodałem parę punktów z wypowiedzi wefhiego. I czy jak postąpie wg waszych rad które umieściłem i z tą atmegą z aukcji to czy wszytko będzie OK?


I dzięki wielkie za pomoc. ;)


EDIT

Analizowałem ten plik boards.txt i chyba, aby programować 20MHz trzeba zmienić tą linijkę na 200000000L??

Kod: Zaznacz cały

majsterkowo_atmega328p16.build.f_cpu=16000000L
Ostatnio zmieniony 4 mar 2014, 16:37 przez Pixelx, łącznie zmieniany 1 raz.
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 8 lut 2014, 10:22

Ja właśnie chcę zaprogramować tą atmege bo robię sobie projekt ;) Szkic tylko wgram na początek żeby sprawdzić czy działa układ. Wiec kupię tą atmegę z aukcji.


Rezystor 10kOhm umieszczam między pin 1 atmegi a VCC na stałe czy tylko podczas wgrywania programu?
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 14 lut 2014, 14:17

Witam ponownie

Przyszła do mnie Atmega i podczas wypalania bootloadera mam problem wyskakuje poniższy błąd, gdy wgrywałem program jak się nie udało wypalić bootloader to niby przeszedł ale pojawił się też jakiś błąd. Co zrobić?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
wefhy
Majsterkowicz
Posty: 100
Rejestracja: 26 sie 2013, 15:06
Lokalizacja: Łódź, Poland

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: wefhy » 16 lut 2014, 15:15

Częsty błąd jak sie programuje na windowsie. Nie wiem, dlaczego ale windows ma często problemy z synchronizacja podczas wgrywania bootloadera. Na linuksie idzie o wiele sprawniej. Z reguły wystarczy spróbować kilka razy w skrajnych przypadkach mi się zdarzyło, że bootloader się wgrał za piątym podejściem.

I przy okazji, bo to też moze byc powodem: Ten szkic Arduino ISP wgrywasz normalnie na swoją płytkę arduino(w tym wypadku leonardo). Jeślo go nie wgrasz, to nie ma szans, żeby komputer się porozumiał z uC. Może napiszę w krokach co ja robię po kolei:
1. Wszystko ustawiam tak, jakbym programował arduino, podłączam je po USB - płytka Leonardo, programator USBasp
2. Wgrywam program ArduinoISP
3. Podłaczam do arduino mikrokontroler
4. Przestawiam wszystkie ustawienia jak na programowanie mikrokontrolera(ATmega328P, programator Arduino as ISP)
5. Klikam wypal bootloader. Lub wybieram program, ktory chce wgrać na mikrokontroler i klikam załaduj trzymając shift.
6. Jesli używam windowsa ostatni punkt powtarzam aż nie będzie błędu(zwykle 2-3 razy)

PS http://www.atmel.com/devices/atmega328p ... parameters Max. Operating Freq. (MHz): 20 MHz
Nigdy nie próbowałem uruchomić na 20MHz, bo nie mam takiego kwarca, ale nie zdarzyło mi się, żeby Atmel zawyżał jakieś parametry. Już szybciej zostawiają zapas jak z dozwolonymi napięciami. Jak mówią, że 20, to im wierzę ;) O ile mnie jednak pamięć nie myli, to słyszałem, że można wyciągnąć i ponad 20, tylko z odpowiednim napięciem.
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 16 lut 2014, 18:38

Próbowałem i nic ;/
Ten szkic ArduinoISP wgrywam na Leonardo a następnie wybieram z listy Atmega328P i wybieram wypal bootloader, chwilę się ładuje i wyskakuje ten błąd. Przez ten czas mruga na początku dioda RX

A z tym 20MHz to muszę kupić taki kwarc bo obecnie używam 16MHz?


Tak wygląda to u mnie podłączone jak w załączniku.


Jak ten to kupię programator USBasp. Na tym zadziała?
http://allegro.pl/programator-dla-avr-n ... 40621.html

Obrazek

Podłączam go wtedy tak:

MOSI --> pin 17
MISO --> pin 18
SCK --> pin 19
RST --> pin 1

VCC --> VCC
GND --> GND
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
wefhy
Majsterkowicz
Posty: 100
Rejestracja: 26 sie 2013, 15:06
Lokalizacja: Łódź, Poland

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: wefhy » 16 lut 2014, 20:59

Nie, lepiej nie kombinuj z kwarcem 20MHz jak Ci nie działa nawet na 16. Te prędkości się przydadzą co najwyżej przy robieniu zabawkowego samochodu z autopilotem.
A zmieniłes programator na Arduino as ISP?
Jak używasz takich kabelków, to sadzę, że najbardziej prawdopodobne jest to, że coś nie styka. Jest fajny poradnik jak robic dobre kabelki praktycznie za darmo: http://majsterkowo.pl/jak-zrobic-kabelk ... stykowych/
Zauważ też, że Leonardo ma nieco inny układ pinów niż UNO wiec podłączenie będzie nieco inne
Tu coś znalazłem: http://www.instructables.com/id/Arduino ... /?ALLSTEPS
Z tego co widzę, trzeba zmienić 2 linie w kodzie arduinoISP. Ale wszystko jest w miarę prosto opisane. Nawet jest na tym samym przykładzie: programowanie Atmegi 328p za pomoca leonardo
Najwazniejsze z tego chyba to:
#define RESET SS TO #define RESET 10

#define LED_HB 9 TO #define LED_HB 13

-----------------Atmega328------------------------------Arduino Leonardo
(in the picture 1 pins on black)------------ (picture 2- 6pin ICSP)
RX pin 2-------------------------------------digital pin 0
TX pin 3-------------------------------------digital pin 1
MISO pin 18-----------------------------------ICSP pin MISO
MOSI pin 17-----------------------------------ICSP pin MOSI
SCK pin 19-----------------------------------ICSP pin SCK
RESET pin1-------------------------------------digital pin 10

I przy okazji - wiem, ze sporo ludzi robi wg innych schematów, ale ja zawsze gdy programowałem z kwarcem dodawałem 2 kondensatory 18-22uF. Po jednej stronie łączyłem je z ziemią, a po drugiej jeden z jedna, drugi z drugą nóżką kwarca. A sam kwarc nie był bezposrednio podłączony do uziemienia.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1245
Rejestracja: 18 lis 2011, 02:18

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Marhef » 16 lut 2014, 21:58

wefhy pisze: I przy okazji - wiem, ze sporo ludzi robi wg innych schematów, ale ja zawsze gdy programowałem z kwarcem dodawałem 2 kondensatory 18-22uF. Po jednej stronie łączyłem je z ziemią, a po drugiej jeden z jedna, drugi z drugą nóżką kwarca. A sam kwarc nie był bezposrednio podłączony do uziemienia.
Taie duże? Nie wystarczy 22pF?
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 16 lut 2014, 22:02

Tak zmieniłem programator na Arduino ISP jak to wykonywałem.

Ty posiadasz UNO?

Te kondensatory konieczne jeżeli chodzi o Leonardo? A w UNO też się jest stosuje?
Awatar użytkownika
Marhef
Złota rączka
Posty: 1245
Rejestracja: 18 lis 2011, 02:18

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Marhef » 16 lut 2014, 22:10

Te kondensatory stosuje się do każdego kwarcu (patrz - nota katalogowa mikrokontrolera i typical aplication)
Awatar użytkownika
wefhy
Majsterkowicz
Posty: 100
Rejestracja: 26 sie 2013, 15:06
Lokalizacja: Łódź, Poland

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: wefhy » 17 lut 2014, 15:25

Racja, 22pf, sorki za błąd. Ja posiadam UNO. Kondensatory jak już to mogą zależeć od programowanego uC, a nie od tego, za pomocą którego się programuje.
Zrób wszystko dokładnie według tej instrukcji z linku, który podałem, jest dokładnie na tym samym przykładzie więc musi być poprawny.
Awatar użytkownika
Pixelx
Majsterkowicz
Posty: 207
Rejestracja: 25 gru 2013, 14:19

Re: Programowanie Atmega328P-PU przez Arduino ISP

Post autor: Pixelx » 21 lut 2014, 13:55

Udało się za pomocą wyjść ISP.

Dzięki za pomoc.
ODPOWIEDZ

Strony partnerskie: