Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Unused mit is jelent?
Tehát a 3. tól a 14. és a 15. feléig nincs memória kiépítve(nemhasznált). 100h tól 1FFh-ig 256 bájt van, ez is tisztán olvasható a képről, tehát egy bankban ennyi terület van. Az is egyértelmű, hogy 3 ilyen felhasználható bank van. Tehát összesen 3x256bájt mínusz a felhasznált változóknak lefoglalt ram területeted áll rendelkezésedre. Normál esetben a BANK1 és 2 amit ilyesmire használunk, és a 0. bank elég a változóknak. Persze memóriából sose elég... Megjegyzem, te nem a 18f4520 memória területéről csatoltad a képet...
Pedig akármilyen hihetetlen, a képen, amit csatoltál, rajta van a mozaikszó jelentése angolul.
Sőt, 2 fontos mozaikszó van, amiről nem árt tudni a jelentését, úgyhogy megjelöltem ezek kezdőbetűjét. --- A programmemóriában nincsenek speciális regiszterek, legalábbis, amikre te gondolsz, azok nem ott vannak, hanem azok is az adatmemóriában! A programmemóriában, ha jól tudom, csak egyetlen speciális rekesz van, talán a legutolsó helyiértékű, vagy az előtte lévő, amelyben egy gyári kalibrációs érték van eltárolva.
16 bank van definialva, de ha jobban megnezed azt az abrat, egy csomo bank nincs hasznalva...
Ha megjobban megnezed lathatod, hogy az offset minden bankon 0x00-0xFF --> 0-255-ig tudsz cimezni. GPR - General Purpose Register azaz Altalanos Hasznalatu Regiszter SFR - Special Function Register azaz Specialis Funkcio Regiszter Ebbol kovetkezik, hogy RAM == GPR Ha nagymeretu tomb kell C-ben, akkor a linker szkriptben definialni kell egy nagyobb teruletet, es ezt csak a tomb szamara szabad odaadni... Azaz protected kell legyen es #pragma udata -val meg kell hatarozni, hogy a tomb oda keruljon... Van is errol valahol egy jo leiras, C18 doksiban is biztosan megvan ez...
Szia!
Mekkora adatterület címezhető meg 18Fxxx kontrollerrel indirekten, egybefüggő területkent: Az egész GPR (General Purpose RAM - Általános felhasználású memória) az Access Bank-ot is ideszámítva... A movwf POSTINC0 és a movf PREINC2,w utasítások és (társaik) a 12 bites FSR0 (FSR1, FSR2) regiszer értéket növelik - átlép a másik bankba. Szia
Mindegy, akkor is megteheti majdnem ugyanezt -- legfeljebb nem pragmaval Tudom, egyszerubb lenne abszolute modban csinlani
[OFF]Boldog Uj Evet mindenkinek! Azt hiszem legkozelebb 1 ev mulva jelentkezem...
Mindannyitoknak köszönöm a választ!
Tehát akkor összesen 3*256 bájtom van. De itt 1536 bájtot írnak: Bővebben: Link Miért?
Bank 0-tól Bank 5-ig használhatod az adatterületet.
Ez 6 Bank-ot jelent, 6 * 256 = 1536. Lapozz eggyel tovább az adatlapban, az vonatkozik a 4520-as típusjelű eszközre!
Én az általad csatolt képről nyilatkoztam. Jeleztem is, hogy az nem egyezik a kérdésedben említett PIC-el! Ha 6 bank van(0-5, azaz 6), akkor annyival több a memóriád.
Tisztelt PIC Mesterek!
Az alábbi linken található forráskódból szeretnék HEX.-t fabrikálni, de eddig sem az MPLAB-bal, sem az MPASMWIN-nel nem sikerült.Nagyon láma vagyok hozzá. Kérem, aki tud és van is egy kis ideje, segítsen ebben! Köszönettel: Taresz Bővebben: Link
Ha több adatod lesz, mint 256, akkor használd az indirekt címzért, azzal folyamatosan tele lehet írni a memóriát(adatlap).
Az a baj, hogy a tacho.asm magában simán lefordul, és nem igényli az LCD include-nak nevezett állományt. Semmi nincs leírva, hogy miért van ott két fájl.
A tasho.asm hex-ét csatoltam.
Szia Watt!
Nagyon köszönöm a gyors segítséget. A proramozással már nem lesz gond-remélem. Fiókban lévő alkatrészekből rakom össze, ha netán nem megy, az sem nagy veszteség. Mégegyszer köszi. Üdv:Taresz
B.Ú.É.K.!
Rájöttem, hogy rosszul állítottam be az I2C modult a 16F887-en, így nem is megy. Hibát elvileg megtaláltam, és kérnékszépen egy kis segítséget hozzá, hogy jól gondolom-e. A kvarcom, ami ketyeg benne 3.276.800Hz-es. Az I2C-re RTC csatlakozik, PCF8583. Az adatlapja 100kHz-es órajelet ír SCL-re. (3. oldal) SSPCON regiszterben kell beállítani az órajelet is. Gondolom, hogy a 100kHz-es órához nekem a gyári beállítások nem jók, így maradna a TMR2. (0011-es beállítás) (179. oldal) bit 3-0 SSPM<3:0>: Synchronous Serial Port Mode Select bits 0000 = SPI Master mode, clock = FOSC/4 0001 = SPI Master mode, clock = FOSC/16 0010 = SPI Master mode, clock = FOSC/64 0011 = SPI Master mode, clock = TMR2 output/2 0100 = SPI Slave mode, clock = SCK pin, SS pin control enabled 0101 = SPI Slave mode, clock = SCK pin, SS pin control disabled, SS can be used as I/O pin 0110 = I2C Slave mode, 7-bit address 0111 = I2C Slave mode, 10-bit address 1000 = I2C Master mode, clock = FOSC / (4 * (SSPADD+1)) 1001 = Load Mask function 1010 = Reserved 1011 = I2C firmware controlled Master mode (Slave idle) 1100 = Reserved 1101 = Reserved 1110 = I2C Slave mode, 7-bit address with Start and Stop bit interrupts enabled 1111 = I2C Slave mode, 10-bit address with Start and Stop bit interrupts enabled Szóval, nekem be kell állítanom a TMR2-őt. Viszont mit kell ott beállítanom? Mármint, kell valami regiszterbe írni, hogy most épp 100kHz-es jel volt? Vagy hogy kell ezt értelmezni? Vagy csak beállítani arra az értékre, és simán lekezelni a flag-et, hogy jól van, ügyes voltál, számolj tovább? És akkor az MSSP is figyeli a TIMER2 interrupt flag-jét? És akkor még ott van a /2 is. Akkor 200kHz-re kell állítanom, hogy 100Khz jöjjön ki? És ha nem tudom pontosan? Szóval, itt akadtam el Köszönöm előre is a segítséget!
Szia!
Csatolom a fájlt, ami jó lesz! Az előzőt dobd ki.
Szia!
A PCF8583 I2C órajel előírása max. 100kHz-t jelent, nem kell neki pontosan 100kHz. Használhatod a MSSI modul "I2C Master mode, clock = FOSC / (4 * (SSPADD+1))" beállítását, ha az SSPADD regiszterbe olyan értéket írsz, amire a 3.276.800 /4 / (SSPADD+1) értéke < 100.000. Pl. (SSPADD+1) = 8 ekkor 3.276.800 /4 / (SSPADD+1) = 91.022,22 Hz. Szia>
Hali,
dinamikusan foglaltam memóriát, de mikor felakarom szabaditani a területett /free(buffer)/, a forditó arra hivatkozik, hogy a free nincs definiálva. Mi lehet a baj? A progiba ők inkludálva vannak: #include
Bocs,de valamiért az inkludáltak listáját nem jelzi,
itt van külön: #include stdlib.h #include ctype.h #include string.h #include stdio.h Idézet: „a forditó arra hivatkozik, hogy a free nincs definiálva.” Szerinted hol van definiálva?
Bocs, de most le vagyok blokkolva
Háát, én abból indultam ki, hogy ez már valahol meg van irva, valamelyik include fájlban... Idézet: „Háát, én abból indultam ki, hogy ez már valahol meg van irva, valamelyik include fájlban...” Ezért kérdezem, hogy melyikben láttad, mert és számítógépes szövegkereséssel nem találom bennük. Tehát vagy nincs is, vagy nem így hívják...
BUÉK! Tudtok nekem abban segíteni, hogy lehet-e PIC-nél, ASM-ben adat tömböt létrehozni? Esetleg egy példaprogramra rámutatni? Grafikus kijelző számára egy 128x64 pixeles képet tárolnék le benne, azaz 1024 elemű tömbről van szó. Köszi!
Melyik compilerrel dolgozol?
C18-ra az AN914 irja le hogyan kell dinamikus memoriat foglalni. De ahogy ok is megjegyzik nem altalanosan megszokott mikrokontrollereknel, hogy dinamikusan foglalsz memoriat, mar csak azert sem mert eleg pazarlo egy ilyen dolog a memoriaval. Legtobb esetben meg lehet oldani a dolgokat statikus foglalasokkal is...
Köszi szépen! Mondjuk a google-ben nehéz két betűsre jót találni
Már találtam, csak sekélyes. Valaki egy példa programot?
Igazából egyikben sem láttam, csak gondoltam, hogy így csinálom, de inkább akkor foglalók statikusan.
|
Bejelentkezés
Hirdetés |