Fórum témák
» Több friss téma |
Szia!
Mint előbb is írták, valószínűleg szoftveres lesz a hiba. Esetleg a kvarc vagy kondi nem érintkezik rendesen, az nálam is okozott ilyet. De ha ezek rendben vannak, akkor a programban lesz a hiba.
Timer0-ra van megszakítás beállítva. Ha megszakítás generálódik, akkor növelem a másodpercet. Ebben nincs mit nagyon elrontani, nem?
Gondolom ASM. Másold be a megszakító rutint.
C
A TMR0 hogy van beállítva ? Ha jól számoltam, akkor a 32768 Hz az 65536-os osztásnál 2s-os periódusidőt ad !?
256-os előosztás van beállítva. Amit furcsálok is, mert én úgy számoltam, hogy 32768/4 = 8192. Amit 32-es osztóval beállítva kijön az 1Sec, de mégsem így történik. És nem értem miért.
Hogy hajtod a Timer0-t? Mert neki nincs belső oszcija, tehát nem tud külső kvarcról menni, csak stabil négyszögjelről (T0CKI). Tehát a Timer0-t közvetlenül nem lehet külső kvarcról hajtani. Viszont a Timer1-et igen. Tehát a Timer1 megszakításba kell rakni az időléptetést, és a Timer0-ba a kijelzést, és akkor mehet az idő külső kvarcről.
Hogy vannak beállítva a timer regiszterek?
Belső órajerről hajtom a TIMER0-t. Akkor a FOSC/4 az órajele ha jól tudom.
De itt az egész kód:
Valamit nem jól számolsz... 4/32768 --> kb. 122 us , ez a léptetési órajeled ideje. Ebből kell 65536 db, hogy megszakításod legyen --> 8 s ( az OPTION alapján 256-os az osztód ! ) ! Ez azt jelenti, hogy 8 s alatt számolna neked 1 -et !
szerk.: Idézet: Ezt magadnak írtad ? „#define _XTAL_FREQ 32768” A hozzászólás módosítva: Szept 29, 2013
Nem félreértelmezel valamit ? Ha 32768-as kvarcról működteted a PIC-et, akkor az XT beállítás nem jó !
A hozzászólás módosítva: Szept 29, 2013
De a TIMER0 az csak 8 bites ennél a PIC-nél, nem 16! Vagy miért számolsz 65536-al?
Akkor mire kell állítani, ha nem XT?
Itt valaki nagyon nem kerek.
Bár még nem teljesen világos, hogy akkor hol is van a kvarc, és milyen frekvenciájú?! Ha a főoszcinak raktál be 32.768kHz-es kvarcot, akkor a megszakítás 32768/4/256/256 = 0.125Hz lenne, vagyis minden 8. másodpercben léptetné csak a másodperc változót. De a főoszciról egyébként nem érdemes járatni óraalapot. Ha tényleg FOSC-nak raktad be ezt a kvarcot, akkor a konfigbiteknél XT helyett LP-t kell beállítani (lehet ez okozza a hibát).
LP beállítás kell, zenetom jól írta ezen a frekin!
Azért írtam 65536-ot, mert 256-os ( 8 bit ! ) előosztót állítottál a 8 bites regiszterhez, ami összesen 16 bitesnek felel így meg !
32768 a kristály igen, ezért nem értem hogy miért kellett 256-os osztó, mikor 32-es kellene. De akkor átálítom LP-re, és kiderül mi lesz. Aztán áttervezem akkor külön órajelforrásra.
A TMR1 alkalmas erre a feladatra. Van neki oszcija direkt erre a frekire. Es az meg 16 bites is. Masik: Az IT rutinban ne tartozkodj sokaig mert igy sohasem lesz pontos orad. Jelzobitek allitasaval a foprogramban kell elvegezni a szamitasokat.
Idézet: Szerintem ez most nem gond, mert a hardver simán számol, nem kell "előretekerni" a számlálót , de általában igaz ! „Az IT rutinban ne tartozkodj sokaig mert igy sohasem lesz pontos orad.”
Én is így gondoltam, ezért írtam a interruptba.
Idézet: „Azért írtam 65536-ot, mert 256-os ( 8 bit ! ) előosztót állítottál a 8 bites regiszterhez, ami összesen 16 bitesnek felel így meg !” Erre nem is gondoltam már így késő este Na tényleg az volt a baj, hogy nem LP-n volt, hanem XT-n. Nem is gondoltam volna, hogy ennyit számít. Mindíg tanulok valami újjat Mostmár az elősztót is 32-re állítottam, és jól számol. Egyébként majd szeretnék DFC77-es vevőt hozzá, így annyira nem lényeg, ha naponta pár másodpercnyit késne... Köszönöm a segítséget!
Tegnap este óta megy, nem veszem észre rajta, hogy késik vagy siet bár másodpercet azt még nem látok. úgyhogy király a cucc
Hello!
Van egy PIC16F690, ICSP-n programozva.
RB6->RB7 RB5->RC7 RB4->RC6 RC2->RC3 RC1->RC4 RC0->RC5 RA2->RA4 RA1->RA5 A bal oldal bemenet, a jobb oldal kimenet. Ha a fenti konfig alapján bekapcsolom a kimenetek magasak, és a hozzájuk tartozó bemenetekkel tudom őket kapcsolgatni. Ha nullázom a portokat, tehát odaírok még egy PORTA=0,PORTB=0,PORTC=0 a TRIS után akkor az RC6 kimenet magasan indul el, és kapcsolgatni se tudom, mert csak addig marad alacsony a kimenet amíg a hozzá tartozó bemenetet alacsonyan tartom. Mit hagytam ki?
Kérdés. Egy tápról működő PIC és relék esetén ki tudom eléggé szűrni valahogy a tápot, hogy 9 relé(9*100mA) egyszerre kapcsolása ne resetelje a PIC-et?
A hozzászólás módosítva: Szept 30, 2013
Dioda-pufferkondi kombo a PIC tapjaban?
Dióda még nincs, pufferkondi is csak a főtápon van a 7805 után, még azt is növelem. Mekkora puffer lehet elég a PIC tápra, és a diódát hová kéne tennem konkrétan és hogyan?
Sziasztok
Egy matematikai pardoxonban kovájgok és nem találok ki. Milyen egyenlettel tudnék byte-ot átszámolni "0x"és hex stringre?
Szia!
Egy lehetőség: először is csinálsz egy 16 elemű karakter tömböt [0..9, A, B.. E, F] (tehát itt a számok ASCII kódját tárolod!). Aztán szétválasztod az átszámolandó számot két 4bites számra, és ezeket a számokat felhasználod tömb indexként. Tehát legyen mondjuk a (decimálisan) 91 (0101 1011). A felső 4 bit értéke 5, vagyis hozzárendelet a tömb 5. elemét (a 0. elem a 0!), ez 5. Ezután veszed az alsó négy bitet, ez 11. A tömb 11. eleme a "B" lesz. Összeolvasva: 5B. Ha erre gondoltál...
Nem tudom, nem teljesen. Legalábis azt gondoltam, hogy van valami egyszerü számitás mert ez nekem teljesen idegen. Vagyis értem csak a kivitelezéssel van bajom.
Igazábol flowcode-ban szeretnék számolni de nem teljesen tiszta a dolog. A hozzászólás módosítva: Szept 30, 2013
|
Bejelentkezés
Hirdetés |