Close

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.
Aktuálně je na stránce zobrazeno 30 příspěvků - 1. až 30. (celkem z 60)
  • Autor
    Příspěvky
  • #7958
    bot
    Úč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

    #7959
    Vojtěch Vosáhlo
    Účastník

    Co používáte za programátor na nahrání bootloaderu?
    Pak můžem něco vymyslet 😉

    #7960
    bot
    Účastník

    Má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.

    #7961
    Vojtěch Vosáhlo
    Účastník

    Tahle 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?

    #7962
    bot
    Účastník

    Ano 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)

    #7963
    Vojtěch Vosáhlo
    Účastník

    Pokud 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…

    #7973
    posjirka
    Účastník

    Ten konenzátor patří mezi GND a RESET. právě zabraňuje svévolnému resetu arduina při programování ..

    #7974
    bot
    Účastník

    Zkusil 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/

    #7976
    Vojtěch Vosáhlo
    Účastník

    Zkusí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 palce

    EDIT: Co píše arduino IDE při kompilaci?

    #7979
    Vojtěch Vosáhlo
    Účastník

    Co píše arduino IDE při kompilaci?

    Myslím arduino ide (1.6.11)

    #7980
    bot
    Účastník

    Když 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)

    #7981
    Vojtěch Vosáhlo
    Účastník

    Zkuste to stejné akorát bez krystalu, kondíku a rezistoru…

    #7982
    bot
    Účastník

    Stejný výsledek.

    #7983
    Vojtěch Vosáhlo
    Účastník

    Zkusí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?

    #7984
    bot
    Účastník

    1. 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…

    #7985
    ArduXPP
    Účastník

    Koukal jsem na ten váš obrázek a je tam chyba zapojení. Blbě zapojený krystal.

    #7986
    Vojtěch Vosáhlo
    Účastník

    Teoreticky 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…

    #7987
    ArduXPP
    Účastník

    A ještě jedna věc, i napájení chipu je špatně zapojena. Když to beru z obrázku.

    #7988
    bot
    Účastník

    Jop, 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.

    #7989
    ArduXPP
    Účastník

    10 a 9 pin je krystal, no a 8 už je gnd .

    #7991
    Vojtě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…

    #7992
    bot
    Účastník

    Zapojení 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/

    #7994
    Vojtěch Vosáhlo
    Účastník

    Vypadl 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

    #7995
    ArduXPP
    Účastník

    Kondenzátor vyndat , nedávat.

    #7996
    Vojtěch Vosáhlo
    Účastník

    Když jsem viděl ten kondík v tutoriálech byl na resetu arduina, né megy…

    #7997
    posjirka
    Účastník

    o pár vláken před jsem něco podobného řešil:

    Arduino jako ISP programator

    Tak jak jsem to popsal, tak používám porgramování čipů i bootloaderu tak cca 10x ročně a vždy mi funguje.

    #7998
    bot
    Účastník

    Tak 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: 502

    Setting fuses for programming
    Lock: 3F ABE000 Low: FF ABA000 High: DE ABA800 Ext: 5 ABA400

    Programming bootloader: 512 bytes at 0x3F00
    Commit Page: 3F00:4C3F00
    Commit Page: 3F40:4C3F40
    Commit Page: 3F80:4C3F80
    Commit Page: 3FC0:4C3FC0

    Restoring normal fuses
    Lock: 2F ABE000

    Target power OFF!

    Type ‚G‘ or hit RESET for next chip

    #7999
    Vojtěch Vosáhlo
    Účastník

    To 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.

    #8001
    bot
    Účastník

    Mě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 = 0x0

    Target 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.

    #8003
    Vojtěch Vosáhlo
    Účastník

    Ano, 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: 3F

    Pokud 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.

Aktuálně je na stránce zobrazeno 30 příspěvků - 1. až 30. (celkem z 60)
  • Pro reakci na toto téma se musíte přihlásit.