 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
ql000 Član

Pridružen-a: Pet 04 Nov 2005 9:00 Prispevkov: 17 Aktiv.: 0.07
|
Objavljeno: Pon Feb 27, 2006 5:08 pm Naslov sporočila: 8051 XDATA prepis v PIC arhitekturo |
|
|
Delam si en mali PIC Web server / Client in trenutno ravno predelujem kodo, ki je namenjena 8051 mikrokontrolerjem (C jezik) v C kodo, ki bi jo razumel PIC, uporabljam C18. Sedaj me pa zanima kako bi lahko prevedel v "PIC C18" jezik npr. tako kodo: char xdata * neka_spremenljivka? |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pon Feb 27, 2006 5:17 pm Naslov sporočila: |
|
|
8051 ima locen naslovni prostor za program (code) in za podatke (XDATA) ... pa se enega za notranji pomnilnik in registre in do razlicnih prostorov dotopa na razlicne nacine (z razlicnimi ukazi). Tisti XDATA tam zagotovo ne pomeni nic drugega, kot da je spremenljivka pac locirana v XDATA naslovnem prostoru, namesto v notranjem RAMu/registrih, kjer bi sicer bilo bolj logicno, da bi se nahajala (gre sicer za kazalec, a morda kaze na veliko strukturo, ki ne bi sla cela v notanji RAM).
Izpusti torej XDATA, pa bos imel cisto standardno C-jevsko deklaracijo. |
|
Nazaj na vrh |
|
 |
ql000 Član

Pridružen-a: Pet 04 Nov 2005 9:00 Prispevkov: 17 Aktiv.: 0.07
|
Objavljeno: Pon Feb 27, 2006 11:52 pm Naslov sporočila: |
|
|
Ja sej tako sem na koncu tudi naredil. Kako bi pa v PIC-u izvedel ta zapis oz. postavil pointer na neko strukturo, ki ne gre v RAM? Jaz imam idejo, da bi pisal v FLASH.
P.S.
Kako veš kdaj je koda tako velika, da ne gre več v PIC-a? CCS ima indikator toliko RAM-a je zafilanega pa toliko ROM-a. Kako bi pa v Mplabu C18 to preveril? |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Tor Feb 28, 2006 12:11 am Naslov sporočila: |
|
|
Tvoje vprasanje je nejasno - kazalec je kazalec in mu je vseeno ali kaze samo na en element dolocenega tipa ali na milijon elementov tega tipa, postavljenih skupaj (v strukturo) in s tega vidika nimas kaj izvesti.
Ce podatkov ne mores spraviti v mikrokontroler in/ali zunanji pomnilnik, potem si izbral napacen mikrokontroler ali pa slabo napisal program. |
|
Nazaj na vrh |
|
 |
Proteus Član



Pridružen-a: Sre 15 Jun 2005 10:03 Prispevkov: 1943 Aktiv.: 8.20
|
Objavljeno: Tor Feb 28, 2006 9:49 am Naslov sporočila: |
|
|
Citiram: |
Kako bi pa v PIC-u izvedel ta zapis oz. postavil pointer na neko strukturo, ki ne gre v RAM? Jaz imam idejo, da bi pisal v FLASH. |
Če zapisuješ na medij, ki zahteva posebno obdelavo, potem je jasno, da si moraš za tak vpisa izdelati funkcije za vpisovanje in branje, ki poleg samega vpisa poskrbijo še za ustrezne dodatne obdelave (pa čeprav je to samo zakasnitev pri vpisu).
Vprašanje pa je, kaj se bo zgodilo s funkcionalnostjo SW-ja. Na ta način ga namreč bogato upočasnjuješ.
Druga stvar, ki ni vezana neposredno na tvoje vprašanje pa je "vpetje" periferne opreme na mikrokontroler. Pri 8031 to lahko narediš preko portov P0, P1 itd... ali preko naslovnega prostora (tako kot se to dela pri klasičnih CPU-jih) tako kot je priključen zunanji ram/rom. V tem primeru do zunanje periferije dostopaš na dokaj podoben način, kot do zunanjega ram-a.
To pišem predvsem zaradi tega, če boš naletel na kakšno "čudno" deklaracijo spremenljivke "XDATA", potem je možno da gre tudi za dostop do periferije.
Tukaj imaš še en link (ne vem, če ga poznaš), mogoče ti bo kaj pomagal:
http://www.geocities.com/engink_projects/uip/uip.htm |
|
Nazaj na vrh |
|
 |
