ATmega128 + JTAG +I2C reloaded

Bali Zoltan eltexto at freemail.hu
Tue Aug 22 13:18:34 CEST 2006


Szia !

STOP elött megvárod a TWINT-et ?

Üdv  Zoli


----- Original Message -----
From: "Horvath Zsolt" <hozso_001 at freemail.hu>
To: "elektronika, uC, dsp, wlan, programozas" <retro at lists.tmp.hu>; <elektro at tesla.hu>
Sent: Tuesday, August 22, 2006 08:54
Subject: ATmega128 + JTAG +I2C reloaded



       Újabb probléma merült fel az ATmega128 I2C
kezelésével kapcsolatban. A nagykönyv szerint megírt
rutinok (adatlapra gondolok) a PDF8574-ekkel
remekül mennek. De ez az átok PCA9554 megszivat.
Vagy az ATmega. A lényeg, hogy ugye a PCA-nak
három byte egy utasítás: Start + Command byte +
Data byte. Ez idáig működik is, becsattannak a PCA-ra
kötött relék is, ahogy az kell. Azonban a művelet
befejezése után amikor ki akarok adni egy STOP-ot,
a Mega nem jelzi a STOP végét. Tehát a TWCR,TWSTO
bit nem billen vissza '0'-ba. Miért? Valakinek van tippje?

    Íme a programrészlet:

    LDI        R16, ( 1<<TWINT ) | ( 1<<TWEN ) | ( 1<<TWSTO )    ;'STOP'
    STS        TWCR, R16

    LDI        R16,0x0F
    STS        CORE_I2C_PTR,R16
    RCALL    I2C_COMM_FILL_SAFE_COUNTERS

Ugyanezzel a programrészlettel adok ki stop-ot a PCF8574-
eknek is, azokkal nincs is probléma. JTAG-el léptetve
a programrészlet harmadik sorához érve a TWCR tartalma:
0x14, ez még jó. A következő sorra lépve azonban
az érték 0x1C lesz. Tehát bebillen az írás-ütközés flag(ez
a működő STOP-nál is bebillen), de a STOP nem lesz 0.

Valakinek van tippje?

       Üdv.: Horváth Zsolt





More information about the Elektro mailing list