ATmega128 + JTAG +I2C reloaded
Bali Zoltan
eltexto at freemail.hu
Tue Aug 22 21:45:24 CEST 2006
Hali !
A kiadott STOP után is vársz a TWINT-re ?
Mert STOP után már nincs TWINT bebillenés.
A STOP bit törlődését mikor és hogyan vizsgálod ?
Én a STOP-ot igy adom ki:
{ // Beg. IT
switch (status)
{
...
....
case TW_MT_DATA_NACK:
action = BV(TWSTO);
break;
........
......
.....
}
outb(TWCR, ( inb(TWCR) & TWCR_CMD_MASK) | BV(TWINT) | action );
} // End IT
Ahogy ráirja a TWCR-re a fenti outb( sort, nálam JTAG alatt be se billen a TWSTO bit,
a következő sorban, de a STOP-ot megcsinálja.
Szkóp vagy MiniLA nincs kéznél ? Nekem TWI-nél mindig kellett ( DSO ).
Üdv Zoli
----- Original Message -----
From: "Horvath Zsolt" <hozso_001 at freemail.hu>
To: <elektro at tesla.hu>
Sent: Tuesday, August 22, 2006 13:58
Subject: Re: ATmega128 + JTAG +I2C reloaded
Bali Zoltan írta:
>Szia !
>
>STOP elött megvárod a TWINT-et ?
>
>Üdv Zoli
>
Igen. A levél végén van egy hosszabb programrészlet. Ha megjön
a megszakítás, csak akkor értékelem ki az I2C-t. Minden művelet
végén feltöltök egy biztonsági számlálót, ami 10msec-ként lefelé
számol ha eléri a nullát, akkor ugye az utolsó művelet nem hajtódott
végre. Ez történik ilyenkor is, mivel nem billen vissza a STOP bit.
Viszont találtam egy érdekes dolgot:
Ha az utolsó byte után mégegyet kiküldök és utána azonnal
STOP-ot adok, akkor megy szépen. Ha viszont kiugrok az I2C rutinból és
csak a következő körben akarok STOP-olni, akkor van baj. A PCF9554
adatlapjában
semmilyen utalást nem találtam erre. Letöltöttem egy appnote-ot is, de
azzal sem vagyok
előrébb.
Üdv.: Horváth Zsolt
More information about the Elektro
mailing list