Fórum témák

» Több friss téma
Fórum » Óravezérlő
 
Témaindító: Lucifer, idő: Dec 20, 2005
Témakörök:
Lapozás: OK   4 / 9
(#) Báddzsó válasza Báddzsó hozzászólására (») Máj 22, 2006 /
 
hehe előző hozzászólásom első 3 mondatát visszavonom!! eenéztem... egyébként szerintem 100%, hogy nincs belekalkulálva a basicbe a feladatvégrehajtás, próbáld ki!
pl:

loop:
portb=0
WaitMs 1
portb=255
FOR i = 1 TO 65500
portb=255
NEXT i
goto loop
(#) eSDi válasza Báddzsó hozzászólására (») Máj 22, 2006 /
 
Így ziher, hogy a FOR ciklus több lesz mint 1ms. De az én példámban se FOR se IF. A port beálítása meg pár száz nanoszekundum ami ebben az esetben elhanyagolható szerintem, mert úgy sem tudja belőni pontosan a kvarcot. A WAITMS időzítések meg pontosak ha az órajel 1MHz vagy többszörösei...... De még így sem szabad 4másodpercel tovább tartania az 1 percnek.
(#) Báddzsó válasza eSDi hozzászólására (») Máj 22, 2006 /
 
2 usec egy ilyen parancs végrahajtása, hogy portb=123

(bele az 123 a W-be ki a W-ből a portra)
(#) Báddzsó válasza Báddzsó hozzászólására (») Máj 22, 2006 /
 
de ez a waitms nagyon terheli a picet, én maradnék a megszakításos módszernél és akkor sleep módban is lehetne a pic a megszakítások között. Amit bekópiztam az pont a másodperces megszakításhoz van 4MHz-s kvarccal.
(#) eSDi válasza Báddzsó hozzászólására (») Máj 22, 2006 /
 
Akkor is csak 0.00001 másodperc egy perc alatt ha összeszámolod az összes port beírást.

Tehát 100000 perc után késne 1 másodpercet, Ami 69.5 nap ha jól számolom........
(#) eSDi válasza Báddzsó hozzászólására (») Máj 22, 2006 /
 
És most itt mi a jelentősége a nagy terhelésnek?????
Nem számol mást tudtommal.
Vagy ha igen akkor jogos az érv.....
A fogyasztás az így sem sok......
(#) eSDi válasza Báddzsó hozzászólására (») Máj 22, 2006 /
 
Bocs elszámoltam. 1 perc alatt csak 4 beírás van, tehát 8us. 125000 perc után fog 1s-ot késni. Ami 86,8 nap.
(#) Báddzsó válasza eSDi hozzászólására (») Máj 22, 2006 /
 
hjaa.. végülis... de ha interruptolunk és közben alszik a pic lehet tovább birja mintha waitms-sel csináljuk, 20év helyett lehet hogy 100 évig menne
(eggyébként fogggalmam sincs mennyit bír ilyen szempontból a pic, de mondtam (írtam), hogy ez csak az én megoldásom lenne)
(#) eSDi válasza Báddzsó hozzászólására (») Máj 22, 2006 /
 
Az lehet. De szerintem tök mindegy. Úgy is az lesz berakva a PIC-be amelyik jól müxik. De akkor fogok röhögni ha a mechanika szarakodik, mi meg itt egymás hülyeségein rágódunk.......
(#) Báddzsó válasza Báddzsó hozzászólására (») Máj 22, 2006 /
 
egyébként hová tűnt Lucifer?
(#) eSDi válasza Báddzsó hozzászólására (») Máj 22, 2006 /
 
Passz! Biztos teszteli az órát........
(#) bbatka válasza Lucifer hozzászólására (») Máj 23, 2006 /
 
Azthiszem rájöttem a hiba okára. Nem részletezem. Adja magát. Két verzióját készítettem el a programnak. Az elsőben egy utasítást áthelyeztem. Leszimulálni nem volt időm. (progi.bas)
A másodiknál (progi1.bas) abból indultam ki hogy az órád siet. Ezért úgy írtam át a programot hogy 55s egy ciklus és korrekciós időzítéseket tettem be. A korrekciós időzítések növelésével , csökkentésével tudod beállítani a pontos időt. 2-3 ilyen program módosítással (arányítással) már elég pontosan be kell tudni állítani az órát. Mivel nem egész megahertz értékű a kvarc, ezért a Picsimulator nem tudja pontosan kezelni az időzítéseket !!!! Az újabb program verziók már figyelmeztetnek erre, a régebbiek nem. Ez csak annyit jelent, ha pl. beírod hogy waitms 1 akkor a valós késleltetés nem 1ms lesz. Tehát előszőr meg kell határoznod hogy mennyivel kell beszoroznod a várakozási értéket hogy a valós időzítés értékét megkapd.
A régebbi program verziók nem ismerték az alldigital utasítást sem. Ha a te Picsimulator verziód hibaüzenetet ír ki rá, akkor töröld ki. Ez az utasítás azt jelenti hogy nem analog komparátoros módon kezeli a lábakat, hanem digitális módon.
A második program verziónál szívesen megcsinálom neked az arányítást. Égesd be a progit és figyeld meg hogy mennyit késik v. siet. Aztán beégetünk egy másik verziót más késleltetési értékekkel és megtesszük úgyanezt. A 3.-nak már pontosnak kell lennie.
(#) Báddzsó válasza bbatka hozzászólására (») Máj 23, 2006 /
 
pff, szerintem ez nem lesz jó.... egyik sem... , mert az interruptok ugyanúgy fognak jönni, a "korrekciós idők" miatt egy idő után még fel is "torlódhatnak" az interruptok. hiszen az interruptos rutinon belül vannak azok a kis késleltetések: meghívja azt a kis progirészt a pic minden megszakításnál ami úgyanúgy minden 32768. rezgésnél fog megtörténni és vár és miközben vár lehet, hogy megint lesz megszakítás és akkor mivan? szerintem :wilting:
(#) Báddzsó válasza bbatka hozzászólására (») Máj 23, 2006 /
 
szerintem 4MHz-s kvarccal csiláld így: katt
32768Hzessel meg így: katt
(#) bbatka válasza Báddzsó hozzászólására (») Máj 23, 2006 /
 
Hát ez szerintem meg nemigaz mert a TMR0 függetlenül fut a Pic programtól. Az első program esetében a megszakítás után azonnal előről indulhat a TMR0. Már azon is gondolkodok hogy összedobom egy próbapanelon, csak nekem nincs semmim amivel számlálhatnék, így csak 1 perces idő intervalumokat tudnék megfigyelni.
(#) Báddzsó válasza bbatka hozzászólására (») Máj 23, 2006 /
 
Idézet:
„TMR0 függetlenül fut a Pic programtól.”
ezt mondom én is, éppen ezért nem jó, nem ér semmit a késleltetés. Attól, hogy mikor 0-ázod le a TMR0 owerflow bitjét nem függ a TMR0 számlálója, tehát az pörög tovább azaz kezdi előröl a számolást hiába 1 az owerfloow bit.
NEM?
(#) Lucifer válasza Báddzsó hozzászólására (») Máj 23, 2006 /
 
Itt vagyok, figyelek!
eSDi jól érezte, az órát teszteletem. A 4 Mhz-s waitos nem akar működni, de még dolgzok az ügyön.
A mechanikai hibát nem valószínűsítem. Adok neki fesz. ugrik egy percet megfordítom a polaritást ugrik még egyet. Ha van a PIC lábán jel akkor a H-híd kapcsol, és ugrik is. A csúszás egyenletes volt. 64 másodpercenként léptet. Mindig. (Tápzajt, egyebet kizárnám.)
Ami az én kis agyamban felmerült:
Eléri a PIC a megszakítást.
Elvégzi az if-es műveleteket. (Ehhez gondolom idő kell) csak ezek elvégeztével engedélyezi csak az új megszakítást. Itt nem csúszhat be az a 4 másodperc?? Mi lenne ha az új megszakítás engedélyezését egyből az elejére tennénk?? Futna tovább a megszakítás?? na nem jártatom itt a számat tovább. Megyek és kísérletezek.
(#) eSDi válasza Lucifer hozzászólására (») Máj 23, 2006 /
 
Úgy nem menne az biztos. Égyébként mit csinált a waitms-es? De akkor sem csúszhat be 4másodperc!! Az túl sok! Nekem az akksitöltő progija tele van IF függvényel és észre sem veszed, hogy végrehajtja őket. Pedig méri az eltelt időt is. ráadásul pontosan.
(#) Báddzsó válasza Lucifer hozzászólására (») Máj 23, 2006 /
 
Idézet:
„Futna tovább a megszakítás??”
persze! de nézd már meg hogyan van megoldva microchipesek szerint. katt!!!!
én meg nem zárnám ki zajt, főleg mikor a elektromégnes megkapja a feszt. Vannak védődiódák, szűrőköndik?? én is ilyesmivel szenvedek mostanában, a megfagy a picem miközben áramot adok egy motornak......
(#) Báddzsó válasza Báddzsó hozzászólására (») Máj 23, 2006 /
 
cseréld ki egy ledre az egész H-hidat és az órarászt, nézd meg akkor mit csinál. Mikor elindítod picet indíts el egy stoppert és figyeld a villogásokat, monnyuk úgy 5 percig azzal a 4 másodpercet siető progival...
(#) aty válasza Báddzsó hozzászólására (») Máj 23, 2006 /
 
Csak 1-2 otlet.

Quarz-ot 4.096 MHz-esre szokatm valasztani, igy sokkal konyebb osztogatni.
TMR0 interrupt generalasra hasznalom, de nem torlom a benne levo erteket. Interrupt alprogramban INC-zek egy byt-et es ebbol figyelek 1 bit-et, igy kapok 2, 1 vagy 0.5Hz-es jelet.
Innen mar egy egyszeru foprogrammal lehet perc-es jelet generalni.

Ha a tapod zavaros, ajanlom, hogy az 5V-ot chopper-al allitsd elo ( MC34063 ) ami nalam nagyon jol vizsgazik. Siman elturi a tirisztoros furogepet is.
(#) bbatka válasza Lucifer hozzászólására (») Máj 24, 2006 /
 
Jó hírem van! A módosított program (progi.bas) pontosan müködik. Leszimuláltam. Szimulációs eredmények lent mellékelve. A kezdeti kis eltérést tovább görgeti,de nem összegzi. A eltérés a páros és páratlan értékeknél két különböző érték, de nem tendencia hanem csak két különbözeti érték váltogatja egymást, tehát abszolút pontos. Sőt megépítettem az a kapcsolást amit 5hónappal ezelőtt kézzel felvázoltam neked csak az RB7-re egy ledet tettem egy 330ohmos ellenállással. 10órát üzemelt tegnap óta a kapcsolás. Még reggel is szinkronba villant a karórámmal. Neked is ezt javaslom hogy először próbáld ki leddel. A másik gondolatom, biztos hogy a config biztiket jól állítottad be égetéskor?
A progi1.bas viszont nem müködik rendesen. Bevallom nem is foglalkoztam ezek után túl sokáig vele. Egy jó 1000-es szorzóval eltévedtem az időzítéseknél. Ezt kapcsiból kiszúrtam.
A kvarc amit használtam kb.2mm vastag és rá van írva hogy 32768Hz. Szóval nem a mikro kivitelű.
(#) bbatka válasza Báddzsó hozzászólására (») Máj 24, 2006 /
 
Lehetséges hogy igazad van a TMR0-al kapcsolatban, még nem tudom. Másik két témán is dolgozok párhuzamosan, így nem volt sok időm az órával foglalkozni. A Picsimulator 1percet kb. fél óra alatt szimulál le ráadásul, ezért döntöttem inkább az Mplab mellett. De lényeges amit írsz és meg fogom vizsgálni.
(#) Lucifer válasza bbatka hozzászólására (») Máj 27, 2006 /
 
Sziasztok!
Na végre nekem is jó hírem van! Beszórtam 2 db 1n4148-as diódát, a BC547-esek elé, és tegnap este óta hibátlanul jár. az első szoftverrel.
Most jön az egyéb funkciók beépítése: óra tekerés, stb. Ha kész lesz kirakom a nyákrajzot a szoftvereket. Ezúton szeretném megköszönni mindenkinek aki foglalkozott a problémámmal.
(#) eSDi válasza Lucifer hozzászólására (») Máj 27, 2006 /
 
Fasza! Ennek örülök. Legalább kiderült hogy nem szoftver gond volt......
(#) Báddzsó válasza Lucifer hozzászólására (») Máj 27, 2006 /
 
(#) jakabj16 hozzászólása Dec 19, 2006 /
 
Hali mindenkinek!

Végigolvastam a témát, de nem sikerűlt megoldást találnom a problémámra!

Kéne egy olyan progi (16F628A-ba) ami semmi mást nem csinál, csak egyszerűen méri az időt! (óra)

Na az itt a gond az assembly nem áll túl közel hozzám. Én mikroPascalban próbálkoztam a dologgal.

A progi egyszerű: kell 3 változó sec, perc, óra
igazából, csak a sec kell, mert abból egy kis osztás szorzás segítségével ki is jön a többi
Na akkor legyen csak a sec ennek elég ha byte méretű, még ez is sok. Ezt a progi elején lenullázom utána pedig elkezdem növelni pontosan 1 másodpercenként! na és itt jön a gond! pontosan 1 másodpercenkét. Itt jön a megszakítás, a TMR0 és a többiek amihez nem sokat értek.
A pic egy 8MHz-es kristályal megy. Akkor most kell még 1 kristály??? vagy elég egy? (ha kell akkor valami 2 hatvány értékű kell ha jól tudom)

Valamit itt kell csinálni és a valami valaminek a hatására valamit csinál

Szóval azt hiszem a TMR0 nő valami hatására és egyszer csak túlcsordúl és itt kell növelni a sec értékét 1 el.
Az a valami a másik kristály vagy egyéb?

Na sok szöveget felejtsétek el amit írtam!

Ami kell egy egyszerű kis progi assemblyben vagy mikroPascalban!
Ja és egy kapcsrajz ha kell a másik kristály akkor az hová? (16F628A)

Előre is köszönöm és bocs hogy ilyen sokat szövegelek!
(#) Pavel válasza jakabj16 hozzászólására (») Dec 19, 2006 /
 
szia!

Én régebben foglalkoztam PIC -el ma már nem nagyon...de talán tudok valamennyit segíteni A PIC - et 32,768 Khz - es "óra" kvarcról kell járatni ugye a 32768 az 2 hatványa, utána TMR0 - nál be lehet állítani úgy az előosztót hogy pontosan 1 s -ként fogysz kapni egy megszakítást .... innen már relatíve egyszerű a dolog ...megszakításban növeled egy vváltozó értékét 1 el ..a többi pedig csak osztás szorzás

remélem tudtam segíteni valamit

Üdv

ui: ha nem megy akkor majd megpróbálok írni rá egy "samplét"
(#) Slope válasza Pavel hozzászólására (») Dec 19, 2006 /
 
Magát a PIC-et nem kéne 32,768kHz-ről hajtani, mert vannak ott más műveletek is, pl. leosztás, kijelzés.

Szóval PIC mehet 20MHz és TMR0-t kell hajtani egy külső órajellel (32,768kHz). Keresd meg a fórumban, talán egy éve volt, hogy én is ezzel "játszottam".
Persze azóta már RTC-t használok, konkrétan az 5C313-at (SPI). Ezt csak le kell kérdezni, van megszakitás kimenete, beállítható 1Hz-re, szóval a PIC-nek elég csak 1 másodpercenként lekérni az időt, közbe csinálhat sokminden mást (amúgy a megszakítás beállítható 1sec-re, 1min-re, 1h-ra, 1napra, 1hétre, 1hónapra, 1évre, is akár)
(#) Slope válasza Slope hozzászólására (») Dec 19, 2006 /
 
Ja mégvalami... volt egy olyan verzióm, amiben egy sima ébresztőórából szedtem ki az időalapot. Mivel ez egy elektromágnest hajt bipolárisan, két kimenete van, mindkét kimenetén 0,5Hz-es jellel.
A jelek fél periódussal el vannak tolva, így két dióda a kimenetre és meg is jelenik a pontos 1Hz-es jel... ez meg megy a PIC megszakítás lábára. A többi már adja magát.
Következő: »»   4 / 9
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