Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   161 / 1210
(#) Zserigta válasza brato hozzászólására (») Nov 5, 2011 /
 
És akkor tuti 4Mhz-n fog működni a PIC?
Csak mert próbáltam, és nem segített, de akkor nyilván mással lesz a gond.

Az ISIS 7 Professionalban, megépítettem a következőt:
Bővebben: Link

Ott tökéletesen működik, mindaddig, még 4Mhz van megadva a PIC óra frekvenciájának.
De ha fel állítom 20-ra, akkor ugyan az a helyzet, mint a valós megépítésben, hogy az LCD csak világít, de semmi nem jelenik meg.

Nos rá van kötve, mind valóságban mint az ISIS-ben a 4Mhz-s kristály, és a Config 1-nek meg 3FF9 vagyon írva, azaz az amit tanácsoltál, de a helyzet változatlan a valóságban és a programban is.
Ha a programban (ISIS) rajtahagyom a kristályt meg a 3FF9 configot és a 20Mhz-s PIC órajelet visszaveszem 4-re, akkor megint működik a dolog.

Olyan mintha mindenáron a saját órajelével akarna számolni, nem pedig a kristályéval.

Mellékelve az általam használt kapcsolási rajz.

Valami ötlet?

kapcs LCD.jpg
    
(#) brato válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
A pic program milyen órajelet definiál?
Amilyen órajelre írták a programot azt kellene használni.
A forráskódot jó lenne látni..
(#) Zserigta válasza brato hozzászólására (») Nov 5, 2011 /
 
Előbb linkeltem a forrást is, a szövegben, de akkor fel töltöm.
(#) szitko válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Ha jobban megnézed az eredeti kapcsolást, akkor láthatod, hogy nem kell a 4MHz quartz. Belső órajel van beállítva a programban. (Main.Asm). A proteus kapcsolásban töröld a kvarcot, és csak a PIC-nek add meg, hogy 4MHz-en fusson.
(#) Zserigta válasza szitko hozzászólására (») Nov 5, 2011 /
 
Mint írtam, ha ISIS-ben 4Mhz-t adok a PIC-nek akkor működik, de a valóságban nem tudok irkálni a PIC-en úgy mint ISIS-ben, és a valós megépítéssel vannak problémáim.

Örülök, hogy végigolvastátok amit írtam. XD
(#) Poostmaster hozzászólása Nov 5, 2011 /
 
Valaki világositson fel engem. Szégyellem, de eddig azt hittem, értem a C bit lényegét. Úgy gondoltam, hogy akkor áll 1-re, ha a művelet után túlcsordul a regiszter. Vagyis, az eredmény nem fér el jelen esetben 8 biten. De akkor kis számok kivonása után miért lesz 1?
(#) szitko válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Végigolvastam, és feltételezem, hogy valóságban is ugyanazt építetted meg mint a proteusban, tehát a valóságban sem kell rá a quartz mert a belső órajelet használja a PIC.
(#) Zserigta válasza szitko hozzászólására (») Nov 5, 2011 /
 
De valóságban se Quartz-al se a nélkül nem megy.
Sőt se Config1 0x3FFF-el se 0x3FF9-el sem megy, és ezek kombinációjával sem.
Sőt, azt is próbáltam, hogy kiszedtem a Main.asm-ből a következő részt:
  1. MOVLW  b'00100001'
  2. MOVWF  CHAR
  3. MOVLW  0x56
  4. MOVWF  OSCCON   ;Set OSC to 4MHz

És utána az előzőeket kombinálgattam, de úgy sem hozott eredményt.
Mást még nem próbáltam, mert nem tudom még mit lehetne.
Én csak arra tudok gondolni, hogy mindenképp a PIC belső 20Mhz-s órajelét próbálja használni, mert az ISIS-ben is akkor van az az eredmény mint a valóságban, hogy csak világít az LCD de semmi karakter.
Teljesen tanácstalan vagyok.
(#) Poostmaster válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Én a programban 2 MHz-et látok beállítva. Ugyanakkor az is be van állítva, hogy a CONFIG1 állítja az órajelet. Ő viszont nincs a programban.
(#) Zserigta válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
Azaz? Mit csináljak hogy jó legyen?
(#) szitko válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Régebben megépítettem Én is ezt a kapcsolást, (tanulás gyanánt), és nálam müködött rendesen. Csak lefordítottam a programot úgy ahogy van és ment.
A PIC be van kötve rendesen? (Vdd Vss összes).
(#) Poostmaster válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
A PIC-nek nincs belső 20 MHz-es oszcillátora.
(#) Zserigta válasza szitko hozzászólására (») Nov 5, 2011 /
 
Igen be van kötve, eddig működött LED-ek vezérlésére használtam.
Most tovább léptem, az LCD-k használatát szeretném gyakorolni, és csak a "vezérlő" lábakat bántottam, azaz a táp meg a Pickit2-höz való kapcsolódást nem bántottam.

Minden vezetést átnéztem műszerrel, az LCD és a PIC lábai közt, de minden érintkezik rendesen, és minden oda van kötve ahova kell.
(#) Zserigta válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
Akkor a PIC megnevezésében az a 20Mhz mit jelent?
Hogy annyi a max amit bír?

Teljes megnevezés:
PIC16F887-I/P CPU 8kx14 Flash, 368B RAM 20Mhz
(#) Poostmaster válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Igen, azt jelenti. Én azt javaslom neked, hogy először építsd meg azt a kapcsolást, amihez a programot írták, mert amit te csináltál, az nem az. Vedd figyelembe a topic elején sárgán betett instrukciókat is. Utána tanulmányozd az adatlapot, és a config biteket ne számmal állítsd, mert sosem fogod tudni, hogy mit hova kapcsoltál.
(#) Zserigta válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
A PIC jól van bekötve az 100% mert a LED-ek vezérlése tökéletesen működik vele.

Pár változtatás van az eredeti kapcsoláshoz képest, mert azt a készítője elb*szt*.

Mivel a forrásban, máshova van pár kivezetés beállítva, mint ahogy annak a PDF-es kapcsolási rajz szerint lennie kell.

Viszont módosítás után már az ISIS-ben működött rendesen a kapcsolás és a forrás is.
Csak a valós építésben akadtak gondok.
(#) Zserigta válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
Nah, csak kíváncsiságból, hogy tényleg 100% jól van e bekötve a PIC és működik e, az LCD-hez vezető egyik áramkörbe bekötöttem egy LED-et a DB0-hoz és az villog, úgymint pl az ISIS-ben a piros négyzet, hogy ott áram halad át.

Szóval a PIC jól van bekötve és működik, csak vagy nem jól, vagy nem megfelelő sebességen.
(#) Poostmaster válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
A rajzodon nem látom a 100n-s kondit, bár lehet, hogy csak a rajzról hagytál le egy 0-t. A csomagban pedig nem szerepel a külső oszcillátor, tehát már nem is ugyanaz a kapcsolás. Bár be lehet így is állítani 4MHz-et, ha megnézed az adatlapot, és kibogarászod belőle.
A programban én azt az LCD init rutint elég soványnak látom. Megint csak azt mondom, hogy nézd meg a HD44780-nak, mert nem ez szerepel benne. Lehet, hogy így is működnie kéne, nekem ez a kijelző nagyon háklis volt az inicializálásra. Sem az időzítést nem látom jónak, sem a lépéseket. A szimulátorod pedig csak egy szoftver, amin futhat a program, ha úgy gondolja, hogy teljesít mindent. A kijelző meg vagy elfogadja, vagy nem.
(#) Zserigta válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
Idézet:
„A rajzodon nem látom a 100n-s kondit, bár lehet, hogy csak a rajzról hagytál le egy 0-t.”

Való igaz, lemaradt egy 0.

Idézet:
„A csomagban pedig nem szerepel a külső oszcillátor, tehát már nem is ugyanaz a kapcsolás.”

Mint írtam, próbáltam nélküle is, de úgy is ugyan az volt az eredmény.

Idézet:
„A programban én azt az LCD init rutint elég soványnak látom.”

Ez mit takar pontosabban?

Ugye mint a téma címe is, "PIC kezdőknek" így én is elég kezdő vagyok.
(#) Poostmaster válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Már írták neked itt ezen a fórumon (én is az előbb), hogy tanulmányozd az adatlapokat. Nem a 20 MHz-el van a gond, mert az szinte nem is számít ebben az esetben "csak" át kell írni az időzítéseket. A gond ott van, hogy nem látod át a működését. A tanulás nem az, hogy szerzel egy kapcsolást, meg egy programot hozzá, és ha az működik, akkor hátra dőlsz, hogy ezt is tudom, jöhet a következő. Meg kell értened a működését, és ha saját magad írsz egy programot, akkor szívesen megmondjuk, hogy ott mit rontottál el.
(#) Zserigta válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
Én a tanulást úgy szoktam, legalábbis Windows-os programozásnál ez vált be.

Hogy leszedek programokat forráskóddal együtt, és ha működik, utána szépen elkezdek módosítgatni, meg törölgetni részeket, hogy átlássam, mi mit hogyan csinál.

Ezt szeretném itt elektronikában is.
Szóval ha végre működésre bírnám ezt a kijelzőt, akkor utána elkezdeném módosítgatni a programkódot, az alapján tanulva meg, hogy mi micsoda és mit csinál.
(#) Poostmaster válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Ez itt nem fog működni. Abból nem tanulsz semmit, ha Z helyett B betűt íratsz ki. Ha lényegi dolgon változtatsz, akkor meg nem fog működni, tehát abból sem tanulsz. Jó példa erre az a hozzászólásod, amelyikre most válaszoltam. Kipróbálod, hogy az említett 4 sort elhagyod, hátha jó lesz a freki beállítás. Pedig az első kettőnek semmi köze hozzá. Így tehát 2 dolgot rontottál el egyszerre, és nem is tudsz róla.
Következtetés: amíg nem érted a működését, addig nem fogod tudni. Itt például 2 vezérlőt kell működtetned. Mindkettőnek saját nyelve, rutinjai vannak. Csak úgy tudnak együttműködni, ha értik egymást. Csak akkor értik egymást, ha te érted őket.
(#) Zserigta válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
Jó, és akkor miként értsem meg "őket"??

Egyébként menet közben már eljutottam, hogy kiír karaktereket a kijelzőre, csak valamiért jobbra-balra ugrál. És mind ezt a fent említett módon, hogy sorba próbálgatom ki, mi kell és mi nem, és mit lehet módosítgatni.
: P

Most jöhet az, hogy jó, akkor csináld így, és minek írogatok akkor ide.
Azért mert, nem kicsit gyorsabb volna ha valaki segítene, mit írjak át, mint egyenként végigpróbálni minden variációt.
(#) szitko válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Előkerestem ezt a projektet csak a kedvedért.
1: Hogy vannak bekötve a nyomógombok?
2: Az eredeti programot fordísd le. (ne változtasd meg.) és az égesd be.
3: Az LCD kontrasz jól van beállítva? (RV2 ISIS)

"Poostmaster"-nek teljesen igaza van. Ha nem tudod mi-mit csinál, nem fogod tudni "átírni a kódót", és csak hiba meg hiba...
(#) potyo válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
Lehet, hogy windows-on ez működik, de ez nem az az útvonal, amivel meg lehet rendesen tanulni valamit. Itt a dolog ott kezdődik, hogy milyen áramköri elemek szükségesek a PIC köré, hogy az stabilan tudjon működni, ez tehát tisztán elektronikai kérdés. A következő lépés, hogy mit kell ahhoz csinálni, hogy egy kontroller el tudjon egyáltalán indulni abban az áramkörben, ez magának a kontrollernek a kezdeti beállítása, ide tartoznak főként a konfig bitek. És csak ezután jön az, hogy a kontroller belső periféiáit be kell állítani a külső áramkörnek megfelelően, majd utána jön a valós működést végző kód, és ezt bizony ebben a sorrendben kell felépíteni, nem úgy, hogy fogok egy kész kódot és törölgetek meg átírok benne valamit.

De szerintem ez windows-on sem működik, ez tipikusan a gányolás kategóriája. Elég tipikus példák erre az úgynevezett PHP Pistikék, akik láttak életükben kb. 50 utasítást a PHP nyelvből, aztán ezzel akarnak mindent megcsinálni, hiába marhára nem optimális amit csinálnak. Egyszerűen azért, mert nem olvasnak dokumentációt, helyette inkább fél napig hekkelik a sz*rt, hogy látszólag jól működjön, aztán egyszercsak bejön valami új adat, ami miatt megint hekkelni kell, közben meg ha egyszer normálisan csinálná meg, akkor az örökké jól működne...
(#) Poostmaster válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Én inkább azt javaslom, hogy vedd magad elé a programot, meg az adatlapokat. Szépen sorban kövesd végig minden egyes programsoron, hogy mit csinál. Ha az ANSEL regiszterhez ugrik, akkor lapozz oda az adatlapban, és nézd meg mit állítanak a bitek, amit oda írsz. Ha az LCD modulhoz fordul, akkor azt az adatlapot vedd elő, és nézd meg, mit csinál az RS ha 1, és mit ha 0. Stb....
(#) Zserigta hozzászólása Nov 5, 2011 /
 
Jól van köszönöm mindenkinek a segítséget.
Biztos nehéz lett volna bárkinek is beírni, azt a 2-3 sort amit módosítani kellene.

Majd valahogy akkor megoldom magamtól, addig írogatom át, még egyszer csak jó nem lesz.

Hisz már magamtól így is sokkal tovább jutottam mint a tanácsokkal, mert legalább már valamit kiír a kijelző, csak épp nem azt mit szeretném, de ez is már haladás.
(#) Norberto válasza Poostmaster hozzászólására (») Nov 5, 2011 /
 
Carry = magyarul átvitelt/áthozást jelent

És ez érvényesül akkor is, ha túlcsordulás van (felfelé lépteted túl egy regiszter értékét), valamint akkor is, amikor alulcsordulás van (lefelé lépteted túl egy regiszter értékét). Ha lefelé nem jelezné ez a bit, akkor mi más jelezné?
(#) szitko válasza Zserigta hozzászólására (») Nov 5, 2011 /
 
Ha sok pénzed, és sok időd van, így is meg lehet tanulni PIC-et programozni,

Ha csak rávezetünk a megoldásra, abból sokkal többet tanulsz, mint, hogy leírjuk a jó megoldást, de úgylátom neked megsértődni sokkal könyebb mint tanulni.

Egyébként leírtam a megoldást, de mivel nem tudod mi mit csinál, nem is látod a megoldást.
A program úgy ahogy van működőképes, csak a kapcs. rajz rossz.(azis amit te csináltál) De a programból mindent vissza lehet követni, hogy mit hova kell kötni.

Idézet:
„Én inkább azt javaslom, hogy vedd magad elé a programot, meg az adatlapokat. Szépen sorban kövesd végig minden egyes programsoron, hogy mit csinál. Ha az ANSEL regiszterhez ugrik, akkor lapozz oda az adatlapban, és nézd meg mit állítanak a bitek, amit oda írsz. Ha az LCD modulhoz fordul, akkor azt az adatlapot vedd elő, és nézd meg, mit csinál az RS ha 1, és mit ha 0. Stb....”

Poostmaster-t kiegészítve, mivel ASM programról van szó, így azzal is tisztában kéne legyél, hogy mit csinálnak az ASM parancsok.
Ha mindezeket tudnád, rájöhettél volna magattól, hogy a gombok sincsenek jól bekötve. (btfss, btfsc stb...)
(#) Zserigta válasza szitko hozzászólására (») Nov 5, 2011 /
 
Idézet:
„Ha mindezeket tudnád, rájöhettél volna magattól, hogy a gombok sincsenek jól bekötve.”


  1. BUTTONS ;Look for button presses
  2.   BTFSS  PORTC,3
  3.   CALL  BUTTON1
  4.  
  5.   BTFSS  PORTC,4
  6.   CALL  BUTTON2
  7.  
  8.   BTFSS  PORTC,5
  9.   CALL  BUTTON3
  10.  
  11.   BTFSS  PORTC,6
  12.   CALL  BUTTON4
  13.  
  14.   BTFSS  PORTC,7
  15.   CALL  BUTTON5


Itt van a kódban, hogy az RC3, RC4, RC5, RC6, RC7 lábakra kell kötni a gombokat.
Vagy rosszul értelmeztem?
Csak mert a módosított kapcsolási rajzon is így van.
Következő: »»   161 / 1210
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