Tout le monde parle d'interruptions, mais malgré mes recherches dans la faq, je ne sais pas exactement ce que c'est.
Pour moi, une interruption permet de faire executer des instructions par le microprocesseur sans que le programme executé ne l'ai ordonné. Les interruptions permettent donc enormement de chose.
Ne sachant ce que c'etait, j'ai toujours desactivé toutes les interruptions (vu que ca ne plantait pas et accelerait tout).
Quelques questions:
Qu'est ce que c'est (si j'ai tort) ?
Comment en activer des personnalisées (ex: quand une horloge passe a 0, on incremente une variable de 1) ?
Est-ce que le fait de verifier en permanence les interruptions ralentit le processeur?
What kind of technology is this?
Il y a les interruption logiciel, celle qui sont executer périodiquement comme l'int 1 et 5 et les interruptions matériels qui ce déclenche lors d'appuye de la touche ON int 6 ou l'appuye d'une touche au clavier int 2. Ce que je dis est un peu faux car ses interruption ce déclenche lors d'événement métériel donc pour la 1 et la 5 c'est un compteur qui les déclenches. Il y a aussi les interruptions logiciel (TRAP) qui elles execute une routine...
Ok, merci beaucoup, en relisant vos reponses puis celles a mon post sur les niveaux de gris, j'ai tout compris !
Je reposterais si je rencontre de nouveaux problemes.
What kind of technology is this?
Plein de petites questions:
Quelle est la frequence de lecture des interruptions par le CPU ?
Peut-on modifier cette frequence ?
Est-ce tres rapide et comment faire ?
Quel est le lien avec les horloges externes ?
Existe-il un VTI HW2 ?
What kind of technology is this?
Ça ne fonctionne pas comme ça.
Une interruption peut interrompre le µP à n'importe quel moment. Quand elle se déclenche, le µP finit son instruction en cours et exécute le sous-programme correspondant à l'interruption qui s'est déclenchée.
Pour la 1, il me semble que c'est 256Hz sur HW2
Regarde dans j89HW.txt, c'est expliqué
En fait sur TI il existe 3 horloge.
OSC1, le microprocesseur de 12 MHZ sur HW2 et 10 MHZ sur HW1
OSC2, le controlleur LCD et le link port I/O sur HW2 et le controlleur LCD sur HW1
HW1 ~680 khz à 770 khz en fonction des piles
HW2 ~520 khz
Cette horloge détermine l'APD
OSC3, Seulement sur HW2, emule le cntroleur LCD des HW1, environ à 680 khz.
Toute ses horloges dépendent des piles mais la 3 est encore plus lente si les piles sont usée.
Chaque interruption à son niveaux de prioritée, donc la 1 à la prioritée haute....
La 1 fonctionne à OSC2/2^11 donc 332 hz sur HW1 et 253 sur HW2 mais ça dépend des piles.
La 2 le clavier, modifie un port.
La 3 OSC2/2^19
La 4 Link service
La 5 programmable interruption, elle est basé sur un compteur sur 8 bits qui 'incrémente et quand il atteint 0xFF il execuite l'interruption.
La 6 ouche ON
La 7, protege des zones en RAM comme la table des vectoriel pour masquer les interruptions et les rediriger...
Pour l'interruption 5, il faut régler le port 0x600015 pour modifier le compteur (valeur d'origine 0xB2 et max 0xFF). et le port 0x600017 pour changer ça fréquence.

