1

Désolé, j'ai déjà lu plusieurs topics à ce sujet mais je n'y comprends rien c'est pourquoi je me permet d'en écrire un nouveau...

Voilà je sais (un peu) programmer en C et je connais (un peu) l'électronique. Je veut brancher sur le port I/O de ma ti92+ un montage pour réaliser une carte de contrôle (style pour contrôler un jeu de lumière, des moteurs pas à pas...)

J'ai déjà réalisé la carte électronique mais je ne sais pas comment envoyer un état haut ou état bas sur un fil des deux fils du port I/O de ma ti (c'est ballo...)

J'aimerais donc que si quelqu'un sait comment faire puisse me rédiger quelques lignes de code (en C pour TIGCC) pour envoyer juste un bit 1 ou un bit 2 sur chaque fil.

2

Tu trouveras ton bonheur dans j89hw.txt smile
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

3

Je l'ai downloadé mais je ne comprends pas trop à quoi ça correspond et en plus y a pas le nom des fonctions associées... (je ne prog qu'en C)

4

aleur sur un port en C, tu peux utiliser la macro PokeIO :PokeIO(addr,val);Pour écrire une vOù addr est l'adresse à laquelle tu veux écrire (dans ton cas : 0x60000E si je ne me trompe pas).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

En effet ça à l'air d'être le cas wink

Par contre, je crois qu'il y a trois fils sur le port I/O donc deux câbles de données et comment choisis-t-on le câble que l'on veut ?

De plus la valeur val, c'est du ASCII 256 ou du binaire tsss


Sinon c'est déjà sympa je vais essayer de me débrouiller avec ça...

6

Lis la doc quand même...
Sends a byte to an I/O port
Il s'agit donc d'un octet.
Si tu veux n'envoyer qu'un bit, tu peux utiliser les macros PokeIO_bset et PokeIO_bclr.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

7

Pour ce qui est des fils, je suppose qu'il n'y en a qu'un que tu peux manipuler les deux autres doivent être la masse et le "+".
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

8

En fait, j'ai testé et ça marche plus ou moins mais c'est pas trop ce que je veux... sad

Parce que lorsque j'envoie des données, ça clignote tellement vite qu'on voit rien et donc on n'a pas le temps de faire commuter le relais. Il faudrait une fonction qui envoie du 1 ou du 0 jusqu'à qu'on lui dise qu'on en a assez... magic (j'avais envie).

9

Si tu envoies 1, ça dure combien de temps ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

10

Environ rien comme temps. En fait voilà mon dilemme :

- quand j'utilise la version de mon prog en C ça fait rien.

- quand j'utilise une bidouille avec flib (j'envoie une note de musique pendant un certain temps) ça à l'air de marcher mais je ne peux pas recevoir évidemment

11

1) Si ça ne fait rien, c'est que tu utilises mal les ports. Attends peut-être le passage de geogeo, il doit bien connaître ce domaine.
2) Si tu envoies une note, c'est normal que ça clignote très vite... roll
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

12

Bon qu'en à la mauvaise utilisation du port c'est bien possible (attends je t'envoie le code y en a pas pour lourd) mais pour la note de musique ça clignote pas (c'est normal aussi à 5000 Hz on voit plus grand chose)

13

void _main(void)
{
short i,j,k;
OSLinkOpen();
FontSetSys (F_6x8);
for(i=1;i<6;i++)
{
DrawChar (i*10, 30, i+48, A_NORMAL);

for(j=1;j<10000;j++)
{
for(k=1;k<50;k++)
pokeIO(0x60000E,124);
}

DrawChar (i*10+1, 30+1, i+48, A_NORMAL);
ngetchx();
}
OSLinkClose();
}

14

Elle correspond à quoi ta valeur 124 ?
Je te ferais remarquer que d'après j89hw.txt, seuls les 4 premiers bits sont utilisés.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

15

Euh 124 c'est une valeur au pif histoire d'envoyer quelque chose et de se rendre un peu compte de la vitesse de transmission...

16

