Stránka 1 z 1

Pojistky ATMEGA32

Napsal: 12 bře 2016, 12:16
od ok1f
Jak nastavit pojistky, abych mohl procesor přeprogramovávat? chci se učit programovat a asi jsem si znehybnil už dva ATMEGA 3216. Ne uzamčením, ale někde se něco nastavilo a nevím co. Není možné je ani smazat. Zajímá mě hlavně nastavení

JTAGEN, OCDEN, BOOTRST, BOOTSZ, BODEN, SUT,CKSEL

Programátor používám Presto.

Může např chybně nastavený oscilátor způsobit, že se programátor na součástku nepřipojí? Jak z toho ven? Je mi líto ty procesory prostě vyhodit.

Používám oscilátor int RC.

Díky za info

Napsal: 12 bře 2016, 23:22
od frpr666
Všechny informace jsou v datasheetu k atmega32. Nejlepší pro začátečníka je nenastavovat pojistky vůbec a nechat defaultní nastavení.
Pokud už se něco v pojistkách nastavuje, tak obezřetně.
Solidní IDE programátoru by mělo uživatele varovat, když se chystá přepsat pojistky...

Chipy, které ti nejdou nevyhazuj, prodej je někomu, kdo má paralelní programátor a bude schopen si je přeprogamovat.

Edit1: pro ISP programování musí být funkční oscilátor + vhodně nastavená rychlost na straně programátoru.

Napsal: 13 bře 2016, 08:20
od ok1f
A tedy když budu mít paralelní programátor, tak budu mít možnost procesor smazat a tím bude opět schopný i programování sériového?

Mohu v pojistkách zakázat JTAGEN? Na těchto pinech mám připojený didplej a na jeho segmentech vidím, že na pinech jsou nějaké pulsy. V datasheet je psáno, že pokud není rozhraní využito, mělo by být vypnuto. Mám už strach cokoliv v pojistkách měnit... Presto používá MOSI, MISO, SCK a RESET, které jsou na jiných pinech.

Napsal: 13 bře 2016, 08:41
od popopepe
Když budeš mít normální programátor, tak můžeš dělat co uznáš za vhodné. Pak to nastavení nemá vliv, i když to umrtvíš, dokážeš ho změnit vždy.
JTAG můžeš klidně zakázat.

Napsal: 13 bře 2016, 08:47
od ok1f
I když bych měl v procesoru vybraný jiný typ oscilátoru a nevěděl jaký? Taktování si řídí programátor sám bez ohledu na oscilátor procesoru?

Jaký normální programátor by jste mně doporučil?

Napsal: 13 bře 2016, 09:44
od AB1
Abys mohl znovu programovat Mega32,
vezmi nějaký zdroj obdélníkového signálu 5 V / cca 1 MHz a připoj
ho na pin XTAL1.

Pročti důkladně nastavení fusebitů tady:
http://www.engbedded.com/fusecalc/

U nastavení oscilátoru vyber vždy řádek s nejdelším startup časem (+64ms).

JTAG můžeš zakázat v programu. Na začátek main() dej

Kód: Vybrat vše

int main(void) 
{
    MCUCSR=(1<<JTD);
    MCUCSR=(1<<JTD);  // musí být dvakrát

Napsal: 13 bře 2016, 11:29
od ok1f
Po přivedení 1MHz musím použít paralelní programátor, nebo by to mělo fungovat i se sériovým Presto?

Napsal: 13 bře 2016, 11:53
od popopepe
Ty v tom máš nějaký guláš.
Jsou dva typy programování -
paralelní, pak je úplně jedno, co jsi kde předtím nastavil, ten programátor má úplnou kontrolu nad tou atmegou. Je jedno, jestli zmastíš pojistky, hodiny atd. Prostě tímhle to dokážeš vymazat a nastavit jak chceš.
Druhý typ programování je pomocí SPI - tam ale musíš dávat pozor, co děláš. Nesmíš si zakázat reset, a pokud jsi přeprogramoval hodiny na externí (z fabriky tuším atmega přijde naprogramovaná na 1MHz interní), a nemáš připojený nějaký zdroj hodin, tak to nebude chodit. Pak většinou pomůže připojit nějaký TTL zdroj hodin (TTL oscilátor) na vstup od krystalu, a pomocí SPI naprogramovat znovu.
Nebo pak použít paralelní :-) a opravit ty blbě nastavené bity.
Jukni do datasheetu, je to tam popsané.
Já používám Elnec Smartprog2 (umí jak paralelní, tak SPI).

Napsal: 13 bře 2016, 12:34
od ok1f
Tak přesně tyto informace mně chyběly - díky.