Je ne savias pas ça, c'est quand même bizarre cette horloge, elle n'ai pas documenté?
Elle sert à quoi?
Je pense que le hardware des TIs n'ai pas exploité à 100% et qu'il existerais des solutions pour émuler des niveaux de gris en hardware...
C'est effectivement possible sur 92/92+ hw1, en utilisant les différents ports du lcd. Quelques tests expérimentaux ont été faits, mais ça n'a jamais été exploité.
Sur hw2 personne n'a rien trouvé de ce genre à ma connaissance...
Pour la rtc, son existence étaient connue (de par ceux qui passent leur temps à démonter leur calc et qui ont fini par tomber sur le composant), mais les ports n'ont été trouvés que l'an dernier.

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
C'est quand même bizarre que personnes ne s'y interesse plus.
La rtc c'est utile? Y a pas de bidouile possible directe dans le port LCD sur HW2?
A l'aide, les lignes de code suivantes ne sont jamais executées:
int3_handler:
move.b (fps_timer),(fps_value)
clr.b (fps_timer)
rte
INT1 equ $64 ;320 hz
INT2 equ $68 ;Appuye sur le clavier
INT3 equ $6c ;1 hz sur HW2
INT4 equ $70 ;Gestion du link
INT5 equ $74 ; De 100 hz à 8192 HW2 et 11000 HW1, il est possible de la régler
INT6 equ $78 ;Touche ON
INT7 equ $7c ;Gestion de la RAM (protection memory violation)
IntOff:
move.l d0,-(a7)
move.w #$0700,d0 ;Désactive toutes les interruptions
trap #1 ;Effectué par trap #1
move.l INT1,old_int1 ;Sauvegarde de l'ancien adresse de int1
move.l INT2,old_int2 ;Sauvegarde de l'ancien adresse de int2
move.l INT3,old_int3 ;Sauvegarde de l'ancien adresse de int3
move.l INT4,old_int4 ;Sauvegarde de l'ancien adresse de int4
move.l INT5,old_int5 ;Sauvegarde de l'ancien adresse de int5
move.l INT6,old_int6 ;Sauvegarde de l'ancien adresse de int6
move.l INT7,old_int7 ;Sauvegarde de l'ancien adresse de int7
bclr.b #2,($600001) ;Désactive la protection d'écriture dans la table vectorielle
move.l #int1_handler,INT1 ;Met l'adresse dans la table vectorielle
move.l #int2_handler,INT2 ;Met l'adresse dans la table vectorielle
move.l #int3_handler,INT3 ;Met l'adresse dans la table vectorielle
move.l #int4_handler,INT4 ;Met l'adresse dans la table vectorielle
move.l #int5_handler,INT5 ;Met l'adresse dans la table vectorielle
move.l #int6_handler,INT6 ;Met l'adresse dans la table vectorielle
move.l #int7_handler,INT7 ;Met l'adresse dans la table vectorielle
bset.b #2,($600001) ;Active la protection en écriture de la table vectorielle
move.w #0,d0 ;Met 0 dans d0
trap #1 ;Exécute interruptions (rétablit interruptions)
move.l (a7)+,d0
rts
IntOn:
move.l d0,-(a7)
move.w #$0700,d0 ;Désactive toutes les interruptions
trap #1 ;Effectué par trap #1
bclr.b #2,($600001) ;Désactive la protection d'écriture dans la table vectorielle
move.l old_int1,INT1 ;Met l'adresse dans la table vectorielle
move.l old_int2,INT2 ;Met l'adresse dans la table vectorielle
move.l old_int3,INT3 ;Met l'adresse dans la table vectorielle
move.l old_int4,INT4 ;Met l'adresse dans la table vectorielle
move.l old_int5,INT5 ;Met l'adresse dans la table vectorielle
move.l old_int6,INT6 ;Met l'adresse dans la table vectorielle
move.l old_int7,INT7 ;Met l'adresse dans la table vectorielle
bset.b #2,($600001) ;Active la protection en écriture de la table vectorielle
move.w #0,d0 ;Met 0 dans d0
trap #1 ;Exécute interruptions (rétablit interruptions)
move.l (a7)+,d0
rts
old_int1 dc.l 0
old_int2 dc.l 0
old_int3 dc.l 0
old_int4 dc.l 0
old_int5 dc.l 0
old_int6 dc.l 0
old_int7 dc.l 0
What kind of technology is this?
Ca ne marche pas sous VTI ni sur la vraie calculette.
What kind of technology is this?
(pas forcément de rapport mais) tu as une hw1 ou hw2?

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
Pour utiliser l'int 3 il faut modifier un port.0x600015 bit 2 et bit 1.
Il me semble que VTI ne supporte pas l'AUTO_INT_3, de toute façon. Pas plus la VTI officielles que les VTI non officielles de JM - dont les auteurs originaux connaissent l'existence.
Ce port n'as pas d'effet sur l'auto int 5?
C'est vraiment bizarre ce truc je trouve.
Ca me précise un peu plus les choses.
L'autoint 1 est toujours à 256Hz précisément, quelque soit la version d'ams et le hardware? Je l'ai benchée à 360Hz sur hw1/2.05 (ce qui correspond à la fréquence indiquée dans la doc de tigcc)...
256 Hz exactement sur HW2 seulement.
Ca dépend aussi des piles.