Problémy se startem uC Microchip

Dobrý den, několikrát jsem měl problémy se startem uC po zapnutí napájení. Tuším, že by to mohlo být způsobeno tím, že mi pomalu nabíhá zdroj na plné napájecí napětí z důvodu přliš velké hodnoty filtračního kondenzátoru ve stabilizátoru. Na vstupu 7805 (12V) mám kondenzátor 4700uF, na výstupu 470uF. Odběr samotného uC je samozřejmě zanedbatelný, těch 4700uF je tam z toho důvodu, že z 12V před stabilizátorem napájím velké LED zobrazovací jednotky, které mají odběr cca 600mA. Nevím však, jaká je v takovém případě doporučovaná hodnota kondenzátoru na výstupu 7805. Někdo dokonce doporučuje tam nedávat kondenzátor vůbec (jen blokovací 100nF). Máte s tímto někdo zkušenosti a můžete poradit, prosím? Děkuji. Vlasťa.

:arrow_right: administrator: přejmenováno z "Problémy se startem uC"

Zmensenim kondenzatora na vystupe nemusis v zasade zrychlit nabeh zdroja. Ten bude v Tvojom pripade hlavne zavisiet od toho vstupneho C. Ale C na vstupe i na vystupe nie je na zavadu. K tym 470uF urcite daj aj 100n, lebo velky elit nie dostatocne rychlo reaguje na vyssie frekvencie.

V kazdom pripade zapni v procesore brownout detektor.
Ak Tvoj procesor brownout detekor nema, potom pouzi externy, napriklad TL7705.
Ak Tvoj procesor nema ani WDT, potom pouzi externy WDT s integrovanym brownout detektorom, napriklad ADM705, 706. To uz si vyberies podla typu resetu na Tvojom MCU.
Aktivovat ci pouzivat WDT sa oplati, aj ked v zariadeni pre domace pobavenie a zabavu ho mozno az tak neocenis.
Najlepsie nabuduce napisat s cim pracujes.

O jaký typ procesoru se jedná? Setkal jsem se s tím. Pokud třeba není problém někde jinde, jako například neošetřené vstupy, které dovedou pravé divy. Ale problém nastává v některých případech tehdy, pokud zůstane na filtrační kapacitě zbytkové napětí i po vypnutí zdroje. A první procesor PIC se kterým jsem se kdysi setkal, měl zrovna definovanou chyby v obvodu Brown-out Detect. Ty chceš zlepšit blokování, já bych naopak paralelně k výstupní kapacitě zdroje přidal rezistor cca 10K ohm.

Měl jsem problém u PIC16F628 a taky u PIC10F206. Ale je pravda, že brownout detektor jsem neřešil. Možná bude stačit jej zapnout. Nyní pracuji s PIC16F883 a s PIC18F452 a tam jsem se s tímto problémem nestetkal.
Ptal jsem se taky mimo jiné proto, že jsem chtěl vědět váš názor na používání kondenzátoru na výstupu stabilizátoru obecně. Bloky 100nF keram. tam samozřejmě mám. Díky. Vl.

Osobně bych ještě kromě kondenzátorů 100nF za stabilizátorem dal ještě 100nF kondenzátory hned na nohy toho procesoru kde je napájení, zlapší se tak odolnost proti digitálnímu rušení. BTW todle by mělo bejt u každýho číslicovýho obvodu kterej máš v zapojení.

Ano, to mám samozřejmě taky - u každého pouzdra. Vl.

Blokovací kondy 100nF na výstupu stabilizátoru např. 7805 většinou nestačí a stabilizátor je náchylný ke kmitání. Výrobce doporučuje kapacitu alespoň 1uF.

Kapacitu před stab. 4700uF nelze považovat za vysokou, ale spíše běžnou. Pokud je použito alespoň 1W trafo, nebude nárůst napětí kritický. Nevím jak se chovají PICy, ale AVR snesou i velmi pozvolný nárůst napětí (i 0,1V/s), takže tady bych problém neviděl. Problémy nastávaly v těch zapojeních,kde se reset prováděl pomocí kondenzátoru připojeného na vstup resetu a napájení.

Procesory připojené na napájení bez resetu mají zpravidla dvojnásobný nap. proud než v aktivním stavu po resetu. Proto je důležité, aby signál resetu byl aktivní už od samotného počátku nárůstu nap. napětí.

Činnost procesoru by NEMĚLA BÝT NIKDY ukončena klesáním nap. napětí. Poslední instrukce se zpracovávají chybně a můžou způsobit poškození obsahu pamětí. Nejhorší případ nastavá, kdy je prováděn zápis do EEPROM při nedostatečném napětí. Činnost by měla být ukončena generováním resetu nebo instrukci halt resp. power down módem.

Díky. 100nF kond. tam dávám proto, že se odjakživa k pouzdrům log. obvodů dávaly. Možná je však u stabilizátorů situace jiná, OK. Zaujala mne však poznámka o správném způsobu ukončení práce procesoru. Chápal bych to u aplikací typu dálkové ovládání čehokoliv, u kterých stejně procesor po většinu času spí a je “probuzen” pouze na tu krátkou chvilku, kdy má vyslat kratičký kód. Ale jak to zajistit u ostatních zařízení, která jsou v trvalém provozu a během práce “nespí”? Tato zařízení se přece běžně vypínají tak, že se vypne napájení! A co výpadky proudu a podobné záležitosti? Jak to řešit? Vl.

Řešení už napsal Martin. Je jím brown-out detektor. Obvod, který generuje reset, jestliže napájení klesne pod stanovenou mez. Pak nehrozi, že by se poškodily data ve vnitřní EEPROM. Výrobce na to upozorňuje v datasheetu a v praxi se mi to potvrdilo.

Ano, díky. Ono je to tak, že člověk si sice přečte manuál, pochopí, co určitá funkce (brouwn out) dělá, ale nedojde mu, k čemu by to mohlo být dobré :slight_smile:. Vl.

Ale jestli to dobre chapu, nepotrebujes resetovat pri poklesu napajeni, ale pri nabehu, tedy ne BOD, ale POR (“power-on reset”, drzi reset pri nabehu napajeni, dokud se U neustali)?

Moc tomu nerozumiem. Aky je rozdiel medzi BOD a POR?
Ved ak je po zapnuti zdroja male napatie na mcu, teda mensie ako to pri ktorom zopne BOD reset, BOD procesor bude resetovat. Neviem o tom, ze by sa funkcia BOD aktivovala az po dosiahnuti korektneho Ucc. Ale ak sa mylim, tak ma prosim opravte.

Martin: to co popisujes je prave POR, ten odblokuje procesor z resetu po ustaleni napajeni, BOD (nebo u novejsich MCU BOR) jen zapise flag pri kritickem poklesu nebo vypadku napajeni a resetne MCU. Nektere MCU BOD(BOR) ani nemaji, jako napr. prave ten 10F206.

Jinak kondenzator za stabilik osobne davam, obvykle tak 500uF (zalezi na aplikaci).