Fórum témák
» Több friss téma |
Tulajdonképpen minden megvan, kivéve a legfontosabbat: a pontos időzítést.
Jah és BÚÉK!
Meg nem atomórát akarok építeni, és mivel bináris szinte csak én veszem észre, ha rosszul jár. De az a napi 14 perc eltérés, amit írtál, elég sok.
Igen, nézegettem a cikket, de egy hibát találtam benne:
Idézet: de, sajnos az. Vagy én vagyok kuka hozzá, bár kezdek egyre többet megérteni belőle, lehet csak idő kérdése... „Kicsit bonyolultnak tűnhet, de nem az!”
Úgy döntöttem, csinálok egy led villogtatót, ami pontosan 1 másodpercenként villant föl egy ledet, aztán ha ez működik, jöhet az óra rész is.
Az oszcillátor, amit tegnap találtam a fiókban nemigazán akart működni. Oszcilloszkópom nincs, nemigazán tudom kipróbálni, de a PIC nem csinált semmit. ( config: _XT_OSC ) Hestore-ban van egy csomó féle. Melyiket vegyem meg, melyiknek a frekije passzol leginkább az órához? http://www.hestore.hu/cat_69.html?pg=1&cat=69 Az fontos, hogy a hozzátartozó 2 kondi pont 1pF legyen?
Jajj, ez nem így van. A configban levő XT azt jelenti, hogy 4MHz vagy kisebb kavics kell. A PIC (típusa) adatlapja megmondja, hogy mi a felső határfreki. A F84 és f628 típusoknál van 4 és 20MHz felső határfrekijű típus is. A 4MHz-es kavicshoz általában 33pF, a 20MHz-eshez pedig 22pF körüli kondi a megfelelő.
Szerintem (mielőtt nekiállsz tervezni), olvass egy kicsit, PIC-es könyveket.
Áááá, most esett le, hogy az nem 4MHz-s, hanem 40MHz-s, amit én tegnap rákötöttem.
Az én PIC-emhez jó lenne valami 4MHz körüli (vagy nem?), csak az a kérdés, hogy melyik legyen, mert van 4,0-tól 4,9-ig sokféle. Órához melyik a legalkalmasabb?
Tudom, hogy hülyén hangzik, de egyik sem. Mondom, olvass!
Két dolog: A piced 4MHz alatti típust kíván. Mivel a feldolgoztató freki ennek a negyede, nem lesz könnyű maradék nélkül osztani, mert nem kettő hatványa... Használhatsz (bizonyos PIC-eknél) akár 2 különböző kvarcot is. Az 1Hz-hez 32,768kHz és az órajelhez pl. 20MHz-est. Ugye, hogy nem egyszerű...? Hidd el, ez így nem fog menni, hogy kapkodsz fűhöz-fához. Először tanulni kell.
Nem értem, minek ennyire túlbonyolítani...
Én csak egy PIC-es órát szeretnék. Nem kapkodok, ti mondtátok, hogy először az időzítést csináljam meg, és utána az óra részt, mert az elöbbi a fontosabb. És hogy pontos legyen, külső oszcillátor kell. Ezért szeretném tudni, hogy melyiket vegyem meg.
Szia!
Az nem gond ha a kristályod frekvenciája nem a kettő hatványa. Szerintem a 4MHz tökéletesen megfelel. Először a belső frekvenciaosztót beállítod 256 - os osztásra(OPTION_REG). Így 15625Hz freki fogja léptetni a TIMER0 -át. A TMR0 regiszter kezdeti értékét beállítod 131 - re decimálisan. Ez azt jelenti hogy 125 impulzus után a TIMER0 túlcsordosul és ekkor kérsz egy megszakítást. A megszakításban újra beállítod a TMR0 regisztert 131 - re, illetve a megszakításba még kell írnod egy cikluset ami 125 - ig számol hogy végül megkapd az 1Hz jelet. Remélem érthető voltam
Oké, köszi, megpróbálom megcsinálni.
Majd írok, ha lesz valami eredmény.
OK sok sikert
Hali!
Megrendeltem az oszcillátort, meg a hozzávaló kondikat is. Szeretném elkezdeni a progit. (Egyenlőre a belső oszcillátorral tudom csak tesztelni, de az is 4MHz.) A frekiosztó megvan: MOVLW B'00000111' MOVWF OPTION_REG ; 1:256 A TMR0-t hol kell beállítani? Org 0 után, a többi beállításnál, mielőtt bekapcsolom a megszakításat? Így jó?
Hali
Miert a TMR0-t akarod hasznalni? Az altalam leirtak a TMR1-el kapcsolatban nagyon jol hasznalhatoak, es sookal pontosabb idozitest adnak , mert a TMR0 8 bites, tmr1 16 bites. Tehat az idozitest a 16 bitesben sokkal pontosabban be lehet loni. De vegulis ha azt akarod hogy jo legeyn, ugy csinalod ahogy neked tetszik.
Megcsináltam a TIMER0-ás dolgot, de a kütyü nem csinál semmit. (Nincs kijelzés.)
Mit rontottam el / felejtettem ki? [Forráskód csatolva.]
TIMER0-ról több leírás van a neten, és azt talán könnyebb használni. Topi is azt írta a cikkében, hogy aki megérti a TIMER0-t, annak már könnyű lesz megtanulnia a többit is. Szóval inkább ezzel kezdenék, és ha ez már megy, továbblépek TIMER1-re.
De még így is pontosabb lesz, mintha időzítgetnék nem? (A legjobb próbálkozásnál is sietett 2 percet nap végére.)
Hali
Csak szamolj utana! A TMR0 max 256-ig szamol, a TMR1 65536-ig. A pontossag azon mulik, hogy minel pontosabban be tudd allitani az osztast. Mivel a TMR0 csak 256 osztast tud, ennek a beallitasa nagy hibat tud okozni, es meg a IT kezeles is belevisz egy kis pontatlansagot. De nem tudom az en mintapeldam miert nem jo? Annyit kellene meg varizni, hogy az idozitest le kellene vinni 10 msec-ig. Akkor meg lehet vele csinalni egybol a MPX vezerleset is. Azaltalam ajanlott jelzobites mod meg jobba teszi az egeszet, mert az IT-ben nem kell a mentes es a visszallitas. De Te tudod! Csa Vili
Najó...
Először megpróbálok csinálni egy ledvillogtatót a te kódodból. Íme: Mindjárt letesztelem...
Nem csinál semmit.
Pedig ha jól nézem, belső jelre van állítva. /Ebben a COUNT beállítása is benneva, előzőből kimaradt. Átnéznéd, hogy mi a hiba? (Azt kéne csinálnia, hogy minden második alkalommal kigyullad egy led, tehát minden második másodpercben.
Mi lehet a hiba?
Nagyon tul van bonyolitva. Igy probald meg!
"Nagyon tul van bonyolitva."
Dehát ez a te kódod(ból van csinálva) Én csak a másodperc, perc és óra növelését cseréltem ki a led felvillantására. Nem bonyolítottam rajta. Köszi, megnézem és kipróbálom!
Hali
De amit most kuldtem, az egyszeru mint a pofon. Mar a led billegtetes. Remelem mukodik, mert en csak az MPLAB alatt probaltam es tette a dolgat. A bit billegteteshez nem kell egy litaniat irni, Ahogy en irtam az par utasitas es billeg.
Szia néztem a forráskódot hát jónéhány hibát találtam benne:
1. olyan utasítás hogy MOVFW nem létezik. Ha a STATUS regisztert akarod elmenteni: MOVF STATUS,0 ; STATUS REGISTER A WORKBE MOVWF STATUS_SAVE ;Status_save-be beletölti a Worköt 2.Mielott írod az OPTION_REG - et nem árt átkapcsolni BANK_1-be (BSF STATUS,RP0). 3.Az interruptban nem törölted a jelzőbitet (BCF INTCON,T0IF). Ha ezt nem teszed meg, az interrupt csak egyszer lesz végrehajtva, szerintem ez a legfőbb probléma
Hi!
Megvettem az oszcillátort, meg a kondikat. Közben elkészült a gombkezelő programrész is. De a PIC néha magától resetel, a progi újraindul az elejétől. (Onnan tudom, hogy az órának be van állítva egy kezdőérték, 06:50:00.) Ez mitől lehet? A gombos panel külső alkatrész, egy tüskesorral tudom csatlakoztatni az órához. Amikor hozzáértem a csatlakozóhoz, a PIC resetelt, valszleg mert a Vdd-t, és Vss-t érintettem össze az ujjammal. Azóta a tüskékre egy gumi-védőt raktam, és a progi is csak akkor ellenőrzi a gombokat, ha nem mind a három értéke 1. (ilyenkor nincs csatlakoztatva) Lehet, hogy még így is felszed valami jelet?
Ok, beszereltem a 4MHz oszcillátort, és XT-nek konfiguráltam. Az eredeti progival (időzítgetős) működik. Mostmárcsak meg kell hozzá írnom a megszakításosat...
Most raktam ilyen szivacsot (amit az IC-khez adnak) a gomb, és programozócsatlakozókhoz. Ez részben megoldotta a problémát. Mostmár nem zavarja a PIC-et, ha a tüskéket 'tapizom', de a gombnyomásokra sem reagál. Tulajdonképpen mit csinál ez a cucc? Annyit hallottam róla, hogy antistatikus.
A gombokhoz kötöttél felhúzóellenállásokat?
Hi!
Így kötöttem be. (Ezt a rajzot a netről szedtem.) 3 Gomb van összesen, a Gnd, és Vcc közös, tehát az 5 tüskét jelent. Újabban előfordult olyan jelenség is, hogy amikor leválasztottam a gombokat, az összes led elkezdett gyorsan villogni... Most csináltam egy olyan védőt, hogy 5 precíziós foglalatot zsugorcsővel vontam be, (a csatlakozóknál kilukasztottam) és ezt raktam rá a tüskesorra. Ez így védi a PIC-et, de még mindíg nem tudom rendesen beállítani a gombokkal, a fent említett dolog miatt. |
Bejelentkezés
Hirdetés |