HexBus/RS232 Réalisation d'une interface USB

Tout sur les TI-99 au CC-40,...

Modérateur : Politburo

Répondre
Keeper
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 237
Enregistré le : 20 juil. 2014 20:01
Localisation : 71

HexBus/RS232 Réalisation d'une interface USB

Message par Keeper »

Hello,
Je recherche des informations sur le port HexBus utilisé sur les TI-74 et CC-40. Le but étant de réaliser une interface USB multifonctions sans utiliser l'IBC de TI qui est introuvable.
J'ai déjà parcouru les documents que l'on peut trouver sur ce ftp (http://ftp.whtech.com/) et réussi à interfacer ma TI-74 avec un µC AVR connecté en USB sur PC.

Lors que je lance la commande OPEN #1, "20.B=4800,P=0", OUTPUT sur la TI, j'obtiens bien la bonne séquence dans mon terminal série.
J'envoie en réponse la séquence indiquée dans les documents sur l'hexbus, mais j'obtiens une erreur 255 (Time-out) sur la TI.
En connectant un oscilloscope pour regarder les données qui transitent, je retrouve bien ma trame message (command message de la TI puis response message de mon AVR).
J'ai vérifié les timings sont bons et si je mets une valeur farfelue dans ma réponse j'ai bien le message d'erreur correspondant.
Seulement après ce premier échange la TI envoie une autre trame message, qui ne correspond à rien d'indiqué dans la doc...

En fait j'ai :
- le premier command message de la TI
14 = Device code (interface RS-232, 14 en hexa c'est bien 20 en décimal)
00 = Command Code (Open)
01 = LUNO (Logical Unit Number) correspond bien au #1
00 00 = Record number
0D 00 = Buffer Length
0D 00 = Data Length (on reçoit d'abord l'octet le moins significatif donc est égal à 000D soit 13 en décimal)
00 00 = Input Buffer Length (0 ce qui signifie que l'on doit retourner la taille de notre buffer)
80 = Device attribute (ici signifie accès en sortie)
Ensuite on reçoit les options : B=4800,P=0
Au total on a bien les 13 octets attendus
- Vient ensuite le response message de l'AVR
04 00 = Data length (4 octets)
00 50 = La taille de notre buffer (50 en hexa = 80 en décimal)
00 00 = Record number (0 puisque non utilisé)
00 = Operation status (OK)

Jusque là pas de souci, sauf qu'après j'ai une autre trame de message initiée par la TI !!
Cette trame c'est :
EB = Normalement le Device code, mais dans la doc EB = 235 en décimal ne correspond à rien 8O
FE = Command Code (Null operation)
puis FE FF FF AF FF FF FF

D'après la doc, le code de Null Operation est utilisé quand il y a une interruption reçue par la TI et qu'elle ne peut pas y répondre. Et une réponse peut être attendue si le Device Code n'est pas 0.
Effectivement c'est le cas ici, mais le Device Code 235 ne correspond à rien !! Et comme mon interface a de toute façon un Device Code de 20, je ne suis pas censé y répondre.

En regardant sur l'oscilloscope, je vois bien que la TI attend une réponse qui ne vient pas d'où l'erreur de Time Out... De plus c'est la TI et pas l'AVR qui initie la communication !!

Je me demande donc si après avoir exécuté l'instruction OPEN, la TI n'envoie pas autre chose. Mais je n'en trouve aucune trace dans la doc. J'ai regardé sur le datasheet de l'IBC, il y a les algorithmes des opérations et là non plus aucune trace d'autre chose à faire après une opération OPEN réussie.

Quelqu'un aurait plus d'informations ou la possibilité de regarder les données échangées sur l'hexbus lors de l'instruction OPEN avec une HX-3000 ??
Ou me dire si avec une HX-3000 et la même commande OPEN que moi, il y a aussi un message d'erreur 255. Peut-être que c'est simplement normal s'il n'y a pas d'autre commande exécutée ensuite.

Ça m'aiderait bien car là, je suis un peu perdu :?
Modifié en dernier par Keeper le 20 févr. 2015 11:21, modifié 1 fois.
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: HexBus/RS232 Réalisation d'une interface USB

Message par gilles »

il y a quelle temporisation entre l'envoi par la TI74 et la réponse de l'AVR ? l'avr répond peut être trop vite...
Keeper
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 237
Enregistré le : 20 juil. 2014 20:01
Localisation : 71

Re: HexBus/RS232 Réalisation d'une interface USB

Message par Keeper »

J'ai 140µs entre le moment où HSK repasse à 1 et où l'AVR le remet à 0, dans la doc il est indiqué 10µs mini et le maxi c'est 20ms.
Je pense que la première trame de message se déroule normalement puisque j'ai bien BAV qui repasse à 1 juste à la fin de la réponse de l'AVR (L'AVR ne fait que lire BAV).

Sur la deuxième trame, je constate bien que BAV reste à 0 pendant plus de 20ms tandis que la TI ne transmet plus rien. D'où je pense le timeout. Sauf que je ne sais pas ce que c'est cette trame.

En haut en jaune BAV et en bas en bleu HSK. On voit bien les deux trames, la première avec la réponse de l'AVR et la seconde avec le timeout.

Image
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: HexBus/RS232 Réalisation d'une interface USB

Message par gilles »

dans la spec que je lis, la reponse devrait plutot etre (et selon ta representation) :
ftp://kirklanduncorked.com/hexbus_cc40_ ... ations.pdf

04 00 : data length plutot sur 16 bits ?
50 00 : accepted buffer length pour 80 char (poids faible en premier)
00 00
00 operation status

ca revient presque à ce que tu écrits mais il manque un 00 à la fin du coup

un truc interessant serait de forcer volontairement des codes d'erreur pour voir s'ils remontent au niveau du basic.
Keeper
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 237
Enregistré le : 20 juil. 2014 20:01
Localisation : 71

Re: HexBus/RS232 Réalisation d'une interface USB

Message par Keeper »

Oui c'est bien 04 00 que j'envoie, je l'ai oublié en le saisissant ici :oops: (j'ai corrigé).

J'ai testé différents codes d'erreur, ils remontent bien.

Enfin la nuit porte conseil on dirait... Je viens de comprendre ce que veut la TI. Elle veut fermer le périphérique !!
Et oui, si je prends le complémentaire de ce que je reçois dans la deuxième trame :
EB FE FE FF FF AF FF FF FF ça me donne 14 01 01 00 00 50 00 00 00
Device 14, Command 01 (Close), Luno 01, Record Number 00 00, Buffer Length 00 50, Data Length 00

Mais quel boulet !! J'ai vérifié à l'oscilloscope, c'est bien ce que je reçois :roll:

Plus qu'à modifier le programme de l'AVR pour qu'il réponde à ça 8)
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: HexBus/RS232 Réalisation d'une interface USB

Message par gilles »

Possible que le basic ferme de lui meme les periph sur inactivité, ou lorsqu'on repasse en mode edition. Integre dans un programme suivi d'une boucle sans fin.
Keeper
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 237
Enregistré le : 20 juil. 2014 20:01
Localisation : 71

Re: HexBus/RS232 Réalisation d'une interface USB

Message par Keeper »

C'est bien ça, si je mets ma commande OPEN en ligne 10 et en ligne 20 GOTO 20, je n'ai pas de message d'erreur :mrgreen:
Merci de ton aide :wink:
Répondre

Retourner vers « Texas Instruments »