Atmega128 i zegar M41T00 - problem

Loading thread data ...

Odpowiem sobie sam, bo znalazlem rozwiazanie. Atmaga musi wyslac sygnal ACK po odebraniu kazdego bajtu, czyli trzeba ustawic bit TWEA w TWCR. Inaczej RTC mysli, ze nie chcemy od niego kolejnych bajtow danych i konczy transmisje. Poprawiona procka jest ponizej. Pozdrawiam /PM PS: moze komus sie to przyda ;)

I2C_Read_Word:

push tmp

START

WAIT

ldi tmp,(ADDRRTC|SDA_W) ;send RTC Address STS TWDR,tmp ldi tmp,(1<<TWINT)|(1<<TWEN) STS TWCR,tmp

WAIT

pop tmp STS TWDR,tmp ;send Word Address ldi tmp,(1<<TWINT)|(1<<TWEN) STS TWCR,tmp

WAIT

START

WAIT

ldi tmp,(ADDRRTC|SDA_R) ;send RTC Address STS TWDR,tmp ldi tmp,(1<<TWINT)|(1<<TWEN) STS TWCR,tmp

WAIT

ldi tmp,(1<<TWINT)|(1<<TWEN|1<<TWEA) ;<to wlasnie ta linijka zostala poprawiona STS TWCR,tmp

WAIT

LDS tmp,TWDR ;bajt odczytany push tmp ldi tmp,(1<<TWINT)|(1<<TWEN) STS TWCR,tmp

WAIT

STOP

LDS tmp2,TWDR ;bajt odczytany pop tmp

ret

Reply to
projekt

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.