Kristaba Hors ligne Statut: Membre
Niveau: Confirmé
Points: 149
Défis: 0 Email | Message
Posté le 02/05/2008 18:20
Besoin d'aide pour projet Hardware Graph 35:
Bonjour tout le monde !
Bon,j'ai décidé de poster aujourd'hui en voyant le message de Ibi sur une connexion ADSL sur graph 35+...
Alors voilà mon problème...
Cela fait quelques semaines que je cherche à comprendre comment faire communiquer un Microcontrôleur (un simple PIC 16F84A pour mes tests)...
Je suis tombé il y a deux jours sur cette page : Manuel Graph 85-Slim (allez voire page 12)...
D'après ce qu'on peut y trouver, une graph low-gen type Graph 35+ communique de cette façon :
-Communication série asynchrone
-Méthode Start-Stop avec 1 bit Start, 2 bits Stop pour la réception et 3 bits Stop pour l'émission
-Une vitesse de 9600 bits/seconde
-Méthode semi-duplex (la calto peut donc emmètre OU recevoir)
-8 bits d'informations utiles par envoi
-Je crois qu'il n'y a pas de bit de parité (mais pas sûr :/ )
On va dire que c'est déjà pas mal, mais je n'ai pas d'oscilloscope en état de marche chez moi...
Je suis donc dans l'impossibilité de vérifier plusieurs choses, comme la façon dont la calculatrice de émission peut savoir si l'autre calculatrice a reçu le message (ce qui fait qu'il n'y a pas de Com error )...
Bref, j'ai déjà des idées d'interfaçage entre deux casio (MP moi pour plus d'infos ) dans le but de créer des jeu multi-joueurs... (enfin, pas n'importe quoi hein! :o Disons que ça devrait marcher seulement avec des jeu de stratégie ou de combat au tour-par-tour >_<' )... Mais je peu rien faire tant que je n'aurais pas compris exactement comment la communication fonctionne :/ !
Alors, amis de l'électronique, si vous avez compris mon message, AIDEZ-MOI! >_<'
*pense à Kucalc... peut-être *...
PS::Je pense qu'à partir du moment où on comprendra exactement la façon dont communique les graph, -presque- TOUT sera imaginable >_<'! Genre un écran de portable piloté par des instruction simples venants de la graph... ou une connexion Internet XD!
*m'enfin, bon, faut p'têtre pas trop que j'rêve non plus :/ *
Je vous ferez part de mes avancées... si j'avance >_<'!
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
Juste je te conseille le 16f84-20P (plus performant)
je te file un plan : fichier joint
par contre eux il font ça avec un 16C84.
(programmé pur faire une communication infrarouge)
mais par contre ca te montre comment le relier ...
Bonne chance !
Kristaba Hors ligne Statut: Membre
Niveau: Confirmé
Points: 149
Défis: 0 Email | Message
Posté le 03/05/2008 18:24 |
Merci beaucoup pour ta réponse Ibi !
En effet, le plan de connexion va sûrement m'aider pour les tests ! Par contre, il est beaucoup plus facile de programmer un PIC pour une TI (le port de communication de la TI doit être directement adressable en ASM) que sur une Casio (où le port de com fonctionne selon une norme bien précise, donc difficilement interprétable par le PIC)...
Et j'ai cru comprendre que tu allait essayer de créer un convertisseur WIFI<-Sb-62...
Si c'est le cas, on peut peut-être s' entre-aider
Au fait, la connexion SB-62 est à 9600 baud (dans le sens de bits/s), et doit envoyer 4 à 5 bits "inutiles" par octet envoyé (8 bits). Donc, après petit calcul, on peut dire que cette connexion permet entre 746 et 800 Octets/s (sur les graph < 85) :o!
C'est plus qu'honorable quand même, en rapport à la mémoire des caltos >_<' !
----------------------------------
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
Pylaterreur Hors ligne Statut: Membre
Niveau: Confirmé
Points: 1507
Défis: 8 Email | Message
Posté le 03/05/2008 20:52 |
je comprends rien du tout
----------------------------------
Graph 85 SD
Je reprends la programmation de mon addin Finale ! (ouverture du fichier contenant la partition et analyse presque terminées )
Super!!!
Comme dit plus haut, je n'ai pas d'oscilloscope et autre analyseur logique (pas envie de mettre 600€ là dedans tant que ce n'est qu'un p'tite passion )... J'ai donc dû ruser un peu. J'ai donc programmer AsynCalc Analyseur, qui fonctionne sur un PIC 16F84A (les plus courant, en gros...). Ce programme me permet de d'enregistrer les donnée qui circulent dans le cable Sb-62, afin de les analyser.
Pour ceux que ça intéresse (très peu, je suppose, mais bon... on sait jamais ), j'ai mis les sources Assembleur de mon programme béta... (en gros, le programme est très limité : seulement les deux premiers octets sont enregistrés, et il faut vérifier plusieurs fois, car je n'ai pas encore mis "d'anti-erreur"... mais je n'en n'aurait sûrement pas pour très longtemps à changer ça ).
Bref, je poste surtout pour dire que mon projet avance... un peu -_-' !
PS :: Je vais quand même vous faire un p'tit schéma du circuit >___<'...
EDIT :: MAJ du 8/05/08
----------------------------------
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
Ibi Hors ligne Statut: Membre
Niveau: Elite
Points: 576
Défis: 114 Email | Message
Oh :o!
Un geek ici? >___<'
Je vais mettre à jour le programme, et je vais y ajouter un schéma vite-fait que j'ai fait hier ...
Maintenant, le programme est capable de lire et d'enregistrer en EEPROM 10 octets envoyés par la machine émettrice, ainsi que 10 donnée envoyés par la machine réceptrice...
Bref, je pensais pouvoir récupérer quelque chose d'intéressant, mais à la place... seulement dix bits émis, et tout le reste est à l'état haut (1) :o!
Dans ce qui est émis, on dirait un "code fonction" envoyé, qui est, apparemment, (en comptant le bit start) 64 3F. En enlevant le premier bit à 0 (le bit Start), on obtient donc l'octet de données émis : 11001000, soit C8 en hexadécimal, ou encore 200 en décimal !
On peut aussi remarquer que 64 3F contient apparemment le bit de parité (10ème bit), mais celui-ci est apparemment toujours égale à 0 (avec les autres données émises que j'ai analysé) :o!
Bref, je pense qu'il y a un long temps de réponse après l'émission de la première donnée... Je pense que la calto "attend" un réponse du recepteur... Je vous dirais ça dans 3 jours !
Bon week-end à tous ceux qui font le pont (y doit bien y en avoir ) >_<' !
----------------------------------
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
Ibi Hors ligne Statut: Membre
Niveau: Elite
Points: 576
Défis: 114 Email | Message
Posté le 08/05/2008 15:02 |
Bonne chance pour ton test et aussi bon week-end si toi aussi tu fait le pont !
En fait comme je n'ai que des ti pour les calculatrices graphiques et que chez ti la transmission ti <> ti est automatique même dans un prog. en basic je ne m'était pas trop penché sur le sujet.
Sinon à propos de ca :
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
N'y a t'-il pas une arnaque de type 'ligne téléphonique ou internet surtaxée lorsque l'on télécharge eu.exe ?'
Kristaba Hors ligne Statut: Membre
Niveau: Confirmé
Points: 149
Défis: 0 Email | Message
Posté le 14/05/2008 00:04 |
Encore des nouvelles !
J'ai enfin trouvé comment la calculatrice "sait" qu'une autre calculatrice est entrain de recevoir lorsqu'elle émet >_<'!
En fait, je suis entrain de découper, étape par étape, l'envoi de fichier... Voici ce qu'il ressort de ces premières études (Attention : comme le montage n'est pas encore "stabilisé", il y a un risque assez important d'erreur... c'est pour ça qu'il faudra que j'approfondisse plus mes résultat et mon programme ) :
Lors de l'émission, la calculatrice A (donc celle qui émet) envoi l'octet 0x68. Durant quelques dizaines de cycles de réception, elle attend un message 0xC8, qui est la preuve qu'une autre calto B est prête à recevoir les donnée.
Jusqu'à là, tout est sûr à 100%, puisque j'ai été capable de faire croire à la calto A que mon PIC était une calto prête à recevoir !
Par contre, à partir d'ici, ce sont des résultats plus hypothétiques (pas encore validés :/) :
Après réception de 0xC8, la calto A attend quelques cycles, puis commence à émettre un message "d'en tête", d'environs 12 ou 13 octets (je pense que ce message contient toutes les données "vitales", tel que la taille de ce que l'on envoi, ainsi que son type (programme, matrice, liste, ect...)). Puis vient le nom du programme, codé sur 8 octets. Ensuite, on voit une bonne dizaine de 0xFF. Et enfin, un message sur 2 octets (je n'ai plus son contenu ici :/ ). Ce message doit être la demande à la calto B de l'existence ou non d'un programme de même nom, et aussi peut-être de la possibilité, en terme de mémoire, de l'écriture du fichier. En bref, la Calto B doit envoyer a la calto A un message qui peut vouloir dire :
*Tout est OK, prêt à recevoir les donnée!
*Un fichier du même nom existe, et le propriétaire de Calto B ne veut pas le remplacer, fin de transmission!
*La mémoire est insuffisante, fin de transmission!
:)
Il ne me reste plus qu'à trouver les valeurs de ces messages, et je serais en mesure de contrôler des transferts de fichiers -_-' !
Pour ce qui est de LA principale cible (l'utilisation de send() et receive() ), je ne fais que "patiner" :/.
En gros, ne possédant pas de Casio Data Analyseur, je dois tester des messages "au hasard" et observer la réaction de la calto >_<'...
Mais bon, ça avance pas par pas quand même .
Ibi> Pour le message de ma signature, je me souvenais même plus que j'avais encore ce liens >_<'... Donc, si tu veux savoir, je n'ai pas eu d'arnaques quelconque en téléchargeant le fichier, mais, bien sur, c'est une arnaque dans le sens "on gagne 10 cent €/mois" en gros ... j'avais dû mettre ce liens juste après l'avoir télécharger, pour essayer d'avoir des "filleuls", mais bon, avec un peu de recul, on s'aperçoit vite que ça ne vaut même pas la peine de le télécharger ... Dès que je trouve un autre truc à mettre, je le change, tient! -_-'
*regarde l'heure, et se dit que si il ne part pas se coucher maintenant, un "mamanencolère" va débarquer dans sa chambre *
----------------------------------
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
Jeffprod Hors ligne Statut: Membre
Niveau: Vétéran
Points: 1650
Défis: 56 Email | Message
Posté le 14/05/2008 01:05 |
Bien joué ! Bientot des CS en cours.... on arrete plus le progres !
----------------------------------
FX 82c, FX 92 college, Graph 65,Graph 85 SD
Pierrotll En ligne Statut: Membre
Niveau: Confirmé
Points: 1184
Défis: 9 Email | Message
Posté le 14/05/2008 20:22 |
Oui, c'est bien ça, bon travail.
Bon courage pour la suite.
Kristaba Hors ligne Statut: Membre
Niveau: Confirmé
Points: 149
Défis: 0 Email | Message
Posté le 15/05/2008 15:19 |
Merci beaucoup Pierotll !
Jeffprod> Franchement, si quelqu'un s'y connait en communication par ondes radio (j'ai jamais touché à ça :/), on peut très bien imaginer un truc plus drôle : un chat sans-fil avec une distance maxi de 20-30 mètre facilement je pense -___-' ! *arrête de rêver et retourne à la dure réalité...*
En fait, la "dure réalité", c'est surtout que... je suis vraiment stupide !
Comme je programme en général la nuit (23H-1H en règle générale :o), je pense que j'étais pas bien réveillé, car en me penchant sur mon programme tout à l'heure, j'ai vu... que j'avais fait les deux plus grosses erreur que je pouvais imaginer XD :
1) Je me suis trompé dans le sens de réception des bits (pour expliquer le plus simplement possible -_-' , c'est que, dans un octet (= 8 bits), on a l'habitude de mettre le "bit de poids faible" à droite (Ex : 02 en décimale sera codé en binaire 00000010), donc représenté "à la fin" de l'octet. En revanche, lors d'un envoi par communication série 232, le bit de poid faible est à gauche (on inverse le sens de lecture, quoi... Ex : 02 sera envoyé 01000000)... bref, je me suis planté au moment ou j'ai fait le programme, ce qui m'empêchais de recevoir des données compréhensible ).
2) A cause d'une erreur studipe de gestion des interruptions, dans la version actuelle de mon programme, je me retrouvais avec les premiers bits 0 enlevés (j'avais donc un décalage de lecture, car si je devais recevoir, par exemple, 00010100, je recevais 10100000 (les premiers zéros sont enlevés, quoi )... )...
Bref, autant dire que je ne risquais pas de comprendre quelque chose au codes que je recevais XD!
Comme je viens de corriger ces deux bugs majeurs (qui transformaient, par exemple, "AZAZ" en un code absolument imcompréhensible composé de '@', de '$' et autres '#' XD), j'ai fait le premier test "réel" pour observer les données que je recevais... Je vais donc commencer a faire un tableau de correspondances entre caractères d'un programme et octet envoyé par la machine !
Déjà, je peux vous dire que ce n'est pas codé en ASCII !
Les lettres de 'A' à 'H' sont codées, dans l'ordre alphabétique et en écriture hexadécimal (pour les ignares >_<', c'est l'écriture des nombre en base 16, qui utilise les chiffre de 0 à 9, et les lettres de A à F... pour plus d'info, google est votre ami ), 81, 82, 83, 84, 85, 86, 87et 98...
Quand au chiffres de 0 à 9, ils sont codés, dans l'ordre numérique et en écriture hexadécimal, 60, 61, 62, 63, 64, 65, 66, 67, 78 et 79...
Bon, allez, je commence à faire un superbeee tableau de correspondance... Si je le fini avant ce soir, j'éditerais ce post. Sinon, je re-posterais demain pour annoncer mes "découvertes du jour" XD!
PS :: Dès que je l'ai fini, je commence à étudier l'en-tête de plus près pour créer des routines de communication complète entre calculatrice et PIC... Par contre, je le re-rappel , il s'agit ici du plus simple à analyser : un échange de programme lancé manuellement (impossible depuis un programme, quoi :/). Donc ce seras déja "un petit pas pour moi", mais pas encore "un grand pas pour le casio-programmer" XD...
PPS :: Ah, oui, j'allais oublier... j'essaie de faire un petit effort pour que les gens comprennent ce que je dis sans avoir fait de longues études d'informatique ou être passionné , mais c'est assez dur, donc désolé à ceux "qui-ne-me-comprennent-pas-quand-je-parle-sur-ce-topic" ...
----------------------------------
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
Pylaterreur Hors ligne Statut: Membre
Niveau: Confirmé
Points: 1507
Défis: 8 Email | Message
Posté le 15/05/2008 17:02 |
et où pourrait-on trouver de la documentation ou des tutos pour les débutants ?
----------------------------------
Graph 85 SD
Je reprends la programmation de mon addin Finale ! (ouverture du fichier contenant la partition et analyse presque terminées )
Kristaba Hors ligne Statut: Membre
Niveau: Confirmé
Points: 149
Défis: 0 Email | Message
Posté le 15/05/2008 18:39 |
Pylaterreur-- THE tuto sur les PIC, c'est celui (ou plutôt ceux ) de Bigonoff.
(quand tu arrive sur le site, tu clique sur "Entrer sur le site", puis tu descend sur la page -il y a de grands paragraphes de politique... tu peux les passer, mais tu peux aussi les lire : il a, selon moi, un bon point de vue poitique -.Enfin, tu clique sur "Cours sur les PIC, Part1 (le 16F84), et tu le télécharge ).
C'est vraiment un bon tuto, car TOUT est expliqué depuis le début !
Par contre, tu ne peux pas faire la partie Pratique si tu n'as pas du matériel plutôt pas donné (un programmateur de PIC, des PIC16F84A -que tu peux commander gratuitement, en temps qu'échantillon, sur le site de Microchip -, ainsi que le matos "de base" d'électronique (au minimum une platine d'essai et des composants "classiques" comme des diodes, résistance, ect...). Bref, si tu veux te lancer dans les PIC, faut que tu sois assez motivé !
Par contre, comme je le disais plus haut, il explique très bien les bases "théoriques" !
Bon, maintenant, venons-en au deuxième sujet du message : JE SUIS VRAIMENT DE PLUS EN PLUS STUPIDE! o/
En gros, la prochaine fois, il va falloir que j'attends un peu avant de parler ...
J'ai trouvé un autre "bug" au programme -____-' : j'ai trop la flême d'expliquer le détail , mais ça me changeait les caractères reçus :o! Donc cette fois, "j'espère" pouvoir dire sans me tromper *Se met a prier >_<'* que finalement, c'est codé en ASCII (au moins pour les lettres et les nombres ). Donc je comprend enfin l'entête et la fin des message :
En ASCII, ça donne, pour l'entête :
[Syncronous Idle]:TXT[NUL]PG[4 octets qui sont (la taille du programme)-14 en octet][8 caractères/octets qui sont le nom du programme]NL`:
(Syncronous Idle et NUL sont des caractères ASCII spéciaux...)
Par exemple, si on a un programme de 45 octet, qui se nomme "TEST N12", l'entête sera :
[Syncronous Idle]:TXT[NUL]PG[Un nombre hexadécimal qui est 00 00 00 1F]TEST N12NL`:
Voilà, j'espère que je ne vais pas m'apercevoir que j'ai oublié un détail dans une heure ... mais bon, il faut faire des erreurs pour réussir, non?
----------------------------------
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
Pierrotll En ligne Statut: Membre
Niveau: Confirmé
Points: 1184
Défis: 9 Email | Message
Posté le 15/05/2008 19:15 |
Ça me surprend que ce ne soit pas du ASCII, je pense que tu as peut etre fais une petite erreur. Au moins pour les caractères simples genre les lettres, les chiffres, parenthèses etc.
Par contre, les caractères spéciaux, genre While, sin sont codés sur 2 octets.
PS: serait-il possible de redimensionner l'image d'Ibi svp, parce que je galère un peu avec mon 17", merci.
Pylaterreur Hors ligne Statut: Membre
Niveau: Confirmé
Points: 1507
Défis: 8 Email | Message
Posté le 15/05/2008 21:10 |
merci pour les liens, Kristaba .
@pierrotll : c'est cool les 22" (non, sans rire, essayez de pas mettre trop de grosses images, c'est pas cool pour ceux qui ont pas un gros écran et une petite connexion internet ).
----------------------------------
Graph 85 SD
Je reprends la programmation de mon addin Finale ! (ouverture du fichier contenant la partition et analyse presque terminées )
Kristaba Hors ligne Statut: Membre
Niveau: Confirmé
Points: 149
Défis: 0 Email | Message
Posté le 15/05/2008 22:31 |
Pierrotll> Sisi, en fait, c'est de l'ASCII (je l'ai dit dans le deuxième message :o...
finalement, c'est codé en ASCII (au moins pour les lettres et les nombres )
Par contre, tout ce qui est caractère spéciaux et programmation n'est pas ASCII, et, comme tu le dis, (je viens de vérifier), pas mal d'instructions sont codés sur 2 octets (ça va être plus dur )...
Au fait, j'ai trouvé ça pour m'aider à déchiffrer 2/3 trucs :table complète ASCII... C'est vrai que, en dehors des caractères simples, je n'avais jamais regardé la partie "cachée" de l'ASCII :o...
Au fait, bonne nouvelle : j'ai trouvé l'octet qu'émet la fonction send() et receive() pour demander si un périphérique est branché : c'est 0x15 (INFO : le 0x ne veut pas dire "zéro fois" ou "fois zero", mais signale que le nombre qui suit est en Hexadécimal :o!). Par contre, je suis sur que je n'ai pas fait d'erreur, et pourtant ça me parait étrange de trouver le MÊME octet pour chacune des deux fonctions :o! Et en plus, le must du must, j'ai trouvé, en essayant des combinaison au hasard :o, l'octet qui doit être émis par le périphérique pour répondre "qu'il est présent sur la ligne" : c'est 0x13 apparemment (en fait, c'est vraiment plus dur d'analyser send() et reveive(), car comme je n'ai pas de Casio Data Analyser, je dois tout tester depuis le PIC :/, je peux pas simplement observer ce qui est reçu/emis comme entre deux casio lors de la transmission manuel ). Je sais que c'est cet octet car la calto m'envoi une réponse de plusieur dizaines de bits (c'est balo par ce que mon PIC n'a pas assez de mémoire pour tout enregistrer XD), mais je pense que je (le PIC) doit aussi répondre autre chose, car ça me met quand même Com Error... Bref, c'est pas fini, mais j'ai déja des élements de réponses !
PS :: Par contre, je vais avoir un peu plus de mal pour ce qui est des échanges entre deux Casio... puisque je viens de m'apercevoir qu'au lieu de faire un backup sur ma calto, je l'ai fait sur celle de ma soeur, qu'elle m'avait prêtée en me disant bien "T'efface rien, hein! J'en aurait besoin pour le bac : y a presque tout mes cours!!!". Je lui avait répondu "Mais t'inquiète pas! Je suis pas débile, je sais ce que je fait là :o!".... Donc, je doute qu'elle me la prête à nouveau, même après lui avoir réécris toutes ses formules de Math/Physique XD...
EDIT :: Une p'tite photo du montage :
----------------------------------
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
Kristaba Hors ligne Statut: Membre
Niveau: Confirmé
Points: 149
Défis: 0 Email | Message
Je vous annonce que c'est officiel : je viens de me faire trucider par ma sœur et je crois que je peux toujours rêver pour lui demander sa calculatrice -_-' ...
M'enfin, bon, j'ai -presque- le principal pour le transfert de programme (ci-joint, le début de la "liste de conversion" symbole - hexadécimal ). Il faut donc que je programme vraiment mon PIC pour qu'il émule à 100% une Casio en réception >_<'... Ca va pas être une mince à faire, mais de toutes façon, j'aurais dû le faire un jour où l'autre, alors autant maintenant, non?
Ah, et encore une chose, au cas ou certains suivent le "projet", j'annonce que je ne suis pas là de Dimanche à Vendredi, pour cause de voyage scolaire (ben, ouai, faut bien que je sorte un peu de mon trou qui me sert de chambre XD)...
----------------------------------
Si vous voulez gagner quelques euros tout en surfant sur internet, ne cliquez surtout pas ICI !
Pierrotll En ligne Statut: Membre
Niveau: Confirmé
Points: 1184
Défis: 9 Email | Message
Posté le 17/05/2008 09:53 |
une mince à faire
Ça m'étonnerait que ça s'écrive comme ça
(Toujours pas moyen de redimensionner le schéma s'il vous plait?)
Zefortiche Hors ligne Statut: Super admin
Niveau: Confirmé
Points: 5068
Défis: 51 Email | Message
Posté le 17/05/2008 12:06 |
J'ai mis le schéma en fichier joint.
C'est mieux, non ?
----------------------------------
Calculatrices : Graph 35+, G100+
Pierrotll En ligne Statut: Membre
Niveau: Confirmé
Points: 1184
Défis: 9 Email | Message