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