|
Bas de page | |
---|---|
Auteur | Sujet : [PIC] Problème de mise en place I²C |
Juju_Zero Live Fast, Die Young | (je mets ca en sous cat C sans grande conviction mais y a rien de plus approprié) Bien .. Dans le cadre d'un projet que je dois réaliser en 2e année de ma formation en école d'electronique, je dois mettre en place une liaison I²C entre un microcontroleur et une EEPROM d'une part, et entre un microcontroleur et un accélérometre d'autre part (qui dispose d'un bus I²C ou SPI, au choix) .. Pour diverses raisons, j'ai donc choisi un 18F4550, et pour la RAM, une 24AA256 (toutes 2 de Microchip) Dans un premier temps, j'ai utilisé le code disponible sous la forme de l'Application Note 997 (dispo sur le site de Microchip) .. Ca fonctionnait (les formes d'onde vues sur un oscilloscope etaient correctes, et correspondaient bien a ce qui etait attendu), mais pas exactement comme je le souhaitais ... Bref, j'ai donc ensuite tenté de revenir à la base, et de tenter de programmer le truc moi meme .. En utilisant les différents registres dont dispose le 18F4550, qui permettent de gérer ca en hard (alors que le programme de l'AN997 gérait ca en soft) : SSPCON1,SSPCON2,SSPADD,SSPBUF et autres J'ai donc utilisé un code ressemblant a celui ci : http://www.google.fr/codesearch?hl [...] 52.c#first
Bref .. Le code compile sans probleme, pas d'erreurs dans MPLAB, etc ... Je programme le pic (avec l'ICD2 de Microchip), enfin a priori y a aucun probleme dans l'interface ordi -> pic .. Je lance le programme .. Déja, rien ne se passe sur l'oscilloscope .. Et ensuite, le programme stoppe au premier while(!PIR1bits.SSPIF) .. Vérification faite, le SSPIF reste désespérement à 0, alors qu'il devrait se mettre a 1, tel que précisé dans les datasheets et tous les documents sur l'I²C que j'ai pu trouver .. Mais bon, le premier problème est déja que rien ne bouge sur l'oscillo, alors qu'on devrait voir un start Ce qui me fait penser que c'est peut etre un problème de montage, pourtant c'est pas bien sorcier .. La RAM, le PIC, tous les 2 correctement alimentés ... Un fil qui relie le SDA de l'un a l'autre, idem avec le SCL .. Sans oublier la résistance de pull-up, qui maintient les lignes a l'etat haut en l'absence de sollicitation (comme recommandé dans les brochures techniques) ... Et de tte facon le tout marchait correctement (et continue de marcher) avec l'autre programme .. Alors quid ? Ca peut venir d'ou ? (j'ai déjà testé avec un autre 18F4550, revérifié les liaisons - avant j'utilisais une plaque a essais qui me paraissait un peu merdique, depuis j'ai refait ca proprement sur une vraie plaque avec soudures et tout le toutim, j'ai fait le tour de la datasheet du µP en question pour voir d'ou pouvait venir le probleme sans y trouver de réponses, maté des sujets sur la question sur pas mal de forums, essayé d'appliquer ce qu'ils recommandaient sans que ca change qqch .. bref, je suis perdu ) PS : j'ai a ma disposition des 16F877 et des 18F2550, je vais d'ailleurs tester de ce pas le meme code avec le 18F2550, en espérant un miracle Message édité par Juju_Zero le 03-05-2008 à 15:34:47 --------------- iRacing, LA simu automobile |
Publicité | Posté le 02-05-2008 à 19:38:09 |
beel1 | Yo Juju
|
beel1 | Tu peux aussi poster un schéma
|
Juju_Zero Live Fast, Die Young |
Je savais pas que t'etais calé en PIC aussi Je suis déja passé par la, et comme je l'ai deja dit, un autre programme du meme style marche sans probleme (sans que je touche a la maquette entre temps) Mais euh bon ... Comme par magie, j'ai donc changé de PIC pour un 18F2550 (qui a la meme datasheet que le 18F4550 que j'utilisais avant, donc a priori les memes registres and so on), j'ai aussi ajouté des resistances supplémentaires (passant de 1kohm a ... tadammm .. 2kohm ), et avec exactement le meme programme, ca s'est mis a marcher ... Incompréhensible (si j'ai le temps je re testerai avec le 4550 pour voir si c'etait juste un probleme avec les resistances, mais ca me paraitrait enorme, qd meme ... d'autant que dans les documents Microchip ils parlent d'une valeur de 1 a 10k) J'ai maintenant du boulot a rattraper pour faire marcher tout comme il faut, mais .. Au moins je sais dans quelle direction bosser Message édité par Juju_Zero le 03-05-2008 à 23:03:04 --------------- iRacing, LA simu automobile |
Juju_Zero Live Fast, Die Young | Pour la valeur de la résistance, je me suis basé la dessus :
--------------- iRacing, LA simu automobile |
beel1 |
|
coincoin94 |
Juju_Zero Live Fast, Die Young |
--------------- iRacing, LA simu automobile |
beel1 | Ouais 'fin 'faudrait pas que ça se mette à déconner sur le 2550 aussi, hein
|
Publicité | Posté le 05-05-2008 à 20:47:14 |
Juju_Zero Live Fast, Die Young | T'inquiete
--------------- iRacing, LA simu automobile |
Sujets relatifs | |
---|---|
VC++ : Problème de scrolling sur un CEdit | Problème très étrange qui pourra me donner la réponse ? |
Problème avec des JLayeredPane | PLEASE HELP!!! Probleme avec un loadmovie |
Problème de compilation | [C] lire un fichier......mon dieu aidez moi !! |
Problème avec Visual C++ | [Résolu] problème de déclaration de tableau |
Problème accès à une méthode d'un vecteur de classe | |
Plus de sujets relatifs à : [PIC] Problème de mise en place I²C |