Кто знает правильную последовательность сигналов. а то я запутался.
Даташит.ad5601
http://www.datasheetcatalog.org/datashe ... t5jtfy.pdf
Страница 7.- сигнал synk инверсний.
Страница 14.- на рис 27 битов в правом 17
стр 13 снизу битов 16
как правельно отослать?
AD5601(dac) spi 3-wire
AD5601(dac) spi 3-wire
Последний раз редактировалось jeck-wolf Вт июл 26, 2011 10:23:00, всего редактировалось 1 раз.
- Реклама
Re: AD5601(dac) spi 3-wire
У тебя же есть даташит. В чем вопрос.
spi там, на самомо деле, 2 проводный -))) только на прием.
и к какому контроллеру будешь прикручивать ? там 16 битные пакеты, железный SPI в столь любимых тут аврах, насколько помню, работает только с 8 битными.
spi там, на самомо деле, 2 проводный -))) только на прием.
и к какому контроллеру будешь прикручивать ? там 16 битные пакеты, железный SPI в столь любимых тут аврах, насколько помню, работает только с 8 битными.
Re: AD5601(dac) spi 3-wire
ATTINY25
Вот программа на отправку
.include "tn25def.inc"
.def temp =R16
.def temp1 =R17
.def BTS =R20
.def Bit_counter =R21
.equ SYNC =PB4
.equ SCL =PB2
.equ SDA =PB0
.org 0
rjmp RESET
reset:
ldi temp,RAMEND
out SPL,temp ;Init Stack Pointer
ldi temp,0b010111
out DDRB,temp
ldi temp,0b010000
out PORTB,temp
ldi temp,0x80
out CLKPR,temp
ldi temp,0b00001000 ;8/256=31.250 khz
out CLKPR,temp
LDI BTS,0X0F
RCALL Send_Byte
PROG:
RJMP PROG
DELAY:
ldi temp1,0x0F
d2:ldi temp,0xff
d1:dec temp
brne d1
dec temp1
brne d2
RET
;++++++++++++++++++++++++++++++++++++++++++++++++++++i2c send BTS= ?????????? ????
SYNC_null:
CBI PORTB,SYNC
RCALL DELAY
RET
SYNC_ONE:
SBI PORTB,SYNC
RCALL DELAY
RET
Clock_null:
CBI PORTB,PB1
CBI portB,scl
RCALL DELAY
RET
Clock_one:
SBI PORTB,PB1
SBI portB,scl
RCALL DELAY
RET
Data_null:
CBI portB, sda
RCALL DELAY
RET
Data_one:
SBI portB,sda
RCALL DELAY
RET
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Send_Byte:
LDI Bit_counter, 8
CLR TEMP
RCALL SYNC_ONE
RCALL Clock_ONE
RCALL SYNC_null
next_bit_sI:
RCALL Clock_ONE
SBRC TEMP,7
rjmp sI
RCALL Data_null
rjmp sII
sI: RCALL Data_one
sII: RCALL Clock_NULL
ROL TEMP
DEC Bit_counter
BRNE next_bit_sI
LDI Bit_counter, 8
next_bit_s:
RCALL Clock_ONE
SBRC BTS,7
rjmp s1
RCALL Data_null
rjmp s11
s1: RCALL Data_one
s11: RCALL Clock_NULL
ROL BTS
DEC Bit_counter
BRNE next_bit_s
RCALL SYNC_ONE
RCALL Clock_ONE
RET
и никак на выходе 0
Вот программа на отправку
.include "tn25def.inc"
.def temp =R16
.def temp1 =R17
.def BTS =R20
.def Bit_counter =R21
.equ SYNC =PB4
.equ SCL =PB2
.equ SDA =PB0
.org 0
rjmp RESET
reset:
ldi temp,RAMEND
out SPL,temp ;Init Stack Pointer
ldi temp,0b010111
out DDRB,temp
ldi temp,0b010000
out PORTB,temp
ldi temp,0x80
out CLKPR,temp
ldi temp,0b00001000 ;8/256=31.250 khz
out CLKPR,temp
LDI BTS,0X0F
RCALL Send_Byte
PROG:
RJMP PROG
DELAY:
ldi temp1,0x0F
d2:ldi temp,0xff
d1:dec temp
brne d1
dec temp1
brne d2
RET
;++++++++++++++++++++++++++++++++++++++++++++++++++++i2c send BTS= ?????????? ????
SYNC_null:
CBI PORTB,SYNC
RCALL DELAY
RET
SYNC_ONE:
SBI PORTB,SYNC
RCALL DELAY
RET
Clock_null:
CBI PORTB,PB1
CBI portB,scl
RCALL DELAY
RET
Clock_one:
SBI PORTB,PB1
SBI portB,scl
RCALL DELAY
RET
Data_null:
CBI portB, sda
RCALL DELAY
RET
Data_one:
SBI portB,sda
RCALL DELAY
RET
Send_Byte:
LDI Bit_counter, 8
CLR TEMP
RCALL SYNC_ONE
RCALL Clock_ONE
RCALL SYNC_null
next_bit_sI:
RCALL Clock_ONE
SBRC TEMP,7
rjmp sI
RCALL Data_null
rjmp sII
sI: RCALL Data_one
sII: RCALL Clock_NULL
ROL TEMP
DEC Bit_counter
BRNE next_bit_sI
LDI Bit_counter, 8
next_bit_s:
RCALL Clock_ONE
SBRC BTS,7
rjmp s1
RCALL Data_null
rjmp s11
s1: RCALL Data_one
s11: RCALL Clock_NULL
ROL BTS
DEC Bit_counter
BRNE next_bit_s
RCALL SYNC_ONE
RCALL Clock_ONE
RET
и никак на выходе 0
Re: AD5601(dac) spi 3-wire
SPI программный
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: AD5601(dac) spi 3-wire
Не проверял, но примерно так:
Совет! Никогда не качайте даташиты с левых сайтов, а только с сайта производителя! У Вас даташит PRELIMINARY, хоть уже есть rev. E.
Код: Выделить всё
;Загрузка 8-битного ЦАП, код ЦАП в регистре temp1
Wr_Dac: mov temp,temp1
lsr temp
lsr temp ;temp = 0,0,D7,D6,D5,D4,D3,D2
cbi PORTB,SYNC
rcall Spi_Wr
mov temp,temp1
swap temp
lsl temp
lsl temp ;temp = D1,D0,0,0,0,0,0,0
rcall Spi_Wr
sbi PORTB,SYNC
ret
;Загрузка байта по SPI, код в регистре temp
Spi_Wr: ldi Cnt,8 ;counter load
wd_bit: sbi PORTB,SCL
rol temp
brcs wd_1
wd_0: cbi PORTB,SDA
rjmp wd_clk
wd_1: sbi PORTB,SDA
wd_clk: cbi PORTB,SCL
dec Cnt
brne wd_bit
ret
- Реклама
Re: AD5601(dac) spi 3-wire
БОЛЬШОЕ СПАСИБО, ОЧЕНЬ ПОМОГ)


