Задача: по UART принимается 1 байт, этот байт нужно отослать по SPI c 1-го стенда STK500, на второй стенд STK500 который
также принимает его по SPI и выводит этот байт на светодиоды.
Принять по UART получилось, выдать по SPI c 1-го стенда также (осциллографом все сигналы проверил), но вот принимать и/или
отображать второй стенд не желает.
Микроконтроллер Atmega 16.
КОД МАСТЕРА:
;--------UART------------
LDI R16,0x00
OUT 0x1A,R16 ;ddra //КНОПКИ
LDI R16,0xFF
OUT 0x14,R16 ;ddrc //СВЕТОДИОДЫ
LDI R16,0x10
OUT 0x0A,R16 ;ucr
LDI R16,0x17
OUT 0x09,R16 ;ubrr 3,69 MHz 9600 bod/sec
z1:
SBIS 0x0B,7 ;ozhidaet flag okonchaniya priema
JMP z1
IN R20,0x0C ;schitivaem bait
OUT 0x15,R20 ;portc
;------------------------------
;-------Master-------
LDI R16,0xBF
OUT 0x17,R16 ;ddrb
LDI R16,0x40
OUT 0x11,R16 ;ddrd
LDI R16,0x40
OUT 0x12,R16 ;portd !ss=1
LDI R16,0x52
OUT 0x0D,R16 ;SPCR
a1:
SBIC 0x19,6
JMP a1
a2:
SBIS 0x19,6
JMP a2
LDI R16,0x00
OUT 0x12,R16 ;portd !ss=0
LDI R16,0x00
q1:
inc r16
cpi r16,0x20
brne q1
OUT 0x0F,R20 ;SPDR peredaem bait
z2:
SBIS 0x0E,7 ;ozhidaet flag okonchaniya peredachi
JMP z2
LDI R16,0x00
q2:
inc r16
cpi r16,0x20
brne q2
LDI R16,0x40
OUT 0x12,R16 ;portd !ss=1
;--------------------------
КОД СЛЕЙВА:
LDI R16,0xFF
OUT 0x14,R16 ;ddrc //СВЕТОДИОДЫ
LDI R16,0x4F
OUT 0x17,R16 ;ddrb
LDI R16,0x40
OUT 0x0D,R16 ;SPCR
z2:
SBIS 0x0E,7 ;ozhidaet flag okonchaniya peredachi
JMP z2
IN R16,0x0F ;SPDR
OUT 0x15,R16 ;portc
Проект разработан в AVR Studio.
Оба стенда рабочии, проверено вот такой программой:
//выдаёт с порта D тестовый байт AA и принимает его по SPI того же стенда, D.0=!SS, D.1=SCK, D.2=MOSI
LDI R26,0x60
LDI R27,0x00
LDI R21,0x01
ST X+,R21
LDI R21,0x00
ST X+,R21
LDI R21,0x06
ST X+,R21
LDI R21,0x04
ST X+,R21
LDI R21,0x02
ST X+,R21
LDI R21,0x00
ST X+,R21
LDI R21,0x06
ST X+,R21
LDI R21,0x04
ST X+,R21
LDI R21,0x02
ST X+,R21
LDI R21,0x00
ST X+,R21
LDI R21,0x06
ST X+,R21
LDI R21,0x04
ST X+,R21
LDI R21,0x02
ST X+,R21
LDI R21,0x00
ST X+,R21
LDI R21,0x06
ST X+,R21
LDI R21,0x04
ST X+,R21
LDI R21,0x02
ST X+,R21
LDI R21,0x00
ST X+,R21
LDI R21,0x04
ST X+,R21
LDI R21,0x05
ST X+,R21
LDI R16,0x00
OUT 0x1A,R16 ;ddra in
LDI R16,0xFF
OUT 0x14,R16 ;ddrc out
LDI R16,0xFF
OUT 0x11,R16 ;ddrd out
LDI R16,0x01
OUT 0x12,R16 ;portd !ss=1
LDI R20,0x00
LDI R28,0x60
LDI R29,0x00
a1:
SBIC 0x19,6
JMP a1
a2:
SBIS 0x19,6
JMP a2
LDI R16,0x4F
OUT 0x17,R16 ;ddrb
LDI R16,0x44
OUT 0x0D,R16 ;SPCR
M1:
LD R19,Y+
OUT 0x12,R19 ;portd
INC R20
LDI R21,0x00
M3:
INC R21
CPI R21,0x0E
BRNE M3
CPI R20,0x14
BRNE M1
z1:
SBIS 0x0E,7 ;ozhidaet flag okonchaniya priema
JMP z1
IN R16,0x0F ;SPDR
OUT 0x15,R16 ;portc