Bár végülis ebben nem vagyok olyan biztos, mert a megszak elkezdődéséig csak 5 avr órajel telik el, akkor ott az ember gyorsan lerendezi a z80 -at (mondjuk további 5 avr orajel alatt)
Hmm, nem tudom amugy (utana kene nezni vegre) hany orajelciklus AVR-en az interrupt kezeles pontosan. Emlekeim szerint 4, de ehhez hozzajon az, hogy az eppen futo utasitast elobb meg kell csinalnia, ami legjobb esetben 1, legrosszabb esetben talan 3 (?) orajel ciklus.
és akkor igaz hogy utána kiesik még 5 avr órajel a megszak visszatérésekor, de mivel a z80 -nak 11 órajel (10MHz z80 -nál az 1 mikroszekundum) alatt csak felelni kell tudni,
Hat az jo kerdes, hogy kiesik-e. Marmint Z80 szempontjabol. Ugyanis, ugye "legrosszabb" esetet elkepzelve (bar ez nem realisztikus annyira szerintem, mert Z80 csak leteszi vhova az eredmenyt stb kozben, tehat mas opcode is van!), pl OUT (0xB5),A / IN A, (0xB5). Azaz OUT utan azonnal IN. Utana viszont kisse nehezkes lenne Z80 szamara azonnal (nincs masik opcode) kezdeni elolrol, mert csak le kell tarolni az eredmenyt, vagy eleve loop-ban kerdezi, miegymas. Amit el tudok kepzelni mint legrosszabb eset, amikor a fenti szekvencia folytatodik, az pl ez:
LD C, 0xB5 ; port num
LD A, 0 ; scan row #0
LD B , 1 ; scan row #1
... stb ...
OUT (C),A
IN A, (C)
OUT (C), B
IN B, (C)
... stb ...
; result A/B...stb..
Ugye itt kerdeses, hogy ilyen valaha komolyan kell is, hogy ennyire "surrun" jon egymas utan. Azonban meg ha van is ilyen, azt se felejtsuk, hogy egy IN vagy OUT vegrehajtasa a Z80-nak messze nem egy orajelciklus, es azt is vizsgalni kell, hogy egy adott Z80 utasitason _belul_ mikor tortenik az aktualis I/O muvelet valojaban. Azaz AVR interrupt szintrol nezve, a valaszt mar pl beallitottuk (az ugy is marad) mielott meg eljutott volna a Z80 az IN -ig vagy legalabbis az IN azon "reszehez" amikor a valodi I/O zajlik. Igy lehet, hogy maga pl az IRET az AVR-n meg az IN "vege fele" lefut, igy mire a kovetkezo OUT azon reszehez erunk ahol Z80 kozli hogy I/O request van, az AVR mar vissza is tert a megszakitasbol.
de valószínűleg nem tudja 11 órajel alatt a következő változását is megejteni a b5 porton, szóval mielőtt jön a következő EP megszak, a 11 z80 órajelen FELÜL lesz még több z80 órajelnyi idő, amíg nem tud jönni a következő EP megszak ... na ezen ciklusok alatt futhatna a másik két megszak és a főprogram ...
Szóval még az is lehet, hogy menni fog 10 MHz -es z80 -nal is ...
Nem kizart
Tigrian kodjat lehet optimakolni azert, bar egyes ilyen muveletek (lasd ejszakai leveleimet) kisse hajmeresztoek es mashol okozhatnak problemat (pl tobbi megszakitas hasznalatanak ellehetetlenedese, cserebe viszont 2 AVR orajelciklus megsporolasa).