Il faut tout d'abord désactiver l'auto int 4 pour mettre le port I/O en bas niveau, je donne le code en ASM et je traduit en C:

//Met le port I/O en bas niveau
clr.b	($60000C)					;Accès au port I/O en bas niveau
andi.b	#%11111100,($60000E)


pokeIO (0x60000C, 0);
pokeIO_bclr (0x60000E, 0);
pokeIO_bclr (0x60000E, 1);


//Accès complet au port I/O
move.b	#40,($60000C)


pokeIO (0x60000C, 40);


Pour envoyer une tension il faut faire mumuse avec les 2 premiers bits du port 0x60000E.
Un 1 logique correspond à une tension, 0 pas de tension donc par exemple je veux envoyer une tension sur le fil de données 0 et mettre l'autre fil à zéro donc pas de tension

pokeIO_bset (0x60000E, 0);
pokeIO_bclr (0x60000E, 1);


Regarde bien j89hw.txt pour savoir à quoi correspond chaque bit.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

17

On peut manipuler deux fils ?
Je suppose que oui en fait, vu qu'il me semble avoir lu que PolySound permettait d'émettre du son stéréo.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

18

Oui en effet.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

19

MERCI je venais juste de trouver les infos présentées par geogeo mais seulement en asm donc j'étais pas plus avancé... confus

Maintenant je crois que ça devrait être bon. Par contre il faut que je modifie tout mon montage car chez Ti, ils ont inversés les niveaux :
état bas -> 3V
état haut -> 0V

Je vais compiler mon p'tit prog en C now (1ère application : horloge pour CI grâce à la TI au lieu d'un 555)...

20

Au fait je suppose que pour lire des données avec le port I/O c'est la même procédure avec du peekIO ????

21

oui
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

22

Euh...

J'ai un doute sur la syntaxe :

peekIO(0x60000E,0); ?

Ca renvoie quoi (0, 1 ou autre chose)

23

C'est faux ton truc, c'est plutôt peekIO (0x60000E);
Et ça envoie l'octet qui ce trouve à cette adresse, donc ça peut être 0 comme 1...

Maintenant si pokeIO et peekIO ne fonctionneent pas, essaye avec peek et poke.

Et l'instruction pour remettre le port à son étét d'origine est:
andi.b	#%11111100,($60000E)  ;Met à état bas le port I/O	
move.b	#$8D,($60000C)  ;Accès normal au port I/O


pokeIO_bclr (0x60000E,0);
pokeIO_bclr (0x60000E,1);
pokeIO (0x60000C,0x8D);


avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

24

Euh ya un truc que je pige pas

Avec peekIO(0x60000E);

Comment on peut choisir quel fil on veut sélectionner ???

(Au fait ça marche hyper bien pokeIO, ça envoie de la donner à la fréquence que l'on veut et c'est vraiment très flexible (par rapport à ce que l'on a besoin))

25

peek et poke ne doivent pas être utilisés pour accéder aux ports.
Il faut bien utiliser peekIO et pokeIO.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

26

et sinon pour envoyer un mot sur le port il faut utiliser koi??? introuvable dans la donc on trouve pour recevoir mai pa pour envoyer????

27

Utilise 2 pokeIO smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

28

Comment ça marche pour les fils ?

On peut evoyer sur les deux fils mais peut-on recevoir aussi sur les deux??
car avec peekIO(0x60000E); ça fait une seule adresse donc ça renvoie un seul bit, celui de quel fil ?
(j'ai un peu testé et ça renvoie pas grand chose en fait...

29

Oulalal tu mélange tout.

Utilise peekIO_bit pour recevoir un bit, donc 0 ou 1 pas autre chose.
pokeIO_bclr, pokeIO_bset pour mettre au bon état un fil.
Pour recevoir les 2 fils fait 2 peekIO_bit sur le bit 0 et 1

Maintenant pourquoi écrire un word? Les ports sont sur 8 bits pas plus..
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

30

geogeo> Il n'a jamais parlé d'écrire un word.
Il parle d'un mot de 8 bits (un octet).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »