Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   598 / 1320
(#) watt válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Lássuk az egész kódot(csatold az egész fájlt a Tallózás gombbal!)
(#) Kriss válasza watt hozzászólására (») Nov 1, 2009 /
 
Csatoltam az egész projectet. A watch ablakban megfigyelhető hogy REG tartalma nem másolódik át REG1-be viszont PORTB már átmásolódik PORTC-be.
(#) potyo válasza Kriss hozzászólására (») Nov 1, 2009 /
 
De átmásolódik az, csak mivel mindkettőben nulla van a MOVFF előtt, ezért nem látsz változást. A BSR regisztert nem állítod be, mielőtt a MOVWF REG és MOVWF REG1 utasításokat végrehajtod, ezért azok nem a REG és REG1-nek nevezett területre írnak, mert a célregiszter megjelölésére csak nyolc bitet tartalmaz a MOVWF utasítás, a maradék négy bitet a BSR regiszteből szedi. Tehát te a 0x000 és 0x001 című regiszterekbe írod a 100 és 50 konstansokat, míg a 0x100 és 0x101 című regiszterek között csinálod MOVFF utasítást.


Lehet olyat csinálni, hogy mindig a megfelelő tartalom kerüljön a BSR-be, hogy:
  1. MOVLW HIGH(REG)
  2. MOVWF BSR

Vagy úgy tűnik, hogy működik a BANKSEL makró is:
  1. BANKSEL REG


Tehát ezek valamelyikét el kell helyezned, mielőtt a REG vagy REG1-hez hozzá akarsz férni olyan utasítással, ami nem tudja a teljes memóriaterületet címezni. Persze nem kell mindkettő elé, ha azonos Bank-ban vannak, akkor csak az első előtt kell.
(#) Hp41C válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Szia!

A 18F vezérlők is bankosan használják a memóriát, de a bank mérete 256 byte. Nem a movff utasítással van a gondod, hanem a movwf-vel. Ez az utasítás csak egy lapot ér el bankos kezelés esetén, azt amelyiket a BSR kijelöli. De a fordító annyira ügyes, hogy a speciális célú regiszterek kezelésekor az úgynevezett access bankot használja.

  1. ; ÉRTÉKADÁSOK
  2.         MOVLW   D'100'
  3.         MOVWF   REG ; Ez itt nem a REG-be ír, hanem a 0. Bank 0 címére.
  4.         MOVLW   D'50'
  5.         MOVWF   REG1; Ez itt nem a REG-be ír, hanem a 0. Bank 1 címére.
  6.         MOVLW   D'100'
  7.         MOVWF   PORTB; Az access bank használata miatt megy jó helyre.


Mivel a BSR regiszter tartalma 0, ezért a REG és REG1 feltöltése nem a 1. lapon (ahol definiáltad őket), hanem a 0 lapon történik. A movff REG,REG1 viszont teljes címeket használ, így valóban a REG -et másolja a REG1-be, de a REG értéke 0.

A 18F szériában az utasítások többségének egy harmadik peremétere is van, Banked vagy A. Az "A" jelenti az access bank szerinti elérést. Ezt a paramétert is ki kellene írni az utasításoknál.

Szia
(#) watt válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Ahogy a többiek írták, azzal van a baj, hogy a két változódat olyan területre tetted, ami másik bankban van(BANK1). Válassz inkább olyan területet, ami a 0..255-ig terjedő RAM-ra esik(BANK0).
Csatoltam a módosítást, ami már működik.(egyébként BANKSEL-el a te programod is működik, csak felesleges olyan területet választani, amit állandóan bankolni kell.

Van még egy trükk, amivel 256+128 RAM terület bankváltás nélkül használható. Ki kell választani a program elején a BANK1-et, amit ezután teljes méretében használhatsz(256bájt), és még ehhez eléred az acces területet is bankváltás nélkül, ami + 128bájt. Ez legtöbbször elegendő is szokott lenni. Végül is a te programodat csak ezzel az egy sorral kell megtűzni, és kész is, csak akkor minden változódat erre a területre deklarálj.
(#) watt válasza watt hozzászólására (») Nov 1, 2009 /
 
Csatoltam a BANK1-es verziót is.
(#) icserny válasza watt hozzászólására (») Nov 1, 2009 /
 
Idézet:
„Van még egy trükk, amivel 256+128 RAM terület bankváltás nélkül használható. Ki kell választani a program elején a BANK1-et, amit ezután teljes méretében használhatsz(256bájt), és még ehhez eléred az accesa területet is bankváltás nélkül, ami + 128bájt.”

A konkrét típusnál ez így igaz, de érdemes azt is tudatosítani, hogy az Access Bank mérete típusfüggő. Például az általam nyaggatott PIC18 mikrovezérlőknél csak 0-tól 0x5F-ig terjed az Acces Bank, cserébe az SFR területből látszik nagyobb terület.
(#) Kriss válasza watt hozzászólására (») Nov 1, 2009 /
 
Így már tényleg jó köszi szépen a segítséget mindenkinek! Most tértem csak át a pic18-ra és magamtól sosem jöttem volna rá hogy mi a gond.
(#) Kriss válasza watt hozzászólására (») Nov 1, 2009 /
 
Egyébként a watch ablakban hogyan tudtad beüzemelni az ADD SYMBOL menüt?
(#) watt válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Új projectet készítettem az asm-al. Nem tudom miért volt szürke, pedig már találkoztam ilyennel, bár velem még nem fordult elő.
(#) watt válasza icserny hozzászólására (») Nov 1, 2009 /
 
Igen, ez igaz, bár nekem még nem volt ilyen típusom, ezért nem jutott eszembe ez a lehetőség. Köszi a kiegészítést!
(#) Kriss válasza watt hozzászólására (») Nov 1, 2009 /
 
Van vagy 20 projectem és mindegyiknél szürke sajos. Melyik verziót használod? Én az MPLAB IDE Version 8.30.00.00 -át.
(#) watt válasza Kriss hozzászólására (») Nov 1, 2009 /
 
v8.36-van fenn most.
Érdekes, hogy amit én készítek, az nem szürke nálad sem! ??
(#) MPi-c válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Generálj abszolút kódot!
Állítsd át a projekt tulajdonságokban:
Project>Build Options...>Project, majd a feljövő párbeszédablakban MPASM/C16/C17/C18 Suite fülön, középen, a Single File Assembly Project mezőben Generate absolute code. Ezután, ha újrafordítod, működni fog az Add Symbol.
(#) trudnai válasza MPi-c hozzászólására (») Nov 1, 2009 /
 
El kellene mar gyerekek felejteni ezt az abszolut modu programozast, csak a gond van vele. Nem egy nagy ordongosseg linker scriptet hasznalni...
(#) Kriss válasza MPi-c hozzászólására (») Nov 1, 2009 /
 
Ez bejött! Amúgy mi a különbség az absolute és a relocatable code között?
(#) trudnai válasza Kriss hozzászólására (») Nov 1, 2009 /
 
Abszolut modban "kezzel" osztod ki az eroforrasokat (ram es program memoria) mig relokativban a linker osztja ki neked. Relokativban pl mar linkeles ideje alatt rajohetsz, hogy ninc eleg ram-od, vagy utkozes van stb. Azonkivul relokativnal kulon modulokra bonthatod a programodat, overlay ram teruleteket jelolhetsz ki -- es a reszletekre a linker figyel nem Te...
(#) MPi-c válasza trudnai hozzászólására (») Nov 1, 2009 /
 
:nemtudom: Én csak a Watch ablak szürke Add Symbol gombjára adtam egy megoldást...
Egyébként igazad van, ha a kód a relokálható mód szabályai szerint készült volna, akkor is működne az Add Symbol
(#) potyo hozzászólása Nov 2, 2009 /
 
Ezt most találtam, szorzáshoz, osztáshoz kódgenerátor. Nagy előnye, hogy nem csak a kész kódot készíti el, hanem az algoritmust is leírja hozzá: Link
osztás szorzás pic algoritmus kód mintakód
(#) watt válasza trudnai hozzászólására (») Nov 2, 2009 /
 
Én jobbanszeretem magam csinálni addig, amíg nem lesz átláthatatlan. Egyikkel sincs semmi gond, ha jól használod.
(#) trudnai válasza watt hozzászólására (») Nov 2, 2009 /
 
Persze, hogy nincs gond, csak kerdes miert akarna az ember kezzel megoldani azt amit a linker neki automatikusan megcsinal?

Amugy overlay teruleteket hogyan szoktad kezzel megoldani? Minden rutinhoz ilyenkor kulon CBLOCK-ot csinalsz?
(#) Akiss hozzászólása Nov 2, 2009 /
 
Sziasztok! Egy olyan PIC tápegységre lenne szükségem ami ipari környezetben is megálja a helyét, nem hal be a zajoktól. Sajnos a 78XX szériával már volt ilyen jellegű problémám. A válaszokat előre is köszönöm.
(#) potyo válasza Akiss hozzászólására (») Nov 2, 2009 /
 
Autóban 78xx-et használok, nem volt még gond vele. Jó az, csak nem kell lespórolni a kondenzátorokat az áramkörről.
(#) trudnai válasza potyo hozzászólására (») Nov 2, 2009 /
 
[OFF]Ne is mondd, epp most pakoltam be egy 7805-ost egy szivargyujto csatiba, es amit meg nem tudok, hogy hosszu tavon vajon mennyire fog melegedni (elmeletileg a GPS olyan 350mA kornyeken vesz fel, nade a TO220 tok is epp hogy bepreselodott a csatiba, hutes mar sehogy sem fert volna el, ugyhogy nem tudom mi lesz majd a vegeredmeny, de lehet majd kiolvasztja maganak a szellozo nyilast ).
(#) potyo válasza trudnai hozzászólására (») Nov 2, 2009 /
 

9V*350mA az 3,15W, az túl fog melegedni hűtés nélkül. Nemhogy vettél volna egy ilyet:Link. Engem picit emlékeztet valamire, de lehet, hogy csak az én fantáziám piszkos
(#) Akiss válasza potyo hozzászólására (») Nov 2, 2009 /
 
Azzal sosem szoktam spórolni(kondenzátorral). Ipari környezetbe menne, kb egy 10kW-s fűtőszál transzformátorát egy tirisztor segítségével szabályozná. Bemenő fesz 400V szóval valószínüleg, lesz zavar bőven, persze vonal szűrő fog csatlakozik a betápra, de nekem a lényeg hogy a +5V mindig rendelkezésre álljon. Nekem a 7815-el van az a problémám, hogy ha terheléssel indítom van amikor nem szeret elindulni, de ezt már egy másik topikban letárgyaltuk. Szóval akkor szerintetek melyik a stabilabb, egy DC/DC konverter vagy egy sima 7805. Válaszokat előre is köszönöm
(#) potyo válasza Akiss hozzászólására (») Nov 2, 2009 /
 
Szerintem a 7805 stabilabb. Esetleg tegyél elé RC szűrőt, ha gondolod, hogy a betáp zavarhatja össze. Illetve valami nevesebb gyártót nézz, National Semicondudtor, ONSemi, SGS-Thomson, Motorola, Fairchild, ilyenek. A Taiwan Semiconductor (TS) pl. elég gyenge márka, azt inkább kerüld.
(#) Akiss válasza potyo hozzászólására (») Nov 2, 2009 /
 
Ok! Remélem beváll!
(#) lidi hozzászólása Nov 2, 2009 /
 
Üdv!

Érdekel-e esetleg közületek valakit egy PIC 16F887 és egy szabványos AT / PS2 billentyűzet összekapcsolása ? Írhatnánk belőle közösen egy cikket. Nálam már üzemel a Hi-Tech PIC C ben készült kód, kicsit le lehet még tisztázni. Amit tud egyelőre: megszakítás segítségével veszi a billentyűzet lenyomásokat, és a soros porton küldi vissza asciiban dekódolva. Továbbá lehet kapcsolgatni a ledeket, és egyéb beállító parancsokat küldeni a billentyűzet felé.

(#) pepe33 válasza lidi hozzászólására (») Nov 2, 2009 /
 
Szerintem ez sokmindenkit érdelne.
Engem is.
Következő: »»   598 / 1320
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