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