Reset ATMega32 při sériovém příjmu

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

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

Reset ATMega32 při sériovém příjmu

#1 Příspěvek od mtajovsky »

Dobrý den,
setkal jsem se s podivným jevem u ATMega32. Je zprogramován příjem a vysílání přes USART pomocí přerušení, nicméně se to projevuje, i když USART není vůbec inicializován. V okamžiku příjmu znaku na pinu RX dochází k zákmitům na pinu (16 MHz) krystalu XTAL2 (pin12) a pokud je příjem opakovaný a častější, vede to k resetu procesoru. Děje se to, je-li USART aktivován, nebo když není a PIN14 (PD0/RXD) je nastaven na vstup. Nastavení RXD na výstup zatlumí příchozí data a nic se neděje. Sériový příjem je realizován převodníkem USB <-> RS232 CH340G. Nastavením hodin na vnitřní oscilátor 8 MHz jev vymizí. Na obrázcích je červeně signál na RXD při příjmu znaku '*'. Žlutě je průběh na XTAL2 (16 MHz). Zákmity vznikají při sestupné hraně na RXD. Na druhém obrázku je lupa. Jev se mi projevil na dvou různých procesorech. Co s tím dělat?
Přílohy
20140605_661025.jpg
časová lupa
(45.13 KiB) Staženo 164 x
20140605_660958.jpg
příjem '*'
(38.11 KiB) Staženo 158 x
Uživatelský avatar
lesana87
Příspěvky: 4404
Registrován: 20 zář 2014, 00:00

#2 Příspěvek od lesana87 »

Zkusit nastavit oscilátor na plný rozkmit? (Fuse CKOPT)
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#3 Příspěvek od mtajovsky »

Dík, vypadá to, že to zabralo. :)
Uživatelský avatar
lesana87
Příspěvky: 4404
Registrován: 20 zář 2014, 00:00

#4 Příspěvek od lesana87 »

On se ten low-power režim oscilátoru hodí jen do tichého prostředí a jen pro nízké frekvence, v datašítu je psaný do 8MHz. Na 16MHz nemá ani smysl šetřit pár uA na oscilátoru, když procesor bere klidně 20mA. :)
Odpovědět

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