Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nagyon szépen köszönöm, a segitséget. Ezáltal sikerült feléleszteni a te általad tervezett hőmérőt
Ezen agyalok éppen, hogyan szedjem szét az egész programot úgy hogy jó legyen, köszi az ötletet. Táblázatot nem használok.
Hááát, ez az org is egy szürke köd egyelőre. Azt sejtem hogy a memóriát lehet vele címezni mi honnét induljon. Illetve ezzel lehet megadni a reset és az INT vektorokat is a program elején.
Az általad említett utasításokat még nem használtam, nem is ismerem...de utána olvasok ezeknek is.
Megmértem kiforraszttatlanul a tranzisztorokat és jók (kétszer is megmértem) Az ellenálláson nincs feszültség.
Q3: B-E 0,72v; B-C 0,69; C-E 0,02 szinte semmi ;Q2: B-E 0,06; B-C 7,43; C-E 8.02 v van. nem találtam rövidzárat sehol. De még átnézem.
(#343097 potyo)
találtam itt valamit erről, tehát ezek makrók.És pont arról szól potyo hozzászólása amire az előbb utaltál, hogy nem állhat pl. BTFSS után nem makro mert akkor csak annak az első sorát ugorná át.
Az org egyszerű, ahogy írod:
Az 1-es lap elejére irányítja az utna következő kódokat. A PAGESEL használata a következő(MPLAB kezelési könyve tartalmazza a bővebb infókat):
Ugyanez LCALL-al:
Az LGOTO ugyanez... ..Igen, ezek makrók, de a 18F-eknél már nem!
Ahha, dereng már, köszönöm.
2. org 0x1000 pedig a PAGE kettő elejét címezi meg. 3. org 0x1800 a 3 as PAGE elejét... A 18F eket egyelőre kerülöm. Amikkel én játszom azokhoz ágyúval verébre...
A Q3 teljesen nyitott. A Q2-vel lesz baj(az BC182?).
Még annyit, hogy legközelebb minden feszültséget a testhez képest mérj, az többet mond.
Azok között is van kicsi és olcsó. Valamint ezek a borzalmak nincsenek, helyette sok könnyű utasítás. Ha egy lapnál több kell, én már rég nem veszek 16F-et!
Akkor én is körüljárom őket... Nekem ez az első kódom ami nem fér el egy lapon. Ezzel most már megszenvedek ha már belefutottam, aztán meglesek közelebbről egy 18F et is.
Köszi
Még annyit, hogy amikor átlépünk egy lapot, indokolatlanul megnő a kódunk, mert tele lesz PAGESEL-el, ami minden alkalommal két sort eredményez, az LCALL, LGOTO pedig 3-at.
Igen bc182. Bocs nem tudtam, hogy földhöz kell mérni. De ha az többet segít akkor majd lemérem.
Ja, igaz. Na ez sem jutott eszembe, pedig logikus. Egyre jobban tetszik az a 18F széria... :yes:
Semmi gond. Az látszik, hogy a Q2-vel valami nem stimmel. A Bázison nincs nyitófesz, még is nyitva van(vagy zárlat van a CE között)! Megnézted mi lehet a baj? Ha nem találsz hibát, cseréld ki a tranyót. Ha kivetted, kapcsold be a beforrasztás előtt, nem szabad világítania a LED.-nek! Ha jó a BC182, akkor a beforrasztás után sem.
Itt a mért értékekcsk Q2-őt mérem C:8,04 B:0,07 és az E: 0 v de ez földön van alapból.
A CE között szakadást mérek lehet ez a baj. De ezt már csak holnap tudjuk meg mert elég hideg van kint és nincs kedvem beöltözni.
Előre bocsájtva,hogy amatőr vagyok ,elgondolkodtam a dolgon,és úgy oldanám meg,hogy ha a főprogi elfér 1 lapon,akkor maga a szubrutin lapozná be maga alá a memóriát.Azaz call sub,a subban pclath beállítása és goto.Így csak 1x kell beállítani,utána már csak hívogatni.Sok hívásnál memória takarékos is.
A C-n a 8,04 nem stimmel, ott Vpp-t kéne mérj(12V körülit). Mennyi a Q3 E-n a fesz?
A CE között szakadást kell mérj normál eseten.
Egy szubrutin egyféle, egy helyre mutathat. Mi meg sok helyre ugorhatunk... Szubrutinból nem illik kiugrani...
Engem aggasztott a tranzisztor így még is kimentem és kicseréltem, és láss csodát működik, nem világít a sárga led és a C-on is 12,07v-t mérek.
Szia!
Azért tele lehet írni egy vacak 16F-et is 8k programmal.... Amit Watt írt még nem lesz elég: - Ha a programod megszakítást is használ, akkor a PCLATH regiszert is menteni kell, majd a 0. Page -re állítani (clrf PCLATH) a megszakítási rutin kezdetén - még az első ugrás / szubrutin hívás előtt. A megszakítási rutin vége felé (az utolsó ugrás / szubrutin hívás után) vissza kell állítani. Természetesen a STATUS és a WREG visszaállítása előtt. Több helyen olvasható olyan eljárás, ami a 0. lapra próbálja meg menteni a WREG regisztert, de mivel a mentések előtt ugrás tartalmaznak, nem fognak működni, ha a kód több Page -en is tartalmaz kódot. Kétféle kontroller van a 16F -ek között: - Az adat memória bankoknak van egy közös területe (0x070-0x07F, 0x0F0- 0x0FF, 0x170-0x17F, 0x1F0-0x1FF). Ez a közös terület azt jelenti, hogy a Bank kiválasztástól függetlenül ugyan az az adat érhető el ezen a 16 helyen. Ide kell menteni a megszakítási rutinból a regisztereket (legalább a WREG -et). - Az adat bankok függetlenek. Ekkor minden bankban le kell foglalni a mentési regiszterek (legalább a WREG) helyét. Az épen kiválasztott Bank -beli helyre fogja menteni az értékeket. A visszaállításnál a STATUS visszaállítása a bank kiválasztást is a megszakítás előttire állítja be, és jó helyről történik majd a WREG visszállítása. A WREG mentése után ha a STATUS regiszter értékét a W-be áttöltöttük, módosíthatjuk a Bank kiválasztást (pl.: clrf STATUS ; a Bank0 aktivizálása).
Ezt most nem értem. Persze,hogy egy programban több sub lehet,vagy mire gondolsz?Én arra gondoltam,hogy 1 szubrutint többször híva már takarékos,illetve a főprogramot át lehet írni,anélkül,hogy figyelni kellene a lapozásokra.
Szia, igen használok megszakítást. Nem gondoltam volna hogy ennyire bonyolódik a dolog...erről pl. amit írtál még nem is olvastam sehol. Köszi az infót, olvasok rendületlenül és közben egyre jobban érlelődik bennem hogy 18 F re váltok..ennyi melóval simán átírnám a kódot arra is. Egyszer azzal a típus családdal is össze kell barátkoznom, hátha még a végén jóban is leszünk...
Szerintem nem annyira vészes ez a lapváltás ( programmemóriát tekintve ), inkább az odafigyelés okoz(hat) gondot! Nem kell mindig egyik lapról a másikra ugrálni: pl. a szubrutinokat a második lapra átteszed, előtte PAGESEL, visszaugrás előtt PAGESEL és kész !
Főprogramnak a 2k-s terület azért nem olyan kevés ( igaz, én asm-ben gondolkoztam teljes egészében !) ! Steve Idézet: Persze, tele is írtam, de nem szerettem. Egyébként senki nem mondta, hogy vacak. „Azért tele lehet írni egy vacak 16F-et is 8k programmal....”
Ez jó hír. Akkor most végig kell menni az élesztésen, ahogy leírtam az oldalamon.
És akkor minden szubrutinnak lenne egy hívó szubrutinja? Nem sokat spórolnál ráadásul egy verem helyet elpazarolnál.
Ezek szerint nem tudom jól leírni.
0. lapon call SUB1 SUB1 bsf PCLATH,3 goto CÍM1 1. lapon CÍM1 . . RETURN 0. lapon folytatódik a program.
Aha. De ez miért jobb, mint ez:
Ha csak 1 lap van, akkor elég a 3-as bitet állítani(kisebb lesz a kód), de ha több is, akkor a 4-est is kell, azaz egyszerűbb a PAGESEL. Közben leesett, ha ebből van 100, akkor a te verziód valóban spórol!
Mert ha pl. meghívod 6 helyről,az 6+ BSF,amugy 1 BSF + 1 goto.Másrészt,mint írtam,szerintem a főprogram átírását egyszerűbbé teszi.Főleg,ha több lapon is van szubrutin.Nem kell figyelni,melyik lapon vannak a subok.
|
Bejelentkezés
Hirdetés |