Stránka 1 z 1
8951 a /EA
Napsal: 17 úno 2010, 09:11
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.
Napsal: 17 úno 2010, 11:33
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.
Napsal: 17 úno 2010, 15:45
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.
Napsal: 17 úno 2010, 16:15
od Andrea
A jak do té "ROM" budeš zapisovat?
Napsal: 17 úno 2010, 16:22
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.
Napsal: 17 úno 2010, 16:31
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".
Napsal: 17 úno 2010, 16:39
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.
Napsal: 17 úno 2010, 16:56
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.
Napsal: 17 úno 2010, 17:01
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.
Napsal: 17 úno 2010, 17:03
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í.
Napsal: 18 úno 2010, 09:58
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
EDIT: A kurna, ono to neni Von Neumann, to by mnohe vysvetlovalo

Napsal: 18 úno 2010, 10:17
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".
Napsal: 18 úno 2010, 12:13
od mihal
Jasne, dik.