Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szerintem valami tap hibad lehet, mert en hasznalok mar vagy 15 eve karakteres LCD-t es meg egy sem zuhant meg. Legfeljebb forrasztasi hibasak voltak. Ott valami zarlat lehet valamelyik bemeneti lab es a kontraszt lab kozott, es a negativ fesz kinyirja a vezerlo bemenetet.
Írtad hogy a tápod 5V alatt volt. Menyivel volt 5V alatt? Mert én is sokat szívtam. Kiderült hogy nem elég a 4.8V az lcd-nek. Próbáld 7805-el. nekem csak így működöt.
Vilmosdnak: forrasztási hiba 3 ugyanolyan LCD-nél. (Eléggé kicsi a valószínűsége.) A negatív bemenet pont az ír vagy olvas kiválasztó kiv. és a GND között van. Az előbbi a GND-re megy, egy 1kohm-os ellenálláson keresztül.) Tehát ilyen hiba kilőve. A kijelző amúgy pedig működött, de mindig a második fele volt rossz. (Méricskéltem rajta egy kicsit és észrevettem, hogy nagy eltérések mutatkoznak a rajta lévő SMD ellenállások fesz.-ei között. Ez is hibát okozott, mivel elkezdtem kompenzálni az eltérést és ekkor egyre jobb lett a dolog. (De sajnos a 2. HD44100 ekkorra már halott volt.) És furcsa módon mindhárom LCD-nél az ment tönkre. A labortápom kimenetére most hogy írom ránézek szkóppal, hogy nincsenek-e rajta zavarok, amik esetleg hazavághatták szegényeket.
Mrobinak: A Hitachi LCD-m 4,5V-ról is szépen működik. (Bár a kontraszt már egy picit gyenge ennyinél.) Egyébként 2 LCD-t összevariáltam. Leszedtem a jó meghajtót és kicseréltem a másikon lévő rosszra, de az a gyanúm hogy a leszedés közbeni 300°C-os hő miatt elhalálozott. Utána ismét levettem a félig jóról. És ennek az első fele hibátlanul működik. (Vagyis van egy 2*8 karakteres LCD-m.) Meg egy darabokban, meg egy aminek az eleje jó, a végén meg csak hülyeségek vannak.
Ha javasolhatom térjünk vissza a PIC kérdésekhez! Köszi!
MPASM SET direktíva használata.
Sziasztok. Megakadtam egy direktíva használatával... Szeretném a DS1820-as hőmérőmet a programon belül beállítható portról használni, erre szeretném alkalmazni a SET direktívát. Utánanéztem több szakirodalomban, és mind azt írja, hogy a SET hasonló azt EQU direktívához, csak az EQU esetén 1x lehet beállítani a változót, a SET-tel pedig bármikor. ... dsport_ra0 dsport SET PORTA dstris SET TRISA dsbit SET .0 portx SET B'00000001' return dsport_rb4 dsport SET PORTB dstris SET TRISB dsbit SET .5 portx SET B'00100000' return ... Beírtam eljárásként ezeket a meghatározásokat (egyszer RA0, egyszer RB4 lenne a DS portja), de nem nagyon működik. Mikor végigléptettem MPSIM-mel, az RA0 esetén beállítódtak az értékek, az RB4-nél viszont nem. Tudna nekem valaki segírteni? Hogyan kell helyesen használni a SET-et? fg
Sziasztok!
Szeretném a segítségeteket kérni. Egy delay függvényt szeretnék létrehozni, de a függvény a meghíváskor egyszer sem fut le.
A függvény meghívása Delay_ms(20); A for ciklus számomra érdekes módon egyszer sem fut le. Ha a for függvényben az „n” változót egy konstans számra cserélem le pl. 10 akkor az MPLAB (v8.63, C18 v3.10) szimulátorában egy végtelen ciklusként fut tovább. A segítséget előre is nagyon köszönöm.
Szia!
A SET és az EQU direktivák a fordítónak szólnak, a bal oldalon álló szimbólum felveszi a jobb oldal értékét, de kód nem generálódik. Kiértékelés a forrás azon helyén történik, ahova be vannak írva. A fordítás során nem hajtódnak végre a call szubrutin hívások. Annyiszor másold be a forrásba őket, ahányszor változtatni kell a szimbólumok értékét...
Ennek így működnie kell! (Fosc = 48 MHz-hez való)
A program elején kell egy
sor is.
Sziasztok!
Már egy jó ideje olvasom ezt a topicot, és rengeteget tanultam itt is, meg a hobbielektronikára feltöltött cikkekből is. Most egy kicsit megpróbálok visszaadni az internetes közösségnek a felszedett ismeretanyagból. Elnézést az önreklámért. http://markogergely.hu Előképzettség hiányában én a 0-ról kezdtem. A hozzám hasonló kezdőket célzom meg, úgyhogy a stílus nem kifogástalan, és közel sem profi. Észrevételeket, kritikákat szívesen fogadok!
Köszönöm a válaszod.
Nagyon úgy néz ki hogy az MPLAB SIM tréfál meg: A küldött függvényed működik a PIC-ben rendesen, de az MPLAB SIM átugorja ugyan úgy mint a sajátomat. A delay_ms(500) meghívása a PIC-ben 500ms késleltetést okoz. Viszont az MPLAB SIM-ben a Stopwatch 6.7uS időt ír ami nem 500ms. Nem tudom hogy miért van ez. Megpróbálok egy régebbi MPLAB verziót keresni.
Nálam MPLAB 8.60 fut, ezzel szimulátorban is jól viselkedik.
Hellósztok
Tudnátok nekem ajánlani egy 40 dipes pic-et, ami nektek bevált? pickit3-om van,szóval ha új az sem gond. Tanulás szempontból kéne csak. Köszönöm
Felraktam az MPLAB v8.60 sajnos ott is ugyan az a helyzet eddig soha nem csinált ilyent az MPLAB SIM. Ha önmagában hívom meg a Delay10TCYx(10) akkor működik, de ha ezt egy for() ciklusban szeretném, akkor az MPLAB SIM simán átugorja a for() ciklus után álló utasítást, utasításokat. Ma kipróbálom egy másik gépen az MPLAB-t mert már nincs más ötletem.
Idézet: „Tudnátok nekem ajánlani egy 40 dipes pic-et, ami nektek bevált?” PIC18F4550 - hozzávaló tananyag a PICCOLO projekt PIC18F4520 - hozzávaló tananyag a PICula projekt Idézet: Én megnézném a generált assembly kódot is. Csatoltam a működő projektet meg a képernyőképet. PIC18F4550 mikrovezérlőre fordítottam, próbáld ki te is azzal! „Ma kipróbálom egy másik gépen az MPLAB-t mert már nincs más ötletem.”
Sziasztok!
MpLab 8.63 és PICKit3 (ICD3, REAL ICE) 18F46K22 család tagjai debuggolásánál programozási hibát ad a Debug Executive területre. Javítása...
Sziasztok, lenne egy (lehet, hogy buta) kérdésem. PIC 16F877A-t használok és jelenleg annyi lenne a célom, hogy egy darab LEDet tudjak másodpercenként villogtatni, D porton.
A program, amit megírtam, szerintem biztos, hogy jó. A teljes D portot 0-7-ig állítgatom, de LED csak a D7-es lábra van kötve. Szépen állítgatom tehát a kimenő jelet, alacsony-magas, és ez benne egy végtelen ciklusban. Ezen az oldalon Link találtam a PIC táplálására vonatkozó bekötést, és ez alapján kötöttem be a 20MHz-s HS kvarcot is (22pF kondikkal). Tehát a PIC két Vdd és Vss lába megkapja a tápot és a földpontot, illetve a két megfelelő lába az órajelet. Ezen kívül még egy lábat használok, azon van ugye a LED, meg persze előtte egy ellenállás. A többi láb szabadon van, de tudtommal mivel kimenetnek állítottam őket (az összes portot), így nem okozhatnak problémát. A program és a PIC mégsem úgy működik, ahogy kellene. a LED ugyan elkezd villogni, de nem végtelen ciklusban teszi ezt, hanem egyszer csak gondol egyet és megáll. Van amikor 25, de van amikor mondjuk 5 villanás után. És utána folyamatosan alacsony jelszint van a D porton is.. Nem értem mi lehet a gond. Ez lenne az első PIC próbálkozásom, amit egyébként egy PicKit2-es klónnal programoztam, és az sikeresnek is jelezte a műveletet. A programot pedig mikroC-ben írtam, és a fordítás után keletkező .hex fájlt töltöttem fel a PicKit2 égető programjával. Fogalmam sincs, hogy mi lehet a gond, így akinek bármi ötlete van, azt szívesen fogadom. Előre is köszönöm!
Szia!
MCLR lábat 10k -val a Vdd -re kell húzni. A táp és föld lábakat bekötni és közéjük 100nF kerámia kondenzátor. A 16F877 mindkét oldalán levő táplábakra vonatkozik: mindegyiket be kell kötni és mindkét oldalra tenni 100 nF-t.
Üdv, Hp41C!
Tegnap megpróbáltam alkalmazni a SET direktívákat. Az MPASM lefordította a progit, ha egy-egy portot határoztam meg SET-tel ment is (úgy-ahogy), de nem sikerül a portok változtatása egymás utáni SET progirészekkel: ; ******** dsport SET PORTA dstris SET TRISA dsbit SET .0 portx SET B'00000001' ; movlw 0x82 call ds1820 ; dsport SET PORTA dstris SET TRISA dsbit SET .1 portx SET B'00000010' ; movlw 0xC2 call ds1820 ; dsport SET PORTA dstris SET TRISA dsbit SET .2 portx SET B'00000100' ; movlw 0x92 call ds1820 ;.... Azt szeretném elérni, hogy 3 db DS1820-as hőmérőt ugyanazon rutinokkal, de másik porton (RA0-1-2) kezeljek. Elméletileg a SET direktvák után a ds1820 rutinban a dsport,dstris,dsbit és portx változókat PORTA,TRISA,.0,b'00000001' vagy PORTA,TRISA,.1,b'00000010' vagy PORTA,TRISA,.2,b'00000100' -ként kellene használnia. Mit csinálok rosszul? fg
Nem az égetőáramkörtől függ, hanem a programtól ami kezeli, ha kezeli. A WPB 1.29b kezeli elvileg. Töltsd le, nézd meg...
Valóban, most már úgy működik, ahogy kell. Köszi a segítséget.
Nem vetted figyelembe, hogy a szubrutin csak egyszer fordul le, s a szimbólumoknak az akkor érvényes értékét fogja használni. Előtte, vagy utána már hiába definiálod át a szimbólumokat.
Ha ragaszkodsz a szubrutinhoz, akkor paraméterként kell átadni azt az adatot, ami az egyes hőmérőknél eltérő.
Szia Icserny!
Ragaszkodom a rutinhoz, mert nagyon bonyolult (...). Szíveskednél bővebben kifejteni, mit értesz paraméterek átadásaként? Itt konkrétan a dsbit változik (.0,.1,.2) és a portx (b'00000001', b'000000010', b'00000100'. fg Idézet: Ugyanazt, amit minden programozással foglalkozó ember: a hívó eljárás egy előre megbeszélt helyre (regiszterbe, változóba, adatverembe) teszi azokat az adatokat, amire a meghívott eljárásnak szüksége van. „Szíveskednél bővebben kifejteni, mit értesz paraméterek átadásaként?”
Pl a szubrutin hivasa elott a DSBIT erteket beteszed a W regiszterbe, es a szubrutinban ezt az erteket fogod felhasznalni a port bitjeinek a beallitasara.
Pl.
movlw .1 movwf dsbit movlw b'00000010' movwf portx call ds1820 movlw .2 movwf dsbit movlw b'00000100' movwf portx call ds1820 ?
Bocsi ezekért a hülye kérdésekért, de sajnos elég ritkán van időm programozni a 16F1936-osat, és most, mikor megpróbálkoztam a SET direktíva használatával, (ahogy a szandai kollégám szokta mondani) belegabalyodtam mint maki majom a cérnába....
Ha dsbit és portx egy-egy változó, akkor így.
De a nehezebbik rész az lesz, hogy a ds180 eljárást át kell írni úgy, hogy a fenti változók tartalmát használja a címzéshez. Na, itt nem fogok irigykedni, megígérem! |
Bejelentkezés
Hirdetés |