|
Правильно ли я делаю:
Подключение АЦП ножки: 1,3,15-земля, 2-когда Slave=1, a Master=0(к PD3), 6-задающая частота (у меня 714 КГц) (к PD5), 7-когда Slave=подаются импулься от SCK микроконтроллера, a Master=сам генерит (от CLK IN)(к SCK),8-сигнал TFS от микроконтроллера(к PB2), 9-RFS сам выдает импульс(к PB3),10-к MISO, 11- к MOSI, 12- +5В, 13,14 - соединены между собой.
Подключение ATmega16(TQFP/MLF) ножки:1(PB5) - MOSI,2(PB6)-MISO,3(PB7)-SCK,12(PD3)-задаю сигнал SMODE, 14(PD5)- задаю сигнал CLK IN(714 КГц), 42(PB2)- TFS, 43(PD3)-RFS, 44(PB2/SS)- к PD3.
Запись в АЦП произвожу так:
write_SPI:
;ADC-Slave
sbi portd,pd3;SMODE=1 и SS=1
;Mega16-Master
cbi ddrb,pb4;SS-in
sbi ddrb,pb5;MOSI- out
cbi ddrb,pb6;MISO- in
sbi ddrb,pb7;SCK-out
sbi ddrb,pb2
sbi PORTB,PB2;TFS=1
sbi SPCR,DORD
sbi SPCR,MSTR
sbi SPCR,SPR0
sbi SPCR,SPE
cbi PORTB,PB2;TFS=0
out SPDR,tmp
sbis SPSR,SPIF
rjmp pc-1
in tmp1,SPSR
sbi PORTB,PB2;TFS=1
cbi SPCR,SPE
Чтение из АЦП так:
read_SPI:
;ADC-Master
cbi portd,pd3;SMODE=0 и SS=0
;Mega16-Slave
cbi ddrb,pb4;SS-in
cbi ddrb,pb5;MOSI-in
sbi ddrb,pb6;MISO-out
cbi ddrb,pb7;SCK-in
cbi ddrb,pb3;RFS-in
cbi SPCR,DORD
cbi SPCR,MSTR
cbi SPCR,SPR0
sbi SPCR,SPE
sbic pinb,pb3;если RFS=0 то принимаем
rjmp pc-1
sbis SPSR,SPIF
rjmp pc-1
in tmp,SPDR
in tmp1,SPSR
cbi SPCR,SPE
Если можете, то подскажите где ошибка?
E-mail: info@telesys.ru