Zaslal: ne březen 06 2016, 11:41 Předmět: atmega8 - bootloader
Zdravím. Snažím se do atmega8A nahrát bootloader, abych ho mohl programovat pomocí signálů DTR, RX a TX (UART). Pokud bootloader (určený pro atmega328) nahraji do atmega328p pomocí prostředí arduino IDE (volba Vypálit zavaděč), je vše v pořádku, následně přes UART tento obvod komunikuje. Pokud ale stejným postupem v prostředí arduino IDE nahraji bootloader do atmega8A (s volbou čipu atmega8 a s příslušným bootloaderem pro atmega8), program sice nahrávat přes UART lze (volba "Nahrát" neskončí chybou, ale obvyklou hláškou - konec nahrávání - takže je asi vše ok), jenže se nespustí žádný program. Ještě dodám, že přes SPI program do atmega8A nahraji v pohodě (jenže si tím zruším bootloader). Obvod se zdá být v pořádku (dělají to všechny mé atmega8A obvody), pcb s externím krystalem 16MHz je pro jiný typ mikročipu funkční, prostě nemohu přijít na to, kde dělám chybu. Bootloader se v atmega8A zdá být naprogramovaný, díval jsem se na výpis jeho paměti. Nesetkali jste se s tím někdo také...?
Založen: Nov 20, 2012 Příspěvky: 1453 Bydliště: Praha
Zaslal: ne březen 06 2016, 11:52 Předmět:
první co mně napadá: zkontroluj fuse byty. Při nahrávání bootloaderu přes Arduino IDE se mění podle vybrané desky. Potom při nahrávání samotného programu IDE předpokládá, že jsou nastavené tak, jak je napsáno u příslušné desky.
Osobně když se už rozhodnu použít Arduino, tak vůbec bootloader nepoužívám. Když máš programátor, tak je to vcelku zbytečný. Stačí v IDE nastavit příslušný programátor (menu Nástroje -> programátor). Potom po kompilaci nahrát *.hex příkazem Projekt -> Nahrát pomocí programátoru.
Má to tu výhodu že se IDE nesnaží měnit fuse. Takže např. u ATMega8 jdou použít i porty PB6 a PB7.
Nenapsal jsi jestli máš originální desku a jakou přesně, nebo nějakou dělanou? Býval problém s USB externím převodníkem, pokud neměl vyveden tuším ještě DTR, tak bylo třeba po nahrátí programu resetovat MCU ručně v nějakém vymezeném intervalu, jinak se to nerozběhlo. Já zkoušel ATmegu8 na dělaným Arduinu Serial přímo přes hw COM port a tam to šlapalo dobře.
Pak zbývá ještě obligátní knížecí rada - kup ATmegu328P.
Ne, o koupi nejde. Mám oba druhy obvodů, jde mi o to, že mi to prostě nefunguje a fungovat by mělo. Navíc atmegy8 mám do projektů, kde si vystačím s pár kB paměti, v takoém případě je jejich poloviční cena příjemným pocitem.
Na převodníku vyvedený DTR mám, mám jej zapojený v sérii s kondenzátorem 100n na reset pin atmegy - a ten mám přes 10k rezistor připojený na Ucc. Takhle to funguje s obvody atmega328p. Leda by to s atmega8A takhle zapojit nešlo... Vida, zkusím...
Desku mám samovýrobu, vlastně jen MCU s krystalem 16MHz (atmega8A by 16MHz podle datasheetu zvládat měla) a s piny vyvedenými na kolíkové lišty. Takové hodně minimalistické zapojení, kde jsem problém nepředpokládal zejména proto, že s atmega328p tahle deska funguje.
první co mně napadá: zkontroluj fuse byty. Při nahrávání bootloaderu přes Arduino IDE se mění podle vybrané desky. Potom při nahrávání samotného programu IDE předpokládá, že jsou nastavené tak, jak je napsáno u příslušné desky.
Osobně když se už rozhodnu použít Arduino, tak vůbec bootloader nepoužívám. Když máš programátor, tak je to vcelku zbytečný. Stačí v IDE nastavit příslušný programátor (menu Nástroje -> programátor). Potom po kompilaci nahrát *.hex příkazem Projekt -> Nahrát pomocí programátoru.
Má to tu výhodu že se IDE nesnaží měnit fuse. Takže např. u ATMega8 jdou použít i porty PB6 a PB7.
Občas mám zapojení, které ladím složené, ale místo pro SPI konektor se mi tam už nevejde. Tak si vyvedu jen UART a ladím to přes něj. Takhle mi to fungovalo s atmega328p.
Naprogramované pojistky obvodu jsem přečetl jiným programem, jsou nastavené na L-fuse: DF a H-fuse:CA , podle všeho by měly být správné.
Ono se to opravu tváří tak, že bootloader (použil jsem ten z IDE, ale zkoušel jsem i optiboot) přijme přes UART program, ale nespustí ho. Je mi to záhadou, nezaznamenali jste někdo obdobné obtíže? Ještě zkusím přepnout pojistky na vnitřních 8MHz, ale nevím, jestli tahle frekvence zvládne obsloužit UART.
Založen: Nov 20, 2012 Příspěvky: 1453 Bydliště: Praha
Zaslal: ne březen 06 2016, 12:46 Předmět:
L: 0xdf a H: 0xca je dobře když je připojen 16Mz krystal. Teď jsem to vyzkoušel na nepájivém poli a funguje mně to prostou výměnou procesorů (a samozřejmě volbou desky).
Jakou verzi IDE používáš, resp. jaký bootloader do mega8 nahráváš ? Já tam mám ATmegaBOOT-prod-firmware-2009-11-07.hex
1. programovací adaptér na Atmely a vypálit bootloader do tolika Atmega8 kolik je potřeba.
2. nastavit fuse bity: SPM is not allowed to write to the Boot Loader section
3. vesele používat Atmega8 s bootloaderem
1. programovací adaptér na Atmely a vypálit bootloader do tolika Atmega8 kolik je potřeba.
2. nastavit fuse bity: SPM is not allowed to write to the Boot Loader section
3. vesele používat Atmega8 s bootloaderem
L: 0xdf a H: 0xca je dobře když je připojen 16Mz krystal. Teď jsem to vyzkoušel na nepájivém poli a funguje mně to prostou výměnou procesorů (a samozřejmě volbou desky).
Jakou verzi IDE používáš, resp. jaký bootloader do mega8 nahráváš ? Já tam mám ATmegaBOOT-prod-firmware-2009-11-07.hex
Zkoušel jsem tam nahrát oba bootloadery z IDE (+ ještě i optiboot), tenhle i ATmegaBOOT.hex, výsledek byl stejně bezútěšný. Problém by ale mohl být v IDE, nejspíše mám špatný proces pálení bootloaderu, protože abych to dokázal i pro atmega8, musel jsem předtím modifikovat některé soubory (dle nějakého zahraničního návodu) - mé originál prostředí IDE totiž vypálit bootloader do atmega8 původně nedokázalo, hlásilo chybu, neboť se snažilo zapsat i extended fuses pojistky, které ale atmega8 nemá.
Napadají mne v současnosti dvě cesty:
1. požádat o zaslání hex obsahu tvého fungujícího mega8, včetně nastavení pojistek - vypálil bych to v jiném programu než IDE (mám na to Extreme Burner) - a pak by se vidělo, kde je problém
2. požádat o zaslání modifikace boards.txt, která pro atmega8 v tvém IDE funguje, abych si atmega8 do IDE přidal znovu a regulérně. Prozatím používám modifikovanou volbu "arduino NG or older", protože jedině tam jsem nalezl typ obvodu atmega8
Oba tyhle body nedokážu vygooglit, resp. nalezené (povětšinou zahraniční) návody nefungují. Jo a používám prostředí 1.6.5-r2.
- přes UART do atmega8 už nahrávat dokáži. A to teprve tehdy, až jsem do ní vypálil ATmegaBOOT-prod-firmware-2009-11-07.hex
- po nahrání programu se ale program hned nespustí, ale trvá to ještě asi 5 sec
- v sérii s DTR zapojený kondenzátor 100n nefunguje. Musím reset před nahráváním vyvolat ručně, pak mám na nahrání cca 8 sec
Sice to funguje, ale ten reset se mi nějak nezdá. Asi hardwarová odlišnost oproti atmega328. Přesto mám pořád pocit, že ten můj bootloader je nějaký divný. Po nahrání se totiž program nespustí hned, ale jakoby to čekalo na dokončení nějaké časovací smyčky.
Pro kontrolu: Namísto atmega8 jsem do svého zapojení vložil atmega328 a vše funguje jak má (s příslušným nastavením).
Časy uváděny v GMT + 1 hodina Jdi na stránku 1, 2Další
Strana 1 z 2
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.