Nahrání bootloaderu do atmega328
Úvodní stránka › Fórum › Hardware › Arduino › Nahrání bootloaderu do atmega328
- Toto téma obsahuje celkem 59 odpovědí. Do diskuze (6 diskutujících) se naposledy zapojil uživatel marcino a poslední změna proběhla před 6 roky a 5 měsíci.
-
AutorPříspěvky
-
18.8.2016 v 16:42 #7958botÚčastník
Prosím můžete mi pomoc s nahráním bootlaoderu do atmegy328?
Prošel jsem si nespočet tutoriálů, ale pořád sem i to nedaří…
Hlásí mi to chybu:
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.Chyba při vypalování zavaděče.
Děkuji
18.8.2016 v 19:42 #7959Vojtěch VosáhloÚčastníkCo používáte za programátor na nahrání bootloaderu?
Pak můžem něco vymyslet 😉18.8.2016 v 20:07 #7960botÚčastníkMám k dispozici funkční arduino UNO (s smd čipem). To používám jako arduino as ISP, tedy jsem do něj nahrál sketch arduinoISP, připojil i externí LEDky na piny 7, 8, 9 pro signalizaci. Při zapojení arduina do PC mi pulzuje led na pinu 9, když dám vypálit bootlaoder, tak mi jednou blikne led na pinu 7 a v IDE vypíše chyba viz. výše. Zapojení s prázdným čipem používám co je na oficiálním webu s 16mhz krystalem.
Ještě takový poznatek, zapojení mám realizované na bezkontaktním poli, pokud vyjmu prázdný čip ze zapojení hlásí to stejnou chybu.
18.8.2016 v 20:35 #7961Vojtěch VosáhloÚčastníkTahle chyba skáče většinou když je opravdu nějaký problém se zapojením (aspoň z mé zkušenosti). 1 krok určitě znovu zkontrolovat všechna připojení jako popsáno.
Důležité je nezapomenout spojit země procesoru a arduina. Poté by měly být zapojeny VCC a AVCC na napájení a OBĚ GND na zem. Pokud máte multimetr, prospělo by každé spojení přezkoušet. Taky je možné, stává se mi to občas při programování přes usbasp, že je clock moc vysoký, zkuste ho v programu nadefinovat třeba na 500Hz. Předpokládám že máte nastavený v Nástroje -> programátor Arduino as ISP.
A nakonec mohl by to být problém i toho že tam máte krystal, můžete ho zkusit dát pryč a uvidíte. Pokud nic nepomůže tak zkuste poslat třeba pár fotek aby bylo dobře vidět zapojení na obou stranách.Jen tak naokraj, byl čip už používán? A kde jste ho kupoval?
18.8.2016 v 20:57 #7962botÚčastníkAno jako programátor mám nastaveno arduino as ISP.
Zkoušej sem to i bez krystalu.
Postupoval jsem dle několika návodů např: (https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard, http://www.itnetwork.cz/hardware-pc/arduino/arduino-samostatny-cip-atmega328p, https://bastlirna.hwkitchen.cz/nas-prvni-klon-arduina/)Zítra bych udělal nějakou dokumentaci a hodím ji sem.
Čipy jsou nové ani jednou použité. Koupil jsem je na ebayi.
Ještě dotaz jakou desku mám mít nastavenou při vypalování?
Jelikož dle návodu na ITnetwork mám mít „Atmega328 on breadbord (8Mhz internal clock)“ a když tak učiním vyhodí to chybu :
Chyba při vypalování zavaděče.
processing.app.debug.RunnerException: Please select a programmer from Tools->Programmer menu
at cc.arduino.packages.uploaders.SerialUploader.burnBootloader(SerialUploader.java:261)
at processing.app.Editor$47.run(Editor.java:2564)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)18.8.2016 v 21:13 #7963Vojtěch VosáhloÚčastníkPokud máte připojený externí krystal 16mhz, stačí vybrat desku arduino uno. Kdyby jste měl čip bez externího krystalu, vyberete Arduino on breadboard 8mhz. Mohlo se stát taky to že se vám zavaděč už vypálil, prakticky nevědomky, a nastavilu se nějak fuse a kvůli tomu se k čipu nemůžete dostat, ale to bych prakticky vyloučil. Nebýy čipy od dodavatele nějak nastavené? Předvypálené nebo nastavené na nějakou frekvenci? Když jsem tohle naposledy dělal měl jsem taky hodně problémů a myslím že tenkrát pomohl kondenzátor (4,7uF) ale netuším jestli mezi GND a VCC nebo reset pinem a buď zemí nebo VCC (všechny kombinace na arduinu a na JEHO pinech, né na těch simulovaných pro spi). Budu čekat na tu dokumentaci, určitě to někam posunem…
19.8.2016 v 15:32 #7973posjirkaÚčastníkTen konenzátor patří mezi GND a RESET. právě zabraňuje svévolnému resetu arduina při programování ..
19.8.2016 v 16:09 #7974botÚčastníkZkusil jsem přidat i kondenzátor, ale bez úspěchu.
Také jsem zkusil stáhnout nový arduino IDE (1.6.11), ale to nefunguje, už při kompilaci – nemůžu mít něco špatně nastavené?
Jinak používám arduino IDE 1.5.8
Udělal jsem foto zapojení s krystalem a kondíkem.
Link na foto: https://postimg.org/image/z3eu1yhnt/
19.8.2016 v 16:39 #7976Vojtěch VosáhloÚčastníkZkusíme jednu věc, stáhněte si tento program http://blog.zakkemble.co.uk/avrdudess-a-gui-for-avrdude/ a nainstalujte. Vše nechte zapojené tak jak je a v arduinu nechte Arduino as ISP program.
Až to bude stažené a nainstalované, vyberte jako programmer Atmel AVR ISP, jako port, port na kterém arduino běží, a do baud rate dejte 19200. Po nastavení toho všeho, pokud jste si jistý že je vše zapojené, klikněte v pravo v záložce MCU na Detect.
Dole v konzoli by vám to mělo něco vypsat, tuto zprávu sem potom vložte.
Držím palceEDIT: Co píše arduino IDE při kompilaci?
19.8.2016 v 17:05 #7979Vojtěch VosáhloÚčastníkCo píše arduino IDE při kompilaci?
Myslím arduino ide (1.6.11)
19.8.2016 v 17:43 #7980botÚčastníkKdyž chci jakýkoliv sketch zkompilovat (IDE 1.6.11) nastane chyba:
exec: „C:\\Users\\matej\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\4.9.2-atmel3.5.3-arduino2/bin/avr-g++“: file does not exist
Nastala chyba při kompilaci u desky Arduino/Genuino Uno.Podařilo sem i nainstalovat avrdudess a při detekci se mi vypsalo v konzoli toto:
Unknown signature 000000(retrying)
19.8.2016 v 18:26 #7981Vojtěch VosáhloÚčastníkZkuste to stejné akorát bez krystalu, kondíku a rezistoru…
19.8.2016 v 18:29 #7982botÚčastníkStejný výsledek.
19.8.2016 v 18:38 #7983Vojtěch VosáhloÚčastníkZkusím se do toho podívat hlouběji a něco zkusit. Ještě 2 věci:
1. Je arduino oficiální nebo „klon“
2 Je procesor opravdu Atmega328P-PU a né jen 328?19.8.2016 v 19:03 #7984botÚčastník1. Měl by být asi oficiální (kupoval jsem ho na ebayi, na desce je napsáno pouze UNO)
2. Ano na čipu je napsáno Atmega328P-PU
A nejde bootloader nahrát jiným způsobem – mám sériový port na pc, tak jestli nejde udělat jednoduchý programátor (koukal jsem na nějaký schémata, kde využili pár odporů a jeden tranzistor – to bych doma našel), ale moc tomu nerozumím…
19.8.2016 v 19:06 #7985ArduXPPÚčastníkKoukal jsem na ten váš obrázek a je tam chyba zapojení. Blbě zapojený krystal.
19.8.2016 v 19:11 #7986Vojtěch VosáhloÚčastníkTeoreticky by to mělo jít přes ser. linku jak je popsáno na několika návodech na internetu ale nikdy jsem to neskoušel. Musím říct že mi to vše vrtá hlavou, měl jsem ůplně stejný problém a řešení se našlo až po pár měsících kdy jsem si koupil USBasp a začal programovat v C 😀 můžete zkusit nějaký návod z internetu a já budu taky testovat. Mimochodem můj „progress“ -> Teď jsem zkoušel s aruinem najít Megu328p, bez krystalu a čehokoliv jiného, ale již programovanou, s přenastavenými fuse na 8mhz internall. Vše fungovalo v pořádku ale když jsem to zkoušel s megou88pa tak nic…
Zkusím ještě další věci a uvidíme…19.8.2016 v 19:23 #7987ArduXPPÚčastníkA ještě jedna věc, i napájení chipu je špatně zapojena. Když to beru z obrázku.
19.8.2016 v 19:25 #7988botÚčastníkJop, toho napájení jsem si teď také všiml. Mám to špatně jen na obrázku, jinak to zapojení je správné.
Můžu se zeptat jak je špatně zapojený krystal?
Děkuji.19.8.2016 v 19:31 #7989ArduXPPÚčastník10 a 9 pin je krystal, no a 8 už je gnd .
19.8.2016 v 20:05 #7991Vojtěch VosáhloÚčastník🙂 teď se sem hrnu abych napsal přesně to stejné, vidím to 10x ale když to nepřepočítám tak si toho stejně nevšimnu. Teď už by to mělo fungovat, doufejme…
19.8.2016 v 20:17 #7992botÚčastníkZapojení na fotce jsem udělal dnes nové (už se tím morduji 3 dny, tak jsem se upočítal :D).
Teď jsem zapojení opravil, 5x zkontroloval a mělo by být v pořádku, ale výsledek je stejný :(.
Link na nové zapojení (snad v pořádku): https://postimg.org/image/s431m55an/
19.8.2016 v 20:45 #7994Vojtěch VosáhloÚčastníkVypadl internet takže dnes už vám asi moc nepomůžu, vypadl nám internet, ale ješté jsem stihl najít zajímavý tutoriál používající jiný firmware. http://3g1l.com/blog-burn-bootloader-blank-atmega328atmega328p-arduino-uno
19.8.2016 v 20:58 #7995ArduXPPÚčastníkKondenzátor vyndat , nedávat.
19.8.2016 v 21:00 #7996Vojtěch VosáhloÚčastníkKdyž jsem viděl ten kondík v tutoriálech byl na resetu arduina, né megy…
19.8.2016 v 21:12 #7997posjirkaÚčastníko pár vláken před jsem něco podobného řešil:
Tak jak jsem to popsal, tak používám porgramování čipů i bootloaderu tak cca 10x ročně a vždy mi funguje.
19.8.2016 v 21:13 #7998botÚčastníkTak jsem zkusil optiloader – hodilo fail (na čipu, který jsem dnes zkoušel), dal jsem tam jiný (ze stejného balení) a asi se to tam nahrálo 😀 (jupííí).
V monitoru mi to vypsalo tohle:
ptiLoader Bootstrap programmer.
2011 by Bill Westfield (WestfW)Target power on! …
Starting Program Mode [OK]Reading signature:950F
Searching for image…
Found „optiboot_atmega328.hex“ for atmega328P
Start address at 7E00
Total bytes read: 502Setting fuses for programming
Lock: 3F ABE000 Low: FF ABA000 High: DE ABA800 Ext: 5 ABA400Programming bootloader: 512 bytes at 0x3F00
Commit Page: 3F00:4C3F00
Commit Page: 3F40:4C3F40
Commit Page: 3F80:4C3F80
Commit Page: 3FC0:4C3FC0Restoring normal fuses
Lock: 2F ABE000Target power OFF!
Type ‚G‘ or hit RESET for next chip
19.8.2016 v 21:21 #7999Vojtěch VosáhloÚčastníkTo je super. Kdybych měl tipovat tak ten čip na kterém jste to zkoušel je možná odpálený, kvůli připokení vcc na pin ktystalu, respektive elektronika na zajištění clocku je odpálená. Asi prošel proud přes první pin Xtal1 přes interní resistor na Xtal2 a na zem, to to mohlo zničit. Jinak držím palce při dalších projektech.
19.8.2016 v 21:47 #8001botÚčastníkMěl jsem 5 čipů. Když jsem vzal zcela nový čip ani jednou použitý a vypálil bootloader přes arduinoISP, tak to hodilo chybu a když do toho samého čipu zkusím nahrát bootloader pomocí optiloader, tak to vyhodí chybu:
Target power on! …
Starting Program Mode – Failed, result = 0x0Target power OFF!
Takže nahrát bootlaoder se mi podařilo pouze na nedotknutý čip a pomocí optiLoaderu.
Nevím co z toho lze vyvodit, ale možná se to někomu bude hodit.Tím mě napadá, že čipy nemusí být poškozené ale například jen špatně nastavené pojistky?
Lze čip úplně smazat a přehrát?Jinak moc všem děkuji za Váš čas a ochotu mi pomoc. Opravdu si toho vážím.
PS: Odhaduji, že takhle vypálený bootloader přes OptiLoader využívá interní hodiny 8MHz? Lze to nějak upravit, abych mohl použít externí krystal (16MHz)? Ještě jednou díky.
19.8.2016 v 22:22 #8003Vojtěch VosáhloÚčastníkAno, pojistky (fuses) můžou způsobit to že se do čipu nedostanete ale nejsem si jisý jestli jdou smazat přes arduino ale na to se zítra určitě podívám, je velmi malá pravděpodobnost že by byly čipy poškozené. Někde jsem dokonce četl že ide občas vypálí bootloader i přes vyhození všech chyb, možná můžete zkusit připojit „vadné“ čipy do toho zapojení, a zkusit s němy komunikovat přes sériovou linku a jejich rx a tx. Třeba se poštěstí.
Podle toho co optiloader vypsal se nastavily pojistky megy na:
L: FF
H: DE
E: 05
Lock: 3FPokud otevřete avrdudess tak je v pravo možnos na nastavení pojistek, tam kliknete na takový odkaz set fuses a mělo by vyskočit okno prohlížeče. Vyplníte jméno procesoru a dyž sjedete úplně dolů, můžete tam zadat ty hodnoty pojistek co vám vyjely a dát apply values. Když pak vyjedete zpět nahoru měly by všechny možnosti být vyplněné tak jak je nastavený váš procesor a mělo by se dát zjistit na kolik mhz procesor funguje atd. Pokud zjistíte že běží na interních 8mhz, stačí vše poupravit a opět kliknout na apply values, ale pod tím co jste upravoval, ne úplně dole. Když to odkliknete ty hodnoty dole se nastaví podle vašeho nastavení, vy je pak jen přepíšete do avrdudess a dáte write u obou. U lock fuse to nejspíš hodí chybu ale to je normální. U pojistek prakticky není tolik co zkazit, jen to chce dát si pozor na nastavení ISP, kdyby se špatně odkliklo , mohlo by to úplně vypnout isp procesoru a už by jste se do něj nedostal. Zítra kouknu jestli by se daly obnovit ty ostatní procesory a uvidíme.
Hodně štěstí při dalších projektech. -
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.