ImageImageImageImage
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

I2C con DsPIC 30F2010

Postea todo lo relacionado con el mundo de los microcontroladores aquí

Moderator: Junta Directiva

User avatar
dftcdftc
Posts: 3
Joined: Wed Jul 23, 2008 12:19 am

I2C con DsPIC 30F2010

Post by dftcdftc » Wed Jul 23, 2008 12:35 am

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

dragonet80
Usuario Desarrollador
Usuario Desarrollador
Posts: 1323
Joined: Wed Oct 03, 2007 12:15 am
Location: Ibiza

Re: I2C con DsPIC 30F2010

Post by dragonet80 » Wed Jul 23, 2008 2:36 am

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 ?

User avatar
dftcdftc
Posts: 3
Joined: Wed Jul 23, 2008 12:19 am

Re: I2C con DsPIC 30F2010

Post by dftcdftc » Thu Jul 24, 2008 7:53 pm

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 Settings\3gl\Escritorio\PRACTICAS DSPIC\I2Cesclavo\Generated Files\VDIInit\init_dsPIC30F2010.sinit_vi.h" con la direccion donde van a colocar la carpeta del I2Cesclavo o I2Cmaestro
Attachments
I2Cmaestro.zip
(98.1 KiB) Downloaded 217 times

dragonet80
Usuario Desarrollador
Usuario Desarrollador
Posts: 1323
Joined: Wed Oct 03, 2007 12:15 am
Location: Ibiza

Re: I2C con DsPIC 30F2010

Post by dragonet80 » Fri Jul 25, 2008 3:05 am

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

User avatar
dftcdftc
Posts: 3
Joined: Wed Jul 23, 2008 12:19 am

Re: I2C con DsPIC 30F2010

Post by dftcdftc » Fri Jul 25, 2008 6:13 pm

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

picolandia
Posts: 1
Joined: Sun May 06, 2012 8:18 pm
Nombre: Andrea Pico

Re: I2C con DsPIC 30F2010

Post by picolandia » Sun May 06, 2012 8:23 pm

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.

User avatar
fusion
Usuario Avanzado
Usuario Avanzado
Posts: 389
Joined: Tue Oct 09, 2007 2:12 pm
Nombre: Javier Lopez Segura
Location: Madrid
Contact:

Re: I2C con DsPIC 30F2010

Post by fusion » Tue Jan 22, 2013 2:33 pm

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/idcpl ... e=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?

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Posts: 3874
Joined: Mon Nov 07, 2005 3:10 pm
Location: Barbaros del Valle
Contact:

Re: I2C con DsPIC 30F2010

Post by Ranganok » Wed Jan 23, 2013 4:35 pm

Hola,

El c30 no es gratis, pero tiene una versión "student":
http://www.microchip.com/stellent/idcpl ... e=en536656" onclick="window.open(this.href);return false;

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

dragonet80
Usuario Desarrollador
Usuario Desarrollador
Posts: 1323
Joined: Wed Oct 03, 2007 12:15 am
Location: Ibiza

Re: I2C con DsPIC 30F2010

Post by dragonet80 » Wed Jan 23, 2013 6:31 pm

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 ... #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é:

Code: Select all

    // 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
    [b]__C30_UART=2;[/b]
    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:

Code: Select all

#include <xc.h>
Y ya está.

User avatar
fusion
Usuario Avanzado
Usuario Avanzado
Posts: 389
Joined: Tue Oct 09, 2007 2:12 pm
Nombre: Javier Lopez Segura
Location: Madrid
Contact:

Re: I2C con DsPIC 30F2010

Post by fusion » Thu Jan 24, 2013 8:40 am

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?

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest