Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
pic12f683-as mcu-t próbálok minimális áramfelvételre kényszeríteni. de nem tudok 5mA alá menni...
Lekapcsoltam CCP modult a timereket, I/O portokat bemenetre állítom belső felhúzókkal, órajelet 31khz -re teszem végül SLEEP. És így is 5mA... Ez egy led driver amiben van közel 100µF elkó. Ezeknek a szivárgásának a táplálása nem vehet fel néhány mA-t?
Szia!
Miről táplálod? Véletlenül nem egy 7805-ről? Ha az, akkor a saját fogyasztását is belemérted?
Szia!
Az ötlet használható, de igen nagy körültekintést igényel. Uganis, ha a föld ág megszakad, a kimeneten megjelenik a teljes bemenő feszültség. Valami védelem kell, különben tönkre mehet az az áramkör, amit táplál... Az ötletet különben a 13.2V előállításánál felhasználták az áramkörben...
Dinokal ellenállás osztást ajánl. Az említett áramkörben diódák vannak a 13,2V-nál, amik ott jól is működnek.
Az ellenállás osztóval nekem vannak aggályaim. Biztosan be lehet állítani valamilyen feszültséget, de nem vagyok biztos benne, hogy az a teljes terhelési tartományban stabil és szűrt marad.
Szia!
Egyes adatlapok ajánlják az ellenállásos megoldást is, ekkor a kimeneti szűrőkondenzátornak az ic 2-3 pontjai között kell lennie. Egy másodikat nem árt a kimenet és a föld közé betenni. Az ellenállásos - diódás megoldásnál tényleg nagyon oda kell figyelni a kötések jóságára. Kipróbáltam, mindkettő működik, de nagyon nagy leosztást nem szabad használni, mert a stabilitási tulajdonságok rovására megy (30V -ot inkább 7824-gyel csináljunk, mint 7805-tel).
Szia! Ha már ennyire beoffoltunk, lezárásként egy képet csatolok, amiből jó látszik, hogy az ilyen típusú regulátorok GND-jét(talp pontját) ha elemeljük a testtől, akkor az elemelő tag jósága fogja meghatározni a rá eső feszültség stabilitását. Ha ez pl, dióda, vagy Zener, akkor a hő és zajegyüthatójával kell számolni. Ha ez ellenállás, akkor a GND felé futó áram fogja elhangolni a beállított értéket az ellenálláson eső feszültségtől függően, ha ez az áram terhelésfüggő. Ha jól nézem az.
Hali
Nem tudom hogyan csinalod, nekem a PIC, es egy Hall-switch kozosen 7-8 uA-t zabalt ket ceruzaelemrol. A Hall ebresztette fel. Udv Vili
Ezt a nagyságrendet én is meg tudom erősíteni, én a PIC-es LCD-s órámnál a 16F946-on LCD üvegtől függően(!) 5-6uA illetve 8-10uA átlagfogyasztást mértem 3db AA elemről. A PIC általában alszik, másodpercenként 16x kel fel billentyűzetet ellenőrizni, valamint az időfunkciókat végrehajtani, viszont egy 3.5 digites LCD üveg is működik róla, ami természetesen alvás közben is megkapja a meghajtásához szükséges váltakozó feszültségeket.
Nekem autó belső lámpa késleltetőben 200uA méréshatárba állítva a műszert nem tudott áramot kimutatni, amikor SLEEP-be küldtem. De menet közben 4MHz-ről is 1mA alatt evett, egy darabig agyaltam is rajta, hogy leveszem 1MHz-re és nemis kell SLEEP, de utána bántotta volna a mérnöki szépérzetemet.
Valamit nagyon elront, de én is a feszültségszabályzóra tippelek, tipikus az 5mA egy 7805-től.
Üdvözletem!
Érdeklődnék, hogy PIC16F59-es mikónál a P16F5X.INC fájlból véletlen hagyták ki a TRIS regiszterek definícióit, vagy más utasítás van nála ki és bemenetek definiálására? MPASM alatt programoznám. Köszönöm.
Más utasítás van. Adatlapot nézd meg a pontos módszerhez. Valami ilyesmi:
Nem véletlenül hagyták ki, hanem azért, mert ezeknél a múlt évezredből visszamaradt vezérlőknél a TRIS regiszterek nem címezhetők és nem olvashatók, vagy bitmanipulálhatók, csupán írhatók (write only).
A MOVWF f utasítás mintájára működik a TRIS f utasítás is, csak amíg a
utasítás a W munkaregiszter tartalmát a B port kimeneti adatregiszterébe írja, addig a
utasítás a B porthoz tartozó TRISB regiszterbe írja a W regiszter tartalmát.
Valami ilyesmit mond az adatlap is, csak rossz az angolom.
Viszont úgy nézem használhatatlan ezekhez az új MPLAB, mert már ezekre a sorokra: start CLRW MOVLW b'00000000' MOVWF PORTA is ezt hozza le: A language-plugin exception occurred and was logged. Sajnos a mostani célra ez a PIC volna a legmegfelelőbb az ára és a műveletek miatt is. Gyakorlatilag csak 24 reed-relét kell beolvasnom és azonos biteken kijelezni led-ekre.
Így sem megy? Nálam MPLAB 8.15 van, azzal simán fordul.
A CLRW utasítás egyébként itt fölösleges, ha utána MOVLW-vel felülírod a munkaregiszter tartalmát! Mellesleg a Microchip archívumból a régebbi MPLAB verziókat is letöltheted, de szerint az új változattal is fordulnia kell.
Kicsit OFF, de itt biztos sokan olvassák:
Találkoztatok már 2x16-os LCD-nél olyan hibával, hogy bármit irat az ember ki, a két sor legelső (bal szélső) karaktereinek első oszlopa (tehát a legeslegelső oszlopok) nem világítanak? Itt egy videó amin az inicializáláskor látszik, hogy az A-betűk bal széle lemaradt: (A videón valamiért teljesen kéknek látszik, de a valóságban fekete alapon fehér karakteres az LCD.) Bővebben: Youtube
Üdv!
Itt egy hasonló program erre a PIC-re, 8.56-os MPLABbal simán lehet fordítani és debuggolni.
Sziasztok! Szeretném megkérdezni, hogy szerintetek az RS 232 portban levő RTS lábon milyen jel van??
Ezt szeretném használni egy RS 485 átalakítóban adás-vétel átkapcsolásra. Egy szintén hasonló kérdés: egy PIC 16F690 hardveres UART-ját szeretném RS 485 re átalakítani viszont nem igazán értem ezt az átkapcsolási technikát, Ti hogyan oldanátok meg??? Előre is köszönöm a válaszokat!
Köszönöm szépen a segítségeket!
Na jó, lehet, hogy ez a kétórányi alvás jót tett. A nyelvi eszköztárak beállításainál volt valami. Szerintem így már futtatható kódot generál: ---------------------------------------------------------------------- Release build of project `C:\Documents and Settings\mammut\Dokumentumok\MPLAB IDE\LocoSense\LocoSense1.0.mcp' started. Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37 Fri Sep 03 00:14:49 2010 ---------------------------------------------------------------------- Clean: Deleting intermediary and output files. Clean: Deleted file "C:\Documents and Settings\mammut\Dokumentumok\MPLAB IDE\LocoSense\fw1.o". Clean: Deleted file "C:\Documents and Settings\mammut\Dokumentumok\MPLAB IDE\LocoSense\fw1.err". Clean: Deleted file "C:\Documents and Settings\mammut\Dokumentumok\MPLAB IDE\LocoSense\fw1.lst". Clean: Deleted file "C:\Documents and Settings\mammut\Dokumentumok\MPLAB IDE\LocoSense\LocoSense1.0.cof". Clean: Deleted file "C:\Documents and Settings\mammut\Dokumentumok\MPLAB IDE\LocoSense\LocoSense1.0.hex". Clean: Done. Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F59 "fw1.asm" /l"fw1.lst" /e"fw1.err" /o"fw1.o" Message[310] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F5X.INC 233 : Superseding current maximum RAM and RAM map. Warning[207] C:\DOCUMENTS AND SETTINGS\MAMMUT\DOKUMENTUMOK\MPLAB IDE\LOCOSENSE\FW1.ASM 11 : Found label after column 1. (start) Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" /p16F59 "fw1.o" /z__MPLAB_BUILD=1 /o"LocoSense1.0.cof" /M"LocoSense1.0.map" /W MPLINK 4.37, Linker Copyright (c) 1998-2010 Microchip Technology Inc. Errors : 0 MP2HEX 4.37, COFF to HEX File Converter Copyright (c) 1998-2010 Microchip Technology Inc. Errors : 0 Loaded C:\Documents and Settings\mammut\Dokumentumok\MPLAB IDE\LocoSense\LocoSense1.0.cof. ---------------------------------------------------------------------- Release build of project `C:\Documents and Settings\mammut\Dokumentumok\MPLAB IDE\LocoSense\LocoSense1.0.mcp' succeeded. Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37 Fri Sep 03 00:14:50 2010 ---------------------------------------------------------------------- BUILD SUCCEEDED
Volt valami hasonló hibajelenség egy másik topicban (ott talán az első két karakterpozíció volt halvány). Én azt gondolom, hogy ezekkel a modulokkal ilyet nem lehet csinálni, akármit művelsz velük interface (felhasználói) oldalról. A hiba biztosan magában a modulban van: például az LCD meghajtó chip valamelyik lába elszállt vagy csak nincs rendesen beforrasztva, vagy az LCD üveghez vezető fólia szakadt meg, esetleg a paneltól az üveghez menő zebragumi (vagy minek is szokták mondani azt a vezető gumicsíkot). Szerintem ha van rá mód (megvan a számla, szerinted megéri), akkor a vásárlás helyén kellene reklamálni, kicseréltetni a modult.
Köszi az infót! Az a baj hogy ebay-ről rendeltem, de megnézem hátha tényleg valami kontakthiba van...
Idézet: „RS 232 portban levő RTS lábon milyen jel van” -25 és +25 között lehetséges a feszültség jelszinttől függően. Itt a - jelenti a H szintet. (Már amennyiben a PC portját kérdezted!) Idézet: „nem igazán értem ezt az átkapcsolási technikát” Amikor adni akarsz, adásra kapcsolod egy lábbal, amikor venni, akkor ugynazzal a lábbal vételre. Egyszerre csak az egyik megy, ha csak nem Full Duplex RS422-t építesz és akkor nem kell kapcsolgatni, viszont akkor a vezetékből 4 ér kell. (Megjegyzem ezek nem PIC kérdések!)
Sziasztok!
Nehézségem támadt egy grafikus LCD-vel. Mikrobasicben nagyon jó libraryk vannak gyárilag,amivel a grafikus LCD-re lehet rajzolni, írni, BMP filet kitenni , stb... Minden fajta grafikát meg is jelenít csak éppen az a baj, hogy ha grafikára teszek grafikát, akkor 8 sort teljesen kitöröl az előző rajzból. egy ideig gondolkodtam miért van ez, aztán rájöttem, hogy GLCD esetén a függvények a read-modify-write megoldást használják, azaz, ahova egy pl. vonalat ki szeretne tenni, akkor byteonként beolvassa a grafikus területet, hogy mi van most rajta, majd kívánság szerint OR-al vagy XOR-al 'összefésüli a beolvasott byteot, majd újra ugyanarra a helyre ki is teszi. Emiatt elkezdtem olyan programocskákat készíteni MikroBasicben, hogy lemásolok egy területet egy másik területre a GLCD_read_data, GLCD_write_data függvényekkel, és természetesen a Glcd_set_page(), és Glcd_set_x() függvényekkel beállítottam az olvasandó,és írandó területet, de végül is arra a következtetésre jutottam, hogy a PIC nem tud olvasni a GLCD-ből... Valaki járt már így? van valami megoldása erre a problémára? gondolom a gyári függvények megfelelően működnek, ami biztos, hogy a R/W láb pedig be van kötve, és jól van konfigurálva a lábkiosztás... Köszi előre is! Idézet: „GLCD esetén a függvények a read-modify-write megoldást használják, azaz, ahova egy pl. vonalat ki szeretne tenni, akkor byteonként beolvassa a grafikus területet, hogy mi van most rajta, majd kívánság szerint OR-al vagy XOR-al 'összefésüli a beolvasott byteot, majd újra ugyanarra a helyre ki is teszi.” Ezt általában grafikus lcd-k alapból tudják, van egy regiszter, ahol be lehet állítani, hogy milyen műveletet végezzen az új adattal, és a meglévő képpontokkal. A problémádra a legegyszerűbb megoldás szerintem az lenne, ha a rajzolandó területet törölnéd, pl egy kitöltött téglalapot rajzolnál (nemtudom microbasic tud-e ilyet), majd átkapcsolnád a kijelzőt VAGY műveletre, hogy beíráskor össze vagyolja a pixeleket. Ezután beírod az LCD-be a képet.
Pár kérdésem lenne:
Most PIC18F25K20-al fogok építkezni mert ez a legolcsóbb 18F-es mikrovezérlő amiből a Chipcadnél van bőven raktáron. (Nem akarok úgy járni mint most hogy rendelnek tőlem egy csomó mindent amihez én meg nem kapok PIC-et a boltban és a külön megrendelt PIC-jeim is az ígért másfél-két hét helyett csak három hét múlva jönnek meg...) Ennek viszont 3,3V-ról kellene járnia. Jól látom hogy ilyen stabkocka nem létezik? Illetve: Ugye jól olvasom ki az LCD modul adatlapjából, hogy a 3,3V-os PIC is meg fogja tudni hajtani? Más téma: Az ECCP a CCP modulnál mivel tud többet? Olvasgattam róla... az ECCP nem csak egy, hanem kettő vagy akár négy PWM kimenetet is tud kezelni, amik viszont nem teljesen függetlenek egymástól. Ez konkrétan miben nyilvánul meg? És még egy: Az ICD2 miben jobb mint a PICKit2? Mivel a nevében is benne van, talán vele jobban lehet debuggolni? Potyo ezt írta: Idézet: „Az ICD2 segítségével a céláramkörben futó programot tudjuk nyomonkövetni. Lehetséges a program lépésről-lépésre végrehajtása, adott pontig (ún. Breakpoint) történő végrehajtása, bele tudunk nézni a memóriákba, és azokat módosítani is tudjuk.” De ezt a PICKit2 is tudja. Van mégis valami különbség?
Stabkocka létezik 3,3V-os is, pl. LD1117S33 a RET-nél. De ha szétnézel, máshol is van.
LCD modul vezérelhető 3,3V-os jelekkel, de táp lehet, hogy 5V-os kell neki. Ilyet már csináltam, működik. Esetleg arra kell figyelni, hogy ha az RW lábat is vezérled, akkor az adatlábak 5V toleráns lábakra legyenek a PIC-re kötve, vagy pedig ellenállásosztóval kapcsolódjanak össze. De ha az RW fixen GND-n van, akkor nem kell semmi, lehet direktben összekötni. ECCP modulnál épp ez a lényeg, hogy nem függetlenek, hanem pl. teljes hidas motoros hajtáshoz hardverből megvan a négy kimenet, holtidővel, esetleg állítható, hogy a kimenő jel a periódus elején, közepén vagy végén legyen, lehet olyan bemenet, amire érkező hibajel azonnal tiltja hardverből az összes PWM kimenetet, stb. Pontosan nem emlékszem, régebben egyszer nézegettem valamiért ezeket. Az ICD2-ről azt még akkor írtam, amikor még a Pickit2 nemis létezett azthiszem. Természetesen az ICD2-re ez azóta is igaz, viszont a Pickit2 rengeteget fejlődött. Ma már én sem építenék ICD2-t. Na meg az ICD2 gyári támogatása úgy emlékszem, hogy szeptemberrel meg is szűnt, ami azt jelenti, hogy az ezután megjelenő chipeket már nem fogja tudni kezelni.
Létezik stabilizátor 3,3 V- ra, bár ez nem a 78XX típusok valamelyike. A Microchip is gyárt LDO- kat, pl. MCP1700- as sorozat, elérhető furat- és felületszerelt változatban is (TO-92, SOT-23). Beszerzése például a Chipcad- nél lehetséges.
Azt hiszem az ICD2 annyival tud többet debug szempontjából, hogy egyszerre nem csak egy töréspontot lehet elhelyezni a forrásban, de erre nem esküdnék meg.
Köszönöm a válaszokat!
Az ECCP modulnál tehát minden PWM kimenetnél akkor a kitöltési tényező ugyan az ha jól értem. Kár.
Nézd meg az adatlapban, ha több kitöltést beállító regiszter van, akkor csak a frekijük egyforma, a kitöltés lehet különböző. Ez persze a módtól is függhet. Hidas motoros módban nyílván egyforma a kitöltés is.
Köszi a tippet,
Ez az LCD a lomexnél kapható 128x64 displaytech LCD KS108-as vezérlővel, az utasítás listájában ilyen utasítás nem lelhető fel. Esetleg valakinek valamilyen más tippje van? (mellékeltem a KS108 utasításlistáját) Köszi!
Én nem látok olyan utasítást, ami az említett hibát okozhatná. A gond a kódban lehet, vagy esetleg a kijelzőben. A kódra inkább tippelek. Mivel a Basic szépen elfed mindent, így elég nehéz lesz kideríteni az okot. A lefordítótt kódból kéne kimatekolni, hogy mit nem úgy ad át, ahogy kéne. A kijelző egyszerű adatforgalma biztosan nem tenné más címre az adatot, ha azok megfelelőre vannak irányítva, azt csak a program kutyulhatja össze.
|
Bejelentkezés
Hirdetés |