ATmega128 + JTAG +I2C reloaded

Horvath Zsolt hozso_001 at freemail.hu
Wed Aug 23 08:49:52 CEST 2006


Bali Zoltan írta:

>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 ?
>  
>
    Természetesen STOP után már csak a STOP bit visszabillenését
figyelem: :-)

    LDS        R16,TWCR
    SBRC    R16,TWSTO                    ;A 'STOP'-NAK AKKOR VAN VÉGE, 
HA A STOPBIT ÉRTÉKE '0'-RA VÁLTOTT VISSZA
    RJMP    I2C_COMM_16_END

I2C_COMM_16_CHECK_INT:    ;MIVEL AZ 'STO' BIT VISSZABILLENT ALACSONYBA, 
BEFEJEZŐDÖTT A 'STOP' KIADÁSA
    LDI        R16,(1<<TWINT) | (1<<TWSTA) | (1<<TWEN)    ;KIADJUK A 
'START' FELTÉTELT
    STS        TWCR,R16

    LDI        R16,17
    STS        CORE_I2C_PTR,R16
    RCALL    I2C_COMM_FILL_SAFE_COUNTERS
    ;FELTÖLTJÜK A BIZTONSÁGI SZÁMLÁLÓT


I2C_COMM_16_END:
    RJMP    I2C_COMM_END



       Mégegyszer : egyrészt a nagykönyv szerinti rutinokat használom 
(assembly
 ami persze attól még lehet hibás, hogy a nagy könyv írja) másrészt 
ugyanezen
rutinok a PCF8774-el tökéletesen működnek... ;-)

>É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.
>  
>
       Amikor jól működik, akkor nálam is így megy. De itt nem billen 
vissza a STOP,
"beragad".

>Szkóp vagy MiniLA nincs kéznél ? Nekem TWI-nél mindig kellett ( DSO ).
>
       Hm. Az első I2C-s rutinjaimat PIC-re írtam, két kontroller 
beszélgetett egymással. Mai napig
ezeket a rutinokat használom, eddig atombiztos. Szkóp DSO meg minden 
nélkül írtam meg.
Igaz, rá ment vagy 2-3 hetem, teljes munkaidőben... ;-)
       Mi az a MiniLA?


       Üdv.: Horváth Zsolt



More information about the Elektro mailing list