Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia!
A PICKit2 AUX bemenetével talán meg lehetne mérni, de tartok tőle, hogy nagyon megterheli az órajel kimenetet. Jó lenne egy CMOS kapuval leválasztani.
Ebben az áramkörömben a 16F946 mellett van egy órakvarc (a képeken még nincs beültetve), ami mellett hagytam helyet a soros ellenállásnak (Rs). Az elkészült órába 4.7k-t tettem ide (ezt most meg is néztem itt az asztalomon járó példányon), és emlékeim szerint 22pF-es kerámiákat a kvarc két lábára (az SMD kondikra sajnos nincs semmi írva...), ezekkel az értékekkel - ha jól számolok - már két és fél éve megy az óra stabilan, viszonylag pontosan (évi pár percet siet).
Ha már szóba került ez az óra: időközben a mintadarabon kívül elkészült még három darab, mindegyik elsőre indult a fenti értékekkel a kvarckörben. Az "ős" jelenleg is az asztalomon megy egy 3.5-es floppydobozba támasztva, 3db AA elemről, folyamatosan, elemcsere nélkül. A múlt télen talán még téli-nyári időt sem állítottam rajta, nem tudom, utoljára mikor lett pontosra állítva, de az biztos, hogy fél éven belül nem nyúltam hozzá (lehet, közelebb áll az egy évhez inkább). A számítógéphet szoktam állítani, elvileg az meg internethez szinkronizál. Most a számítógéphez képest nem egészen 3.5 percet siet, és 9. hó 4-ét mutat A dátum azért csúszik el, mert ez még a 0.9-es, asm-ben írt firmware benne, ami minden hónapot 30 naposnak vesz. Ebből ki lehetne számolni, hogy kb. hány hónappal ezelőtt állítottam be pontosan mindent rajta. Az idők folyamán a firmware-t átírtam C-re, tettem bele sok okosságot. Ezen a firmware-en tanulmányoztam és valósítottam meg az állapotgépes menürendszert. Erre azért volt szükség, mert a három gomb egy igen bonyolult gráfon lépked a különböző üzemmódok miatt, ezeket a gombkezelőben if-ekkel vagy switch-ekkel megvalósítani abszolút átláthatatlan lenne. Aztán belekerült egy DS1821-et lekérdező rutinka is, ami fél percenként kiolvassa a hőszenzort, a kiolvasások között meg elveszi a tápfeszét is. Tud maximumot és minimumot tárolni, ezeket meg lehet jeleníteni, ki lehet törölni. A fogyasztására jellemző, hogy az asztalomon lévő ős kapott 3db AA elemet, amiről 2.5 éve megy folyamatosan. A másik példányt hőmérésre használom úgy, hogy az érzékelő ki van dobva az erkélyen túlra egy kb. 8m-es mikrofonkábel végén. Ez 2008 karácsonyi szünetében készült el, akkor a használt elemek közül válogattam ki 3 jobb állapotban lévőt és azokat kapta meg. Az elemek most adták fel, kb. 1 hónapja, de nem is úgy, hogy padlóra merültek, hanem az egyik kiengedett valami lét magából Ennek köszönhetően az elemtartót ki is dobtam, most friss elemek vannak benne, új elemtartóban. A mért fogyasztása az órának 5 és 10 uA között van a kijelző üveg típusától és az épp kijelzett szegmensektől függően, gombnyomás alatt a belső felhúzók miatt 80uA-re nő az áramfelvétel. A DS1821 lekérdezése alatt, 30mp-enként 1mp hosszan kb. 1mA-re ugrik meg az áramfelvétel, ezt ha átlagoljuk, akkor nagyjából 30uA-es többletet jelent az óra alapfogyasztásához. Ha egy elemet 1000mAh-snak feltételezek (egy alkáli szerintem sokkal több), akkor a 30uA-es fogyasztás 3.8 évet jelent, a hőmérő nélküli, maximálisan 10uA-es pedig 11.4 évet
Titkosnak titkos ugyan, de nem az a baj, hanem hogy a 7184. sorban van az END direktíva.
Csak ezért az egy változóért anyázik a kb. 150 elnevezett közül. Most átnevezem, kipróbálom így. Ha nem megy, töltök fel képet. Köszi hogy foglalkozol a kérdésemmel.
Átnevezve sem volt jó. Megcseréltem egy másik változóval, úgy lefordította. Visszacseréltem, úgy megint nem. Egy XP újraindítás után már úgy is lefordul, viszont debugger indításakor a sorok számozása el van csúszva 3-al.
Nézd meg hexában a forrásfilet (pl. Totalcommander viewerében), lehet, hogy vannak benne nem odaillő byteok (pl. unicode-os header vagy ilyesmi az eleján), lehet, hogy ilyesmik hülyítik meg. Esetleg unixos/DOS-os sorvégkülönbségek (LF vs CR+LF).
Kipróbáltam.
Sorba tettem a 32K kvarccal egy 120 Ohm -os ellenállást, a két lába közé pedig egy 4M7 Ohm -osat. Szemre semmi különbség.
Szia!
A kvarcot ráforrasztottam egy tüskére (tördelhető), most már elég vastag a lába. Kicsit megbuheráltam az eredeti programot és a megszakításba beraktam egy parancsot, ami mindig negálja az egyik portlábat. Ezzel a portlábbal próbálgattam a PK2 Logic tool-t. Eredményt csatoltam. Ha jól tapasztaltam ki a dolgokat akkor a PK2 a lefutó élt figyelte. Innen késleltetett 3 ablaknyit, vagyis 600ms-t, és onnan kezdte venni a mintát. Amint látszik 755-761ms alatt váltott át a portláb. Ami annyit tesz hogy a 16bites TIMER1 ennyi idő alatt csordult túl és okozott magszakítást. Az X és Y kurzor között ingadozott az érték. A kvarcon még 27pF-os kondik vannak, holnap megyek venni nagyobbakat. Mert a korábban belinkelt Microchip AN849-es AppNote-ban, ha jól vettem ki, akkor 100pF-al volt stabil. A kvarc lábával is kipróbáltam, de semmit nem reagált a PK2. Ezt a CMOS kapuval való leválasztást hogy gondoltad? PL egy 4081-es ÉS kaput rakjak be közéjük? Az ÉS kapu kimenete megy a PK2-be, az egyik bemenet tápra, a másik bemenet meg a karc lábára? Így? Vagy hogy? Idézet: Úgy tudom, a PICkit2 bementként használható lábai belül 4,7 kOhm-mal le vannak húzva a földre, ezért kell a leválasztás egy CMOS kapuval. „A kvarc lábával is kipróbáltam, de semmit nem reagált a PK2.” Az sem mindegy egyébként, hogy az oszcillátor kimeneti vagy bemeneti lábát nézed. A kimenet nyilván jobban viseli a terhelést.
Az AUX-on (CH3) nincs lehúzó ellenállás, és azzal próbálkoztam.
Honnan tudom hogy a kristálynak melyik a kimeneti lába? Vagy azt a PIC lábkiosztásánál kell figyelni? A T1OSO, 15. láb?
A PIC oldalán kell nézni, és a T1OSO a kimenet, az utolsó O betű az Output.
Idézet: Ha jól olvasom, az AN489 50 kOhm-ig terjedő Rs értéket ajánl, s azt mondja, hogy inkább Rs az ellenállást növeld, ne a kondenzátort (ne térjen el nagyon a 22 - 33 pF-től). „Sorba tettem a 32K kvarccal egy 120 Ω -os ellenállást”
Nem látok benn semmi szemetet..
Szia!
Az asm állományról volt szó... Ha feltöltötted volna, már rég meglenne a hiba...
Szilva nem a HEX file-ra volt kivancsi, hanem a FORRAS FILE -ra, meghozza hexaban megnezve... Azaz hogy lassuk milyen sorvegjeleket hasznaltal, van-e veletlenul valami elvetemul Unicode vagy UTF8 kodolas ami miatt megbolondulhat...
Ha titkos a forras, akkor szedd ki azokat a reszeket amik titkosak es csinalj belole egy teszt asm-et ami a hibat reprodukalja es azt tedd ide fel... Enelkul csak magadra vagy utalva!
Erről jut eszembe: Jártam már úgy, hogy egy header file legvégére nem tettem sortörést. Ez teljesen megborította az MPLAB-et.
Sziasztok:
Összekopiztam egy olyat, ami nálam nem fordul le:
Ezzel az üzenettel: Idézet: „---------------------------------------------------------------------- Release build of project `C:\prog\Microchip\Projects\ASMoto_tars.mcp' started. Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37 Tue Sep 14 13:47:11 2010 ---------------------------------------------------------------------- Clean: Deleting intermediary and output files. Clean: Done. Executing: "c:\Prog\Microchip\MPASM Suite\MPASMWIN.exe" /q /p18F4520 "Test.asm" /l"Test.lst" /e"Test.err" Warning[205] C:\PROG\MICROCHIP\PROJECTS\TEST.ASM 2 : Found directive in column 1. (LIST) Warning[215] C:\PROG\MICROCHIP\PROJECTS\TEST.ASM 2 : Processor superseded by command line. Verify processor symbol. Error[121] C:\PROG\MICROCHIP\PROJECTS\TEST.ASM 16 : Illegal label (T_PWM_2_L T_PWM_2_H) Error[113] C:\PROG\MICROCHIP\PROJECTS\TEST.ASM 30 : Symbol not previously defined (T_PWM_2_L) Error[113] C:\PROG\MICROCHIP\PROJECTS\TEST.ASM 32 : Symbol not previously defined (T_PWM_2_H) Warning[205] C:\PROG\MICROCHIP\PROJECTS\TEST.ASM 38 : Found directive in column 1. (end) Halting build on first failure as requested. ---------------------------------------------------------------------- Release build of project `C:\prog\Microchip\Projects\ASMoto_tars.mcp' failed. Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37 Tue Sep 14 13:47:12 2010 ---------------------------------------------------------------------- BUILD FAILED ”
Szia!
Ha kérhetnénk csatold, a fórum motorja megváltoztatja az állományt...
Szia!
Már meg is van a bűnös: A T_PWM_2_L szimbólum után közvetlenül ott vigyorog egy CR karakter... Töröld ki az összes karaktert a T_PWM_2_L és a T_PWM_2_H cimke közül, és máris fordul...
Köszi!
Írtátok, de nem világos hogy hogyan tudom ezt megnézni pl. a T.Commanderben? És a 7.4 simán lefordította. Közben megnéztem több régi programomat, 5-ből 3-at nem fordít le a 8.56, ilyen hibák miatt.
Internal viewer, options / hex ...
Sziasztok !
Biztos van egyszerű válasz a problémámra Lokális változót kéne látnom Watc ablakban ? Mert hogy nem jön elő static unsigned char mennyi=0; Hitech 9.70 es fordítóval , Mplab 8.50 el. Köszönöm !
Lokális változó csak a deklaráló függvényen belül látható, tehát ha a programvégrehajtás eléri a függvényt, melyben deklaráltad, akkor válik láthatóvá (ekkor jön létre) és addig látható, amíg a függvényen belül marad a program. Pontosan ezért lokális a változó, mert csak egy adott függvényen belül használjuk, nem kell neki állandó helyet foglalni.
Köszi, végre megértettem.
30F6012A -t, illetve a ds-sorozatot nem fogom tudni MPasm-ben programozni? Azt írja hogy "Tool doesn't support selected device."
Szia!
Szerintem lehet... A programodat írhatod, fordíthatod az MpLab-ban, legfeljebb a programozást kell a PICKit2 kezelő programjával csinálni.
Szia!
Ma vettem egy HD14081-es IC-t (4db 2bemenetű ÉS kapu). Az egyik ÉS kapu egyik bemenetét tápra kötöttem a másik ment a T1OSO lábára a PIC-nek. A kapu kimenetét pedig a PK2 AUX kimenetére kötöttem (Logic tool CH3). Semmit nem reagált a PK2. Se le- se felfutó élre. Szóval nem tudta megmérni a PK2 a 32K kvarcot. Viszont a 4MHz-es kvarcra reagált. Nyilván hülyeséget mért, de mért valamit. Vettem 100pF-os kondit is, azzal is kipróbáltam a kvarcot, de azzal meg elsőre pár másodpercig nem indult be aztán beindult, de nem lassult annyit hogy 2 másodpercenként legyen megszakítás.
Hülye kérdés: Adtál tápot az IC-nek is?
Persze.
Akkor a 4MHz-es kvarcra se reagált volna. Meg manuálisan kipróbáltam, voltmérővel mértem a kimenetet, és a szabadon maradt bementet hol földre, hol tápra tettem, és megfelelően működött.
Olyan is eszembe jutott az előbb hogy a config vajon jó?
Csatoltam az adatlapból a T1CON regiszter leírását. T1CON=0b00001111; ezzel a beállítással dolgozik most. A 0. és 1. bit világos. A 2. bitet nem értem (lefordítani le tudom). Mihez szinkronizálna? 3. bit A külső oszcillátort engedi vagy nem engedi bejutni? Jól értelmezem a block diagram alapján? 4.-5. bit a bemenő órajelet osztja ezt vágom. 6. bit nem vágom 7. bit meg azt állítja hogy egy 16bites regiszterként vagy 2db 8bitesként kezelje a TIMER1et. Valaki elmondaná ami nem világos? Meg hogy akkor jól tippeltem azoknál a beállításnál amik nem voltak világosak?
Szia!
- Készíts egy tesztprogramot, ami a RC0 és RC1 lábakat kimenetnek kezeli és eltérő hullámformát tesz ki rájuk. A programból vedd ki a T1 oszcilátorának engedélyezését és a kapcsolásból a 32.768kHz-s kvarcot. Nézd meg működnek-e a port kivezetések.... - Az eredeti programban nézd meg, hogy a RC0 és RC1 nincs véletlenül kimenetnek beállítva... |
Bejelentkezés
Hirdetés |