Atmega128 I2C

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
Hey igen

Jeg sidder og pangler lidt med noget i2c, og jeg er ikke sikker på om
kredsen er defekt eller hvad der går galt.

Jeg har 2 portkredse PCF8574, de kører fint, både read og write.

så har jeg en PCF8573, Dato / tids kreds, den er begyndt at opføre sig
mærkeligt

sådan som der er lige nu kan jeg :

sende Start condtion (husker at fjerne startcondition igen fra registret)
sende adressedata + modtage ack
sende Mode Pointer (data) + modtage ack
men når jeg skal have den i recive mode og sender et re-start condition, så
tror den at jeg sender en byte, og mit svar fra TWSR er forkert, og derefter
modtager jeg ikke nogle byte.

nogle der har en ide til mit problem

jeg har før haft modtaget bytes fra den, ved kun at sende adressen og så
reade...

Kasper





Re: Atmega128 I2C

Quoted text here. Click to load it

Hej kasper

Jeg prøver lige med dette men det er skrevet i Pascal

(***********************************)

FUNCTION TIMEREAD:String[8];

Begin
  Repeat
    I2C_Start;
    I2C_WD(%10100000);                                 (* CS kreds *)
    If Ack_RX Then I2C_WD(%00000010);     (* Pointer  *)
    If Ack_RX Then I2C_Stop;
    I2C_Start;
    I2C_WD(%10100001);                                 (* Read Mode *)
    If Ack_RX Then Seconds:=I2C_RD;             (* Read Seconds 02 *)
    Ack_TX;
    Minutes:=I2C_RD;                                         (* Read Minutes
03 *)
    Ack_TX;
    Hour   :=I2C_RD;                                           (* Read Hour
04 *)
    I2C_Stop;
  Until FejlFlag;
End;


(***********************************)

Husk til sidst i read mode ingen Ack.

Skriv igen hvis stadig problem !

..
Med venlig hilsen

Henrik Schouboe Christiansen




Re: Atmega128 I2C

Quoted text here. Click to load it
Minutes
Hour

Hey

Tak for hjælpen, men jeg fik det til at virke på den måde sent i går aftes,
men efter databladet
burde det ikke være nødvendigt at lave en stop efter *pointer*, en
repeatedstart skulle være nok og det kan jeg ikke få til at virke...
MEn nu virker det da i det mindste (:

KAsper



Site Timeline