Fórum témák
» Több friss téma |
A cég honlapján van tutorial. Kezdd el a tanulást!
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
A PICkit2 klón topikban és a Furatszerelt PICkit2 klón cikkben megtalálod.
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???
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.
Jó csak nem olyan egyszerű felprogramozni mert nincs aki felprogramozza!!!!(
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.
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
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..
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:
A válaszokat előre is köszönöm.
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.
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).
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.
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
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.
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.
És ezt mindegyik karakterrel? Szerintem én értelmezek valamit nagyon rosszul. Belegabalyodtam ebbe az írásba 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.”
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.
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? 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.
És ha látom, hogy a következő utasítás az 1-es lapra esik, akkor hogyan kell váltanom?
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.
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.
A végrehajtási idő tipikusan 42uSec., és nem 1-1,5 sajnos ezeket az időket kell betartani.
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.
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.
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..
|
Bejelentkezés
Hirdetés |