fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

I2C con DsPIC 30F2010

15 Respuestas
5 Usuarios
0 Reactions
10.3 K Visitas
dftcdftc
Respuestas: 3
Topic starter
(@dftcdftc)
New Member
Registrado: hace 17 años

Estoy intentando manejar el I2C en un DsPIC 30F2010, no utilize las librerías que vienen en el C30, sino que utilizo el Visual Initializer para configurar el micro (Cristal, interrupciones, PortB e I2C).

Lo que no tengo muy claro es que el momento de configurar el Master en donde se tiene que definir la velocidad, me pide que valor en Kbps ó bps, y nose como realizar el calculo para el valor en el registro I2CBRG (defino velocidad de transmision), en el pdf encontre la formula y calcule pero no me coincide el valor que calculé con el valor que me genera el Visual Initializer para el registro I2CBRG.

El cristal es de 7.3728 MHz con un PLL de 16x
Fcy == 29.4912 MHZ
FSCL = 100 KHz

La formula:

I2CBRG= [(FSC/FSCL)-(FSC/1111111)]-1

Responder
14 respuestas
dragonet80
Respuestas: 1328
(@dragonet80)
Ardero
Registrado: hace 17 años

Yo también ando algo perdido con el tema del I2C en el dspic. Se que puedes configurar la velocidad a 100KHz, 400KHz y 1MHz. No todos los dispositivos soportan las velocidades rápidas, así que a la más lenta deberían ir. Estaba acostumbrado al ccs y no tenía problemas. Ahora con el C30 es bastante más farragoso, de momento no tengo nada funcionando. Si consigues algo y no te importa compartir podrías poner como lo has hecho.

De momento veo que tu fórmula la has copiado mal. Fíjate en la página 21-14 (ecuación 21-1 y tabla 21-1), del manual de referencia:
I2CBRG = ( FCY/FSCL - FCY/1111111) - 1

Para los valores que tú pones con un cristal de 7,3728MHz (para ese valor podrías usar el interno de 7,37MHz así te ahorras componentes):
I2CBRG = ( 29491200/100000 - 29491200/1111111 ) - 1 = (294,912 - 26,542 ) - 1 = 268,37 - 1 = 267,37 -> redondeando: I2CBRG = 267.

En la página que te comento te sale el valor 272 porque ha redondeado la FCY a 30MHz.

Tienes por ahí algún ejemplo en C30 de como comunicar con algún componente I2C ?

Responder
dftcdftc
Respuestas: 3
Topic starter
(@dftcdftc)
New Member
Registrado: hace 17 años

Por el momento no tengo ningun ejemplo pero te puedo mandar el pragrama que estoy haciendo.

Es la comunicacion entres 2 DSPIC30F2010 utilizando C30 de mplab v8.02, tambien para configurar el micro utilizo la herramienta de "Visual Initializer".
No estoy utilizando el la libreria del I2C que viene por defecto en el C30

Bueno aqui les adjunto el programa del esclavo y del maestro, no se olviden de cambiar la direccion: #include "C:Documents and Settings3glEscritorioPRACTICAS DSPICI2CesclavoGenerated FilesVDIInitinit_dsPIC30F2010.sinit_vi.h" con la direccion donde van a colocar la carpeta del I2Cesclavo o I2Cmaestro

Responder
dragonet80
Respuestas: 1328
(@dragonet80)
Ardero
Registrado: hace 17 años

A ver si el lunes lo pudiese probar, gracias por la ayuda dftcdftc. Conseguiste entonces que te funcionara?

Responder
dftcdftc
Respuestas: 3
Topic starter
(@dftcdftc)
New Member
Registrado: hace 17 años

Ya me esta funcionando mas o menos, ojala que para el lunes o martes ya lo tenga todo bien.....

Responder
Página 1 / 3
Compartir: