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   611 / 1210
(#) vicsys válasza morzsa15 hozzászólására (») Dec 27, 2014 /
 
A cég honlapján van tutorial. Kezdd el a tanulást!
(#) zsolti26 hozzászólása Dec 27, 2014 /
 
Sziasztok!!!

Lenne egy kérdésem épitetem egy pic-kit2 klont és nem tudom hogyan keltsem életre valaki nem e tudna nekem segiteni??Előre is köszönöm !

Üdv:Zsolt
(#) Hp41C válasza zsolti26 hozzászólására (») Dec 27, 2014 /
 
A PICkit2 klón topikban és a Furatszerelt PICkit2 klón cikkben megtalálod.
(#) zsolti26 válasza Hp41C hozzászólására (») Dec 27, 2014 /
 
Köszönöm a segitségetAmugy azt nem értem hogy ha a laptopra rákötöm akkor a zöld led villágit meg a sárga de a sárga az hibát jelez???
(#) kistee válasza zsolti26 hozzászólására (») Dec 27, 2014 /
 
A sárga az eredetin a Vdd bekapcsolását jelzi. Csak, hogy egyértelmű legyen: a PIC fel van programozva? Ha igen, akkor Hp41C kolléga iránymutatását kövesd.
(#) zsolti26 válasza kistee hozzászólására (») Dec 27, 2014 /
 
Szia!!Nincs még felprogramozva!!
(#) kistee válasza zsolti26 hozzászólására (») Dec 27, 2014 /
 
Vagyúgy... akkor az legyen az első.
(#) zsolti26 válasza kistee hozzászólására (») Dec 27, 2014 /
 
Jó csak nem olyan egyszerű felprogramozni mert nincs aki felprogramozza!!!!(
(#) Hp41C válasza zsolti26 hozzászólására (») Dec 27, 2014 /
 
A sárga LED a cél rendszerre kapcsolt Vdd feszültséget jelzi. Nem felprogramozott kontrollerrel nem szabadna világítania, hiszen az eredeti kapcsolási rajz (PICkit2 user's guide) szerint R16 lezárja.
(#) zsolti26 válasza Hp41C hozzászólására (») Dec 27, 2014 /
 
Bővebben: Link

Én ezt csináltam meg!!!!
(#) Hp41C válasza zsolti26 hozzászólására (») Dec 27, 2014 /
 
Nagy kár.... Manapság a nem 5V -os PIC kontrollerek vannak többségben.
A Szilva félén az R11 és D2 húzná fel a Q3 P-MOS FET gate -ját a tápra. Ha jól gondolom a D2 maga a sárga LED. Honnét kerül a PIC 25. lábára alacsony szint, ha nincs beprogramozva?
Q1, Q4 és Q6 source és gate elektródája közé beépítetted a 100k ellenállásokat?
A hozzászólás módosítva: Dec 27, 2014
(#) don_peter hozzászólása Dec 28, 2014 /
 
Srácok, próbálkozott már közületek valaki nRF8001-es Bluetooth chip PIC-el való összehangolásával?
Éppen most foglalkozom a témával és elkelne egy kis segítség.. Köszi..
(#) edison14 hozzászólása Dec 28, 2014 /
 
Sziasztok!

Van négy táblázatom amiben szöveget tárolok. De a kiírás közben mindig ugyan annál a betűnél visszaugrik a programkezdethez, tehát az ORG 0-hoz. Ez lehet attól, hogy az adott bankból átlóg az adattáblázat a másik bankba és ilyenkor visszaugrik a program a 0-ás címhez?
A táblázatok:
  1. msg:    addwf   PCL,f
  2.         dt      "P18F26K80 clock",0
  3.        
  4. msg1:   addwf   PCL,f
  5.         dt      "with DS1307",0
  6.        
  7. msg2:   addwf   PCL,f
  8.         dt      "00:00:00  00.0 C",0
  9.        
  10. msg3:   addwf   PCL,f
  11.         dt      "  00.jan.2014",0


A válaszokat előre is köszönöm.
(#) Hp41C válasza edison14 hozzászólására (») Dec 28, 2014 /
 
Bank a RAM egy területe. A program memóriában lapok (page) vannak.
Az az egyik baj, hogy a táblázat vagy egy része más program lapon van, azaz átlép egy 256 byte -os határt. A 18F sorozat lehetővé teszi a PCLATU és PCLATH feltöltését a movf PCL, w utasítással. Mivel egy retlw utasítás két bte -ot foglal, az index (amit a rutin a W -ben kap) csak páros lehet.
A másik az, hogy így az óra mindig 2014 jan. 00. 00:00:00 időt fog mutatni. A változó szövegeket nem a program memóriában kellene tárolni és nem onnan kellene kiírni.
A 18F -eken van egy készer hatékonyabb módszer a szövegek tárolására. A dt direktíva byte -onként egy retlw utasítást szúr be a programbe. A 16 bites programtár lehetővé teszi, hogy egy utasítás helyen két byte -ot tároljunk. Ekkor kiolvasásukra a tblrd utasítás kell használni.
(#) ktamas66 válasza edison14 hozzászólására (») Dec 28, 2014 /
 
Vagy, ha nem megoldani, hanem csak megkerülni akarod a problémát, beteszel egy ORG 0Xnn00 a programrész elé (hogy biztosan lap elején legyen), és egy RLNCF-et, hogy mindig páros legyen a mutató (persze ez így csak 127 lehet).
(#) edison14 válasza Hp41C hozzászólására (») Dec 28, 2014 /
 
Szia!

Azt hol tudom megnézni, hogy mikor lett tele egy lap. Hogyan van ez a lapozás? Az én mikrovezérlőm ha 64k memóriával rendelkezik akkor van 256 lapom?
De hogyan tudom mikor kell átmennem egy másik lapra?

Azt tudom hogy az óra mindig azt az időt fogja mutatni, de először csak látni szerettem volna a kijelzőn az elrendezést.

Ezt a fajta táblázatkezelést még nem használtam de most nekiállok és elolvasom mit ír az adatlap.
(#) edison14 válasza ktamas66 hozzászólására (») Dec 28, 2014 /
 
Szia!

Szerintem ez nem valami elegáns és ha már van rá a PIC-be épített instrukció akkor megtanulom használni. Úgyis mégcsak tanuló fázisban tartok és szeretek ilyenekkel kísérletezni, csak félek belevágni
(#) gyula88 válasza cross51 hozzászólására (») Dec 28, 2014 /
 
Kipróbáltam a programot, működik, és nagyjából értem is.
A problémám az, hogy nekem 2 érzékelőre két programrészt kéne lefuttatnom, de hiába próbálom portb másik portját feléleszteni, nem sikerül. El is szórakoznék vele, csakhogy az idő sürget, mert a szilveszteri bulihoz kész kéne lenni a robotlámpának. Segítségeteket előre is köszönöm.
(#) edison14 válasza edison14 hozzászólására (») Dec 28, 2014 /
 
Közben elolvastam az adatlap táblázat írással és olvasással foglalkozó fejezetét. Az egész világos, de felmerült bennem egy kérdés.

Ugye én a teljes szöveget szeretném elmenteni a memóriában, de az egész szöveget nem tudom egyszerre beleírni a memóriába. Ha betünként írom be a memóriába a szövegeket akkor lesz egy 500 soros programom ami csak a szöveg mentésére fog szolgálni.

  1. movlw     "P"
  2. movwf     TABLAT
  3. movlw     0x15
  4. movwf     TBLPTRL
  5. TBLWR*+


És ezt mindegyik karakterrel?
Szerintem én értelmezek valamit nagyon rosszul. Belegabalyodtam ebbe az írásba
(#) Hp41C válasza edison14 hozzászólására (») Dec 28, 2014 /
 
Idézet:
„Az én mikrovezérlőm ha 64k memóriával rendelkezik akkor van 256 lapom?”

Igen.
Idézet:
„De hogyan tudom mikor kell átmennem egy másik lapra?”

Az utasítás címében változás van a 8. biten vagy feljebb.

Idézet:
„Ha betünként írom be a memóriába a szövegeket akkor lesz egy 500 soros programom ami csak a szöveg mentésére fog szolgálni.”

  1. msg:    db      "P18F26K80 clock",0
  2.            
  3.     msg1:   db      "with DS1307",0
  4.            
  5.     msg2:   db      "00:00:00  00.0 C",0
  6.            
  7.     msg3:   db      "  00.jan.2014",0
  8.  
  9. movlw upper(msg)
  10. movwf TBLPTRU
  11. movlw high(msg)
  12. movwf TBLPTRH
  13. movlw low(msg)
  14. movwf TBLPTRL
  15.  
  16. ciklus:
  17.  tblrd*+
  18.  nop
  19.   movf TABLAT,w
  20.   bnz tovabb
  21.   return
  22. ;.... kiíratás
  23.   bra ciklus
(#) Hp41C válasza edison14 hozzászólására (») Dec 28, 2014 /
 
Nincs ezzel semmi gond. Mindig így fogja csinálni... Hogy felhasználod -e a N (negativ) bit értékét vagy nem, az a programodtól függ. Ha továbbra is előjel nélküli számokkal szeretnél számolni, ne a N bitet figyeld, hanem a C (carry - átvitel) bitet.
(#) edison14 válasza Hp41C hozzászólására (») Dec 28, 2014 /
 
Szia!

Szóval a szöveget letárolom a dt-vel és a TBLRD*+-al olvasom ki. Ez már érthető. Köszönöm.

Ha az MPLAB-ban a Program Memory ablakban az ADDRESS mezőben az adott utasításnál változik a 8. bit az már egy új lapnak tekinthető? Tehát a 0x0070 -es címen levő utasítás még a 0. lapon van addig a 0x0080-as utasítás már az 1. lapon?
(#) Hp41C válasza edison14 hozzászólására (») Dec 28, 2014 /
 
Idézet:
„Szóval a szöveget letárolom a dt-vel és a TBLRD*+-al olvasom ki.”

Nem figyeltél... Nem dt -vel tároltam, hanem db -vel. (Ha páratlan számú byte van egy sorban, akkor hozzátesz még egy 0x00 -t).
Idézet:
„...a 0x0080-as utasítás már az 1. lapon?”

Csak a 0x100 -tól kezdődik a 1. lap.
(#) edison14 válasza Hp41C hozzászólására (») Dec 28, 2014 /
 
És ha látom, hogy a következő utasítás az 1-es lapra esik, akkor hogyan kell váltanom?
(#) edison14 válasza edison14 hozzászólására (») Dec 28, 2014 /
 
A lapozásnak utánaolvastam és már érthető hogy mikor is kell és hogyan. Köszönöm a türelmet és segítséget.
(#) edison14 hozzászólása Dec 30, 2014 /
 
Sziasztok!

Ismét segítségre lenne szükségem. Egy LCD kijelzőre szeretnék kiiratni szöveget. Az időzítéseket az adatlap alapján csináltam, de valamiért csak az első sort írja ki rendesen a második sorban már hülyeségetek irkál. De van amikor mind a két sorba hülyeségeket irkál. Ez akkor fordul elő ha a PIC-et a belső 16MHz-es órajeléről hajtom, ha átkapcsolok 8MHz-re minden szépen megy. Pedig a minimális időzítéseket mindenhol betartom. A kijelző lehet annyira lassú? Pl. az írási ciklusra a HD44780 adatlapja minimálisan 1000ns időt ír, én olyan 1500-1600ns időzítést tettem helyette a 16MHz-es oszcillátornál. Ha leveszem 8MHz-re az oszcillátort ez ugye a duplájára növekszik ami már 3000ns.
(#) foxi63 válasza edison14 hozzászólására (») Dec 30, 2014 /
 
A végrehajtási idő tipikusan 42uSec., és nem 1-1,5 sajnos ezeket az időket kell betartani.
(#) zenetom válasza edison14 hozzászólására (») Dec 30, 2014 /
 
Szia!
Ahogyan foxi63 is írta, a végrehajtási idő 40uSec körül szokott lenni. Lehet rosszat néztél.
Az adatlapban a 24. oldaltól az utasításoknál láthatod, hogy min. 37uSec a legkisebb végrehajtási idő, illetve ennél picit több. Az 58. oldalon a "Timing Characteristics" résznél láthatod a vezérlő ill. adatlábakat, a hozzátartozó táblázatban (AC Characteristics, 49. oldaltól) a megfelelő tartozó időket.
(#) edison14 válasza zenetom hozzászólására (») Dec 30, 2014 /
 
Módosítottam az időzítéseket ennek megfelelően de még így is hülyeségeket irkál. Ahhoz, hogy valamit értelmesen kiírjon olyan 100ms végrehajtási időt kell betennem. Nem tudom hogy az LCD lehet e a rossz vagy a program, de szerintem program téren van a gond. Átnézem az egészet és megpróbálok valamit kihozni belőle.

Köszönöm a válaszokat.
(#) zenetom válasza edison14 hozzászólására (») Dec 30, 2014 /
 
Valószínűleg a vezérléssel van valami gebasz (talán az Enable - RS közti időzítés, de ez bármi lehet), illetve egyes parancsnál többet kell várni. A "Return Home" parancs pl. az adatlap szerint 1.52ms időt vesz igénybe. Illetve a tápfesz ráadása után érdemes kicsit többet várni, mert az adatlap szerint 10ms is el telhet, míg "feléled" a kijelző. Ennél azonban én többet ajánlanék..
Következő: »»   611 / 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