Fórum témák

» Több friss téma
Cikkek » DCF77 óra készítése egyszerűen, PIC-el
DCF77 óra készítése egyszerűen, PIC-el
Szerző: Topi, idő: Márc 31, 2005, Olvasva: 64013, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   4 / 4
Ha már megvásároltuk a PIC-ünket, akkor már nincs is más hátra, mint hogy elkészítsük bele a programot, ami majdan nekünk a DCF vevőtől kapott jelet értelmezi.
Mint láthatjuk a kapcsoláson, a PIC a PORTA 0-s bemenetén kapja a jelet, és a PORTB kimeneteken adja ki, a kijelző számára értelmezhető 2×4bites jelet.

Az fontos még azonban, hogy milyen kristályt tettünk a PIC mellé. Mivel prociban lévő programnak egy része másodperc pontosan kell hogy ketyegjen, így a kvarcal felépített oszcillátor által szolgáltatott órajelet megfelelően le kell osztani, hogy megkapjuk belőle a másodperces ütemet. Te ezt a leosztást szerencsére programban könnyűszerrel megírhatjuk.

Itt található az a program amit bele kell majd égetnünk
Itt pedig a lefordításhoz szükséges függvények...
A lefordított HEX-ek itt találhatók: 16F84.HEX, 16F84A.HEX

Ez a kód, még nincs teljesen befejezve, hiszen ha jól megnézzük, akkor még csak az angol nyelvű verziója működőképes, annál az egyszerű oknál fogva, hogy a magyar ékezetek nincsenek benne az LCD kijelzőnk ASCII kódtáblájába, és ahhoz hogy magyar ékezetek is megjelenjenek, ahhoz nekünk a CGRAM-jába bele kell tölteni. De mivel ez ram, ezért ha áramtalanítjuk a cuccot elfelejti. Így mindig mikor „bootol” a kijelző, vissza kell bele tölteni.

Hamarosan lesz egy cikkünk az LCD kijelző használatáról is, de az még odébb van.
Az itt található kód alapja, az egyik német elektronika kedvelő weblapjáról származik.

Nah akkor most elemezzük egy kicsit a kódot:
A fenti define parancsokat nem részletezem, mert nyilvánvaló, hogy mire való. Ha nem értenénk akkor is ott az ábra alatta

Nekünk most ez a sor a legérdekesebb először is

  1. __config        _XT_OSC & _WDT_ON & _PWRTE_ON & _CP_OFF


Itt nekünk az a lényeg, hogy beállítjuk az oszcillátort kristályra: _XT_OSC
Utána a WatchDog-ot is bekapcsoljuk : _WDT_ON
A WatchDog tulajdonképpen egy őrzőkutya, ami azt figyeli, lefagyott-e a proci. Mert bármilyen fura, ezek is le tudnak fagyni. Az őrzőkutyus lényege, hogy van belül egy olyan számláló, ami egyfolytában minden lépés után egyel nő. Ha ez a számláló eléri a maximumot a 255-öt akkor automatikusan újraindítja a procit. Ez nekünk azért jó, mert ha érkezik valami nagyon zagyva jel, ami teljesen hazavágja a procit, akkor ez automatikusan észhez téríti. De viszont van egy fontos lépés, a számláló egyfolytában automatikusan nő…
Akkor is, ha nem fagyott le a program. Így programból kell mindig kinullázni, nehogy túlcsorduljon, és újraindítsa nekünk.
Hiszen ha lefagyott a program, akkor nincs ki kinullázza, és akkor tesz nekünk egy szívességet, és újraindítja…

Van aztán egy másik fontos rész is:

  1. ; +--------------------+; |20:03:15 Téli idő      |; |Csütörtök 12.08.2004|; +--------------------+;#define PE1DCD


Itt beállíthatjuk, hogy a kijelzőnk milyen típusú. Hagyjuk „kikommentezve” (; karaktert tegyünk a sor elejére), ha nekünk egy 2×16-os LCD kijelzőnk van. Ha viszont sikerült beszereznünk egy 2×20-as LCD-t, akkor vegyük ki az elejéről a ;-karaktert.
Ez a beállítás azért fontos, mert ugyan a 20 as kijelzőn is ugyan úgy fog látszani minden, de akkor miért írnánk ki rá Hétfő helyett a „Hé” szót, mikor kiférne rá szépen hosszan is hogy „Hétfő”, megy az időszámításnál is ki lehet írni hogy „Nyári idő”.

Ezzel már jóformán kész is vagyunk.

A következő cikkben láthatunk pár képet róla működés közben…
Folyatás következik…
Következő: »»   4 / 4
Értékeléshez bejelentkezés szükséges!
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