VALE:
HE podido con esta libreria usar el puerto de expansion de 8 bits, el conversor A/D de 12 bits y la eeprom. !!genial!!
pero el sensor MCP9804 se me resiste.
me lee, pero la conversion hago algo mal o el data sheet tiene algun error.
me lee siempre el mismo dato y no cuadra.
yo sigo la secuencia, pero nada de nada.
el sensor de la demo esta en la direccio 0x90 y para leer en la 0x91.
posteo la parte del codigo a ver si se ve algun fallo:
ClearLcd();
GotoxyLcd (1,1);
WriteStrLcd ("sensor mcp9804");
__delay_ms(10);
start_i2c();
respuesta = write_i2c (0b10010010);
if (respuesta == ACK)
{
write_i2c (0x01);
write_i2c (0x00);
write_i2c (0x00);
}
stop_i2c();
__delay_ms(10);
while(1)
{
start_i2c();
respuesta = write_i2c (0b10010010);
if (respuesta == ACK)
{
write_i2c (0x05);
}
//rstart_i2c();
start_i2c();
respuesta = write_i2c (0b10010011);
if (respuesta == ACK)
{
// write_i2c (0x00);
MSB = read_i2c (ACK);
// dato = read_i2c (NOACK);
LSB = read_i2c (NOACK);
}
stop_i2c();
//convertir
MSB = MSB & 0x1F;
if ((MSB & 0x10)== 0x10)
{
MSB = MSB & 0x0F;
TEMP = 256 - (MSB*16 + LSB /16);
}
else
{
TEMP = (MSB*16 + LSB /16);
}
ClearLcd();
GotoxyLcd (1,1);
WriteStrLcd ("TEMP= ");
itoa(text,TEMP,10);
GotoxyLcd (7,1);
WriteStrLcd(text);
__delay_ms(100);
}
Tambien me queda la terea sobre lo que me comentas angelgris, verificar que la libreria incluida en hitech no funciona por algun cambio de nombre de algun registro.
de todas formas tu libreria funciona de maravilla,, y me pregunto si valdria para usarse en multimaster. ¿se podria usar para comunicar varias placas en multimaster ademas de tener algun slave?
saludos