Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

atmega8 - bootloader
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Dan555



Založen: Mar 03, 2016
Příspěvky: 36

PříspěvekZaslal: ne březen 06 2016, 11:41    Předmět: atmega8 - bootloader Citovat

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é...?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: ne březen 06 2016, 11:52    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: ne březen 06 2016, 11:54    Předmět: Citovat

Jeejda napsal(a):
No, to bude zřejmě tím, že program přeložený pro ATmega328 prostě nelze cpát do ATmega8.


Myslím že tohle problém nebude, Dan555 píše "s volbou čipu atmega8 a s příslušným bootloaderem pro atmega8", tím se vybere správný bootloader.

Edit:
Jeejda: odpusť Smile


Naposledy upravil FHonza dne ne březen 06 2016, 12:04, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Dan555



Založen: Mar 03, 2016
Příspěvky: 36

PříspěvekZaslal: ne březen 06 2016, 12:25    Předmět: Citovat

Jeejda napsal(a):
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. Smile
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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Dan555



Založen: Mar 03, 2016
Příspěvky: 36

PříspěvekZaslal: ne březen 06 2016, 12:33    Předmět: Citovat

FHonza napsal(a):
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é.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Dan555



Založen: Mar 03, 2016
Příspěvky: 36

PříspěvekZaslal: ne březen 06 2016, 12:38    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: ne březen 06 2016, 12:46    Předmět: Citovat

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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: ne březen 06 2016, 12:49    Předmět: Citovat

Dan555 napsal(a):
Ještě zkusím přepnout pojistky na vnitřních 8MHz


Nezapomeň změnit frekvenci v boards.txt, jinak to nebude fungovat určitě.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frpr666



Založen: Dec 28, 2009
Příspěvky: 1051

PříspěvekZaslal: ne březen 06 2016, 16:05    Předmět: Citovat

    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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Dan555



Založen: Mar 03, 2016
Příspěvky: 36

PříspěvekZaslal: ne březen 06 2016, 16:32    Předmět: Citovat

frpr666 napsal(a):
    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


Omlouvám se, ale nerozumím bodu 2
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Dan555



Založen: Mar 03, 2016
Příspěvky: 36

PříspěvekZaslal: ne březen 06 2016, 16:44    Předmět: Citovat

FHonza napsal(a):
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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Dan555



Založen: Mar 03, 2016
Příspěvky: 36

PříspěvekZaslal: ne březen 06 2016, 17:28    Předmět: Citovat

Rád bych se podělil o nové informace:

- 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).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
lesana87



Založen: Sep 20, 2014
Příspěvky: 3330

PříspěvekZaslal: ne březen 06 2016, 17:34    Předmět: Citovat

Já v těch fuse bitech vidím jednu nesrovnalost. SUT máš nastavené na BOD enabled, ale BOD máš disabled.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: ne březen 06 2016, 18:29    Předmět: Citovat

Když je nastaveno L: 0xDF a H: 0xCA (jak jsem psal), tak je nastaveno:
SUT
SPIEN
BOOTSZ1
BOOTRST
CKOPT

takže bych řek že fuse jsou správně.

A ještě pro jistotu, takhle vypadá funkční část boards.txt (společná deska pro megu168 a 8, liší se pouze volba procesoru):

kód:

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

atmegang.name=Arduino NG or older

atmegang.upload.tool=avrdude
atmegang.upload.protocol=arduino
atmegang.upload.speed=19200

atmegang.bootloader.tool=avrdude
atmegang.bootloader.unlock_bits=0x3F
atmegang.bootloader.lock_bits=0x0F

atmegang.build.mcu=atmegang
atmegang.build.f_cpu=16000000L
atmegang.build.board=AVR_NG
atmegang.build.core=arduino
atmegang.build.variant=standard

## Arduino NG or older w/ ATmega168
## --------------------------------
atmegang.menu.cpu.atmega168=ATmega168

atmegang.menu.cpu.atmega168.upload.maximum_size=14336
atmegang.menu.cpu.atmega168.upload.maximum_data_size=1024

atmegang.menu.cpu.atmega168.bootloader.low_fuses=0xff
atmegang.menu.cpu.atmega168.bootloader.high_fuses=0xdd
atmegang.menu.cpu.atmega168.bootloader.extended_fuses=0x00
atmegang.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_ng.hex

atmegang.menu.cpu.atmega168.build.mcu=atmega168

## Arduino NG or older w/ ATmega8
## ------------------------------
atmegang.menu.cpu.atmega8=ATmega8

atmegang.menu.cpu.atmega8.upload.maximum_size=7168
atmegang.menu.cpu.atmega8.upload.maximum_data_size=1024

atmegang.menu.cpu.atmega8.bootloader.low_fuses=0xdf
atmegang.menu.cpu.atmega8.bootloader.high_fuses=0xca
atmegang.menu.cpu.atmega8.bootloader.file=atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex

atmegang.menu.cpu.atmega8.build.mcu=atmega8


Edit: Je to pro IDE 1.6.7, pro starší nebude funkční
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
lesana87



Založen: Sep 20, 2014
Příspěvky: 3330

PříspěvekZaslal: ne březen 06 2016, 19:51    Předmět: Citovat

Nastavení dolních fusebitů na 0xDF znamená nastavení režimu na obrázku, ale BOD je zakázaný.


fuses.png
 Komentář:

Stáhnout
 Soubor:  fuses.png
 Velikost:  10.75 kB
 Staženo:  64 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.20 sekund