Upsz, erről a plusz ugrásról meg is felejtkeztem. Ha jól értem az IT rutinod, az INT0-t használod, aminek a belépési címe a $0002, ide kerül most az ugrás. Ha a következő vektort, az INT1-et nem használod (ne használd! ), akkor az ugrás helyére, tehát $0002-re közvetlenül odarakhatod a jelenlegi komplett megszakítás rutint, ami összesen 4 utasítás, tehát csak az INT1 ugrásának a helyére lóg rá. Így megspórolod az ugrás 3 órajelét, ami szerintem pont elég.
Ú vazze, na látod ezért jó itt írogatni, előbb utóbb mindíg jön valaki, aki odébblök ...
Magam is gondoltam, hogy a megszak kódot a megszak vektorba kéne tenni direktben,
de mikor láttam hogy a megszak vektorban csak 4 byte van, ami kell neki egy szaros ugráshoz,
akkor láttam, hogy na, ide nem lesz az bepakolva ...
De most hogy mondod, hogy szerinted ez a megszak kód csak a második vektorba lógna bele,
(és a lista file tanúsága szerint valóban csak 8 byte),
valóban tehetem (újabb forrasztás vazze
) én a PS/2 megszakot akár az INT3 -ra is,
és akkor 12 byte lehet az INT0 -nak ...
Kúlság - faszaság, azzal talán akkor valóban meglesz ...
Mivel ennyire határeset lett a dolog, attól a másik megszakítástól ideje megszabadulni.
Most ezt hogy érted ?
Az 1 dolog, hogy ez EP oldalról jön egy akár 1 MHz -es nagyságú megszakítás, amit villámgyorsan ki kell szolgálni.
De hát jön a PS/2 oldalról is egy (jóval kisebb, általában 10 KHz - 30 KHz esetleg 100 KHz körüli megszak),
amit ha nem is olyan gyorsan, de azért észre kell venni, és kezelni kell ...
Ez még szerintem nem főprogram kategória ... hogy főprogramból pollozzam a PS/2 órajelet ...
Szóval szerintem kell az a második megszakítás is, csak annyi a különbség,
hogy amíg a PS/2 megszakítás kezelő (ami most fog átkerülni INT1 -ről INT3 -ra) egy SEI -vel kezdődik,
addig az EP oldali kezelő nem ad ki SEI -t, hanem csak a RETI fog újra engedélyezni.
Így az INT0 meg fogja tudni szakítani az INT1(3) -et, míg fordítva nem igaz.
Persze vannak ott valami ármányok az AVR megszakítás leírásában,
hogy az elso 5 órajelciklus közben bekövetkező megszakítás priotitásos lesz ahhoz a megszakhoz képest,
akinek az első 5 ciklusa (kiváltódás eleje) fut,
tehát ezek szerint a PS/2 megszak mégis bele tud szakítani az EP megszakba,
ha jól értettem ...
Szal ezeket próbálom még olvasgatni az AVR -nél ...
Mert megszüntetni a PS/2 megszakot szerintem nem nagyon lehetne ...
Akkor így a billentyűtábla egy 256 BYTE-os területre van szétszórva, minden 16. BYTE az értékes? Így is jó!
Ja, mivel minden más portot elszartak valamire ...
A - portot nem is láttam, asse tom létezik -e, nincs belőle kivezetés ...
B -port az egyetlen összefüggő 8 bit, az kell a billentyűzet sornak ...
C- portból 2 bit van, azon is 2 SMD led lóg a lapon gyárilag ...
D -port az teljes, de az alsó 4 bitjére tették a 4 hardver megszakítást, amiből nekem 2 kell, szal ott sem szabad az alsó 4 bit ...
E -portból 2 bitet hagytak csak meg szintén ...
F -porton is csak a felső 4 és az alsó 2 van kivezetve ...
Oszt nincs több port bakker ... Szal maradt a felső bitezés a cím beolvasáshoz.