Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia!
Szerintem mindenki használja aki PIC-el foglalkozik. Ha leírtad volna a problémát, már megkaptad volna a választ. Noh mi a probléma?
Csak szólnék, hogy 8.4 nincs. 8.40 és 8.43 van. Közöttük nemtudom, hogy volt-e még.
Üdv mindenkinek!
Az MPLAB IDE v.8.40 val az a gondom hogy a Watch ablakban nem tudom megjeleníteni a saját magam által létrehozott tároló regisztereket amikben a változók vannak.Egyedül az SFR regisztereket tudom megnézni debuggolás közben a szimulátorral. Kérlek ha tudsz segíts.Papimanó
Természetesen én spóroltam le a nullát,pedig az nem semmi! MPLAB IDE v.8.40 Köszi
A fordítás sikeresen megvolt, projekt van?!
Steve
Minden ok.azóta már kiizzadtam, az egész megy szépen a gyakorlatban is,csak sokkal egyszerűbb lenne ha még próbálgatás előtt le lehetne ellenőrizni.
Papimanó
Ha nem árulod el, hogy mit csinálsz, akkor nem fogjuk megtalálni benne a hibát!
Általában a View/File registers ablakban is meg lehet nézni a változókat, meg a a Watch ablakban is (az Add Symbol gomb adja hozzá a legördülő listáról kiválasztott változót a megjelenítettek listájához).
Nálam az add Symbol gomb nem aktív valamiért,és ezért nem tudom kiválasztani a változókat.Amúgy egy nagyon egyszerű fokozatkapcsolóval állítható hőfokszabályzót készítettem egy PIC16F870-el,és abba írtam programot.Az MPLAB IDE 8.40-án írtam,de kénytelen voltam a régi gépen az MPLAB IDE v.5.6 on szimulálni az említett probléma végett.Mostmár megy rendesen,de ez a probléma azért fenn áll. :no: Papimanó
Nem abszolút, hanem relokálható kódot gyárt a fordító, azért nem látod a saját változóidat. Project->Build options->Project->MPASM/C17/C18 Suite és ott a Generate absolute code lehetőséget válaszd.
A relokálható kód egyébként jó dolog, csak nem emlékszem, hogy hogyan lehet megnézni a változókat, ha ilyen kódot gyárt a fordító. Pedig biztosan meglehet valahogy... Idézet: „Nálam az add Symbol gomb nem aktív valamiért” Volt már hasonló probléma a topik történetében, pl. 2008. december 1-2. környékén Szigetivan fórumtásunkkínlódott ezzel. Valami olyasmi volt a konklúzió, hogy a projekt varázslóval kell létrehozni az új projektet. A már meglévő projektednél pedig a fordítási opcióknál kell megkeresni, hogy mi van elállítva, ahogy Potyó is ajánlotta.
Sziasztok,
új vagyok itt kérlek segítsetek! Van egy VALLEMAN k8048 prog és teszter panelem. Az elsődleges fő bajom a szoftver amivel tudom programozni, valamiért nem fogad el minden HEX filet. Körülbelül lövésem nincs,hogy miért teszi ezt velem. nagyon leköteleznétek ha tudnátok segíteni. Köszönöm előre is. Viktor Idézet: „A relokálható kód egyébként jó dolog, csak nem emlékszem, hogy hogyan lehet megnézni a változókat, ha ilyen kódot gyárt a fordító. Pedig biztosan meglehet valahogy...” Ugyan ugy, csak akkor a valtozoknak a 'res' direktivakkal kell lenniuk definialva.
Hello,
16f627-es pic-et programozok, de a kimeneteket nem tudom egyesével állítgatni. konkrétan; portb = 0b00000001 csak így tudom 'kigyújtani' a 0 bitet RB0=1 parancsot nem fogad el, habár több helyen ilyen példákat láttam. az include file-al lehet a probléma? Mindent megpróbáltam már... mikroC compilert használok a C progihoz. Mást nem tudok, mert csak ennek a hex file-ja "jó" a Velleman programozómhoz. Tisztára mint egy ördögi kör.... Köszönöm, Viktor
Valószínűleg RB0_bit a korrekt megnevezés, vagy PORTB.B0! A telepítési könyvtárban a def almappában levő definíciós állományokból kiderül.
Idézet: „mikroC compilert használok a C progihoz. Mást nem tudok, mert csak ennek a hex file-ja "jó" a Velleman programozómhoz.” Akkor valamit nem jol csinalsz szerintem, mert nekem volt (van valahol meg) egy Velleman programozo/demo board, es MPLAB-bol legyartottam a HEX-et, es valami WinProg-gal vagy mar nem is emlekszem mivel, de bele programoztam. Vegulis a Velleman az egy JDM, csak kulso tap ellatassal...
Hello,
segítséget szeretnék kérni valakitől, több napi szenvedés után már már a feladáson gondolkozom Most 16F876-ra írom a progit, de ugyanez a hiba 16f84A-nál is előfordult. 4x20 karakteres kijelzőt szeretnék meghajtani és egy darabig minden rendben is zajlik, szépen megjelenik minden szöveg. Viszont egy pont után a asm fájlban lévő szubrutinok helye nagyon is nem mindegy. Egy bizonyos sorrendben működik minden, egy másikban meg úgy megzavarodik a kijelző ahogy csak lehet. A megjelenítendő szavakat az eepromból veszi a program, hogy honnan mit, azt egy 'table' segítségével oldottam volna meg. A hex hossza 0150ig van a program memoriában... Igazából nem tudom jobban leírni a jelenséget, de kérdezzetek és próbálok válaszolni! Előre is köszönöm a segítséget mindenkinek! Üdv!
Szia!
Két alapvető dolog van a pic kontrollerekben, ami a problémát okozhatja: - A program memória 2K-s lapokra (page) van osztva. Ha a kódrészlet átnyúlik a 2k-s laphatáron, nem fog megfelelően működni. A rutinokat úgy kell elhelyezni, hogy ne lépjenek át laphatárt. Ha nem elég a 0. page ( 0x000 - 0x7FF) tartomány a hívásokat újra kell gondolni - A másik lapon levő rutin hívása elött a PCLATH regisztert elő kell készíteni. A return, retfie a teljes címet visszatölti a stack-ről, de a PCLATH-t nem állítja vissza. Itt más gond is felmerül: A megszakítási rutinnak menteni, a saját lapjára állítani, a kilépéskor vissza kell állítania a PCLATH regiszter értékét is. - Ha a programban számított ugrások vannak (PCL regiszter módosítása): Az így elért táblázatoknál a mérethatár 256 utasítás. Ha ennél nagyobb a táblázat, akkor a PCLATH regisztert is be kell állítani. Ha a táblázat kisebb, mint a 256 utasítás, egy 256-os tartományra kell helyezni (a PCLATH regisztert ekkor is be kall állítani, de a teljes táblázatra azonos lesz a beállítandó érték). Szia
Szia Hp41C!
Először is köszönöm a gyors reagálást! Viszont... a program hossza meg sem közelíti a PAGE0 határát, 0150H nál van az utolsó bejegyzés a hexben. Erre én is gondoltam, de ilyen rövid proginál.... A másik amit írtál, az is lehetne, de sajnos az én tábláim mindössze 25 retlw ből állnak... értem ezt a számított ugrásos dolgot és sajnos épp emiatt nem értem, hogy mi okozhatja a problémát... nem nagyon tapasztaltam még ilyet máshol, olyan mintha a SkyNet átvenné az uralmat a kijelzőm felett most épp visszatértem arra program verzióra ami még épp működik és megpróbálom ujragondolni az egészet... azért köszi még1x! Üdv
Ohh...bocs , valamit most vettem észre...azt hogy érted, hogy a rövidebb táblát is 256os egységre kell helyezni? meg kell adjam konkrétan mindegyiknél, hogy a program memóriában hol kezdődjön és mindezt 256-os eltolással? Tehát ha van 3 táblám akkor mondjuk az 1. org 0x055 -n a második meg minimum 256-tal arréb? jól értem?
Majdnem jól érted. De egyszerűbb, ha hexadecimális címekben gondolkozol, és megpróbálod a táblát 0x100, 0x200, 0x300, stb. címre tenni. Ha olyan címre tennéd, ahová a felette levő kód átnyúlik, azt a fordító jelzi, ekkor egyszerűen lecseréled a címet egyel magasabbra, és máris van ismét 256 bájtod a tábla számára. De a PCL beállítása előtt ekkor is be kell állítani a PCLATH-t, csak nem kell a PCL túlcsordulásával számolni. Pl.
Hogy ellenőrizd, hogy a tábla nem lóg-e esetleg át pl. a 0x300 címre, csináld azt, hogy a táblád után teszel egy
kódot, és akkor ismét kiabál a fordító, ha a 0x300 területre rálógna a tábla.
Szia!
A három táblázatod mindegyikénél azt kell elérned, hogy a PLC módosításának és az összes így elért utasítás címének felső bitjei (13..8) azonosak legyenek: pl:
Szia
Na ez így fain...de ki kell próbáljam...remélem jó lesz! 1000 hála és köszönet és neked is Hp41C! Mostmár napfényesebben látom a világot Üdv
Ugye három ciklus, azaz 12 órajel alatt lesz egyel kevesebb a WREG?
Tudom hogy van valahol egy stopper a szimulátorban, de nem találom...
Huuu....Ember, eddig minden jó! Köszönöm!
Ja hogy ahhoz át kell lépni debugger módba...
Sziasztok,
pic 16f627 kontrollert próbálok programozni, segítsetek nekem, miért nem boldogulok egy egyszerű kimenet vezérlésével. Mellékletben a minta a problémámmal és az include file amit a mikroC progim automatikusan használ. Köszönöm előre is.
Először is, ha valamit kimenetnek akarsz állítani, akkor állítsd is azzá, ne csak a kommentbe írd oda. Másodszor nincs végtelen ciklus a programodban, így a Delay után végigmegy a programmemóriaterületen és túlcsordul, majd indul az elejéről ismét, sőt bármilyen ottmaradt memóriaszemétre ráfuthat, aztán meg fura dolgokat csinál majd. Harmadszor az analóg komparátorokat sem tiltottad le, így simán lehet RMW problémád (keress rá az RMW szóra ebben a témában az én hozzászólásaim között, már leírtam, hogy az mi és mitől van).
Negyedszer ha képet csatolsz, akkor képet csatolj, ne word dokumentumba ágyazott képet. Ötödször a .inc fájlt és a forráskódot szintén semmi szükség word dokumentumba másolni, csatold szépen a .inc fájlt vagy a c fájlt direktben. Ja és van ott néhány hibaüzenet is alul, azokat olvastad? |
Bejelentkezés
Hirdetés |