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 |




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.
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
de nem az a baj, hanem hogy a 7184. sorban van az END direktíva.





