PIC18C801 a problemek k potrapeni mozku.

jiri@bezstarosti.cz jiri@bezstarosti.cz
Pondělí Červenec 12 10:35:10 CEST 2004


Zdravim.

Mam zase jednou zajimavou hracku k potrapeni mozku.

PIC18C801 ma kus pameti dat preklopitelne do pameti programu. Vyuziva se to
k tomu, ze se do ni da program jako data za behu programu z externi pameti,
pak se preklopi ta pamet dat do pameti programu a skoci do te interni
pameti. Pak je mozno odpojit externi sbernice a delat si s nimi cokoli jako
s porty. Vyuziva se to treba v okamziku, kdy by PIC nemohl vyuzivat
sbernice, protoze treba FLASHuje pamet nebo tam dela "neco specialniho" atp.

Problem je ale v tom, ze kdyz neco takoveho date nekomu do ruky, je schopen
jen softem toho PIC zpusobit sbernicovou kolizi, tedy ponahazovat draty
sbernic jako porty tak, ze pusti vsechny vystupy sebe i pameti do sebe. U
systemu se softem ve FLASH to jiste nevadi, protoze to proste schvalne
neudelate a navic jsou pred vypnutim sbernic jeste zamky (je treba nastavit
postupne spec. 2 bity tesne po sobe), aby se to ani neumyslne nestalo.
Nicmene treba u systemku pouziteho pro vyuku PIC, kde se mam softik
natahovat do SRAM to problem je, protoze prvni chachar co na to prijde, to
okamzite zkusi - jak jinak, ze :).

Takze jsem vymyslel reseni, kdy pri vypnuti externich sbernic uvedu PIC do
resetu a nepustim ho z nej - rikam tomu "pud sebezachovy". PIC se uvadi do
resetu pri signalu z MCP101 v L (podpetovy hlidac) a nebo po vypnuti
externich sbernic. Me momentalni reseni vyuziva signaly ALE, CLK1, vystup
resetu z MCP101 a jeden pin brany, ktery nahazuje hlidani a nelze dale uz
hlidani vypnout az do odpojeni napajeni ci signalu z MCP101. Problem pouziti
pinu brany neni, protoze soft je ve FLASH a s jeho uzivatelskou modifikaci
se nepocita a uzivatelske programy se natahuji do SRAM, tedy nez cokoli
dovolim ze SRAM spustit, hlidani zapnu a vypnout uz nelze. Co se tyce
principu, hlidam zda dojde kazde 4 takty CLK1 k hrane z ALE (po vypnuti
sbernic by mel prestat "tikat"). Mozna to ale neni to nejlepsi reseni -
nakonec sam jich mam nekolik :). Predem rikam, ze dat odpory do datovych
sbernic neni uplne onco, protoze casovani pameti je dost na doraz a RC
clanky takto vznikle by nebyly nic moc fajn a jit dolu s taktovanim se mi
take moc nechce.

Mate nekdo nejaky napad ? Vsechno co jsem vymyslel (s resenim vsech detailu)
se mi zda docela dost slozite (minimalne zatim 3 pouzdra logiky). Pouzit
CPLD mohu, v tom problem neni, ale zda se mi to cele jako docela zajimave
potrapeni mozku, tak to sem pisu, kdyby ten problem treba nekoho zaujal a
chtel si s tim hlavolamem take pohrat. Je to proste o jakesi vyvojarske cti
na to prijit a o nic vic nejde a tak to prosim i tak berte :).

--
Jiri Bezstarosti



Další informace o konferenci Hw-list