ATmega328P vs PB a samovolny prepis flash a EE pri zarus.clk

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

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#31 Příspěvek od Celeron »

Crifodo píše:Co když si zkopíruješ definiční soubor M328Pdef.dat do novýho souboru s tou signaturou 1E9516 a ten podstrčíš Bascomu?
Zkusil jsem ten původní M328Pdef.dat zkopčit jako M328PBdef.dat. V nabídce se sice objeví, ale je v tom 36kb textu s nastaveníma a žádnej řetězec s názvem ID nebo sign v tom textu není. Obávám se, že tudy cesta nevede.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#32 Příspěvek od Crifodo »

V řádku "DevID" si změň hodnotu na to, jak se ti ten čip hlásí. Jak ten soubor pojmenuješ není důležité, akorát ho pak prostě zvolíš v Nastaveních čipu.

Netvrdím, že to bude fungovat pokud ty čipy jsou funkčně odlišné, ale mně tohle podstrčení ID pomohlo, když jsem si kdysi nějak nedopatřením poškodil signaturu v Mega16. Ono ta hodnota je uložená v části flash, kam není přístup pro zápis, ale poškodit mrcasením s napájením se občas dá. Mně se to přepsalo na FFFFFF, takže jsem si vytvořil nový soubor def.dat s touto hodnotou, pojmenoval na M16_bad_def.dat a ten si to pak načetl.
Přílohy
devID.png

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#33 Příspěvek od Celeron »

Tak jsem udělal co jsi napsal. V Bascomu se ATmega 328PB našla, šla i načíst, byla prázdná. Tak jsem zkusil Erase a taky prošlo bez výpisu chyb. Zkusil jsem nahrát Blink a neblinká. Horší je, že od tý doby je "no answer" a ID samý nuly. Nejspíš se něco zmastilo v oscilátoru, fuse nebo lock. Takže jsem na tom stejně, jako když se zmrvila ATtiny85. Na ní se ale na netu dalo najít uvedení do default stavu pomocí HVP (vysokonapěťovýho programátoru). Jestli existuje něco na tenhle procík jsem zatím nehledal.
Tak co, zahodit?
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#34 Příspěvek od ZdenekHQ »

Dívám se, že ten pokrok vážně nejde zastavit.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#35 Příspěvek od Crifodo »

Než to zahodíš, tak to ještě zkus s externíma hodinama.

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#36 Příspěvek od Celeron »

Jo, taky jsem to někde načetl. Externí hodiny a nebo externí RC oscilátor. Nebo připájet jiný 328PB za těch pár důležitejch noh a načíst v Bascomu co má originál za oscilátor, fuse a lock. Ale obávám se, že i když bych v datašítech porovnal fuse, tak ten "nově" vygenerovanej definiční soubor pro 328PB ohledně přestavení fuse stejně dohromady nedám.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#37 Příspěvek od Celeron »

Dnes jsem zkusil poslat na tu "mrtvou" ATmega328PB na nohu PB6 (XTAL1) kmitočet cca 32kHz z externího pulzního generu. Radši takhle málo, protože jsem nevěděl co je v Fuse zmršenýho a jestli tam náhodou není Low Power Oscilator. V Bascomu jsem nastavil kmitočet programátoru na 8KHz, procík 328PB a zkusil identifikaci. Procík to sice nenašlo ale začalo to vracet ID jiný než 000000. Ale po každý jiný. Tak jsem dal kmitočet ještě níž a kupodivu se 328PB zidentifikoval správně. Tak jsem na generu dal 7 MHz a 328PB se identifikuje správně i na Automat.
Lockbit = FF, Fusebit = C8, FusebitHigh = D9 a Extend = F7.
Nojo, ale ten C8 znamená Divide 8 =1 = disabled, CLK output = 1 = disable a hlavně oscilátor = 1 000 = Externí krystalovej oscilátor. 8O Tak proč to neběží na krystal ale musím tam cpát kmitočet z generu?
Že by krystal nesnesl vyfouknutí procíku horkovzduchem při výměně?
Zkusil jsem nastavit Internal RC oscilátor 8MHz a nahrát Blink po SPI včetně bootloaderu. Externí clock nepotřebuje, Blink blinká správně jen trochu pomaleji, ale přes USB programování nejde. Ach jo, tak buď bootloader pro 328P není kompatibilní s Bootloaderem 328PB a nebo je taky v kopru převodník USB CH340. Původní vadnej procík dost topil a tak to možná bylo přepětí nebo přepólování.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#38 Příspěvek od Celeron »

