Hola a tod@s,
Soy un estudiante de ingenieria electronica y tengo  problemas con el software del proyecto.
Quiero controlar el sensor de temperatura AD7416, y cambiar una serie de parametros, para ello voy a utilizar un Atmega16, por un puerto le conecto el teclado, que lo utilizare para introducir los diferentes parametros, por otro puerto saldra el LCD.
El sensor utiliza la comunicacion I2C por lo que utilizare las patillas de SDA y SCL
para compilar utilizo el codevision.
me surguen muchas dudas de como hacerlo, por eso agradeceria a alguien que me guiara el como poder terminar el proyecto.
yo he creado dos funciones de la comunicacion i2c,pero no se si estaran bien, y no se como comprobarlo.
uc--> unsigned char
uc i2c_getchar (uc dir) // leer dato y generar Nack 
 {
     uc u; // variable auxiliar
     i2c_start(); //genera el start
     i2c_write /dir|1); //scribi la direccion +RD (supuestamente lo hace esta              funcion  de codevision)
     u= i2c_read(0); // lee el dato y genera el nack
     i2c_stop (); // genera el stop
     return u; // devuelve el valor
}
void i2c_putchar (uc dir, uc, dato, uc reg) // escribir el dato
 {
     i2c_start(); //genera start
     i2c_write(dir&0xFE); //genera start
     i2c_write(reg); //add pointer 
     i2c_write(dato);// escribir dato
     i2c_stop();  // gener el stop
}
void main (void)
{  
  variable= i2c_getchar (dir);
  registro=0x00;//reg. temperatura
  i2c_putchar(dir,dato, registro)
}
este es el programa que e hecho para poder leer los datos del sensor, si alguien podria echarle un vistazo se lo agardeceria.
tambien tengo problemas con el teclado o con el lcd que no me presenta nada en pantalla   y no se si es porque no me lee el teclado o porque no me presenta el LCD.
voy a seguir trabajando en esto a ver si consiguo que me funcione
tb utilizo el proteus para simularlo, cosa que aveces consigo que funcione y otras veces no 
Gracias de antemano 
Un saludo