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
picolandia
Respuestas: 1
(@picolandia)
New Member
Registrado: hace 13 años

Buenas!
estoy trabajando con el dspic30f4013 intentando comunicar dos dspic por medio de I2C, pero la verdad voy muy mal con esto, he buscado ejmplos en internet del codigo empleado en assembler y no he logrado nada... me gustaria pedirles un poco de ayuda y de paso pedirles el favor de volver a subir el codigo que emplearon para ver si me puedo guiar con esto... agradezco mucho su colaboracion.

Responder
fusion
Respuestas: 391
(@fusion)
Ardero
Registrado: hace 17 años

Yo estoy peleando con el dspic30F3013 para usar ambas uarts
Me acabo de comprar el flamante ICD3 que permite hacer el debugging, que es el que recomendaba micropic para micros de 16 bits:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en537580

Pero no encuentro las librerías de los 30F, me viene con el compilador "MPLAB C32 Suite" no el C30, el caso es que no encuentra la librerías:

#include <p30f3013.h>

¿donde están las librerías, solo están las p32xxx ?
¿he de descambiar el icd3?

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Hola,

El c30 no es gratis, pero tiene una versión "student":
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en536656 " onclick="window.open(this.href);return false;

S2

Ranganok Schahzaman

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

Vamos a ver,

Microchip hace tiempo que cambió su suite de programación a la nueva versión MPLABX. La cual va ya por la versión 1.60 y que recomiendo encarecidamente sobre las antiguas MPLAB (para cualquiera que tenga esto como un hobby o que empiece de nuevo). El MPLAB es completamente gratuito. Los compiladores también han cambiado y se han adaptado a la nueva nomenclatura, ahora son XC8 (para todos los micros de 8 bits: 10F, 12F, 16F y 18F), XC16 (para los 16 bits: dspic30F, 24F/H, dspic33F/E) y XC32 para los pic32. Todos ellos los puedes usar gratuitamente por un tiempo indefinido, con la limitación que no se aplican las optimizaciones que sí tienen las versiones de pago. También puedes optar por un periodo de prueba de 60 días con todas las optimizaciones activadas.

Los archivos, el IDE y los compiladores te los bajas de aquí:
http://www.microchip.com/pagehandler/en-us/family/mplabx/#downloads " onclick="window.open(this.href);return false;
Para tu caso, primero instala el MPLABX y después el compilador XC16.

Con todo configurado por defecto debería encontrarte los include de cualquier micro. He mirado en mi carpeta del compilador y el 30f3013 viene, así que a tí también te lo encontrará.

Yo uso el 30F4011 normalmente y precisamente ahora estoy probando de usar ambas UART y, de momento sin problemas. El único problema fue cambiar la salida estándar (para usar "printf") que por defecto viene asignada a la UART1, pero después de buscar un poco en internet lo encontré:
// Configura UART 1
U1BRG = 191; // 191->9600 baud @ 29,48 MIPS; 194->9600, 48->38400 baud @ 30 MIPS
U1MODEbits.UARTEN = 1; // Activa UART1
U1STAbits.UTXEN = 1;

// Configura UART 2
__C30_UART=2;
U2BRG = 191; // 191->9600 baud @ 29,48 MIPS; 194->9600, 48->38400 baud @ 30 MIPS
U2MODEbits.UARTEN = 1; // Activa UART2
U2STAbits.UTXEN = 1;

Con la instrucción que he marcado en negrita haces que los "printf" se redireccionen a la uart2 por defecto. De esta manera puedes usar el envio de texto formateado por ese puerto, cosa muy util durante la fase de debug. Si solo quieres mandar bytes, usas el registro pertinente y punto.

Respecto al ICD3, para este tipo de micro con un pickit2 te apañas para programar y para hacer debug. Además de que lleva un terminal serie, que sirve para monitorizar el puerto serie (la uart1, que es la que va en los pines de programación de mi micro, en el tuyo quizá no coincidan, no lo se) al estilo de como lo hace el IDE de Arduino. Pero bueno, el ICD3 trae muchas más funciones que el pickit, por algo es bastante más caro.

Edito: No se porque no sale en negrita. Bueno, la instrucción a la que me refería es:
__C30_UART=2;
Edito2: Se me olvidó, con con esta nueva versión de MPLABX, ya no hace falta incluir los cabeceros de cada micro concreto. Simplemente se añade:
#include <xc.h>
Y ya está.

Responder
fusion
Respuestas: 391
(@fusion)
Ardero
Registrado: hace 17 años

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)
Me cuesta bastante encontrar documentación para programar los registros, ¿como lo hacéis vosotros?

¿Cuesta mucho la versión de pago del C30?

Responder
Página 2 / 3
Compartir: