Fórum témák

» Több friss téma
Fórum » PIC Watchdog kezelés
 
Témaindító: Gatery, idő: Jún 18, 2007
Témakörök:
Lapozás: OK   1 / 1
(#) Gatery hozzászólása Jún 18, 2007 /
 
Sziasztok!

Egy olyan kérdésem/kérésem lenne, hogy Pic-be írok progit...

És néha lefagy...igazából elég "egyszerű" a progi, de nem szabadna, hogy lefagyjon...

Szóval szeretnék valaki hozzáértőt megkérni, hogyha tud akkor MPLab c18-hoz ha tudna egy nagyon egyszerű példaprogramot adni/mutatni azt pontal jutalmaznám és nagyon megköszönném!


Előre is köszönöm!
(#) pet válasza Gatery hozzászólására (») Jún 18, 2007 /
 
Szia!
Mi fagy le? A PIC vagy a sz.gép?
(#) lgyk válasza pet hozzászólására (») Jún 18, 2007 /
 
Értelemszerűen a PIC.

Nem vagyok jártas a témában, de rengeteg watchdog-példát lehet találni a guglival.

Szerk.: Ebben van egy watchdog-részlet
Részletes leírás a watchdog-ról
Leírás PDF-ben

Mégsem lehet C-ben sok példát találni...
(#) 925 válasza Gatery hozzászólására (») Jún 18, 2007 /
 
A watchdog-ot a következő képpen kell használni a progi elején bekapcsolod a WDT_ON és a fő szálba pedig a CLRWDT utasítással reseteled az időzítőjét hogy ne resetelje a PIC-et ha lejár az időzítése.
Nézd meg ezt is: http://t-t.freeweb.hu/elokep/pic/felhkk/kk/sz090312.htm

Nem tudom nem-e valami külső zavar okozza a PIC-ed leállását, mint nekem nem rég a "mikrokontrollerek zavarszűrése" topic-ban.
(#) potyo válasza Gatery hozzászólására (») Jún 18, 2007 / 4
 
Idézet:
„Szóval szeretnék valaki hozzáértőt megkérni, hogyha tud akkor MPLab c18-hoz ha tudna egy nagyon egyszerű példaprogramot”



Ezzel kapcsolod be:
#pragma config WDT = ON

Ezzel a lejárási idejét állítod
#pragma config WDTPS = 1

Az 1 helyett 2 hatványai mehetnek egészen 32768-ig. A szimulátor szerint a 18F2550-nél ha 1-re állítottam, akkor 4ms után generál resetet.

Ezzel meg nullázod a regiszterét
_asm
CLRWDT
_endasm
(#) Gatery válasza potyo hozzászólására (») Jún 18, 2007 /
 
Hát srácok!
Ezért szeretem a hobbielektronikát! Kérdezek valamit és egyből van válasz!

Köszönöm!

Holnap kipróbálom és ha megy akkor adom a pontot!


Különben a kapcsolás nagyon egyszerű:

van a pic 2 lábát használom, egyikkel egy ledet kapcsolok 1k ohmon keresztül, másikon pedig egy relét egy pnp tranzisztoron keresztül ami relé bázisára van rakva egy 1 k-s ellenállás. A tranyó E és C közé van dióda berakva és a relé kimenetén is.
Probléma:

ha a ledet és a relé egyszerre kapcsolom akkor nem mennek....ok...gondolom, hogy a túl nagy áram lehet....kimértem led ugye 5mA....tranyónyitás 4mA...ok lehet hogy nyitáskor többet vesz fel, de azt nem tudom mérni..

A pic összes többi lábát lekötöttem földre és bementere állítottam...azt olvastam, hogy ez javallott művelet, hogy elkerüljem a zavarokat.

Szóval a progi a következő:

Végtelen ciklus
Usart beolvasás 13 byte
stb
....

És az olvasás közben néha kifagy:

Progi részletesen:

Idézet:

if(DataRedyUSART){
Do{
if(DataRedyUSART) {i++; in[i]=getcharUSART();}
}While(i<13)

PORTBbits.RB0=1; Delay_ms(1);PORTBbits.RB0=0;
///És itt fagy be....honnan tudom....égve marad a led...
}

If (i>13) {i=0; ....stb}



[/quote]

Szóval nullázom az i-t...

Szóval valakinek ötlete?

Tudom, hogy elég kaotikusnak tűnik így....de hátha van valami biztonságosabb módja az USART kezelésnek....
Az stb-ket azért írtam mert azok nem lényegesek
(#) potyo válasza Gatery hozzászólására (») Jún 18, 2007 /
 
Az a relé bekötése nekem zavaros. Általában npn tranzisztorral kapcsoljuk a relét, emitter gnd-n, bázis mondjuk 1k-n a pic lábára, táp és kollektor között a relé tekercse, és a tekercsel párhuzamosan dióda. Mondjuk lehet pnp tranzisztorral is, akkor az emitter megy a tápra, és a relé a kollektor és a gnd közé.

Azt nézd meg, hogy az összes megszakítás le legyen tiltva, amit nem használsz. Töröld kézzel az engedélyező biteket, lehet, hogy resetkor nemjól áll be Különösképpen az ilyen lábváltozásokból eredők a veszélyesek, ha mégis bemegy valami zavar a lábakon.

100nF-os kerámiakondenzátor(ok)ral szűröd a tápot, igaz?
(#) Gatery válasza potyo hozzászólására (») Jún 18, 2007 /
 
Bocs Igaz! NPN-t használok! Nem tudom, hogy írhattam el.....


A tápon van 100nF kondi.

(#) watt válasza Gatery hozzászólására (») Jún 19, 2007 /
 
A PIC táplábaihoz közel van téve az a 100n?
A diódát a relé tekercsére tegyed!
A tápot legalább 1000µF-al szűrni kell, ha ugyanarról megy a relé is!

WDT-t csak akkor használj, ha már stabilan működik a program. Az nem arra való, hogy egy rossz áramkört megjavítson!
(#) NickE hozzászólása Jún 19, 2007 /
 
mijaza vacsdog?
jobb, ha Te is elfelejted, mint én tettem
(#) Gatery válasza potyo hozzászólására (») Jún 19, 2007 /
 
Köszönöm!

Tökéletes megoldás! Megy a dolog teljes siker

(#) potyo válasza Gatery hozzászólására (») Jún 19, 2007 /
 
Csak az a kérdés, hogy mitől fagyott meg a pic, mert én még csak programhibából kifolyólag láttam leállni. Aminek jó a programja az kikapcsolt watchdoggal is probléma nélkül megy. Ezek nem pc-k, nem fagynak meg csak úgy maguktól.
(#) Gatery válasza potyo hozzászólására (») Jún 19, 2007 /
 
Megvan a hiba oka....

Az történt, hogy amit fentebb leírtam kódrészletet az nem jó, ugyanis ha jön mondjuk 13 byte egyszerre akkor azt nem mindig olvassa ki, és néha marad anyag a bufferban, hogy miért...nem tudom...

Szóval a lényeg hogy átírtam ilyenre

ungigned char in[13];
...

getsUSART(in,13); (ez a parancs egy stringet olvas be)

Szóval lényeg, hogy ez megoldotta a buffer beragadást..és mostmár nem fagy.

Szóval köszönöm a segítségéet!

De a watchdog jól jön.....már csak be kell állítanom hogy a számláló legalább 2 másodpercig fusson, de azt biztos megoldom valahogy....

Még 1x kösz!
(#) potyo válasza Gatery hozzászólására (») Jún 19, 2007 /
 
Beállítod az osztóját 512-re, akkor kb. 2s-ot kapsz.
Következő: »»   1 / 1
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem