Home › Forum › Microcontrôleurs & microprocesseurs › I2C dsPIC30F4013

Forum

Veuillez vous identifier avant de répondre ou pour vous abonner à cette discussion

Sujet: I2C dsPIC30F4013

Auteur Message

maelia

23 messages

De passage
De passage

Read post 30-08-2011 11:18

Bonjour à tous

J'utilise le micro dsPIC30F4013 30I/P(e3) 0839JKU MICROCHIP

Je souhaite extraire les informations d'une boussole électronique (CMPS03) par I2C ce que j'ai déja fait avec succés avec PIC16F876


Avec le dsPIC4013 rien à faire je ne peux communiquer......?

J'ai fini par trouver une explication, je ne peux initialiser le registre I2CCON lequel met en sce les pins dédiées à l'I2C (SCL,SDA)


ex bset I2CCON,#I2CEN => toujours I2CCON=0x0000 et non 0x8000

or mov #0x8000,w0
mov w0,I2CCON => toujours I2CCON=0x0000 et non 0x8000

or bset I2CCON,#15 => toujours I2CCON=0x0000 et non 0x8000


Mystère ?

Quelqu'un aurait un petit tuyau ?

Merci d'avance

Loblick

447 messages

Habitué
Habitué

Read post 30-08-2011 12:05

Bonjour,

As-tu jeté un œil sur les erratas? Elles sont disponibles sur le site de Microchip, y en a pas mal qui concernent l'I²C!

Est-ce que le registre I2CCON est déclaré à la bonne adresse (0x0206)?

A+,
Loïc

maelia

23 messages

De passage
De passage

Read post 30-08-2011 17:49

Merci pour ta réponse

J'ai parcouru les erratas sans rien trouver et pour causes ce qui suit et puis ce serait le 2 eme gros pb sur mon pic (précédent pb sur LVDIN)

Je viens de trouver les réponses après presque 1 semaine de marnage

Voila les erreurs......

j'ai vérifié avec MPLAB SIM le registre IC2CON au lieu de I2CCON !!!!
en fait I2CCON était correctement paramétré mais ca ne marchait pas ,c'était l'arbre qui cachait la foret

Les raisons étaient les suivantes ( je faisais les tests sur une maquette avec fils volants)

=> mauvais contact sur SDA , résistance de rappel ,vielle résistance , présence de colle provenant des rubans de résistances encrassant le fil pas évident à desseller (bol)

=> lors de la 2 eme écriture de l'adresse physique de l'esclave avec bit R/W à 1 (pour déclencher la lecture) qui est le premier bit j'ai donc classiquement fait l'erreur:

bset Tartampion,#1 au lieu de #0 (c'est le premier bit )

à partir de la ca marche mais très mal

=> vitesse de transmission trop élevée 400kHz pour des fils volants de 10 cm environ

En passant à 100 kHz enfin un bon résultat .......je pense pouvoir passer à 400 voir 1MHz sur la platine définitive (on verra ?)

Merci encore pour ta réponse

Veuillez vous identifier avant de répondre ou pour vous abonner à cette discussion