Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

21/12/2014 #1


Uso del modulo sspm de pic configurándolo sin librerías
hola amigos estoy trabajando con el modulo SSPM en modo de i2c del pic 16f887 solo que me atoro en le parte de que no se si el bit de lectura o escritura lo debo poner yo o el modulo solo lo pone, si este bit es el de mas peso o el de menos peso por que eso cambiaría la dirección



nota uso el IDE de mikro c pero no estoy usando la librería para i2c de ese compilador ...
21/12/2014 #2
Moderador

Avatar de D@rkbytes

Creo te refieres al módulo MSSP, SSPM más bien hace referencia a los bits 3<>0 del registro SSPCON.
Me parece que tienes que leer bien la hoja de datos porque eso está bien explicado ahí.

Son varios registros involucrados los que se tienen que usar para lo que quieres, pero es algo así por ejemplo.

Para escribir:
Código PHP:
/******************************************************************************
* Envía el byte 'dato' y devuelve el valor del bit ACK/NACK recibido.
* ACK = 0 y NACK = 1
*******************************************************************************/
char i2c_escribir(char dato)
{
   
SSPBUF dato;          // Colocar el dato a enviar.
   
PIR1.SSPIF 0;         // Limpiar SSPIF

   
while(!PIR1.SSPIF)      // Esperar a que llegue el bit ACK/NACK
      
continue;
   
   if(
SSPCON2.ACKSTAT)     // Leer bit ACK/NACK recibido.
      
return 1;            // Esto es un NACK
   
else
      return 
0;            // Esto es un ACK

Para leer:
Código PHP:
/******************************************************************************
* Lee un byte y envía el bit ACK/NACK.
* ack = 0 es ACK y ack = 1 es NACK.
*******************************************************************************/
char i2c_leer(char ack)
{
   
SSPCON2.RCEN 1;       // Habilitar recepción de dato.
   
   
if(ack == 1)            // Preparar el bit ACK/NACK a enviar.
      
SSPCON2.ACKDT 1;   // Esto es un NACK
   
else
      
SSPCON2.ACKDT 0;   // Esto es un ACK
      
   
while(SSPCON2.RCEN)     // Esperar a que termine de llegar el dato.
      
continue;
      
   
SSPCON2.ACKEN 1;      // Iniciar envío de bit ACK/NACK
   
   
while(SSPCON2.ACKEN)    // Esperar a que se complete el envío.
      
continue;
      
   return 
SSPBUF;

Existe una configuración previa y otras rutinas involucradas, pero; ¿Es esto lo que querías saber?
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.