http://sites.estvideo.net/yaro/gfx/forumti.gif
@_ö
(01:28)  Bienvenue ! - Inscrivez vous pour poster ! -
@Boo + 14 inconnu(s)

Login :  Mot de passe :      Se souvenir de moi.  Mot de passe perdu ?
/!\:: Cliquez ici pour vous inscrire et poster, créer des sujets ou des forums ! ::/!\
 « - 1/1 - » :: Pages
 Index » Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Prog C TI (19r) » envoyer des données sur le port USB de la 89ti
./Post de départ - envoyer des données sur le port USB de la 89ti
14.01.2008 - 35
12:35  godbod - Posté : 19-01-2011  M
Bonjour,
Après plusieurs recherches infructueuses, je poste pour savoir comment faire pour transférer des données sur le port usb de la 89ti.
Il me semble qu'il faut gérer des interruptions sur le port usb, et placer les données à l'adresse du port ( 0x893C ) ???
Un document complet serait le bienvenu.
Merci
./Publicité AdSense
./1
27.04.2006 - 37937
13:33  @Zerosquare - Posté : 19-01-2011  @_ö
Pourquoi avoir ouvert un nouveau sujet ? #confus#
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau

« Sur Atari tout le hardware tu trouvera, le driver toi même tu le codera » — GT Turbo
./2
16.06.2001 - 59980
13:56  squalyl - Posté : 19-01-2011  M
godbod (./1) :
Un document complet serait le bienvenu.
et plus vite que ça.
./3
18.06.2001 - 25908
14:20  Folco - Posté : 19-01-2011  M
Ben il demande un tuto et remercie #confus#
avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./4
14.01.2008 - 35
22:39  godbod - Posté : 19-01-2011  M
Zerosquare (./1) :
Pourquoi avoir ouvert un nouveau sujet ? #confus#

J'ai tout simplement pensé que ce sujet susciterais beaucoup d'attention et de questions "de ma part en tout cas". A force de trop vouloir subdiviser les problèmes en plus petits, j'ai voulu séparer les deux postes... Mais si ça dérange vraiment, il faurdrait l'effacer et reprendre sur le premier ? #roll#

squalyl (./2) :
godbod (./1) :
Un document complet serait le bienvenu.
et plus vite que ça.


???? j'ai pas du tout voulu dire ça... non du tout ... je remercie d'avance une personne qui m'apporterait son aide. Ce sujet me tient à coeur. :)
Bonne soirée.
./5
16.06.2001 - 59980
23:21  squalyl - Posté : 19-01-2011  M
quelques infos, mais en gros on va répéter ce qui a déja été dit:

1 - il y a très peu d'infos sur ce port usb

2 - envoyer des données sur un port usb ne veut rien dire. un port usb n'est pas du tout comme un port série , ou même le port link des anciens modèles.
Tu ne peux pas envoyer un truc comme "hello world" et le récupérer sur le PC.

D'ailleurs , USB n'est pas un port mais un BUS.

cela veut dire qu'il faut des développements complexes pour en suivre le protocole à la lettre.

Je vais en dire ce que je sais.

Sur la paire D+/D-, on envoie des paquets de données formattés très spécialement. Ce niveau n'est pas géré par du logiciel mais par un bloc hardware appelé Serial Interface Engine (SIE). Ce bitoniau formate les paquets, ajoute les parités, et s'assure que les lignes de données ne restent pas trop longtemps à zéro ou à un, afin de pouvoir reconstituer facilement l'horloge. Ca s'appelle le bit stuffing et on a pas à s'en occuper.

Chaque paquet correspond à une "request", le PC commence toujours à envoyer une request, et le périphérique répond.

Un bus USB supporte 127 périphériques.

Un périphérique est composé d'endpoints, qui sont de petits FIFO dans le périphérique (la TI) que le PC pourra remplir ou demander à lire.
La configuration précise de ces 'endpoints' est définie dans ce qu'on appelle des descripteurs. Il y a des descripteurs de périphériques, de configuration, d'interface, de fonction et d'endpoints.

Au moment ou le périphérique est branché, il prend automatiquement l'adresse ZERO. Le PC lui envoie alors une request pour que le périphérique réponde avec son descripteur de périphérique. a ce moment, windows peut afficher "Nouveau périphérique détecté".

Le PC demande ensuite les descripteurs de chaines et a ce moment, windows peut afficher le nom du bidule branché.