ql000 Član

Pridružen-a: Pet 04 Nov 2005 9:00 Prispevkov: 17 Aktiv.: 0.07
|
Objavljeno: Tor Feb 28, 2006 10:07 am Naslov sporočila: |
|
|
Aha! Pol mi je že jasno, kje je problem! Placa mi je zmanjkalo na PIC-u (uporabljam 18F452). Moti me to, ker MPlab C18, ko prevede kodo nikjer ne pokaže koliko je čip zaseden.
Citiram: |
Druga stvar, ki ni vezana neposredno na tvoje vprašanje pa je "vpetje" periferne opreme na mikrokontroler. Pri 8031 to lahko narediš preko portov P0, P1 itd... ali preko naslovnega prostora (tako kot se to dela pri klasičnih CPU-jih) tako kot je priključen zunanji ram/rom. V tem primeru do zunanje periferije dostopaš na dokaj podoben način, kot do zunanjega ram-a.
A ima PIC kaj podobnega? |
|
|
Nazaj na vrh |
|
 |
ql000 Član

Pridružen-a: Pet 04 Nov 2005 9:00 Prispevkov: 17 Aktiv.: 0.07
|
Objavljeno: Tor Feb 28, 2006 10:08 am Naslov sporočila: |
|
|
Aha! Pol mi je že jasno, kje je problem! Placa mi je zmanjkalo na PIC-u (uporabljam 18F452). Moti me to, ker MPlab C18, ko prevede kodo nikjer ne pokaže koliko je čip zaseden.
Citiram: |
Druga stvar, ki ni vezana neposredno na tvoje vprašanje pa je "vpetje" periferne opreme na mikrokontroler. Pri 8031 to lahko narediš preko portov P0, P1 itd... ali preko naslovnega prostora (tako kot se to dela pri klasičnih CPU-jih) tako kot je priključen zunanji ram/rom. V tem primeru do zunanje periferije dostopaš na dokaj podoben način, kot do zunanjega ram-a.
|
A ima PIC kaj podobnega? |
|
Nazaj na vrh |
|
 |
Proteus Član



Pridružen-a: Sre 15 Jun 2005 10:03 Prispevkov: 1943 Aktiv.: 8.20
|
Objavljeno: Tor Feb 28, 2006 10:17 am Naslov sporočila: |
|
|
Citiram: |
A ima PIC kaj podobnega? |
Sam PIC-a žal ne poznam, zato ne vem kakšne so njegove zmožnosti razširitve kapacitete.
Za HW to običajno ni problem, saj lahko preko par TTL-cev ali namenskih čipov (svoj čas je bil to n.pr. 8255) razširiš število portov.
Kako pa je z RAM-om pa ne vem. Možno je (tako kot pri družini 8031), da nekateri take razširitve omogočajo, drugi pa ne. |
|
Nazaj na vrh |
|
 |
ql000 Član

Pridružen-a: Pet 04 Nov 2005 9:00 Prispevkov: 17 Aktiv.: 0.07
|
Objavljeno: Tor Feb 28, 2006 10:39 am Naslov sporočila: |
|
|
Sem našel v čem je finta. Rešitev za 8051 uporablja zraven SRAM (32k). Očitno bom moral ubrat kar to pot! Ali pa večji čip, za katerega pa rabim nov programator! |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|