Господа! Помогите разобраться с SPI.... (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Сапожник 16 февраля 2004 г. 09:34


Контроллер выполняет только две операции:
1. При приеме байта по SPI он его отправляет в RS-485
2. При приеме байта по RS-485 он его отправляет в SPI

Контроллер по SPI инициализирован как Slave, Макросы RX_On, RX_Off переключают микросхему RS-485 в режимы прием передача.

Проблема состоит в том, что при принятии байта по UART, контроллер отправляет его по SPI, но при этом, выйдя из прерывания почему - то в главном цикле снова обнаруживает флаг SPIF, и исполняет действие отправки данных в UART

main:

sbis SPSR,SPIF ; Ждем пока не прийдет новый байт по SPI
rjmp main
cbi SPSR,SPIF ; Сбрасываем Флаг

RS_On ; Включаем RS-485 на передачу
in temp,SPDR ; Получаем байт из регистра SPI
out UDR, temp ; Отправляем байт в UART

rjmp main

; Исполнение прерывания RX_Compl
UART_RX:
in temp,SREG
push temp

in temp,UDR ; Принимаем байт из UART
out SPDR,temp ; Ложим байт в регистр SPI

sbi portB,EV ; Взводим сигнал для
; мастера о наличии нового байта
UART_RX_1:

sbis SPSR,SPIF ; Ждем пока мастер заберет данные
rjmp UART_RX_1

cbi portB,EV ; Сбрасываем сигнал наличия новых данных
cbi SPSR,SPIF ; Сбрасываем флаг SPIF

pop temp
out SREG, temp
reti


; Исполнение прерывания TX_Compl
UART_TX:
RS_Off ; Отключаем RS-485

reti
>>


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

Ответы



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

E-mail: info@telesys.ru