DS1307 a I2C
Moderátor: Moderátoři
Zdravim, mam problem, snažim sa rozbehat komunikáciu medzi Attiny45 a DS1307. So zapisovanim problmém nie je, ale skor nedokážem z neho čitať dáta, na začiatok nepotrebujem nastavovat čas, stači ak budem vediet načitať z neho sekundy,minuty,hodiny.
Dam sem kusok kodu ako to mam spravene pre read a write
funckia pre write
Dam sem kusok kodu ako to mam spravene pre read a write
Kód: Vybrat vše
/*i2c_start(0b11010000); //startbit+adresa obodu+write
i2c_write(0x00); //veberiem adresu z ktorej chcem citat
i2c_start(0b11010001); //startbit+adresa obodu+read
i2c_read(data); //nacitane udaje ulozi do data
i2c_stop(); //stop bit
funckia pre write
Kód: Vybrat vše
i2c_start(0b11010000); //adresa obvodu+write
i2c_write(0x00); //adresa na ktoru chcem zapisovat
i2c_write(0b00000000); //data
i2c_stop(); //stopbit
z i2cmaster.h/i2cmaster.S, tu knižnicu použivam a nemal som snou problem zatial
na ten expander len posielam data ktore citam z rtc aby som videl co z toho lezie
na ten expander len posielam data ktore citam z rtc aby som videl co z toho lezie
- Přílohy
-
- i2cmaster.rar
- (4.38 KiB) Staženo 69 x
-
- Bez názvu.png
- (32.28 KiB) Staženo 77 x
už som konečne rozbehal to čitanie z rtc, takto to zatial vyzera
Kód: Vybrat vše
int main(void)
{
uint8_t data=0x00;
i2c_init();
i2c_start(MCP23017+I2C_WRITE);
i2c_write(IODIRA);
i2c_write(0b00000000); //EXP_PORTA(0..7) OUT
i2c_stop();
while(1)
{
i2c_start(0b11010000);
i2c_write(0x00);
i2c_rep_start(0b11010001);
data = i2c_readNak();
i2c_stop();
/*data++;
if (data == 256)
{
data=0;
}*/
i2c_start(MCP23017+I2C_WRITE);
i2c_write(OLATA);
i2c_write(data); //EXP_LATA(0..7) = 255
i2c_stop();
}
}