DS1307 a I2C

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
relatko
Příspěvky: 85
Registrován: 08 úno 2009, 01:00

#16 Příspěvek od relatko »

Zdravím.
Mohli by ste mi prosím poskytnúť funkčné subrutiny pre I2C komunikáciu.Emulované mi fungujú.Pokúšam sa však naštartovať MODUL SYNCHRONNÍHO SÉRIOVÉHO PORTU MSSP (I2C)v pic16F877A,ale vôbec sa mi to nedarí.
Relatko.

Uživatelský avatar
dodik
Příspěvky: 198
Registrován: 26 lis 2008, 01:00

#17 Příspěvek od dodik »

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

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

Uživatelský avatar
Habesan
Příspěvky: 6924
Registrován: 12 led 2009, 01:00
Bydliště: Plzeňsko
Kontaktovat uživatele:

#18 Příspěvek od Habesan »

Z jaké knihovny bereš uvedené funkce?
Sháním hasičák s CO2 "sněhový", raději funkční.
(Nemusí mít platnou revizi.)
(Celkově budu raději, když se to obejde bez papírů.)

Uživatelský avatar
dodik
Příspěvky: 198
Registrován: 26 lis 2008, 01:00

#19 Příspěvek od dodik »

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
Přílohy
i2cmaster.rar
(4.38 KiB) Staženo 69 x
Bez názvu.png
(32.28 KiB) Staženo 77 x

Uživatelský avatar
Standa33
Příspěvky: 283
Registrován: 07 lis 2009, 01:00

#20 Příspěvek od Standa33 »

Změň tohle:
i2c_read(data); //nacitane udaje ulozi do data
na: data = i2c_readNak();

Uživatelský avatar
dodik
Příspěvky: 198
Registrován: 26 lis 2008, 01:00

#21 Příspěvek od dodik »

uz som skusal aj to ale nefunguje to. Netreba nahodou nastavit na zaciatku programu ten RTC obvod?

Uživatelský avatar
Standa33
Příspěvky: 283
Registrován: 07 lis 2009, 01:00

#22 Příspěvek od Standa33 »

Tak ještě zkus zadat : data = i2c_read(0); //čtení dat + NoAck

Uživatelský avatar
dodik
Příspěvky: 198
Registrován: 26 lis 2008, 01:00

#23 Příspěvek od dodik »

už som konečne rozbehal to čitanie z rtc, takto to zatial vyzera
8-)

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();
	}
}

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“