Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Ja, kozben leesett mire gondolsz, hogy PCL-t birizgalva szamitott goto-nal nem mukkodik a PAGESEL. Valoban nem, akkor a PAGESELW kell neki...
Szerk: Amugy a RETLW-t lehet hasznalni sima CALL utan is, nem kell hozza a szamitott goto, az csak egy szepsege ennek az egesznek, hogy lehet vele tablazatosdizni...
A PAGESELW-t nem ismertem, de megnézem...
![]() Steve
Bocs a kései reagálásért, vmiért nem engedett belépni a honlap?
Az eredeti program 7 veremszintet használ ki. A PAGESEL regiszterről és utasításról assembly nyelven még nem hallottam. A gyári angol eredeti datasheet-et rengetegszer át nyálaztam, de ott sem említik a PAGESEL-t, viszont annál inkább a PCLATH használatát. Jut eszembe. A szimulátorban én is teszteltem a dolgot, és ott sem működik. A szim szerint ugyan visszalép a kezdő lapra, de a "goto main" utasítás után megbolondul. Ha viszont a return előtt törlöm a PCLATH 3. bitjét, akkor normálisan működik a szim szerint. Megtaláltam a kis progit, és az ellenőrzését is be rakom (a 2. verzió) Idézet: „A gyári angol eredeti datasheet-et rengetegszer át nyálaztam, de ott sem említik a PAGESEL-t” MPASM Help-jében keresd! Idézet: „Az eredeti program 7 veremszintet használ ki. A PAGESEL regiszterről és utasításról assembly nyelven még nem hallottam” Az nem utasitas es nem is regiszter. Az egy un pseudo utasitas, azaz egy a forditoba beagyazott makro. A lenyege, hogy legeneralja neked a megfelelo utasitasokat a lap beallitasahoz - abszolut modu programozasnal ajanlott a hasznalata, relokativ modunel pedig elengedhetetlen. PAGESELW es PAGESEL kozt annyi a kulonbseg, hogy PAGESELW a W-t hasznalva allitja be a lapot es igy mind az 5 bitet beallitja hogy a PCL 8 bitjevel egyutt kilegyen a 13 cimbit. A PAGESEL pedig csak a 3. es 4. bitet allitja be BCF/BSF utasitasokkal igy a W megmarad valtozatlan... MLPAB Help-jeben ezek jol le vannak irva, azt is erdemes bongeszni. Idézet: „Jut eszembe. A szimulátorban én is teszteltem a dolgot, és ott sem működik. A szim szerint ugyan visszalép a kezdő lapra, de a "goto main" utasítás után megbolondul. Ha viszont a return előtt törlöm a PCLATH 3. bitjét, akkor normálisan működik a szim szerint.” Nezd meg icserny peldajat, visszateres utan, meg az elso goto elott beallitja a sajat lapnak megfeleloen a PCLATH-ot. Csinald meg ugyanezt PAGESEL-ekkel, vagy ha nagyon ragaszkodsz akkor maradhatsz a PCLATH-nal, mindenesetre ez lesz a hiba... Ugyanis a RETURN ill RETLW nem fogja neked vissza allitani a PCLATH-ot. Idézet: „A szim szerint ugyan visszalép a kezdő lapra, de a "goto main" utasítás után megbolondul.” Teljesen igaza van, hiszen a GOTO-ra is hatással van PCLATH beállítása. A GOTO előtt, a visszatérés után kellene törölni (ha megnézed, én is ezt tettem!), nem a szubrutinban, hiszen a szubrutint több helyről is meg lehet hívni... Idézet: „A szim szerint ugyan visszalép a kezdő lapra, de a "goto main" utasítás után megbolondul.” Nem érzed úgy, hogy pontosan ez az elvárt működés az alapján, amit kiadsz neki utasításokat? Idézet: „Ha viszont a return előtt törlöm a PCLATH 3. bitjét, akkor normálisan működik a szim szerint.” Inkább a CALL LEDES után állítsd vissza a nullás lapra a PCLATH bitjeit, az lenne a helyes megoldás. Előtte PAGESEL LEDES, utána PAGESEL MAIN.
A gyári adatlap szerint a CALL és GOTO utasítások a PC 0..10 bitjeit másolják be, a PCLATH regiszterből pedik csak a 3.(11.) és 4.(12.) biteket adja hozzá a PIC, vagyis visszatéréskor azon az oldalon, ahova visszatértem bárhová mehetek probléma nélkül.
De ez mégsem működik a szimben, hacsak nem törlöm a PCLATH 3. és 4. bitjét RETURN előtt. Igaz, a PCLATH tartalma változatlan. Igazad van Icserny! A datasheet egyértelműen leírja, hogy visszatéréshez nem kell manipulálni a PCLATH tartalmát. Később viszont felhívja a figyelmet, hogy a következő híváshoz BE kell állítani azt, magyarul visszatérés után az aktuális oldalhoz kell igazítani a PCLATH tartalmát. ![]() Köszönöm mindenkinek a segítséget. :worship: :kalap:
De gondolj bele mi tortenik:
1. beallitod a PCLATH-ot 2. 13 bites visszateresi cimet a stackre teszi az MCU 3. CALL - PCL + PCH 2:0 -ba betolti ami a CALL utan van cim + PCH 4:3 -ba ami a PCLATH 4:3 -ban van... 4. RETURN - PCH : PCL vissza masolodk a stackrol 5. GOTO - PCL + PCH 2:0 -ba betolti ami a CALL utan van cim + PCH 4:3 -ba ami a PCLATH 4:3 -ban van... Tehat itt lathatod barmi is tortenik a PCLATH nem valtozik hacsak manualisan nem allitod be. Es NE a RETURN elott allitsd vissza, az rossz szokas, mert mas laprol is hivogathatod a rutinod! A Visszateres utan allitsd, il legjobb ha mindig ragaszkodsz hozza, hogy a GOTO elott allitgatod a lapokat. Megjegyzem letezik olyan ASM kornyezet ahol ezek a dolgok automatizalhatok, hogy ne legyenek felesleges lap beallitasok akarhogy is valtozik a kod, megis jok lesznek. Sot, meg a RAM kezeleshez a bank szelekcio is hasonloan optimalizalva lesz, de ahhoz egy teljesen uj preprocessor kell. Ha ramesz Olin Lathrop oldalara, akkor onnan le lehet tolteni ezt a kiegeszitest, de a hasznalata nem mondanam, hogy egyszeru.
Igazatok volt teljesen. Akkor értettem meg, amikor a szim-ben visszatért a megfelelő lapra, csak a következő GOTO utasítás megbolondította.
Megzavart a datasheet fogalmazása: "RETURN előtt nem szükséges a PCLATh manipulációja a 13 bites verem miatt", később viszont ki is emeli, hogy a visszatérés utáni első hívás előtt be kell a PCLATH-t állítani. A RETURN előtti állítgatást akartam kikerülni pont a több oldalról hívhatóság miatt, csak a fentieket nem vettem figyelembe. De hát emberek vagyunk vagy mi ![]() ui: egyébként már viszonylag megszoktam ezt a környezetet. Itt sem tudok mindent, de cseréljem mindezt le egy olyan környezetre, ahol az egészet előröl kezdhetem? Nem fogom. Jut eszembe a nagy programom egy nokia3410 kijelzőt vezérel egy Zsiguliban. Fordszám, olajnyomás, feszültség, stb. Ha lesz időm és lesz érdeklődő, akkor felteszem amit tudok
Szépen beintegráltad, első blindre fel sem tűnt, csak amikor a hozzá tartozó szöveget is elolvastam. Ügyes munka.
![]()
Ne fejlesztő környezetet cserélj, hanem PIC-et! Igazából nem is értem mért használnak még 16F-eket!
![]() ![]()
Szia!
Nekem a propeller clock programját sikerült... Szia.
Szia!
Még van egy dolog, amit szem elött kell tartani: A megszakítási rutinnak menteni kell a PCLATH regiszter értékét. A mentés után pedig a megszakítási rutinnak megfelelő (0x00) értéket kell beállítani. Egyszerűbb a clrf PCLATH. A kilépés elött pedig vissza kell állítani állítani a PCLATH regiszter értékét. Ha ez elmarad, akkor a megszakítási rutin első ugrása rossz címre történik. Sok sikert....
Üdv!
PIC16F877A-s Pic-em van, a WINpic800-at használom a programozásra. Eddig minden szépen ment, már jó ideje használom hiba nélkül. A PIC-em épp egy próbaáramkörben volt mert teszteltem. Kicsi változtatást igényelt a program, és ujra szerettem volna programozni, a szokásos módon. Beolvasom->Törlöm->Visszaolvastatom. Valamiért nem törölte a programot. Benn maradt a PIC-be az a program amit törölni szerettem volna. Próbáltam a programozó beállításain módosítani, de felesleges volt, mert azzal nem volt probléma. A PIC-et felismeri, a Hardwerrel minden rendben, csak nemtudom törölni, illetve beírni sem tudok új programot. Hallottam valami olyasmit, hogy letilthattam a PIC flash memoriáját, és e miatt többet nemtudom majd használni. De erre van valami trükk és ujra lehet éleszteni! Ehhez kérnék segítséget! Előre is kösz! üdv: aderka
Ha siman chip erase-t csinalsz, akkor mindenfele tiltas meg konfig bit torlodik es teljesen tabula rasa kell, hogy legyen a PIC eepromja.
Aztan ellenorizd az egetofeszt (nem tudom, hogy LVP-ben progizod-e, ha igen, akkor valts at HVP modba, ott meg ilyenkor menni szokott). Egy esetben nem megy a dolog, ha elerted a max. programozasi szamot, ami kb 10000 ezeknel (de adatlap pontosan megmondja).
Én azt hiszem, hogy a sok-sok elektronikai és informatikai alapismeret tanulása közben jöttek anno a szakkifejezések.
Informatikai alapismeret alatt nem azt értem, hogy hogy kell bekapcsolni egy pc-t, hanem azt, hogy milyen alkotóelemekből áll egy klasszikus (digitális) mikroszámítógép, azok az elemek hogyan működnek, hogyan kapcsolódnak egymáshoz, mik azok az utasítások és hogyan dolgozza fel őket az utasításfeldolgozó. Ehhez még hozzájön a digitális technika alapjainak ismerete (bináris logika, TTL illetve CMOS megvalósítások). Ha ezeket az elméleti dolgokat ismered, akkor egy szótár segítségével helyre lehet rakni egy PIC adatlapban is az ismeretlen fogalmakat (persze ehhez meg az kell, hogy az angol mondatszerkezetet azért alapvetően megértsd). Nálam pl. a böngészőben szinte mindig nyitva van a sztaki angol-magyar szótára. A GDF-en volt nekünk egy "Mikroszámítógépek" c. tárgyunk, az pontosan ezzel a témakörrel foglalkozott, volt hozzá egy könyv is (hirtelen rákerestem, pl. itt is meg lehet venni: Bővebben: Link). A PIC-ek azért nagyszerű cuccok, mert minden bennük van, ami egy klasszikus mikroszámítógépes felépítésben megtalálható és így nem kell 6-8 bonyolult működésű áramköri tokból megépíteni egy számítógépet, ha programvezérelt működésű eszközt akarunk készíteni.
Az szerintem is az egyik legjobb önképzési módszer, hogy létező, dokumentált megoldásokat próbál az ember megérteni, majd továbbfejleszteni, belenyúlni. Ilyenkor mindig eszembe jut egykori matematikatanárom által emlegetett "sokáig nézés módszere", mert tényleg csak ez segít. Sokáig kell nézni a működő megoldást és mellé az adatlap megfelelő részeit, hogy az emberben világossá váljon pl. egy-egy utasítás minden apró részlete, hogy miért is úgy van az ott.
Szoktam javasolni, hogy a Microchip PICkit2-es demópaneljeihez gyárilag készített leckesorokat vegye maga elé az, aki szeretne ismerkedni a PIC-ek programozásával. Létezik a low pin count demo board-hoz egy sor példaprogram 16F690-re (PICkit2 starter kitben van ilyen kártya a programozó mellett), valamint a 44 pin demo board-hoz is van egy sor progi, ez 16F887-re (ez a kártya meg a PICkit2 debug express-ben van gyárilag). A demoprogi csomagokat le lehet tölteni a PICkit2 hivatalos oldaláról: Bővebben: Link
Az hogy 10000 szer programoztam az PIC-et kilőve.
![]() HVP ben programozom a PIC-et szoval az LVP is kilőve. Amit az elején írtál nem igazán értem.. üdv: aderka
A chip erase-t nem erted?
Az egy parancs, ami az egesz chipet torli, konfig bitestol, vedelmestol, minden blokkot. Ha az sem megy (torles utan a korabbit vissza tudod olvasni es nem minden 3fff), akkor erdemes lenne egy masik programozoval megnezni, ha az sem megy, akkor kuka... nekem volt mar ilyen, 16f876a, csobol jott ki vadiujan, programozom felismerte, de nem volt irhato. Elvittem mashoz, hatha az en LVP programozom hibas, de nem. Chipcad cserelte.
Másik programozót már probáltam, a sima Winpic-et. Azzal sem megy, nem is olvassa ki jól. Ezt a parancsot nem ismerem/ismertem. Csak azt tudnám mit csináltam vele, hogy tönkre ment. kösz a segítséget!
üdv: aderka
Van olyan, hogy egy PIC tonkremegy. Nekem egyszer egy portot kimenetre sikerult kinyirni, minden ment, csak output eseten nem adott ki rendes feszt.
Ki lehet nyirni egy PIC mas reszeit is, szerintem nem akkora osszeg, hogy kulonosebben sirni kelljen utana. De ha mar mondjuk a harmadik, akkor azert utananeznek, hogy mi is ott a bibi... De azert masik GEPBEN is nezd meg, hatha...
Megnéztem másik gépben is. Nem megy. Az nem is érdekelt volna ha csak egy port megy tönkre, a 877-es ugyis olyan hogyha egy port tönkre megy attol még múködik rajta kívül minden.
De most más halt meg. 1300 Ft. Nem a legolcsobb PIC
16F887-re nem tudsz váltani? Feleannyiba kerül és többet tud, amennyire tudom, lábkompatibilis a 877-tel, és annak leváltására lett kifejlesztve.
Nemtudom.. Adatlapját nézegettem, de még nem hallottam róla, és a Winpic-se ismeri. A Programozom se biztos hogy vinné. Maradok szerintem a 877-nél. És megpróbálok jobban vigyázni rá
![]()
Hát ha erről lenne szó, akkor tudnia kell, én a helyedben nem foglalkoznék egy elavult típussal, ha újy fejlesztésről van szó.
Bővebben: Link
Milyen programozód van? Elvileg mindegyik 5V-ost tudja égetni az összes, ha működik, csak a programnak kell támogatnia...
Azt sohasem ertettem mi a jo abban a 877-esben, azonkivul, hogy dragabb, kevesebbet tud, es raadasul mindenkeppen kulso ora kell hozza...
Sok projekt található a neten velük, mivel a maga korában eléggé univerzális volt. Nekem is ilyen volt az első pic-em, és még most is van néhány 877 és 876 itthon. Majd találok nekik valami feladatot, és elhasználom, de mostmár nem veszek ilyeneket.
Idézet: „Adatlapját nézegettem, de még nem hallottam róla,” Pedig egy kitűnő és szépen illusztrált könyvet is írtak róla, amit itt szabadon elolvashatsz! |
Bejelentkezés
Hirdetés |