- MOVLW d'5' 1
- MOVWF T3 1 (T3=5)
- ------------------------------------
- DEL2: NOP 1
- DECFSZ T3,f 1 (T3=4)
- GOTO DEL2 2
- ------------------------------------
- NOP 1
- DECFSZ T3,f 1 (T3=3)
- GOTO DEL2 2
- ------------------------------------
- NOP 1
- DECFSZ T3,f 1 (T3=2)
- GOTO DEL2 2
- ------------------------------------
- NOP 1
- DECFSZ T3,f 1 (T3=1)
- GOTO DEL2 2
- ------------------------------------
- NOP 1
- DECFSZ T3,f 2 (T3=0)
Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
A 101 az 100 PIKO farádos kondi! Amúgy itt te magad is megtudod nézni.
A 101-et úgy értelmezzük, hogy 10 és utána annyi nulla, ahányas szám van, és ez pF-ban lesz. Tehát a 101 az 100pF.
A francba akkor forraszthatom ki őket.
Csináltam viszont egy vadi új projektet beemeltem az interrup c-t amibe nuku konfig bit állító, és ugyan ezt a failed verify hibaüzenetet adja.
Nézd már meg, hogy nálad mi van a header fájlban!
Ezt írtad: _CONFIG1(JTAGEN_OFF & FWDTEN_OFF) Nálam ez van:
Ezek "ÉS" kapcsolatából 0x3F7F lesz, tehát a visszaolvasott érték jó. Lehet, hogy a PICkit2 (vagy mivel égetsz?) szoftvered a ludas?
_CONFIG1(JTAGEN_OFF & FWDTEN_OFF)
_CONFIG2(FNOSC_FRCPLL & POSCMOD_NONE) most ez a kettő van bent, pickit2-vel égetek. A 2v2 van fent, ma szedtem le a microchip oldaláról,az az érdekes, hogy a pickit2v2.exe azt a hex file-t amit az mplab csinál hiba nélkül kiírja és a verify sem ír hibát. Kicseréltem közben a kondikat.
Egyébként meg ha jó ha nem jó akkor sem áll át 32Mhz-re, innentől elég gáz. Mondjuk kénytelen leszek berakni egy 20MHz-s quartzot.
itt vannak a konfig bitek, ezek szerint be kéne állnia de a számítás szerint maradt 8MHz-es.
Sajnos a konfig biteket csak képként tudom menteni, de csatoltam.
A problémát az osztási hiba okozza. A 32768Hz-es quartz-al azért nincs problémád mert a mikrovezérlők számlálói bináris osztókat tartalmaznak és a 32768=2^15-en. A 11 illetve 12 MHz es kvarc esetén mindig marad akkora osztási hibád amely meghaladja a kvarz gyártásából adódó frekvencia hibát. Vagyis sem a 11Mhz sem a 12MHz nem egyezik meg 2 egyik egész számú hatványával sem így az osztási hibát csak akkor tudod elkerülni ha megfelelő kvarcot választasz. A 32768Hz-es kvarcot pont az óra alapú ídőzítésekhez fejlesztették ki és alkalmazzák.
Bármilyen osztást meg lehet oldani! Nem ez a gond! Az okokat már leírták, nem olvastad(ppm)?
És az értékek amiket csökkentek azokkal nem kell számolni?
Idézet: „És az értékek amiket csökkentek azokkal nem kell számolni?” De kell, hiszen azokból jön ki az utasításciklusok száma (már beleértettem az ismétlődéseket). Például a legbelső ciklusban így alakul az utasítások végrehajtása:
A maradékokkal nincs semmi gond, el kell rakni őket, és később felhasználva ez a hiba kiküszöbölhető. Szerintem Szilva is tud erről. Első hozzászólásként pont az ő tudását megkérdőjelezni, hááát Na nembaj, üdvözlünk a fórumon.
Kizárt dolog, hogy osztási hibából adódna, a timerek megfelelő beállításával pontosan lehet 11 vagy 12 egész számú többszörösével osztani. Pl 110000-rel leosztva a 11MHz-et kapsz 100 megszakítást másodpercenként, amiben szoftveresen lehet századmásodpercekkel növelgetni az időt (vagy minden századik interruptban egy másodperccel). A számolás, az osztás pontos, nem közelítő. A közelítő osztásból adódó pontatlanság olyan mértékű lenne, hogy pár óra elteltével komoly eltérést tapasztalnál az időben.
Sziasztok!
A quartz pontosságára a frekvencia feltüntetéséből lehet következtetni. 11MHz - 12 MHz megadás max. 1% tűrés, 12.000000 Mhz - 30-50 ppm. 32768 kHz - a tűrés +/- 0.5 Hz -> 15ppm A régi ellenállás (számmal kiírt) megadás is ilyen volt 1K, 1K1, 1K14 stb.
Tehát akkor így lenne: 4*25ciklus / 4Mhz.
A két ciklust amikor berakom a csökkenteni kívánt értéket a W-be azt hozzá kell adnom? Idézet: „A két ciklust amikor berakom a csökkenteni kívánt értéket a W-be azt hozzá kell adnom?” Természetesen. A 25-öt nem tudom, hogy honnan vetted. Nekem a két előkészítő utasítással is csak 21 lett.
Már nem emlékszem pontosan, de egyszer számoltam így időt. Hogy adogattam össze valami értékeket, és mikor elért egy számig, akkor növeltem a másodperc számlálót, de nem nulláztam hanem kivontam belőle az elérendő célt, így a maradékom megmaradt, és később az került növelésre. Így végülis nem veszett el. Ezzel a módszerrel az időmérés hosszútávon pontos volt, bár 1mp nem mindig tartott ugyanannyi ideig teljesen pontosan. Na ez kicsit zavaros volt, de mindegy is. Annyi féle képpen lehet PIC el időt mérni.
Persze, sok a lehetőség, viszont itt arról volt szó, hogy miért pontatlanabb egy nagyfrekis kristály, mint egy órakristály. Megállapodtunk, hogy attól, hogy azokat pontosabbra lehet gyártani és nem azért mert nem lehet a nagyobb frekiseket leosztani a kívánt időintervallumra.
Varázsszó a ppm. (De ezt nem is neked címzem, csak úgy összefoglalóként...)
PWM jellel hogyan tudok fix feszültségeket kiadni?
RC tag kell a kimenetre? Illetve milyen PWM kitöltés/frekvenci mellett kell?
0-5V tartományban, és egyenfeszültség, kis terheléssel.
Na sikerült írni a config biteket, szerintem valami kontakt probléma volt.
Ami viszont még mindíg nem tiszta, hogy a belső oszcillátor 8MHz-ja PLL-el 32Mhz-ra nő, akkor a 4mp-es váltások miért 2 mp-re csökkenek. Tehát semmit nem állítok a progin csak a belső oszcillátornak megadon a pll-t. Erre kéne egy okos válasz. fosc/2/64 az 250.000 mivel minden 10.-nél lép ezért 25.000 az időzítő. 32000000/2/64=250.000 és ezzel is 2mp jön ki ami nem jöhet ki. Nem 2-vel kell osztani fosc-ot?
Idézet: „PWM jellel hogyan tudok fix feszültségeket kiadni?” Sehogy, hiszen a PWM pont arról szól, hogy ki-be kapcsolgat egy logikai kimenetet. Analóg jel akkor lesz belőle, ha a kijövő impulzussorozatot pl. egy RC taggal megintegrálod. Némely esetbe a fogyasztó végzi el az integrálást: pl. izzólámpa vagy villanymotor tehetetlensége, LED esetén a szemünk tehetetlensége.
Ez az integrálás érdekelne. R*C>>T képletet találtam. Tehát 1K, meg 100nF elég, ha elég sűrűn dobálom kifelé?
A 25 az onnan jött, hogy a T1 : 10 , T2 : 10 , T3 : 5. 10+10+5=25. Tehát nekem 25-ször fog lejönni a :
[nop 1 decfsz T3 1 goto 2]
Idézet: „ha elég sűrűn dobálom kifelé?” Az, hogy elég sűrűn, az nem meghatározása valaminek. Számold ki, hogy milyen frekvenciát tudsz előállítani a PWM kimenettel és az alapján számolj hozzá RC szűrőt. A frekvenciában még az adatlap is segít táblázatos formában.
Van egy úgynevezett - FilterLab - szűrőméretező program, amit többek között a PWM segédként ajánl a gyártó(Az irományokat is olvasd el hozzá!). Igaz ezek aktív szűrők, ami ajánlott is, mert a sima RC kevés lesz sok esetben a megfelelő szűréshez. Megjegyzem az első rendű, az egy sima RC szűrő OPA-val megtámogatva...
Nem jó, a számlálók nemösszeadódnak, hanem összeszorzódnak! Persze nem ilyen egyszerűen...
Papíron, ceruzával kövesd a programot, akkor mindenre fény derül! |
Bejelentkezés
Hirdetés |