AtMega 328P-PU Arduino bootloader

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 00:00
Bydliště: Brno-venkov

AtMega 328P-PU Arduino bootloader

#1 Příspěvek od Honza_dy »

Nazdar,
potřeboval bych si vyrobit pár čipů s Arduino bootloaderem jenže:

1) NEMÁM VŮBEC ŽÁDNÉ ZKUŠENOSTI s "napalováním" uP
2) Jsem vůl, protože jsem místo 328-PU koupil 328P-PU a jak tak procházím internetem, nacházím zprávy že jsou s tím problémy.
Vypalovat bych chtěl nástrojem v IDE.

Koupil jsem tento programátor se kterým by to mělo jít. Mimo to mám ještě desku UNO R3. Redukci 10p -> 6p si vyrobím.

S angličtinou nemám větší problémy, ale jelikož je to pro mě velká neznámá, chtěl bych nějaký odkaz nebo nakopnutí v češtině, protože vidina několika zničených procesorů po 80,-Kč je dost deprimující.

Je tady někdo znalý problematiky ochotný mě za ručičku provést celým procesem?
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#2 Příspěvek od FHonza »

A máš bootloader jako hex soubor ? Tj. to co cheš do procesoru nahrát. Nevím co myslíš tím
Vypalovat bych chtěl nástrojem v IDE

Jelikož tvůj programátor je klon USBasp, programuj nejlépe programem AVRDude + GUI. Žádná záludnost v tom není.

Tady je odkaz na AVRDude v5.11, pak grafické rozhraní pro něj. A nakonec driver pro programátor. Todle mě funguje ve Win7 x64.

Po naisntalování připojíš programátor k procesoru, spustíš AVRDude-GUI.exe. Nastavíš typ programátoru na USBasp, port na USB. Pak vybereš správný typ procesoru, v řádce Flash vybereš hex soubor který chceš do procesoru nahrát. A nakonec stiskneš tlačítko Erase-Write-Verify.

Případně že Audrino potřebuje nastavené Fuse bity jinak než je default, tak je vyplníš v řádcích Fuse a tlačítkem Write zapíšeš.
Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 00:00
Bydliště: Brno-venkov

#3 Příspěvek od Honza_dy »

Programu kterým arduino programuješ říkají IDE. Je tam v žáložce tools přímo možnost vypálit zavaděč do čistého čipu a to buď přes programátor(y) nebo přes desku (UNO atp.) do čipu na nepájivém poli.
.hex nemám, teoreticky ho nepotřebuji a nastavování pojistek v nějakém avrdude se chci vyhnout, protože napoprvé bych zničil procesorů za několik stovek, než by se to povedlo.
Jak už jsem psal, nemám žádné zkušenosti! Nevím jaký je rozdíl mezi USBasp a USBisp programátorem, nevím co znamenají jednotlivé pojistky.
Vědět to pro tento případ ani nepotřebuji, IDE by mělo udělat většinu věcí za mě.
ALe než se do toho pustím, chtěl bych víc informací od někoho zkušenějšího.
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#4 Příspěvek od FHonza »

Aha, omlouvám se. Tvůj dotaz sem pochopil úplně jinak.

Nejprve nainstaluj driver pro programátor (já používám ten v odkazu jak jsem psal, s tím co se instaluje volitelně s Arduino IDE mě programátor nefungoval). AVRdude se nainstaluje spolu s Arduino IDE. V záložce Tools vyber typ programátoru. V tomto případě USBasp. Důležité je v záložce Tools vybrat správný typ Arduino desky. Program podle toho totiž vybere správný hex bootloaderu a nastaví i fuse bity. Potom už jenom stačí z menu Tools zvolit Burn Bootloader. Program sám spustí AVRdude s příslušnými parametry, ověří signaturu procesoru a zapíše hex soubor.

Nemusíš se bát, ani při chybném naprogramování se procesor nezničí a vše je opakovatelné.

