Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   914 / 1320
(#) vilmosd válasza bankimajki hozzászólására (») Feb 11, 2011 /
 
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.
(#) mrobi válasza bankimajki hozzászólására (») Feb 12, 2011 /
 
Í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.
(#) bankimajki hozzászólása Feb 12, 2011 /
 
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.
(#) watt válasza bankimajki hozzászólására (») Feb 12, 2011 /
 
Ha javasolhatom térjünk vissza a PIC kérdésekhez! Köszi!
(#) fejesg hozzászólása Feb 12, 2011 /
 
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
(#) BlackStar hozzászólása Feb 12, 2011 /
 
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.

  1. void Delay_ms (unsigned int n)
  2. {
  3. unsigned int i;
  4. for (i=0; i<n; i++)
  5.   {
  6.   Delay1KTCYx(6);
  7.   Delay10TCYx(25);
  8.   }
  9. }


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.
(#) Hp41C válasza fejesg hozzászólására (») Feb 12, 2011 / 1
 
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...
(#) icserny válasza BlackStar hozzászólására (») Feb 12, 2011 /
 
Ennek így működnie kell! (Fosc = 48 MHz-hez való)
  1. void delay_ms(unsigned int d) {
  2. unsigned int i;
  3.         for(i=0; i<d; i++) {
  4.                 Delay1KTCYx(12);                //12 000 TCY késleltetés (~ 1ms)
  5.         }
  6. }


A program elején kell egy
  1. #include "delays.h"

sor is.
(#) fejesg válasza Hp41C hozzászólására (») Feb 12, 2011 /
 
Köszönöm szépen a gyors választ !
(#) gmarko hozzászólása Feb 12, 2011 /
 
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!
(#) BlackStar válasza icserny hozzászólására (») Feb 12, 2011 /
 
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.
(#) icserny válasza BlackStar hozzászólására (») Feb 12, 2011 /
 
Nálam MPLAB 8.60 fut, ezzel szimulátorban is jól viselkedik.
(#) Huby hozzászólása Feb 12, 2011 /
 
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
(#) BlackStar válasza icserny hozzászólására (») Feb 13, 2011 /
 
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.
(#) icserny válasza Huby hozzászólására (») Feb 13, 2011 /
 
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
(#) icserny válasza BlackStar hozzászólására (») Feb 13, 2011 /
 
Idézet:
„Ma kipróbálom egy másik gépen az MPLAB-t mert már nincs más ötletem.”
É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!
(#) Hp41C hozzászólása Feb 13, 2011 /
 
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...
(#) misi93 hozzászólása Feb 13, 2011 /
 
sziasztok! Lenne egy gyors kérdésem a watt féle pic égetővel lehet pic12f629-et írni? mert amit készített program ott nem találtam.ez
Válaszokat Köszönöm!
(#) atis28 hozzászólása Feb 13, 2011 /
 
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!
(#) Hp41C válasza atis28 hozzászólására (») Feb 13, 2011 /
 
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.
(#) fejesg hozzászólása Feb 13, 2011 /
 
Ü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
(#) watt válasza misi93 hozzászólására (») Feb 13, 2011 /
 
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...
(#) atis28 válasza Hp41C hozzászólására (») Feb 13, 2011 /
 
Valóban, most már úgy működik, ahogy kell. Köszi a segítséget.
(#) icserny válasza fejesg hozzászólására (») Feb 13, 2011 /
 
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ő.
(#) fejesg válasza icserny hozzászólására (») Feb 13, 2011 /
 
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
(#) icserny válasza fejesg hozzászólására (») Feb 13, 2011 /
 
Idézet:
„Szíveskednél bővebben kifejteni, mit értesz paraméterek átadásaként?”
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.
(#) vilmosd válasza fejesg hozzászólására (») Feb 13, 2011 /
 
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.
(#) fejesg válasza icserny hozzászólására (») Feb 13, 2011 /
 
Pl.
movlw .1
movwf dsbit
movlw b'00000010'
movwf portx

call ds1820

movlw .2
movwf dsbit
movlw b'00000100'
movwf portx

call ds1820

?
(#) fejesg válasza fejesg hozzászólására (») Feb 13, 2011 /
 
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....
(#) icserny válasza fejesg hozzászólására (») Feb 13, 2011 / 1
 
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!
Következő: »»   914 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem