Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   868 / 1319
(#) menyus válasza watt hozzászólására (») Dec 28, 2010 /
 
Átállítottam, most pedig egymás után rengeteg

"Message[306] D:\PROJECT\FULLGSM SMS\FULLGSM SMS.ASM 2690 : Crossing page boundary -- ensure page bits are set."

üzenetet kapok, de lefordul a kód...
(#) menyus válasza watt hozzászólására (») Dec 28, 2010 /
 
Köszönöm, erre nem gondoltam volna. Már csak azért sem mert kb 1 éve forult le ez a kód először, és akkor rontottam el egy klikkeléssel az egészet. Hol van az már...?
(#) menyus válasza menyus hozzászólására (») Dec 28, 2010 /
 
Lehet kéne nyitnom ennek egy új projectet.. jól?
(#) watt válasza menyus hozzászólására (») Dec 28, 2010 /
 
Ez normális, miután előfordulhat, hogy a hívott rutin egy másik lapon van! Ha ez így van, akkor a CALL előtt ki kell választani a megfelelő lapot. Ezt megteheted a PAGESEL "rutin címe" sorral, illetve az RCALL ezt megteszi magától.
Az RCALL-al vigyazni kell, mert nem egy sorra fordul le! Ez akkor gond, ha pl. BTFSS után RCALL-t írsz. Ez így nem fog működni, miután a BTFSS és hasonló ugró elágazó utasítások csak egy sort ugranak át. Ilyen esetben csak a PAGESEL és a CALL jöhet számításba.

Nem kell új project, nincs ezzel szerintem semmi baj...
(#) menyus válasza watt hozzászólására (») Dec 28, 2010 /
 
Ha a BTFSS után pl van egy bankváltás makro (esetemben BANK1 pl) akkor magát a bankváltást ugorja át? Mert az ugye nem utasítás elvileg hanem makro...
(#) menyus válasza watt hozzászólására (») Dec 28, 2010 /
 
Elég kusza ez az egész kód, akkor lehet csak rendbe kell szednem. Ahogy jöttek az ötletek úgy állandóan csak hozzáíródott valami...optimalizálás meg sosem volt. Így jártam.

Köszönöm a segítséget!
(#) watt válasza menyus hozzászólására (») Dec 28, 2010 /
 
A kérdésedre a válasz az, hogy a BANK1 makró annyi sorból áll, amennyit a makróba írtál, tehát a te esetedben 3 sor. Ez befordul minden alkalommal, amikor használod a makrót. Tehát a BTFSS után nem állhat több sorból álló makró(egysorost pedig csak indokolt esetben szoktunk írni).

A másik, hogy a BANK az nem LAP! Ha ezt érted, akkor nem szóltam...
(#) menyus válasza watt hozzászólására (») Dec 28, 2010 /
 
Tehát a makro első sorát ugorja át...logikus.


Hűűha...Akkor ezeknek utána kell olvagatnom, mert eddig sosem volt ilyen jellegű problémám. "Hirtelen ránézésre" egy kalap alá vettem volna a BANKOT meg a PAGE et, de ezek szerint ez nem ugyanaz. Köszi hogy szóltál. Akkor hogy is van ez...?
(#) watt válasza menyus hozzászólására (») Dec 28, 2010 /
 
A BANK a RAM, a PAGE a Flash programmemória.
(#) menyus válasza watt hozzászólására (») Dec 28, 2010 /
 
Rendben, köszönöm a segítséget! Akkor ennek utána olvasgatok.
(#) watt válasza menyus hozzászólására (») Dec 28, 2010 /
 
Ajánlom az adatlapot.
(#) menyus válasza watt hozzászólására (») Dec 28, 2010 /
 
Na, most lehet hogy nagy hülyeséget kérdezek...attól hogy egyes rutinok más lapon vannak még működhet a kód? Vagy el sem éri azt a hívott rutin? Vagy csak arról van szó hogy figyelmeztet fordításkor ? Mert gyanús hogy azért lefordul a kód...
(#) menyus válasza menyus hozzászólására (») Dec 28, 2010 /
 
meg is van a válasz...kipróbáltam élesben a hardveren. NEM működik...!
(#) p_istvan válasza menyus hozzászólására (») Dec 28, 2010 /
 
Neked nem működik!
Pedig watt mindent szépen elmagyarázott...
Neked kell gondoskodni a váltásról. Az assembler fordító nem teszi meg helyetted. A C fordítók többnyire már kezelik a lapváltásokat (ha nem korlátos verzió)
(#) menyus válasza p_istvan hozzászólására (») Dec 28, 2010 /
 
Éppen azt mondom én is, hogy a kód nem működik a lapváltások nélkül. A lapváltás az biztos működik ha helyesen használják. De ezt át kell rágnom mert idáig még (valamiért) nem találkoztam ezzel a problémával.
(#) misi93 válasza watt hozzászólására (») Dec 28, 2010 /
 
Köszönöm mindkettőtöknek! A 7-8 rövidzár, a többi nincs rövidzárban. 8 eres a vezeték.

DSCF2703.JPG
    
(#) watt válasza menyus hozzászólására (») Dec 28, 2010 /
 
Azért nem találkoztál, mert eddig egy lapban elfért a kódod. Jól át kell gondolni, hogy melyik kódrészt teszed a 0-s lapra és melyiket másikra. Ha ezt kézben tudod tartani(akár org-okkal kijelölheted előre a laphatárokat és adott rutinokat szándékosan adott lapra tehetsz), akkor nem lesz kavarodás. Egyébként garantált! Javasolt a szimulátor használata, az rámutat egyből, hogy melyik hívás fut lapváltásra. Egyébként az egész egyszerű. Neked sem elég ha valaki megmondja, hogy a 6. fiókban van világ egyenletet megoldó képlet. Azt is meg kell mondani, melyik szekrényben van az a fiók!
Megjegyzem, ezért szoktam javasolni a 18F-ekkel való kezdést...
(#) watt válasza misi93 hozzászólására (») Dec 28, 2010 /
 
A 7-8 zárlata miatt van az, hogy a sárga LED világít. Ezt kösd szét, és ellenőrizd le, hogy a rajzon látható lábakat összeköti-e a kábel a dugókban. Ha nem, akkor forraszd be úgy, hogy ez teljesüljön.
(#) misi93 válasza watt hozzászólására (») Dec 28, 2010 /
 
Van egy kis gond, de lehet, hogy csak én látom így. Szétszettem a csatlakozó mind két felét és a vezetékek nem ugyan ahhoz a lábhoz mennek. Pl.:az egyiknél 1-es lábon barna a másikon pedig piros a vezeték. A 7-es és 8-as mindkét végén össze van forrasztva.
Én úgy gondolom, hogy leforrasztok minden lábról mindent és újból forrasztom Így jó lenne? (Pl,: mind két végén az 1-es lábon piros lesz.)
(#) misi93 válasza misi93 hozzászólására (») Dec 28, 2010 /
 
A kép lemaradt!

DSCF2705.JPG
    
(#) watt válasza misi93 hozzászólására (») Dec 28, 2010 /
 
Igen, én is azt írtam, hogy be kell kötni jól! A rajz szerinti lábakat kell szám szerint összekötni a dugókban, a többi nem számít! Ezt a kábelt másra nem fogod tudni használni, és más kábel nem lesz jó ide.
(#) misi93 válasza watt hozzászólására (») Dec 28, 2010 /
 
Nagyon köszönöm! Megyek is és forrasztok.
(#) demcar hozzászólása Dec 28, 2010 /
 
Üdv, mindenkinek.

Én mondhatni, hogy semmit nem értek a pic-hez, de haveromnak már van égetője, és ő is más programmal dolgozik. Mert van nekem egy fájl ami asm és azt keleln nekem átteni hex.-be nemtudná nekem valaki megtenni?
Mert a haver a hex-et már tudja a pic-be éget.
A segitéget előre is köszönöm.
(#) vicsys válasza demcar hozzászólására (») Dec 28, 2010 /
 
(#) Hp41C válasza demcar hozzászólására (») Dec 28, 2010 /
 
Szia!

Töltsd le a Microchip oldaláról az MpLab programot és telepítsd fel. És már Te is fordíthatod a programokat...
(#) menyus válasza watt hozzászólására (») Dec 28, 2010 /
 
Igen, kicsit utána olvasva a dolognak kezd tisztulni a kép. Szóval a 2K feletti program memóriájú PIC eket érinti a dolog, ezért nem találkoztam még idáig ezzel. A 628A val idáig sikerült megoldanom amit akartam. A 648A már 4 K s, és elértem a "határra", így elő is jött a galiba. A PCLATH regiszter 3; 4; biteket kell állítgatni a lapváltásokhoz. Ez a + 2 bit hiányzik a 2k feletti címzéshez. Jelenleg a sűrűn hívogatott rutinokat előrébb helyeztem, a ritkán használtakat hátra. A gonosz az a dologban hogy hiába váltok lapot, RETURN után a váltás előtti lapcímmel (vagy a 0 -s al..?) tér vissza. Tehát ha egy rutint egymás után többször is meg akarok hívni..(pl késleltető hurok..) akkor minden CALL előtt lapot kell váltanom. És akkor ott vannak még a GOTO k is amik szintén a 2k feletti részre ugranak. A szubrutinok átszervezésével máris kevesebb a lapváltás, de megúszni nem tudom...
Köszi, olvasgatok tovább
(#) potyo válasza menyus hozzászólására (») Dec 28, 2010 /
 
Valahogy fel kell osztani két jobban elkülönülő részre a programot és akkor megoldható. Pl. inicializálás, megszakítási rutin, ilyesmi marad a nullás lapon, főprogram meg kerül az egyes lapra. Vagy ha vannak táblázatok, akkor azokat is a nullás lapra tenni (mondjuk ahogy emlékszem, a 16F648A-nál ez nem kivitelezhető, mert csak RETLW-vel oldható meg a táblázatkezelés, nem tudja úgy olvasni a flash memóriát, mint az eepromot).
(#) misi93 válasza watt hozzászólására (») Dec 28, 2010 /
 
Bekötöttem, de semmi változás. Ha össze van kötve ha nincs akkor is világít a sárga led is.
(#) watt válasza menyus hozzászólására (») Dec 28, 2010 /
 
Csak indokolt esetben ugorj át lapot GOTO-val, mert az mindig összekutyulja a dolgokat, ha ide oda ugrálsz. Szervezd úgy a programot, hogy inkább szubrutinhívások legyenek benne, és csak azokon belül használj GOTO-t.
A CALL előtt be kell állítani a lapot, visszatéréskor már nem(szerencsére) mert a stack-re tett visszatérési cím tartalmazza a lapot is, ahonnan a hívás jött. Úgy kell szervezni, hogy ne legyen túl sok laphívás.
Az org-os javaslatomat értetted? Fontos, hogy kézben tartsd, hogy a rutinok melyik lapra kerüljenek, és ne tolódjanak el, ha hozzáírsz a programhoz. Ha ilyenkor még is átcsúszik valami a következő lapra, akkor a fordító hibával jelzi ezt, tudsz tenni ellene(átteszel még rutinokat).
A PAGESEL és az LCALL és az LGOTO-t ismered? (Bocs az előbb RCALL-t írtam!)
(#) watt válasza misi93 hozzászólására (») Dec 28, 2010 /
 
A LED csak akkor világíthat, ha a Q3 nyitva van. Ez lehet több okból. (Q2 zárlatos, Q3 zárlatos, vagy nem jól vannak beültetve(B,C,E))
Az R8 ellenálláson nem szabad feszültségnek lennie, ha nincs rádugva a PC-re az áramkör. Először PC nélkül mérd végig. Írd meg, hogy az említett alkatrészek lábainál miket mérsz és hogy nincs-e zárlat valahol, vagy egyéb alkatrész hiba!
Következő: »»   868 / 1319
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