Stránka 1 z 1

probuzení ze stavu sleep u 16f628A

Napsal: 29 dub 2008, 06:21
od Návštěvník
Chtěl jsem se zeptat jestli jde 16f628A probudit přetečením časovače TIMER1?

Napsal: 29 dub 2008, 09:21
od jankop
Při Sleep stojí hodiny procesoru. Proto nepracuje ani TMR1. Můžeš ho na buzení použít v režimu asynchronního čítače s externím hodinovým signálem na RB6/T1OSO/T1CKI/PGC, nebo připojit na RB6,RB7 krystal 32768KHz. Přímo tedy nejde procesor 16F628A pomocí TMR1 budit z režimu Sleep.

Napsal: 29 dub 2008, 10:30
od Návštěvník
No tak jsem to přesně myslel připojím k RB6,RB7 krystal 32.768kHz TMR1 bude v režimu asynchronního čítače. Jedná se mi o to že chci měřit teplotu řekněme 3x za minutu přepočítat zobrazit a procesor na 20s usne a probudí ho přetečení TMR1. Zkoušel jsem to s16f630 u které to jde probuzení ze sleep přetečením TMR1. Ale protože potřebuji víc vývodu tak chci použít 16f628A a tam si nesjem jistý jestli to probuzení ze sleep přetečením TMR1 jde?

Napsal: 29 dub 2008, 10:54
od jankop
16F630 má pomocný interní oscilátor pro TMR1, který plní stejnou roli jako ten krystalový RB6,RB7 u 16F628A. Pokud ti nejde o přesnost, tak bych použil WDT s předděličkou. Dostaneš se na buzení cca každé 2s. Pokud obsluha měření nezabere mnoho času tak je to v pohodě a ušetříš dva vstupy. Nezapomeň, že před Sleep je potřeba vypnout komparatory a Vref, které mají slušnou spotřebu. V konfiguraci je z tohoto důvodu vhodné vypnout BOR.

Napsal: 29 dub 2008, 11:41
od Návštěvník
Nerozumím prosím tomoto"16F630 má pomocný interní oscilátor pro TMR1, který plní stejnou roli jako ten krystalový RB6,RB7" já jsem myslel že je jenom jeden vnitřní oscilátor 4Mhz Prosím nešlo by to ještě líp vysvětlit, jsem začátečník? Právě že mi u té 16f630 chybí dva porty kdybych nemusel použít krystal 32.768 kHz tak by to bylo super?

Napsal: 29 dub 2008, 11:59
od Návštěvník
V datasheetu v registru T1CON je nastavení bitu 3

bit 3 T1OSCEN: volba oscilátoru mikropočítače typu LP jako zdroje hodin pro Timer1
pokud je taktovací oscilátor konfigurován jako vnitřní bez výstupu na vývod OSC2
1 = LP oscilátor je použit pro hodinový signál čítače/časovače Timer1
0 = LP oscilátor je vypnutý v ostatních konfiguracích taktovacího oscilátoru je bit ignorován

to se týká LP oscilátoru vnějšího(krystal 32,768kHz) nebo toho interního. Já jsem to měl dosud tak že jsem u 16f630 používal interní a ve sleep externí krystal 32,768kHz[/img]

Napsal: 29 dub 2008, 12:18
od jankop
Omlouvám se, s tím vnitřním oscilátorem jsem neměl pravdu. Situace je u obou procesorů stejná. Ale opravdu bych vyzkoušel buzení od WDT, to jsem pro 16F630 dělal a je to naprosto bez problémů.

Napsal: 29 dub 2008, 12:39
od Návštěvník
tak já to vyzkouším pomocí WDT i když jsem s nim nedělal.akorát nevim co to udělá když bude procesor komunikovat s čidlem DS18b20 a WDT přeteče tak zpusobí reset programu? Prosím nešlo by ještě ve zkratce popsat jak to mám udělat. Když nechci reset programu při přetečení WDT tak ho musím než přeteče periodicky vynulovat pomocí instrukce CLRWDT a potom znovu nastavit předděličku?

Napsal: 29 dub 2008, 13:44
od jankop
Pokud dojde k WDT za běhu programu, tak dojde k resetu. Pokud v režimu Sleep, tak dojde k probuzení a začne se vykonávat instrukce následující po SLEEP. Předděličku pro WDT stačí nastavit při počáteční inicializaci procesoru. Aby nedošlo k resetu za běhu programu, je nutné provádět clrwdt s periodou menší než je nastaveno. V případě děličky 1:128 je to čas cca 2,3s. Pokud čtení DS18b20 netrvá déle než tuto dobu, tak ti stačí udělat clrwdt vždy jen před sleep a tím nastavíš dobu Sleep právě na 2,3s. Protože je možné pomocí příznaků detekovat probuzení od WDT, nic nebrání tomu, abys čtení a zpracování teploty prováděl až třeba po 10ti krátkých probuzeních od WDT, když si na to uděláš jednoduchý sw čítač.

Napsal: 01 kvě 2008, 05:38
od Návštěvník
tak včera jsem to dodělal s 16f630 a tim WDT funguje to skvěle spotřeba klesla ve stavu sleep na 30 mikro A když se probudí čidlo převádí tak to bere 0,7 miliA
Děkuji za Radu a ještě jsem použíl dva porty místo krystalu 32,768. Ještě jednou dík :D

Napsal: 01 kvě 2008, 12:12
od jankop
To je fajn. Jen se mi zdá ta spotřeba příliš velká. Záleží to pochopitelně také na vnějších obvodech. Ale čekal bych míň. Nemáš ještě něco ve Sleep zapnuté?

Napsal: 01 kvě 2008, 13:24
od Návštěvník
já jsem to měřil jako celkový odběr. je tam ještě 1 posuvný registr a LCD zobrazovací modul 4DM8010 . Jinak samotný procesor ve stavu sleep bere 7 mikroA při 5V což je myslím normální.

Napsal: 01 kvě 2008, 22:24
od jankop
Ano, v tom případě je to v pořádku.