Tak na to koukám jak péro z gauče. Přinesl jsem si od známýho nový čistý ProMini s 328PB a slíznul si ho do Bascomu. Zkusil jsem obsah nahrát do toho mýho stávkujícího Nano a bohužel, i když bootloader blikal ledkou jak má, po USB stále nešlo nic nahrát. Pak jsem si všimnul, že Lock je nastavenej né jako na jinejch deskách na FF ale CF, tedy "SPM is not allowed to write to the boot loader". Přepsal jsem to, nic se nezměnilo ale nechal jsem to být. Pak jsem ještě zjistil, že i Fuse pro oscilátor jsou taky jinak a to Ext krystal = 11 1111. Divný je, že tam je těhle možností Fuse pro externí krystal asi 50 a na žádnou jinou oscilátor nejede. U 328P jsem vyzkoušel asi 10 možností nastavení fuse pro externí krystal a šlo to na všech.
No hlavně že to chodí. Ale stejně to je divný, 328PB jde v Arduino IDE napíct s volbou procesoru 328P jak přes SPI tak přes USB, ale napíct bootloader nejde, řve to na špatný ID. Divný, že při nahrávání kompilace se iD asi nekontroluje.
Pavěda... :roll:
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
RayeR
Příspěvky: 1167
Registrován: 02 srp 2009, 02:00
Bydliště: Praha
Kontaktovat uživatele:

#39 Příspěvek od RayeR »

Jen me napada, pokud si zkousel USB bootloader a mel oscilator nastavenej na RC a este ti to blikalo trochu ji.ak, tak USB potrebuje stabilni a presnejsi hodiny nez z RC. Tech fuse bitu je na XO tolik, protoze se jima este nastavuje startup time, rozkmit budiciho napeti, a dalsi. Krystal se taky mohl pripect tim teplem. Me se ted stalo, ze mi po foukani horkovzduchem odesly DRAM cipy ze SIMM modulu, to se mi jeste nestalo, zatim vsechny cipy co sem takle zfouknul a nekde znovu pouzil, tak fungovaly...

>Crifodo
kdyz ses dobouchal na ten MCU s ID fff... povedlo se ti nejak to ID prepsat zpatky? Nevim o tom, ze by to slo, ale pokud je to ve stejne flash jako program, tak to treba nakym hackem jde, kdyz to slo vymazat. Me se to jeste nestalo..

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#40 Příspěvek od Crifodo »

Nezkoušel jsem to, nebyl důvod když to podvrhnutí .dat funguje, ani nemám software který by tu část flash read only dokázal přepsat.
Na webu o tom byly sice polemiky, ale přirozená lenost mi bránila vymýšlet kolo.
https://www.avrfreaks.net/s/topic/a5C3l ... AG/t114209
https://www.avrfreaks.net/s/topic/a5C3l ... AO/t092830

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#41 Příspěvek od Celeron »

