ATMega 2561: соединить с ЦАПом ТС 1230 по I2с?
Добавлено: Пт ноя 12, 2010 11:24:07
Доброе всем!
Пытаюсь в AVRStudio соединить AtMega 2561 с ЦАП ТС1320 по I2c! Но на выходе так ничего и не обнаруживаю.
Нужно ли подключать внешнюю память?
Может что-то не так задаю.
Помогите советом!
Спасибо!
Кусок осн программы привожу ниже:
ldi r18, 0xD0
sts XMCRA, r18 ; Enable External Memory
ldi r18, 0x80
sts XMCRB, r18 ; Whole PortC for XRAM
ldi r16, 0x91
sts TWAR,r16 ; Slave address to TWAR
ldi START, 0xF8
;-----------------I2с sending -------------------------------------------
ldi r16,(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
sts TWCR, r16 ; Send s-t-a-r-t condition
wait1:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait1 ; Wait for START bit to be transmitted
ldi r16, 0x90
sts TWDR,r16 ; Load Address in TWDR
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit
wait2:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait2 ; Wait for ADRESS to be transmitted
ldi r16, 0x00
sts TWDR,r16 ; Load 00h - command for TC1320 to send next byte as Data
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit
wait5:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait5 ; Wait for ADRESS to be transmitted
ldi r16, 0x3B
sts TWDR,r16 ; Load DATA in TWDR
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit in TWCR to start transmittion of DATA
wait3:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait3 ; Wait for DATA to be transmitted
ldi r16,(1<<TWINT)|(1<<TWEN)|(1<<TWSTO)
sts TWCR, r16 ; Send s-t-o-p condition
nop
Пытаюсь в AVRStudio соединить AtMega 2561 с ЦАП ТС1320 по I2c! Но на выходе так ничего и не обнаруживаю.
Нужно ли подключать внешнюю память?
Может что-то не так задаю.
Помогите советом!
Спасибо!
Кусок осн программы привожу ниже:
ldi r18, 0xD0
sts XMCRA, r18 ; Enable External Memory
ldi r18, 0x80
sts XMCRB, r18 ; Whole PortC for XRAM
ldi r16, 0x91
sts TWAR,r16 ; Slave address to TWAR
ldi START, 0xF8
;-----------------I2с sending -------------------------------------------
ldi r16,(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
sts TWCR, r16 ; Send s-t-a-r-t condition
wait1:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait1 ; Wait for START bit to be transmitted
ldi r16, 0x90
sts TWDR,r16 ; Load Address in TWDR
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit
wait2:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait2 ; Wait for ADRESS to be transmitted
ldi r16, 0x00
sts TWDR,r16 ; Load 00h - command for TC1320 to send next byte as Data
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit
wait5:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait5 ; Wait for ADRESS to be transmitted
ldi r16, 0x3B
sts TWDR,r16 ; Load DATA in TWDR
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit in TWCR to start transmittion of DATA
wait3:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait3 ; Wait for DATA to be transmitted
ldi r16,(1<<TWINT)|(1<<TWEN)|(1<<TWSTO)
sts TWCR, r16 ; Send s-t-o-p condition
nop