Autor ::Ján Koteleš Poslaná :: 03.01.2010 15:41:24 Predmet ::Hodiny v Hlípe - prerušenie?
Dalšou zaujímavou vecou v Hlípe boli hodiny. Nevedel som si ani len predstaviť ako v takom komplexnom programe dokázali autori zabezpečiť presnosť hodín.
Sám som experimentoval s čítačom ktorý bol v tých doplnkových obvodoch na PMDčku. Ale pokiaľ viem, prerušenie sa po dosiahnutí 0 nekonalo - nebol zapojený reset výstup (alebo také niečo)
Či som niekde robil chybu?
Správa
Autor ::Roman Bórik Poslaná :: 04.01.2010 10:18:10 Predmet ::Re: Hodiny v hlípe - prerušenie?
Signál prerušenia je síce vyvedený na aplikačný konektor, ale interne nie je nikam pripojený. Takže to je dôvod, prečo pri experimentovaní s čítačmi k prerušeniu nedošlo.
Čítač 0 je plne k dispozícii užívateľovi na aplikačnom konektore. Na CLK0 je potrebné priviesť hodiny, na výstupe OUT0 sú impulzy zodpovedajúce naprogramovanému režimu. Vstup GATE0 je pripojený na pull-up log 1, takže čítač "stále" beží. Ale je ho možné pochopiteľne externe zastavovať privedením log 0 na vstup GATE0.
Čítač 1 sa používa hlavne ako hodiny pre UART a Mgf, ale OUT1 a GATE1 sú vyvedené na aplikačný konektor. Takže sa s ním tiež dá v obmedzenej miere experimentovať. CLK1 je pevne pripojené na Fi2TTL, čo sú 2MHz impulzy. O GATE1 platí to isté, ako v prípade čítača 0.
Čítač 2 nie je vôbec vyvedený na aplikačný konektor. CKL2 je kŕmené sekundovými impulzami. OUT2 nie je nikde zapojený. GATE2 je pripojený na pull-up log 1. Čítač 2 je možné v podstate kontrolovať, či sledovať iba softvérovo, čítaním jeho obsahu.
Takže pre experimentovanie s čítačmi a prerušením je potrebné na aplikačnom konektore urobiť príslušné "prepojky" a pridať obsluhu prerušenia na adresu 38h. Treba ale pamätať na to, že autori Monitora PMD 85 nejako na prerušenie pozabudli a v rutinách, kde sa SP používa ako "bežný" register (tlač znaku, scroll, zmazanie obrazovky), sa prerušenie nezakazuje a tak môže dochádzať k neočakávaným a fatálnym následkom.
Čo sa týka Hlípy a jej časovania, tak z vyššie uvedených dôvodov nie je prerušenie použité. Pre časovanie je použitý zaujímavý figeľ. Opakovane sa testuje stav vysielacieho registra UARTu. Ak je prázdny, odošle sa na UART "náhodný" byte. A opäť sa testuje stav UARTu, či je daný bajt "odoslaný". Tento interval v podstate slúži ako "presný" časovač. Pochopiteľne, v čase čakania na odoslanie bytu sa iba nečaká, ale deje sa tam hromada ďalších vecí (napr. kontroly na nedovolené modifikovanie kódu - poke, cheaty). Je to veľmi zaujímavé a koho to zaujalo, doporučujem pretrasovať si Hlípu počas behu v emulátore.
Správa
Autor ::Dr.Sid Poslaná :: 04.03.2010 21:42:03 Predmet ::Re: Hodiny v hlípe - prerušenie?
To mi pripomina jak jsme se pokouseli tehdy hlipu cracknout .. abychom jako meli treba nesmrtelnost. Uvodni zavadece ale byly pekelny orisek. Na jednom miste se skakalo doprostred instrukce, jinde se zase skakalo do videoramky (do ohonu jedne te poletuchy), a tech zavadecich bloku bylo nekolik .. myslim ze jsme to zabalili nekde u sesteho ..
Coz mi taky pripomina ze mam od Karla Suhajdy mapy hlipy (i zdrojaky, ale ne na PMD, tusim ze na atari st). Mam taky napsany programek ktery ty mapy pekne vizualizuje (teda mam temer hlipu napsanou pro PC, ale nejak se nemuzu dokopat k tomu to dodelat), zkusim to nejak dat dohromady a poslat to sem, treba se to bude nekomu hodit.