[an error occurred while processing this directive]
Ответ: См. пример из Datasheet. К сожалению примеры на ASM и C перемешались, но думаю разобраться можно.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 08 августа 2002 г. 22:38
В ответ на: 2-wire Serial Interface отправлено Пан спортсмен 08 августа 2002 г. 22:18

Assembly Code Example C Example Comments
1 ldi r16, (1<(1<out TWCR, r16
TWCR = (1<(1<Send START condition
2 wait1:
in r16,TWCR
sbrs r16,TWINT
rjmp wait1
while (!(TWCR & (1<;
Wait for TWINT Flag set. This
indicates that the START condition
has been transmitted
3 in r16,TWSR
andi r16, 0xF8
cpi r16, START
brne ERROR
if ((TWSR & 0xF8) != START)
ERROR();
Check value of TWI Status
Register. Mask prescaler bits. If
status different from START go to
ERROR
ldi r16, SLA_W
out TWDR, r16
ldi r16, (1<out TWCR, r16
TWDR = SLA_W;
TWCR = (1<Load SLA_W into TWDR Register.
Clear TWINT bit in TWCR to start
transmission of address
4 wait2:
in r16,TWCR
sbrs r16,TWINT
rjmp wait2
while (!(TWCR & (1<;
Wait for TWINT Flag set. This
indicates that the SLA+W has been
transmitted, and ACK/NACK has
been received.
5 in r16,TWSR
andi r16, 0xF8
cpi r16, MT_SLA_ACK
brne ERROR
if ((TWSR & 0xF8) != MT_SLA_ACK)
ERROR();
Check value of TWI Status
Register. Mask prescaler bits. If
status different from MT_SLA_ACK
go to ERROR
ldi r16, DATA
out TWDR, r16
ldi r16, (1<out TWCR, r16
TWDR = DATA;
TWCR = (1<Load DATA into TWDR Register.
Clear TWINT bit in TWCR to start
transmission of data
6 wait3:
in r16,TWCR
sbrs r16,TWINT
rjmp wait3
while (!(TWCR & (1<;
Wait for TWINT Flag set. This
indicates that the DATA has been
transmitted, and ACK/NACK has
been received.
7 in r16,TWSR
andi r16, 0xF8
cpi r16, MT_DATA_ACK
brne ERROR
if ((TWSR & 0xF8) != MT_DATA_ACK)
ERROR();
Check value of TWI Status
Register. Mask prescaler bits. If
status different from
MT_DATA_ACK go to ERROR
ldi r16, (1<(1<out TWCR, r16
TWCR = (1<(1<Transmit STOP condition

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru