TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: electroipod en 09 de Junio de 2013, 21:52:03
-
Saludos a todos, he buscado la difencia entre MSSP y SSP pero sin buenos resultados, tengo dos pic uno usa SSP(pic16f88) y el otro usa MSSP(pic16f887), quisiera saber cual es la difencia entre estas dos tecnologias, al ver sus datasheet veo que usan casi los mismos registros, quisiera saber realmente como funciona el protocolo I2C y hacerme una libreria para controlar el DS1307(Reloj Calendario), pero en internet hay tanta informacion que nose por donde comenzar, alguien que ya este metido en este mundo me podria decir donde puedo encontrar informacion concreta o alguna libreria I2C, muchas gracias por sus respuestas.
-
Por lo que llego a entender de los datasheet, la diferencia está en que los PIC que poseen MSSP implementan todo el HardWare necesario para trabajar tanto en Master como en Slave, mientras que los PIC con SSP implementan el HardWare para trabajar como slave. En el caso de los PIC con SSP es menester del programador hacer las rutinas necesarias para la generación de los pulsos de clock y data. Mientras que en los PIC con MSSP simplemente hay que configurar ciertos registros y está casi todo listo.
-
Por lo que llego a entender de los datasheet, la diferencia está en que los PIC que poseen MSSP implementan todo el HardWare necesario para trabajar tanto en Master como en Slave, mientras que los PIC con SSP implementan el HardWare para trabajar como slave. En el caso de los PIC con SSP es menester del programador hacer las rutinas necesarias para la generación de los pulsos de clock y data. Mientras que en los PIC con MSSP simplemente hay que configurar ciertos registros y está casi todo listo.
segun el datasheet de pic16f88 se puede configurar como maestro configurando los pines del registro SSPCON:
SSPM<3:0>: Synchronous Serial Port Mode Select bits
0000 = SPI Master mode, clock = OSC/4
0001 = SPI Master mode, clock = OSC/16
0010 = SPI Master mode, clock = OSC/64
0011 = SPI Master mode, clock = TMR2 output/2
0100 = SPI Slave mode, clock = SCK pin. SS pin control enabled.
0101 = SPI Slave mode, clock = SCK pin. SS pin control disabled. SS can be used as I/O pin.
0110 = I2C Slave mode, 7-bit address
0111 = I2C Slave mode, 10-bit address
1011 = I2C Firmware Controlled Master mode (Slave Idle)
1110 = I2C Slave mode, 7-bit address with Start and Stop bit interrupts enabled
1111 = I2C Slave mode, 10-bit address with Start and Stop bit interrupts enabled
1000, 1001, 1010, 1100, 1101 = Reserved
aun no me queda claro lo que dijiste sobre que el programador debe hacer las rutinas necesarias para la generación de los pulsos de clock y data, seguire estudiando, gracias por tu respuesta.
-
Por lo que llego a entender de los datasheet, la diferencia está en que los PIC que poseen MSSP implementan todo el HardWare necesario para trabajar tanto en Master como en Slave, mientras que los PIC con SSP implementan el HardWare para trabajar como slave. En el caso de los PIC con SSP es menester del programador hacer las rutinas necesarias para la generación de los pulsos de clock y data. Mientras que en los PIC con MSSP simplemente hay que configurar ciertos registros y está casi todo listo.
segun el datasheet de pic16f88 se puede configurar como maestro configurando los pines del registro SSPCON:
SSPM<3:0>: Synchronous Serial Port Mode Select bits
0000 = SPI Master mode, clock = OSC/4
0001 = SPI Master mode, clock = OSC/16
0010 = SPI Master mode, clock = OSC/64
0011 = SPI Master mode, clock = TMR2 output/2
0100 = SPI Slave mode, clock = SCK pin. SS pin control enabled.
0101 = SPI Slave mode, clock = SCK pin. SS pin control disabled. SS can be used as I/O pin.
0110 = I2C Slave mode, 7-bit address
0111 = I2C Slave mode, 10-bit address
1011 = I2C Firmware Controlled Master mode (Slave Idle)
1110 = I2C Slave mode, 7-bit address with Start and Stop bit interrupts enabled
1111 = I2C Slave mode, 10-bit address with Start and Stop bit interrupts enabled
1000, 1001, 1010, 1100, 1101 = Reserved
aun no me queda claro lo que dijiste sobre que el programador debe hacer las rutinas necesarias para la generación de los pulsos de clock y data, seguire estudiando, gracias por tu respuesta.
Es como le dijo AngelGris, si el PIC tiene modulo SSP tiene que hacer rutinas para que manejar las lineas SCL y SDA.
La opcion que señala 1011 = I2C Firmware Controlled Master mode (Slave Idle) lo indica, Modo maestro I2C controlado por Firmware(programa de usuario), la opcion (Slave Idle) sirve si es que el micro se utiliza en un sistema multimaster, ya que puede detectar si se produce un bit de start o un bit de stop producidos por otro maestro, yo no he usado un sistema multimaster, pero fue lo que averigue mientras investigaba las diferencias del SSP y MSSP.
Saludos
-
He leido el manual an554, pero este manual solo es para los pic que no tienen un hardware i2c incorporado, ademas estan usando el pic 16c84 y el manual es del año 97, si no puedo conseguir ayuda de la misma microchip nose donde mas puedo buscar, si tan solo tuviera una libreria de ejemplo para saber como usar los registros del pic16f88 correspondientes al i2c, o sino en todo caso buscar un pic de 18 pines que tenga MSSP.
-
He leido el manual an554, pero este manual solo es para los pic que no tienen un hardware i2c incorporado, ademas estan usando el pic 16c84 y el manual es del año 97, si no puedo conseguir ayuda de la misma microchip nose donde mas puedo buscar, si tan solo tuviera una libreria de ejemplo para saber como usar los registros del pic16f88 correspondientes al i2c, o sino en todo caso buscar un pic de 18 pines que tenga MSSP.
En el caso del 16f88 sería casi lo mismo, ya que no tiene HardWare para funcionar como Master. Puedes buscar en el foro acerca de I2C por software... hay mucha información.
Sería buena saber también con que compilador estás trabajando ya que si fuera CCS éste tiene su propia forma de gestionar I2C por software y es realmente sencillo y vas a encontrar muchos ejemplos.
-
Yo quiero hacerlo con el compilador xc8 o con el hitech ya que vienen a ser lo mismo, me he pasado todo el dia buscando información pero al parecer en español no hay, asi es que comenzare a hacer la busqueda en ingles ojala tenga suerte.
-
Yo quiero hacerlo con el compilador xc8 o con el hitech ya que vienen a ser lo mismo, me he pasado todo el dia buscando información pero al parecer en español no hay, asi es que comenzare a hacer la busqueda en ingles ojala tenga suerte.
Aquí hay buena información para XC8, http://www.todopic.com.ar/foros/index.php?topic=40649.60 .Incluso he subido rutinas de I2C por SoftWare. Será cuestión de utilizar dichas rutinas para poder comunicarte con el DS1307