probuzení ze stavu sleep u 16f628A

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

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Návštěvník

probuzení ze stavu sleep u 16f628A

#1 Příspěvek od Návštěvník »

Chtěl jsem se zeptat jestli jde 16f628A probudit přetečením časovače TIMER1?
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#2 Příspěvek 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.
Návštěvník

#3 Příspěvek 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?
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#4 Příspěvek 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.
Návštěvník

#5 Příspěvek 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?
Návštěvník

#6 Příspěvek 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]
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#7 Příspěvek 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ů.
Návštěvník

#8 Příspěvek 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?
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#9 Příspěvek 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č.
Návštěvník

#10 Příspěvek 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
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#11 Příspěvek 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é?
Návštěvník

#12 Příspěvek 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í.
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#13 Příspěvek od jankop »

Ano, v tom případě je to v pořádku.
Odpovědět

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