Celé se to dá udělat i ručně, zdrojové kódy i hex od bootloaderu jsou v adresáři <program files>\Arduino\hardware\arduino\bootloaders

Nastavení typu procesoru a fuse bitů pro každou desku je uloženo v textovém souboru <program files>\Arduino\hardware\arduino\boards.txt
Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 00:00
Bydliště: Brno-venkov

#5 Příspěvek od Honza_dy »

Tak jsem vyrobil redukci programovacího kabelu a zkusil to. K mému velkému překvapení skončil proces hláškou "Bootloader burning done".
Další pokus o nahrání prográmku blink dopadl také dobře a ledka blinká :D

Nakonec to ani nebolelo, díky za trpělivost.
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 00:00

#6 Příspěvek od frpr666 »

1/ vůbec nevadí, že máš čip ATmega 328P. 328P je kompatibilní s 328 (co se týče funkce chipu jako Arduino). Já mám koupené Arduino osazené právě chipem 328p.

2/ Důležité je, aby jsi při programování "prázdného" chipu splnil podmínky pro ISP programování (správné napájení, připojení vývodů RESET, MOSI, MISO, SCK,+V,GND)

3/ Neznám tvůj programátor, já na tvém místě bych nejprve zkusil získat nějakou zručnost s mazáním, se zápisem a čtením flash a se zápisem a čtením fuse bitů. (fuse bity opatrně!)

4/ Vypálení bootloaderu spočívá v tom, že zapíšeš přiložený .hex do flash a následně nastavíš správně fuse bity. Flash najdeš zde:
(E:\programs\arduino-1.0.4\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex)
Pojistky by měly být tyto:
atmega328_isp: HFUSE = DA
atmega328_isp: LFUSE = FF
atmega328_isp: EFUSE = 05

5/ Jakmile je bootloader v chipu, tak se chip po restartu snaží "spojit" s IDE Arduino. Nezapomeň, že pokud připojíš jiný krystal než 16MHz, nebude tento bootloader fungovat (bude komunikovat jinou rychlostí).

Odkazy:
http://forum.arduino.cc
http://www.engbedded.com/fusecalc/
www.google.cz/search?q=how+to+burn+arduino+bootloader

edit1/
Anebo pro začátek koupit jeden Arduino board již kompletní a pomocí něj vypalovat chipy dle návodu např. zde:
http://learn.adafruit.com/arduino-tips- ... arduinoisp
Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 00:00
Bydliště: Brno-venkov

#7 Příspěvek od Honza_dy »

frpr666@edit1/ :
tomuhle jsem se právě chtěl vyhnout protože se tam dá nasekat spousta chyb. Desku samozřejmě mám, ale chtěl jsem si vyrobit čipy do konstrukcí, protože používat celé desky by bylo dost neekonomické. :)

Mimochodem ČR vs. DX (nahoře si přepněte na CZK) docela rozdíl ne?
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 00:00
Bydliště: Praha

#8 Příspěvek od FHonza »

Zrovna GME je dost drahý obchod, hlavně vše kolem mikroprocesorů. Tydle věci se tam vůbec nevyplatí kupovat.

Na druhou stranu, taky už sem nejednou platil clo a DPH ze zásilky z DX.
Uživatelský avatar
silas15
Příspěvky: 90
Registrován: 09 úno 2013, 00:00

#9 Příspěvek od silas15 »

Pokud máš desku s Arduinem, tak na co používáš ještě další programátor, když k tomu můžeš rovnou připojit tvůj MCU a bootloader vypálíš taky. Jinak pokud chceš ušetřit a stačí ti míň paměti 16k tak můžeš zkusit 168P, a když to chceš ještě jednodušší, můžeš použít interní oscilátor v MCU na 8 MHz, a nepotřebuješ ani krystal. Jen pak už nemůžeš programovat na desce arduina. Tedy ano pokud chip vložíš do patice a té patici vyrušíš piny, na kterých je krystal.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“