Posté le 14/06/2008 à 09:54 Membre depuis le 14/06/2008, 25 messages
Hello

J'ai en projet avec des amis de pouvoir piloter un robot avec une calto, TI 83 ou 84.
Mais pour cela j'aimerai savoir si c'est possible d'envoyer sur le port I/O des impulsions, une modulation MLI ou qqch d'exploitable!
La commande get( ou send( (donc TIBasic) est trop lente et je n'ai pas trouvé de données la-dessus, donc je me suis dis ptet qu'en assembleur ya une possibilité??

Merci d'avance!
Benj
Posté le 14/06/2008 à 11:39 Membre depuis le 15/03/2005, 3470 messages
C'est possible car ça avait déjà été fait : http://www.smallrobot.com/scimath.html .

Par contre je ne m'y connais pas trop sur les ports de la TI 83+ (SE) (qui est équivalente à la TI 84+ (SE)), mais tu devrais regarder wikiTI à ce sujet smile

edit : Finalement ils utilisent du TI-Basic pour le contrôler : http://www.smallrobot.com/Stu.txt cheeky
Posté le 14/06/2008 à 15:34 Membre depuis le 11/04/2007, 1076 messages
Par contre, en assembleur, on peut faire des programmes qui font de la musique à partir du port I/O... Donc normalement, en assembleur, ça doit être faisable...

Tu devrais rechercher sur Ticalc les programmes qui servent à la musique, et récupérer le code.
Posté le 15/06/2008 à 10:38 Membre depuis le 14/06/2008, 25 messages
Hello

Merci pour vos réponses!
Je vais voir ça, mais ce qui serait bien aussi ce serait de pouvoir utiliser le programme en asm dans un un prog en TI basic, pour avoir plus de possiblitées de commande (c'est surtout plus simple). Un peu comme une fonction en C, avec un paramètre d'entrée...
Faut que j'apprenne l'assembleur sur TI.... tongue ou c'est possible de programmer les TI en C??
Posté le 15/06/2008 à 12:09 Membre depuis le 15/03/2005, 3470 messages
Sur z80 (TI 83(+)(SE)/84+(SE)/etc..) c'est pas vraiment possible de programmer en C sur TI car les compilo ne sont pas vraiment au point. Ceci dit l'ASM z80 n'est pas trop difficile quand on a les outils nécessaires et de bon tuto sous la main.

Mais bon, après dans votre projet il faut regarder surtout le robot je pense, si vous pouvez communiquer avec en TI-Basic comme dans l'exemple cité plus haut, pas besoin de l'ASM.
Posté le 15/06/2008 à 16:31 Membre depuis le 14/06/2008, 25 messages
Oui pour le C j'ai vu, ça ne marche bien que pr les TI89 et +
J'ai pas encore trouvé de tuto sur l'asm pour le port i/o, qqun aurait ça??
En fait le truc en basic c'est qu'il n'y a que le get( et le send(, et ils sont assez lents, ce qui fait que le temps de réponse et plutôt long...
merci encore
Posté le 15/06/2008 à 16:43 Membre depuis le 15/03/2005, 3470 messages
Tu devrais lire TI 82 ASM Corner (ce sont les mêmes ports je croit) smile
Posté le 16/06/2008 à 14:15 Membre depuis le 14/06/2008, 25 messages
Pfou que c'est compliqué l'asm... hum2
N'empêche le mec qui a fait le robot (www.smallrobot...) est arrivé à décoder ce qui sort du port avec les send(, et utilise un système ingénieux pour commander le robot!! Je devrais aussi y arriver... Il me faudrait juste un oscillo...
La carte de commande coûte quand même 50$...
Posté le 16/06/2008 à 18:57 Membre depuis le 11/04/2007, 1076 messages
Mouais, pour apprendre, je te conseille plutôt Asm in 28 Days: http://www.ticalc.org/archives/files/fileinfo/268/26877.html
Comme ça t'auras pas les problèmes d'incompatibilité...
Posté le 18/06/2008 à 16:14 Membre depuis le 14/06/2008, 25 messages
C'est dommage qu'on ne trouve pas beaucoup d'info en français... ya personne qui sais programmer en asm?? :-D#Copiedesiffle#
Posté le 18/06/2008 à 19:51 Membre depuis le 23/08/2001, 664 messages
Essaye là aussi : http://tift.tuxfamily.org/asmpourlesnuls.html

Pour les ressources en anglais, équipe-toi d'un bon dico, d'un bon traducteur et de patience, ça finira par venir.
Posté le 19/06/2008 à 11:54 Membre depuis le 14/06/2008, 25 messages
En fait j'essaye surtout de trouver des infos sur l'émission/réception sur le port link: j'ai trouvé 1 tuto:
>http://membres.lycos.fr/plouhinec/calculatrices/ti/ti-82/tutoriel/progasm/guide/lesson16.html

J'essaye de comprendre, si qqun peut me dire si le code suivant fonctionne, merci!!:


ld A,$C0 ; je charge la valeur $C0 dans A qui, selon la leçon du tuto en lien, me met le fil blanc positif et le fil rouge positif (après le "OUT")
OUT (0),A ; J'écrit A sur le port link (fil blanc positif, fil rouge positif)
ld A,$D4 ; je charge la valeur $D4 dans A qui devrait me mettre le fil blanc positif et le fil rouge négatif (tjrs après de out)
OUT (0),A ; j'écrit a sur le port link (fil blanc positif, fil rouge négatif)


Et ainsi de suite, en repassant par ex le fil rouge au positif, je peux créer des impulsions sur le port jack. Et si je rajoute une boucle, je change la durée de l'impulsion. Non??

Une autre ptite question: si je fait par exemple
ld A, 12 ;je met donc 12 dans A
et que ensuite je quitte le programme et que je fait [ALPHA], [A], [Entrée], il m'affiche 12??
sinon c'est possible à faire??

grand merci !!
Posté le 19/06/2008 à 14:29 Membre depuis le 23/08/2001, 664 messages
(Je ne réponds pas à la première partie car je ne l'ai jamais fait.)
MofK (./12) :
Une autre ptite question: si je fait par exemple
ld A, 12 ;je met donc 12 dans A
et que ensuite je quitte le programme et que je fait [ALPHA], [A], [Entrée], il m'affiche 12??


Non, car le registre A du processeur et la variable système A sont deux choses qui n'ont rien à voir.

Si tu veux interagir avec les variables systèmes à partir d'un programme en assembleur, tu dois utiliser certaines rom calls. Je n'ai jamais essayé mais regarde là : http://dragonfire.unitedti.org/asmin28/lesson/day20.html#sys et là : http://www.ticalc.org/pub/text/calcinfo/83rom.txt (les rom calls _STOSYSTOK et _STOOTHER ) .
Posté le 19/06/2008 à 19:11 Membre depuis le 15/03/2005, 3470 messages
MofK > A toi de tester, suffit de compiler ton programme puis de l'envoyer sur ta TI (mais sauvegarde toutes tes données au cas où...).
Posté le 20/06/2008 à 10:35 Membre depuis le 14/06/2008, 25 messages
Ok merci bon oui le mieux c'est d'essayer, donc je vais tester le plus tôt possible!!
Je vais regarder pour ces rom call aussi, si j'arrive à faire comme je voudrais je pourrais utiliser ce prog asm ds un prog en Ti-basic, ça serait impec!!
Posté le 20/06/2008 à 10:43 Membre depuis le 14/06/2008, 25 messages
par contre les rom call fonctionnent aussi sur une TI84+? entre 83+ et 84+, ya quoi qui change? juste la mémoire?
Ouin les prog de TI83+ ne fonctionnent pas sur TI84+... ou alors j'ai merdé qq part
Posté le 20/06/2008 à 12:44 Membre depuis le 23/08/2001, 664 messages
Les adresses des roms call sont différentes sur TI-82, TI-83 et TI-83+. Les TI-84+ et TI-83+ ont les mêmes adresses et peuvent faire tourner les même programmes (s'ils ne sont pas spécialisés TI-84+, genre avec le port USB), pour preuve le répertoire de ticalc.org : http://www.ticalc.org/pub/83plus/asm/ .

Au fait le fichier 83rom.txt que je t'ai donné est pour TI-83. Il te faut utiliser un bon fichier d'en-tête pour 83+/84+. Par ex. http://wikiti.denglend.net/index.php?title=83Plus:OS:ti83plus.inc
Posté le 20/06/2008 à 18:32 Membre depuis le 14/06/2008, 25 messages
Ouaiii génial merci je vais tester ça!! Exactement ce que je cherchais!
Posté le 21/06/2008 à 09:52 Membre depuis le 14/06/2008, 25 messages
Ben en fait ça marche quand même pas... je fais la compilation sur la calto, et quand j'execute il me met error: syntaxe...
je vais essayer avec TI-graph link ! Pourtant c'est un prog pour TI83+
Posté le 21/06/2008 à 11:06 Membre depuis le 15/03/2005, 3470 messages
Nan mais les programmes ASM nécessitent un shell pour être lancé, avec le TI-OS c'est impossible sans passer par d'autres programmes (du genre NoShell).

Et puis tout dépend de ton code aussi, tu devrais le recopier ici smile
Posté le 21/06/2008 à 11:11 Membre depuis le 14/06/2008, 25 messages
ah je crois que j'ai trouvé pq ça ne marchait pas: il faut que je mette Asm(prgmnomDuProg pour l'executer.... j'avais pas mis "Asm(" donc forcement...
Mais bon apparamment si je connecte une led en sortie ya rien qui se passe!! c'est peut être trop rapide??
Posté le 21/06/2008 à 11:27 Membre depuis le 15/03/2005, 3470 messages
Recopie ton code sinon je peux pas te dire.
Posté le 21/06/2008 à 11:42 Membre depuis le 14/06/2008, 25 messages
#define B_CALL(xxxx) rst 28h \ .dw xxxx
#define B_JUMP(xxxx) call 50h \ .dw xxxx

.org 9D95h

ld A,$FC
OUT (0),A
ret ;Retourne au TI-OS

.end ;Fin du programme
END

Voila. Cependant pour mettre la valeur hexa dans A je sais pas trop si ça marche comme ça?
A mon avis c'est tellement rapide que l'on ne le voit pas. La TI exécute une instruction par cycle d'horloge (comme les PICs)?

EDIT: maintenant que j'y pense (en relisant les tutos), $FC ne rentre ptet pas dans le registre A de 8bits, mais dans un registre 16bits il pourrait ptet?
Posté le 21/06/2008 à 11:58 Membre depuis le 14/06/2008, 25 messages
Aha je crois que j'ai trouvé!! il faut rajouter des ()... donc : ld A,($FC)
et apparemment ça marche, j'ai réussit à faire ce que je voulais, mais j'ai planté la calto... :-(
ça plante la calto à chaque fois!!! que faire???
Posté le 21/06/2008 à 12:38 Membre depuis le 15/03/2005, 3470 messages
.nolist
#include "ion.inc"
.list
.org progstart-2
.db $BB,$6D
start:

ld a,$FC
out (0),a
ret

.end
END


Essaye de compiler ça avec le fichier ion.inc, et vérifie que tu envois bien le fichier '.8xp' et non pas '.83p' (s'il est créé) à ta TI.
Posté le 21/06/2008 à 13:55 Membre depuis le 14/06/2008, 25 messages
Mais il va falloir que je l'execute avec ion alors?? c'est pas trop ce que je veux... je vais essayer
Posté le 21/06/2008 à 14:12 Membre depuis le 15/03/2005, 3470 messages
Nan justement, là c'est juste pour avoir les adresses des rom calls/etc... Ça ce lance donc bien avec 'Asm(', étant donné que l'header est modifié.
Posté le 21/06/2008 à 16:33 Membre depuis le 14/06/2008, 25 messages
je compile ça avec Tasm, et il me sort 36 erreurs... uniquement dans le fichier ion.inc (où j'ai copier le contenu du lien que tu as donné):"forward reference in equate" pour pas mal d'instructions, et 2 fautes dans mon fichier (.z80): label not found: <progstart> et unrecognized instruction : <start>

Que fait-je ??
Posté le 21/06/2008 à 17:11 Membre depuis le 14/06/2008, 25 messages
même en virant ce que tasm "n'aime pas", ça plante quand même!!
en plus quand elle plante c'est comme si elle ramait à mort, mais alors un truc de malade!!
Posté le 21/06/2008 à 17:21 Membre depuis le 15/03/2005, 3470 messages
Faut bien mettre les tabulations aussi tongue

Y'en a pas devant les labels (donc 'start:'), et les 'end'/'.list'/'.nolist'. Et chez moi ça fonctionne parfaitement (avec ça) : test3.8xp smile