le PC demande alors au périphérique (je vais écrire device, c'est plus rapide) de lui donner ses descripteurs d'interface. A ce moment, le PC peut utiliser cette info pour charger un pilote, ou utiliser un pilote interne si il reconnait une configuration standard comme "souris" "clé USB" ou "clavier".

Quand le PC a bien accepté le périphérique, il affecte une adresse au périphérique. Il est alors prêt à accepter une autre connexion sur le bus.

Maintenant, pour communiquer.

- soit le PC a un truc a dire au périphérique. Ton pilote va créer une request "write" (je crois qu'on l'appelle IN car on se met a la place du device) avec des données applicatives destinées à un des endpoints. l'OS du PC décide quand il doit l'envoyer. Quand le SIE du device reçoit le paquet, il le place dans le FIFO correspondant puis génère une interruption. Le device se réveille et fait ce qu'il faut avec ces données.

- soit le device a un truc à dire au PC. ATTENTION subtil c'est plus compliqué. Le device ne peut pas parler au PC. Tout ce qu'il peut faire, c'est remplir un endpoint qui a été configuré en OUT. Et c'est le PC qui interroge régulièrement. A l'interrogation suivante, le PC démarre la lecture, puis le SIE génère une IRQ dans le device pour dire "lecture terminée". A ce moment le device peut se préparer pour mettre les données suivantes dans le FIFO.

Donc 'envoyer des données sur le port usb de la ti', tu vois, c'est un peu compliqué car il faut savoir comment configurer tout ça. Ca implique des tas de registres à positionner correctement dans la TI, et donc pas mal de logiciel à écrire. Tu t'en sortiras pas avec une sorte de puts("coucou");

Et ce qui nous manque donc, c'est la doc de tous ces ports, des efforts ont été faits pour reverse engineerer tout ça mais c'est pas gagné, sur la ti89ti.

Et donc ne parlons même pas de la possibilité pour la ti d'accepter des périphériques. C'est possible, car ce sont des devices USB OTG (on the go) mais c'est encore plus complexe, car c'est à la calc de s'occuper des associations de périphériques.

Je tire la plupart de ce que j'ai compris d'ici : http://www.beyondlogic.org/usbnutshell/usb1.shtml
./6
27.04.2006 - 37937
23:30  @Zerosquare - Posté : 19-01-2011  @_ö
(t'es sûr pour le sens des tokens IN/OUT ? dans mon souvenir, c'était l'inverse, mais j'ai pas touché à l'USB depuis des lustres)
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau

« Sur Atari tout le hardware tu trouvera, le driver toi même tu le codera » — GT Turbo
./7
16.06.2001 - 59980
00:01  squalyl - Posté : 20-01-2011  M
non, je suis pas sur, c'est à vérifier. Mais ça m'avait choqué, donc ça devait être le truc "pas normal" (genre in = lecture sur le device)

vala:

paquets:
# In - Informs the USB device that the host wishes to read information.
# Out - Informs the USB device that the host wishes to send information.

c'est pareil les endpoints
un EP IN sert aux transferts device->host
un EP OUT sert aux transferts host->device

http://www.beyondlogic.org/usbnutshell/endpoint.gif
./8
14.01.2008 - 35
15:01  godbod - Posté : 20-01-2011  M
Okay, merci je comprends un peu mieux le programme de Brandom maintenant ... le fameux jail break de la PS3... !!! :)
A bientot
./9
27.04.2006 - 37937
20:16  @Zerosquare - Posté : 20-01-2011  @_ö
squalyl : ouais voilà, c'est bien ce dont je me souvenais :)
Le sens IN/OUT est considéré du point de vue de l'hôte, en fait (vu que c'est lui qui envoie les tokens).
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau

« Sur Atari tout le hardware tu trouvera, le driver toi même tu le codera » — GT Turbo
./10
14.01.2008 - 35
23:37  godbod - Posté : 03-06-2011  M
j'avoue que c'est complexe tout ça...
./11
28.10.2001 - 7411
09:14  Lionel Debroux - Posté : 04-06-2011  M
Plutôt, oui.
L'USB, c'est simple pour les utilisateurs, mais merdique pour les programmeurs :)
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./12
14.01.2008 - 35
22:55  godbod - Posté : 04-06-2011  M
Oui j'avoue. J'essaie actuellement faire un programme minimaliste à partir du porgramme de BrandomW (Jail Break PS3) Je veux juste écouter les paquets USB arrivant sur la ti.
Il y a un truc que je comprends pas dans le style de programmation de Brandom, il met les prototypes dans le fichier main mais il implémente les fonctions dans d'autre fichiers...
./13
18.06.2001 - 25908
08:44  Folco - Posté : 05-06-2011  M
Ben ça change quoi en fait ? Il pourrait les mettre dans un header et inclure ce header, ça serait pareil %)
avatar<<< Kernel Extremist©®™ >>> WIP : r6 - 2014-03-08

