Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   633 / 1319
(#) watt válasza Attila86 hozzászólására (») Dec 31, 2009 / 1
 
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...
(#) Norberto válasza Attila86 hozzászólására (») Dec 31, 2009 /
 
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.

GPR.JPG
    
(#) trudnai válasza Attila86 hozzászólására (») Dec 31, 2009 /
 
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...
(#) Hp41C válasza Attila86 hozzászólására (») Dec 31, 2009 /
 
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
(#) watt válasza trudnai hozzászólására (») Dec 31, 2009 /
 
Nem C-ben nyomja.
(#) trudnai válasza watt hozzászólására (») Dec 31, 2009 /
 
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...
(#) Attila86 válasza watt hozzászólására (») Dec 31, 2009 /
 
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?
(#) Norberto válasza Attila86 hozzászólására (») Dec 31, 2009 / 1
 
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!
(#) watt válasza Attila86 hozzászólására (») Dec 31, 2009 / 1
 
É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.
(#) taresz hozzászólása Dec 31, 2009 /
 
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
(#) Attila86 válasza watt hozzászólására (») Dec 31, 2009 /
 
Ja igen, rossz képet mutattam.
(#) watt válasza Attila86 hozzászólására (») Dec 31, 2009 /
 
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).
(#) watt válasza taresz hozzászólására (») Dec 31, 2009 /
 
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.


tacho.HEX
    
(#) taresz válasza watt hozzászólására (») Dec 31, 2009 /
 
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
(#) Hujikolp hozzászólása Dec 31, 2009 /
 
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!
(#) watt hozzászólása Jan 1, 2010 /
 
Boldog Új Évet Mindenkinek!
(#) watt válasza taresz hozzászólására (») Jan 1, 2010 /
 
Szia!
Csatolom a fájlt, ami jó lesz! Az előzőt dobd ki.
(#) taresz válasza watt hozzászólására (») Jan 1, 2010 /
 
Szia!

Megkaptam. Köszönöm szépen.

Üdv.
(#) Hp41C válasza Hujikolp hozzászólására (») Jan 1, 2010 / 1
 
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>
(#) valaki2 hozzászólása Jan 1, 2010 /
 
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 #include #include #include >>>
(#) valaki2 hozzászólása Jan 1, 2010 /
 
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
(#) icserny válasza valaki2 hozzászólására (») Jan 1, 2010 /
 
Idézet:
„a forditó arra hivatkozik, hogy a free nincs definiálva.”

Szerinted hol van definiálva?
(#) Hujikolp válasza Hp41C hozzászólására (») Jan 1, 2010 /
 
Hálásan köszönöm!
(#) valaki2 válasza icserny hozzászólására (») Jan 1, 2010 /
 
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...
(#) icserny válasza valaki2 hozzászólására (») Jan 1, 2010 /
 
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...
(#) googa hozzászólása Jan 1, 2010 /
 
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!
(#) trudnai válasza valaki2 hozzászólására (») Jan 1, 2010 /
 
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...
(#) trudnai válasza googa hozzászólására (») Jan 1, 2010 /
 
DA, DB, DW, DT direktivakkal lehet.
(#) googa válasza trudnai hozzászólására (») Jan 1, 2010 /
 
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?
(#) valaki2 hozzászólása Jan 1, 2010 /
 
Igazából egyikben sem láttam, csak gondoltam, hogy így csinálom, de inkább akkor foglalók statikusan.
Következő: »»   633 / 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