RayeR píše:pokud si zkousel USB bootloader a mel oscilator nastavenej na RC a este ti to blikalo trochu ji.ak, tak USB potrebuje stabilni a presnejsi hodiny nez z RC. Tech fuse bitu je na XO tolik, protoze se jima este nastavuje startup time, rozkmit budiciho napeti, a dalsi. Krystal se taky mohl pripect tim teplem.
Nojo, ale teď to mám na externí krystal s fuse 11 1111 a USB jede i s tím pofoukaným krystalem. S těma fuse pro oscilátor, v datašítu 328PB K tomu skoro nic nepíšou, jen fuse pro interní RC, externí vstup a pro externí krystaly jen low a high kmitočet.
No a ten bootloader pro 328PB jsem si prostě originál stáhnul z novýho 328PB do Bascomu a když bude potřeba, tak si ho tam zase nahrnu. Jo a taky je mi divný, proč je vuřt fuse pro nastavení dýlky klasickýho bootloaderu v Bascomu. Prostě je jedno, jestli tam dám 2KB, 1KB, nebo 512B. Nejde akorát 256B. Taky divný, jednoznačně je v okně Bascomu vidět, že je 1KB dlouhej. :roll: Netuším, jestli po resetu skáče na adresu počátku bootloaderu danou fuse, nebo něčím jiným.
Zajímavý taky je, že když do 328P v Pro Mini nahraju Optiboot, kterej je 512 byte dlouhej, tak mu nevadí že je ve fuse nastavená dýlka 256B. Opravdu pavěda.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
RayeR
Příspěvky: 1167
Registrován: 02 srp 2009, 02:00
Bydliště: Praha
Kontaktovat uživatele:

#42 Příspěvek od RayeR »

K tomu bootloaderu - obecne AVRka maji k tomu 2 typy fuse. Jedna zapina/vypina bootloader, to udela to, ze se program nebude poustet od 0 ale od vyssi adresy kde zacina bootldr. Druha pak urcuje velikost bootldr a tim i jeho pocatecni adresu kam po resetu skoci. Typicky jdou vybrat 4 ruzne velikosti dvema fuse bity. Kdyz nahrajes mensi bootldr do vetsi oblasti, tak by to nemelo nicemu vadit, ale naopak nejspis dojde k oriznuti. Kdyz nahrajes treba 1kB bootldr do sekce velke jen 512kB,, tak bych cekal, ze ho zacne flesovat od adresy, kde ma bootloader zacinat (flashsize-bootloadersize) a kdyz dojde na posledni platnou adresu, tak proste se zapisem skonci a zbytek bootldr nenahraje. Za urcitych okolnosti to treba nemusi vadit, protoze v te urizle casti jsou treba jen naka data nebo kod, ktery se neprovadi vzdy, takze to i nak fungovat muze...
K tomu krystalu, se mi ted nechce zrovna pidit v datasheetu, ale vestinou mi ten XO kmital se celou radou nastaveni fuse, spis nez ze by jel pouze s 1 nastavenim. Napr. v AVR studiu (co sem pouzival to stare 4.x), kdyz se na MCU proipojis, tak ti to tak ukaze celkem prehledne na co ktery fuse bit je, resp. sou tam rolovaci menicka, ze to ses schopnej nastavit i bez datasheetu.

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#43 Příspěvek od Celeron »

RayeR píše: K tomu krystalu, se mi ted nechce zrovna pidit v datasheetu, ale vestinou mi ten XO kmital se celou radou nastaveni fuse, spis nez ze by jel pouze s 1 nastavenim. Napr. v AVR studiu (co sem pouzival to stare 4.x), kdyz se na MCU proipojis, tak ti to tak ukaze celkem prehledne na co ktery fuse bit je, resp. sou tam rolovaci menicka, ze to ses schopnej nastavit i bez datasheetu.
Píšes o kterým procíku, 328P nebo 328PB? To 328PB mě nechodí na jinej ext, než 111111, u 328P jsem se s tím nesetkal. Ale na všech nastaveních krystalu procík jel pokud se mu na PB6 poslal kmitočet kolem 8MHz z generu.
Co která Fuse dělá je v Bascomu rozepsaný v nastavovacích roletách, v AVR dude taky. Ale k těm 6 bitům oscilátoru tam je minimum, jen ty základní věci. Prostě ta 328PB je jiná kvůli Uartu a časovači navíc proti 328P.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Odpovědět

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