Fórum témák

» Több friss téma
Fórum » Órakészítés PIC-kel
Lapozás: OK   3 / 12
(#) titi válasza Dempsey hozzászólására (») Máj 7, 2011 /
 
(#) sooty válasza titi hozzászólására (») Máj 7, 2011 /
 
Igen kell hozzá legalább 2 db. tranyó a cikk szerint, ha a B és D bemenet negált jele nem áll rendelkezésre. Az ic cseréje 74ls48-ra se sokkal bonyolultabb.

7447.GIF
    
(#) Dempsey válasza titi hozzászólására (») Máj 8, 2011 /
 
Köszi a linket.
(#) Dempsey válasza sooty hozzászólására (») Máj 8, 2011 /
 
Köszi a képet. Most már nem variálok vele. Majd ha építek egy másikat magamnak, akkor megcsinálom.
(#) Báddzsó hozzászólása Aug 30, 2011 /
 
sziasztok, ezekkel a PIC-es órákkal mindig bajban vagyok.
Most egy stoppert készítek, és óránként több másodpercet késik. Ami egy századmásodpercet kijelző stoppernél elég gáz...
A választás a 16,384 MHz-es kvarcra esett: 16384000/4/256/32 = 500 megszakítást generál másodpercenként, tehát minden ötödiknél+ 1 századmásodpercet ad hozzá. Tettem trimmer kondit a kvarc lábához, próbálgattam állítani, de csak nem jó. Sajnos szkópom nincs.
Adjatok valami tippet legyetek szívesek, hogy hogyan állíthatnám be precízre. Hangkártyás szkóppal próbálgattam, de az erre nem való. Egy egyszerű olcsó kézi stopper pontossága megfelelne már. Köszönöm!
(#) potyo válasza Báddzsó hozzászólására (») Aug 30, 2011 /
 
Tudnál mutatni kódrészletet? Mert a nagyfrekvenciás kvarcok nem egetrengetően pontosak, de azért nem kellene óránként több másodpercet késniük.
(#) Báddzsó válasza potyo hozzászólására (») Aug 30, 2011 /
 
abszolút egyszerű az egész, csak egy ciklus van ami figyeli, hogy túlcsordult e a timer0 és 100ad másodpercenként váltogatja a kimenetet. ami egy Számláló ic-t hajt. Basicben van...
  1. porog:
  2. if INTCON.2=1 then
  3. gen=gen+1
  4. INTCON.2=0
  5.     if gen=3 then
  6.     gpio.2=1
  7.     gen=0
  8.     endif
  9.     if gen=1 then gpio.2=0
  10.    
  11.     if gpio.3=0 then
  12.     gpio.2=0
  13.     pause 6150
  14.     goto restart
  15.     endif
  16. endif  
  17. goto porog


Most látom más kvarcot használtam végül.. 4,9152MHz lett. pic: 12F629
(#) Báddzsó válasza Báddzsó hozzászólására (») Aug 30, 2011 /
 
azt eléggé kizárnám, hogy nincs idő az utasítások végrehajtására, hiszen egy-egy túlcsordulás közt kb. 4000 utasításnyi idő van. Ez a ciklus meg van kb 25? Annyira egyszerű, hogy még a Basic sem kavarhat bele... Tehát gondolom hardveres probléma. Őszintén meg modnom, hiába tekertem bármerre is a kondit, semmi változás nem volt érzékelhető.
(#) Báddzsó válasza Báddzsó hozzászólására (») Aug 31, 2011 /
 
írtad, hogy a nagyfrekis kvarcok nem túl pontosak. Rakjak bele 32768Hzes óra kvarcot? Azzal is hasonló problémáim voltak egy másik projektnél, az sietett állandóan napi 5-6 percet. Pedig az interruptal ment a timer1-ről. Nem értem mit csinálok rosszul állandóan az órákkal kapcsolatban. Lehet megkeresem vicsys-t, az órák mesterét.
32768 esetén itt azzal lenne problémám, hogy állandóan új értéket kéne raknom a timer1-be, hogy tudjam a 100-ad másodperceket mérni. 17* kellene 65536-328 at és 8* 65536-327-et beleraknom a timer1 be miután túlcsordult és mielőtt 1 lenne. ... vmi ötlet?
(#) sooty válasza Báddzsó hozzászólására (») Aug 31, 2011 /
 
Üdv! 4 mhz- kvarcal is lehet elég pontos órát készíteni, az órakvarcal meg még inkább. Napi több perces késés sietés nem megengedhető

A 100-ad másodperc mérése nem lehet gond, mert 1000000-t kell osztanod, úgyhogy marad bőven óraciklus a méréshez. A Tom025 féle órában lévő megoldást tudnám ajánlani:
Itt veséztük: Link

Üdv!
(#) Báddzsó válasza sooty hozzászólására (») Aug 31, 2011 /
 
az rendben, hogy az 1 milliót kell osztanom, de azt csak szoftveresen tudom, vagy úgy, hoyg értéket adok a timer1-nek miután túlcsordul de még nem 1. azt meg nem lehet így, hogy ugyanarról a órajelről jár a pic mint a timer, mert timer írásakor az előosztó nullázodik, innentől kezdve a hardveres kilőve. Ha meg nincs előosztó akkor meg nincs idő túlcsordulás és 1 között átírni a timer-t.
32768 kvarcnál van, főleg ha a pic 20Mhz-n pörög....
(#) sooty válasza Báddzsó hozzászólására (») Aug 31, 2011 /
 
Üdv! Bocs nem tudom/értem miért kell átírni a timer1-et? A csatolt példában 256 utasításonként lefut a timer0 megszakítás rutinja. Itt egy változó értékét csökkentjük, ha negatívba fordul, letelt a mérendő időtartam (a példában 1 mp, de veheted a századrészét is, maximum nem kell akkora változó) 20Mhz kvarcnál ez még 5x olyan gyorsan jár tehát még több ciklusod van a feldolgozásra a megszakítási rutinban.
(#) Báddzsó válasza sooty hozzászólására (») Szept 2, 2011 /
 
Mert én hardveresen szeretném mérni az időt, mert közben a picnek más dolga is van mint a saját órajelének a számolása.
(#) sooty válasza Báddzsó hozzászólására (») Szept 2, 2011 /
 
Ok. Bár azért egy órakapcsolásban (lásd pl. a nixis órák) is csinál mást is a pic mint a saját órajelét számolgatja pl. kijelzőt multiplexel, gombokat figyel stb. (ad abszurdum dcf jelet dekódol, öröknaptárt, infra távirányítót kezel, stb) Biztos valami nagyon gyors feldolgozást vagy számításigényes dolgot akarsz vele végeztetni, hogy arra a pár változó lecsekkolására se nincs közben ideje a timer0 megszakításban.
(#) Báddzsó válasza sooty hozzászólására (») Szept 3, 2011 /
 
Valamelyikőnk nem ért valamit. Tehát, ez egy stopper lesz, ami századmásodpercet mér és multiplexelve küldi ki 7 szegmenses kijelzőre. Közben néha ráppillant az akkufeszre, figyeli az usartot, mert rádiósan vezérelt és természetesen közben nagyon pontosan mér.
A timer innterruptja a legfelsőbb prioritású, utána jön az usart. Miközben egy végtelen ciklusban multiplexel.
Amit nem értek, hogy hogy mérjek századmásodpercet hardveresen úgy, hogy nem írom át a timer értékét? Mivel csak 2 hatványaval tudom osztani az órajelet és a timer is 255 vagy 65535 után generál interruptot.
Tegyük fel megvan az interruptom, túlcsordult a timer. Ez után, hogyan tovább? Mikor növeljem a századmásodpercet tartalmazó változómat? Minden 1000000/100/256 =39,0625 interruptnál?
(#) potyo válasza Báddzsó hozzászólására (») Szept 3, 2011 /
 
Írd már le, hogy pontosan milyen hardverrel is próbálkozol. Mert emlegettél itt pic12f629-et, most meg usartot, meg hogy multiplexelve ír hétszegmenses kijelzőre, ahhoz pedig a 12f629 nem rendelkezik elég lábbal. Meg volt szó 16,384MHz-es és 4,9152MHz-es kvarcról is. Alapesetben az itt felvázolt feladatot sima ügy megoldani pontos időméréssel (már amennyire a kvarc pontos).
(#) Báddzsó válasza potyo hozzászólására (») Szept 3, 2011 /
 
Bocs. Kicsit már én is megkeveredtem azért beszélek össze vissza. Van egy kész működő stopperem és egy most készülő.
Ami van és nem vagyok megelégedve a pontosságával az 12f629 + 4,9152MHz +cd4026 számláló ic-k. Itt a picnek csak annyi a feladata, hogy gombnyomásra indulva billegeti a lábát 100-ad másodpercenkén és így adja az órajelet a cd4026-nak amikből 5db sorba van kötve.
Az új, amit szeretnék, az már multiplexelt, mert nem csak számolni fog felfele hanem mást is, tehát cd4026 kiesik, 868MHz-en vezérelve indulna, állna meg a stopper. Ebben lenne 16,384MHz-es kvarc.
Segítség egyedül a pontos óramű megalkotásában kellene. Elméletileg tudom, hogy hogy a jó, de mégsem lesz pontos. Csináltam már órát 32768-as óra kvarcal a microchip application note szerint, az se lett jó. Lehet, hogy valami hulladék kvarcokat sikerül begyűjtenem innen a közeli boltból?
(#) Báddzsó válasza potyo hozzászólására (») Szept 3, 2011 /
 
Idézet:
„Alapesetben az itt felvázolt feladatot sima ügy megoldani pontos időméréssel (már amennyire a kvarc pontos).”
Ez az amit én is tudok, azt mégsem akar összejönni. Ott a program kód lejjebb. Azon mi lehet rossz? Az pörög a 12f629-ben.
(#) sooty válasza Báddzsó hozzászólására (») Szept 3, 2011 /
 
Ez kicsit hasonlít a TIL-306-os órámnál követett módszerre, mert abban is van a kijelzőben beépített számláló ic, csak órajelet vár a pictől (meg resetet stb.). Én csak azt próbáltam felvázolni, hogy ha az interrupt nem pontosan érkezik, mert 256 utasításonként fut le, akkor is el lehet dönteni, hogy az adott megszakításnál eltelt-e a századmásodperc és ha eltelt, lehet a kimenetet váltani. (És ez tényleg a kvarctól függően minden x. interrupt lesz, amiben az általam említett változó értéke alulcsordul)
(#) sooty válasza Báddzsó hozzászólására (») Szept 3, 2011 /
 
Ha befordítod, hány utasítás lesz ez a basic programrészlet? Nem lehet, hogy túl lassú lesz és valami interferencia jön így ki a kimeneten 100hz helyet? Meg van benne egy fixhosszúságú pause is. Ha órkvarcot használnál 3,2768 Mhz minden 32-re mehetne egy állapotváltás ez még basicben is egyszerű lenne.
(#) Báddzsó válasza sooty hozzászólására (») Szept 3, 2011 /
 
a fix hosszúságó pause az nem lényeges az 6 sec, az csak a kijelzést állítja meg stop gombra. akkor már nem mér időt.3,2768MHz helyett a 4,9152MHz-et használom így: 4 915 200 / 4 /16/256 így egy másodpercre jut 300 overflow, és mint a kódban látszik, minden harmadikra 1 lesz a gpio.2 és minden elsőre 0. tehát lesz egy 1/3 kitöltési tényezőjű 100Hz-es órajelem a gpio.2-es lábon.
A ciklus 28 szó hosszú lefordítva, kompletten. Ha nem számolom bele az 6 sec-es ifet akkor: 22
(#) sooty válasza Báddzsó hozzászólására (») Szept 3, 2011 /
 
Gondolom a változók le vannak nullázva a progi elején és akkor gen=0, jön az első megszakítás valamikor (?) és gen=1,intcon2=0, gpio2=0 ,jön a második megszakítás, gen=2,intcon2=0, gpio2=0, jön a harmadik megszakítás gen=3, gpio2=1,intcon2=0,gen=0 jön a negyedik megszakítás gen=1, intcon2=0,gpio2=0,jön az 5. megszakítás gen=2,intcon2=0,gpio2=0, jön a 6. megszakítás gen=3,intcon2=0, gpio2=1, gen=0
Szóval minden attól függ, milyen ütemben lesz az intcon.2 lenullázva, ami máris hibát visz a programba és ettől késik. Az interruptot csak figyelni kellene, és nem állítgatni, mert az kieső órajeleket okoz. Ha megcseréled a sorrendet és előbb lesz 0 az intcon.2 mint ahogy növeled a gen értékét már kevesebbet fog késni szerintem.
(#) Báddzsó válasza sooty hozzászólására (») Szept 3, 2011 /
 
az intcon.2 az csak a timer 1 overflow flag-je, akkor lesz 1 ha túlcsordult a timer1, szoftveresen kell 0-ázni még mielőtt újra 1 akar lenni. Nincs hatással a timer1-re ha jól olvastam.
(#) sooty válasza Báddzsó hozzászólására (») Szept 3, 2011 /
 
Ja én is most olvasom a datasheetet, nekem is úgy tűnik, hogy szoftveresen kell nullázni, de ennyiszer, nem csak akkor, ha így akarod használni, (nem számláló üzemmód)? Nem tudom, hátha valaki jobban benne van ebben a pic-ben Persze, ha ez csak a flag akkor meg hol van a megszakítás kezelő rutin, ami minden megszakítás esetén lefut és ott lehetne kezelni az állapotváltozásokat.
(#) Báddzsó válasza sooty hozzászólására (») Szept 3, 2011 /
 
A megszakítást ez a flag bit csinálná ha engedélyezve lenne, de nincs, gondoltam minek megszakítás, itt nincs más dolga a picnek, pöröghet egy végtelen ciklus.
De nem is ez a lényeg hanem a pontatlanság. Egyre jobban kezdek a kvarcok minőségére gyanakodni.
(#) sooty válasza Báddzsó hozzászólására (») Szept 3, 2011 /
 
Talán frekimérővel (egy pontossal) meg kellene mérni a kimenő frekvenciát, hogy tartja-e és hogy hol van a 100 hz-hez képest. Az, hogy szoftveresen detektálod a flag változását, mindenképpen hibát visz bele, de a nagyságrendjét nem tudom megítélni. A kvarcra írtad, hogy tettél trimmerkondit és gondolom a 33pF-ek is rajta vannak. Nekem a wordclocknál volt lineáris késés, egy rossz eeprom olvasó utasítás miatt. Végül is a kvarc is lehet pontatlan.
(#) Báddzsó válasza sooty hozzászólására (») Szept 3, 2011 /
 
Miért mondod, hogy hibát visz bele? 4*256*16 azaz 16384 órajel után átállítódik a flag bit hardveresen, ez nincs hatással semmire és attól hogy épp mikor olvasom ki és mikor nullázom az sincs hatással a timer1re. Az overflow bit mindig másodpercenként 300* fog 1 lenni. Most, hogy ebben a 300-ad másodpercben mikor olvasom ki és nullázom le nem számít, maximum pár utasításnyi csúszás lesz időnként és 1 századmásodperc néha kicsit több lesz vagy kevesebb, de egy másodpercen belül midig marad a 300 db overflowolódás.
Normális frekimérőt nem tudtam szerezni. Próbáltam a hangkártyás, szópot de az erre nem való. Egyszerűen már akkor eltérő frekiket mutatott mikor a minatavételezést átállítottam. Tipikusan az az eset volt, hogy akinek egy órája van az mindig tudja a pontos időt akinek több az sose lehet biztos benne...
(#) Gery78 hozzászólása Szept 3, 2011 /
 
Sziasztok!

Azt szeretném kérdezni, hogy építettetek-e már karórát? Nemrég elvesztettem a karórámat, és ebből az apropóból szeretnék építeni egy LED kijelzős karórát.

A Lomexban kinéztem néhány fajta kisméretű Kingbright SMD LED kijelzőt. Kétféle számmagasságú tetszik: 5,08mm magas, és a 7,62mm magas kijelző. Szerintem ezekből össze lehet hozni egy karóra méretű áramkört. Azt szeretném, hogy másodperc kijelzés is legyen rajta, tehát 6 db kijelzőre lesz szükségem.

Az órajel generátor egy DS32kHz IC lenne, ez nagyon pontos órajelet ad, ettől pontos is lenne az óra. Van ebből is SMD itthon.

A kijelzők meghajtására szerintem valamilyen SMD tranyó kellene, a kis méret miatt.

Tápellátáshoz valami tölthető Lítiumos cella kellene.

A vezérlésnek egy PIC-et gondoltam, szerintem multiplex vezérlés jó lenne. (nézegettem a kapcsolásokat és ez tűnik a legkevesebb lábszámot kihasználó kapcsolásnak.)

Tudásra nem kellene valami nagy dolog, elég lenne, ha a dátumot, és az időt kijelezné. Alapértelmezettként a kijelző sötét lenne, és egy gombnyomásra megmutatná az időt, vagy a dátumot. Ki lehetne választani, hogy 24, vagy 12 órás kijelzés lenne, lenne egy SET gomb amelyet hosszan megnyomva beállítható lenne vagy az óra, vagy a dátum. Még egy olyan funkciót szeretnék, hogy a másodperc nullázható legyen.

Tudnátok nekem ebben segíteni, hogy ez megvalósuljon? Elsősorban a PIC programjának megírásában kérném a segítségeteket, a kapcsolást megpróbálom én összehozni, és a nyákot megtervezni. A tokozást még ki kellene találni, hogy vízálló legyen.
(#) sooty válasza Báddzsó hozzászólására (») Szept 3, 2011 /
 
Ok. 5 perc késés naponta az 0,34 % egy átlagos 100 ppm-es kvarc naponta kb.9 mp-et késhet/siethet ( 0,01%) egy 20 ppm-es órakvarc kb.2 mp-et (0,002%) akkor ezek tényleg nagyon hibás kvarcok.
(#) sooty válasza sooty hozzászólására (») Szept 3, 2011 /
 
A végén az lesz, hogy összeütök egy ilyen 100Hz időalapot (a meglévő óra szoftveremet kiegészítve) egy próbapanelen és megmérem frekimérővel a hecc kedvéért
Következő: »»   3 / 12
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