8951 a /EA

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
mihal
Příspěvky: 1844
Registrován: 06 dub 2005, 00:00
Bydliště: Zilina

8951 a /EA

#1 Příspěvek od mihal »

Potrebujem pripojit 32k flash a 32k ram, no pri starte aplikacie chcem vyuzit vnutornu ram i rom. Chapem spravne princip "extended mode" u tohoto mcu, ak si myslim, ze ak je /EA v 1, tak na adrese 0x0000 mam internu rom, ak zhodim /EA do 0, tak na adrese 0x0000 mam externu rom? Vdaka.
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#2 Příspěvek od ZdenekHQ »

Ano. Ale externí flash můžeš použít i při EA=1, jen se první 4kB budou "číst" z interní flash a zbytek z externí flash.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Uživatelský avatar
mihal
Příspěvky: 1844
Registrován: 06 dub 2005, 00:00
Bydliště: Zilina

#3 Příspěvek od mihal »

Zdenku dik. Malo by to chodit tak, ze do 0x7fff bude program (v zalohovanej ramke) a do 0xffff data v obyc.ramke. Ak P3.5 hodim do nuly a sucasne /EA do 1, tak zapisem i do rom (zalohovanej ram) a zmenim program. Vo vnutornej romke bude nejaky jednoduchy bootloader s primitivnym editorom. Dufam ze som tam nedomrvil riadiace signaly pamati.
Přílohy
__51Pamate.png
šéma
(46.24 KiB) Staženo 132 x
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#4 Příspěvek od Andrea »

A jak do té "ROM" budeš zapisovat?
Uživatelský avatar
mihal
Příspěvky: 1844
Registrován: 06 dub 2005, 00:00
Bydliště: Zilina

#5 Příspěvek od mihal »

No prave cez P3.5 v nule. Adresu nastavim na rom, nastavim data, P3.5...
chces mi naznacit ze /PSEN neviem tahat programovo? To by sa tam potom pytalo hradlo.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#6 Příspěvek od Andrea »

S /PSEN programově nehneš. A proč to neuděláš tak, že na /WR té "ROM" připojíš /WR procesoru, pak zápis do horní části datové paměti zapíše do RAM a zápis do dolní části zapíše do "ROM".
Uživatelský avatar
mihal
Příspěvky: 1844
Registrován: 06 dub 2005, 00:00
Bydliště: Zilina

#7 Příspěvek od mihal »

Vdaka za upozornenie.
Zapis som chcel riesit programovo, preto som tam teraz hodil primitivne hradlo z diod.
Na chvilku som zneistel, pretoze zapisovat priamo instrukciou by bolo elegantnejsie, i ked by som priseiel o 4kilo kodu v rom, kde by sa zapisat nedalo. Budem nad tym dumat.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#8 Příspěvek od Andrea »

mihal píše:Vdaka za upozornenie.
Zapis som chcel riesit programovo, preto som tam teraz hodil primitivne hradlo z diod.
Na chvilku som zneistel, pretoze zapisovat priamo instrukciou by bolo elegantnejsie, i ked by som priseiel o 4kilo kodu v rom, kde by sa zapisat nedalo. Budem nad tym dumat.

Proč nedalo? Zapisoval bys do datové paměti. Celá ta ROM a RAM dohromady by byla datová paměť a zároveň dolní půlka (ROM) by byla programová paměť (podle nastavení /EA). Klidně bys mohl z jedné části té ROM vykonávat program a jiný kus zároveň přepisovat.
Uživatelský avatar
mihal
Příspěvky: 1844
Registrován: 06 dub 2005, 00:00
Bydliště: Zilina

#9 Příspěvek od mihal »

Zapisovat chcem cez podprogram z uartu alebo z terminalu vo vnutornej flash, to sa potom na adresy 0x0000 az0x1fff jednoducho a opakovatelne nedostanem.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#10 Příspěvek od Andrea »

mihal píše:Zapisovat chcem cez podprogram z uartu alebo z terminalu vo vnutornej flash, to sa potom na adresy 0x0000 az0x1fff jednoducho a opakovatelne nedostanem.

Proč ne? Pleteš si programovou paměť s datovou.

Edit: Externí datová paměť je vždy přístupná celá, pouze programová se přepíná interní/externí.
Přílohy
51mem.gif
(14.06 KiB) Staženo 112 x
Uživatelský avatar
mihal
Příspěvky: 1844
Registrován: 06 dub 2005, 00:00
Bydliště: Zilina

#11 Příspěvek od mihal »

Takze ked ponecham /EA v 1,
-zapis na adresu 0x0000 bude znamanat zapis do externej ram na adresu 0x0000
-citanie z adresy 0x0000 mi vrati hodnotu v externej ram na adrese 0x0000
-skok na adresu 0x0000 bude znamenat skok do vnutornej rom
-skok na 0x2000 bude skok do externej rom
-zapis na adresu 0x2000 bude zapis do externej rom

Ak zhodim /EA do 0,
-zapis na adresu 0x0000 bude znamanat zapis do externej rom

Uz si pripadam divne :oops:

EDIT: A kurna, ono to neni Von Neumann, to by mnohe vysvetlovalo :D
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#12 Příspěvek od Andrea »

Já si taky připadám divně, nevím co na tom pořád nechápeš. :(

Pokud to zapojíš jak máš ve schématu, jen na /WE externí "ROM" přivedeš /WR, pak:
- Zápis do datové paměti (instrukcí MOVX) na adresu 0-7FFFh zapíše vždy do externí "ROM" na adrese 0-7FFFh
- Zápis do datové paměti (instrukcí MOVX) na adresu 8000h-FFFFh zapíše vždy do externí RAM na adrese 8000h-FFFFh.
- Čtení z datové paměti (instrukcí MOVX) z adresy 8000h-FFFFh vrátí obsah externí RAM na adrese 8000-FFFFh.
- Pokud bys chtěl mít možnost i číst z externí "ROM" na adresách 0000h-7FFFh instrukcí MOVX, tak je potřeba na /OE "ROM" přivést (/RD AND /PSEN), pokud na /OE připojíš jen /PSEN půjde eterní "ROM" číst jen instrukcí MOVC.

Co se týče programové paměti, při /EA = 1, se bude vykonávat program v interní ROM až do adresy 1FFFh a dále pak v externí "ROM". Při /EA = 0 bude celý program v externí "ROM".
Uživatelský avatar
mihal
Příspěvky: 1844
Registrován: 06 dub 2005, 00:00
Bydliště: Zilina

#13 Příspěvek od mihal »

Jasne, dik.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“