Les ministres ne sont que des commis chargés d'exécuter les ordres des grands banquiers, des pantins dont la Haute Banque tire les ficelles. Alexandre Millerand, président du conseil des ministres...

Un des bienfaits de la Révolution est d'avoir livré la France aux hommes d'argent qui, depuis cent ans, la dévorent. Anatole France
./14
14.01.2008 - 35
13:10  godbod - Posté : 05-06-2011  M
Rien de grave en fait... #roll# tu peux pas savoir, en cours on est noté pour la structuration de nos programmes... lol
./15
28.10.2001 - 7411
14:38  Lionel Debroux - Posté : 05-06-2011  M
BrandonW pourrait en effet utiliser des headers pour déclarer les prototypes plutôt que le main, mais ça n'est pas trop grave en effet, tant que les prototypes sont synchronisés :)

tu peux pas savoir, en cours on est noté pour la structuration de nos programmes...

Pas tout ce qu'on apprend en cours n'est applicable dans le cadre d'une programmation sur plate-forme embarquée, qui plus est dans le cadre du hobby ;)
Pour ne citer qu'un exemple: en cours, je doute qu'on ne t'ait pas appris que "goto", c'est mal. Et qu'on te l'ait dit plutôt trois fois qu'une.
Mais dans le monde réel, quand on programme sur plate-forme embarquée, il est intéressant d'utiliser des goto à bon escient (faut pas faire n'importe quoi, évidemment ^^), pour des raisons d'efficacité.
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./16
14.01.2008 - 35
16:00  godbod - Posté : 05-06-2011  M
hum... merci pour le conseil... #chinois#. Par contre j'ai 2 questions qui me tracassent,

../..
 
// il s'agit d'un code sur le traitement de commandes envoyées par un host USB.
 
switch (command)
		{
			case 0x12: //inquiry
			{
				//Send back what it wants
				unsigned char response[36] = {0};
 
				response[1] = 0x80; //removable media
				response[3] = 0x01; //because the UFI spec says so
				response[4] = 0x1F; //additioanl length
				memcpy(response+8, "BrandonW", 8);
				memcpy(response+16, "USB Flash Drive", 15);
				memcpy(response+32, "0.01", 4);
 
				//Send it off
				USB_SendBulkData(0x01, response, 36);
				break;
			}
../..
 
 


1. dans ce code source, les lignes suivantes :
memcpy(response+8, "BrandonW", 8);
				memcpy(response+16, "USB Flash Drive", 15);
				memcpy(response+32, "0.01", 4);


correspondent elles à la description d'un paquet de quelle taille ? à mon avis il s'agit d'un paquet de 64 octets ??? et pourquoi écrire à ces endroits précis ?

2. l'envoi de bulk :
USB_SendBulkData(0x01, response, 36);


le chiffre en hexadécimal, 0x01 correspond t-il au descripteur d'Appareil du protocole USB ?
./17
14.01.2008 - 35
00:07  godbod - Posté : 08-07-2011  M
up, en fait selon Brandon, le 0x01 serait en fait l'endpoint sur lequel on communique. Pour la taille je me demande toujours...
./18
27.04.2006 - 37937
00:11  @Zerosquare - Posté : 08-07-2011  @_ö
C'est expliqué dans la doc USB officielle (bon courage ! :D)
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau

« Sur Atari tout le hardware tu trouvera, le driver toi même tu le codera » — GT Turbo
./19
14.01.2008 - 35
12:19  godbod - Posté : 08-07-2011  M
oui d'après la doc justement il s'agit d'un paquet de 64 octets, ce que m'a confirmé Brandon. Cependant j'ai posé la question parce que si je calcul manuellement, je tombe sur un paquet de 36 octets en fait.
Personnellement je sais pas que fait on des 28 octets qui restent... #confus#
./Publicité AdSense
 « - 1/1 - » :: Pages
 Index » Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Prog C TI (19r) » envoyer des données sur le port USB de la 89ti

./Poster un nouveau message. - Ouvrir dans une nouvelle fenêtre
Login : Mot de passe :

url - image - media  
spoiler - pre - fixed
quote - box - hr
poll - code





Smileys
Smileys perso
Pièce jointe
     Flood control (?) :    
Les messages postés sont la propriété de leurs auteurs. Nous ne sommes pas responsables de leurs contenus.

» yN ©1624 - Aide / Charte / Crédits
90ms | Statistiques