Fórum témák
» Több friss téma |
Halli
PIC16f628 nál a RB3 lábon ki kell kapcsolni valamit hogy müködjön a nyomogomb?? Mert valamiért nem müködik rendesen nekem .
Sziasztok!
PIC32MZ2048EFH100 ADC-vel küzdök. Az adatlap teljes katyvasz, nem állnak össze a dolgok... Sima ADC mérést szeretnék mindenféle trigger nélkül, A GND és a táp a referencia, az AN15-öt szeretném elsőkörben használni. Abban sem vagyok biztos, de talán ha jól sejtem az ADC7-et kell erre használnom. Hogyan kell beállítani? 1. a kalibrációs értékeket betöltöm 2. adccon1-3 beállítom 3. ANSEL-ben analóg bemenet, TRIS-ben szintén bemenet az AN15 Hogyan tovább?
Elkeztem használni egy DS18b20 höméröt MikroC be programozom mit rontok el???
(szobaba -5 fokot mér ![]()
Ötletem sincs . Segítséget elöre köszönöm.
Felhúzó ellenállás meg van(4,7k) bemenetre állítva a láb. 4mhz kristály ról müköttetem.
Egy ötlet:
Sziasztok
![]() Müködik az óráim funciója stb (talán még egy picit csiszolni kéne de sebaj) Problémám az hogy 4 óra után 1 percet késik. Stabic segítségével tartom 5 volton a tépfeszt. Szűröm Csak a bemenőjelet 220ufal és ennyi, 4mhz kristálynál pedig 22pf van. MikroCben írt órámat jegyzetömbe bele másoltam és néhol komenteztem.(Csatolom.) Mi lehet a probléma ??? Szoftveresen valamit elrontottam vagy hadweresen nem szűrök rendesen??? Segítségeteket elöre köszönöm
A c-hez nem tudok hozzászólni, de egyszer ugyan így jártam. A 60sec 1min váltásakor rossz művelet/érték viszonyt állítottam be, és így folyamatosan sietett az óra. Talán még nagyobb mértékben is mint neked.
Miért nem hazsnálsz valamilyen RTC IC-t? Anélkül szinte csak próbálgatással lehet belőni a pontos frekvenciát.
Sajnos most nincs időm végignézni a kódodat.
Tippet azért adnék. Nem tudom figyelembe vetted -e az időzítéselen felül a kódod futásához felhasznált időt. Ha nem, akkor ezt is számítsd bele. Ezen kívül a külső quartz sem teljesen pontos. Mint mindennek az életben ennek is van toleranciája.(+/-...). Azt mavaslom, hogy építs be a kódodba valamilyen korrekciós lehetőséget. Én akár két lépcsőset is csnálnék. Az egyik egy rövidtávú , mondjuk 24 órás teszt alapján korrigálná az eltérést, a másik egy finomabb mondjuk 1-2 hetes teszt után.
Idézet: „Azt mavaslom, hogy építs be a kódodba valamilyen korrekciós lehetőséget. Én akár két lépcsőset is csnálnék. Az egyik egy rövidtávú , mondjuk 24 órás teszt alapján korrigálná az eltérést, a másik egy finomabb mondjuk 1-2 hetes teszt után.” Mire gondolsz pontosan??
A PR2-re a 249 helyett nem 250 kellene?
Járatod egy hónapig, majd megméred az eltérést. Ezt visszaosztod egy IT-nyi értékre, majd ezzel az értékkel korrigálod a időt. A hozzászólás módosítva: Márc 12, 2017
Valami olyasmire gondoltam amit ktamas66 is írt. Egy durvább pontosításnál mondjuk óránként hozzáadsz vagy elveszel a számlát időböl egy picit. Ez hosszabb távon nyilván még mindig em elég pontos, ezért a finomabb korrekció miatt 1-2 hetente ugyan ilyen pontosítást csinálsz.
A programkódomat megnézted amugy?
Ha igen nem lehetséges hogy a kiiratásom kési?? Interup csak a számolást végzi a while minden mástnyomogomb figyelést stb
A kijelzés nem késhet 1 percet.
![]() Abból lehet még hiba, ha az IT hosszabb ideig tartana mint 10ms (a legrosszabb esetet kell mérni), mert akkor kihagyna egyet.
Bele olvasgattam a kódodba. Annyi időm nem volt, hogy ki elemezzem az egészet, de néhány fontos dologra felhívnám a figyelmed. MikroC ben vagy MikroPascalban bármelyik Delay fügvény kerülendő, ha ilyen pontos időzítésre van szükséged. A lényeg abban van, amit a delay függvény leírásában legelöl írnak is, hogy ezt a függvényt ahányszor beszúrod annyiszor bekerül a kódodba. Ez még nem lenne baj mert csak annyi a hatása, hogy hosszabb lesz a lefprdított kódod. (Azért tt megjegyzem erre jó megoldás amit te is alkalmaztál, ha saját függvénybe rakod.) Ami viszont nem jó az a kilyelzésed függvényébe beillesztett Delay, valamint a nyomógombos fügvényedben lévő. Ez mind ennyi időre megakassza a PIC -et. Ha ezek összeadódnak ez jelentkezik késéssel.
Javaslom, hogy ezeket az időzítéseket egy folyamatosan futó számláló okozta megszakítással old meg.Akkor az idő számlálása folyamatos lesz. A hozzászólás módosítva: Márc 12, 2017
Idézet: „Javaslom, hogy ezeket az időzítéseket egy folyamatosan futó számláló okozta megszakítással old meg.Akkor az idő számlálása folyamatos lesz.” Vagy is ha jól gondolom megy a while ciklus egy változót növelem ha eléri xy értéket akkor csinálvalamit. Delay_us(1); használhatok hogy könnyeben tudjak számolna hát ha gyorsabban végig megy mint 1 us??? Remélem érthetően írtam. Annyi ha van időd átfutodd még a kódóm hátha vn még benn hiba. legtöbb idöt a hőmérö vesziel..... 750 ms irtak hogy annyit várjak. (bs18b20)
Szia!
A program alapvetően jónak tűnik, az idő értékek másodpercenként frissülnek, a TMR2 megszakításában.A kijelzés ettől kezdve már mindegy mennyi ideig tar a főprogramban. A PR2 nek jó a 249-es beállítás. A hozzászólás módosítva: Márc 12, 2017
Még annyit tápot szűröm 220uf annyi elég vagy stab icé után is rakjak??
Van olyan számláló amit az órajeled léptet. Nem kell hozzá semmi While ciklus. Ha a számláló túlcsordul generál egy megszakítást.
Idézet: „Van aki nem bírja a meleget... Szerintem Te is a ds18S20 adatlapját nézted és ds18B20 típust használsz. A hőmérséklet nem egyformán van kódolva!” Nem értem miért írtad.... Mert:Bővebben: Link Hibás a bitek tologatása a kódomban??? Idézet: „Van olyan számláló amit az órajeled léptet. Nem kell hozzá semmi While ciklus. Ha a számláló túlcsordul generál egy megszakítást.” Én úgy oldottam meg hogy amikor le tellik 1 másodperc akkor frissítem a ki írast (elinditom a while ciklust) elvégzi a műveleteket és vissza állitja a frssités változót. Szerintem majd nem ugyan az ![]()
így oldottam meg. Shiftelésnél Delay_us(10) kiszedjem amikor egy bitet(shift clock bitje) megváltoztatok???? vagy elhanygolható??? A hozzászólás módosítva: Márc 13, 2017
... mert én itt tévedtem el korábban, sehogy nem akart jó hőfokot mutatni. Príma kis mütyür, ha egyszer elindul. (Én asm-ben használom az adatlap, meg a korábbi hozzászólásomban jelzett minta alapján.)
Sok sikert a továbbiakban!
Jaaa értem
![]() Eddig nem szóltak hogy hibás.
Kedves Electro.on
Idézet: „Valami olyasmire gondoltam amit ktamas66 is írt. Egy durvább pontosításnál mondjuk óránként hozzáadsz vagy elveszel a számlát időböl egy picit. Ez hosszabb távon nyilván még mindig em elég pontos, ezért a finomabb korrekció miatt 1-2 hetente ugyan ilyen pontosítást csinálsz.” Hogyan lehet azt "észlelni" hogy siet vagy késik a program (MikroC)?? Lefutási idöket méregetem az interup void alat???? vagy hogy???
Így sehogy. Keresel egy pontos időt a neten, ahhoz beállítod, majd pár hét múlva megnézed az eltérést. Ebből számolsz vissza a pontos frekvenciára.
Köszönöm
![]() Annyi a kérdésem tényleg igaz az hogy a pf változtatásával lehet állítani hogy siessen e az óra vagy késsen??
Háát én ebben nem vagyok olyan biztos. Tudatosan , pontos frekvenciát így biztosan nem állítasz be.
Főként azért, mert 3kkora pontatlanságot nem az oszcillátor pontatlansága okoz, hanem a szoftvefes ciklusaid csúsztatják el a dolgot. Azért kell olyan a kódodtól függetlenül működő számlálóval , megszakításbol számoltatni az ídőt mert így amég a programod pl. a kiírással foglalatoskodik a számláló mgy tovább. A Delay fügvénynél meg amég a delay megy mással ne foglalkozik, és fordítva. Úgy kéne megírnk mintha multitask működne . |
Bejelentkezés
Hirdetés |