реклама на сайте
подробности

 
 
> AVR+SPI
gm1957
сообщение Jun 2 2005, 03:19
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 2-06-05
Пользователь №: 5 653



Люди добрые! Подскажите! То ли в AVRStudio глюк, то ли я заработался.
В AVRStudio v4.10 запускаю такую вещь:
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\m8def.inc"
.def temp=r16
.CSEG
.org 0
rjmp RESET
nop
.
.
rjmp SPI;
.
.
nop
;****** обработка RESET ******************
RESET:
cli ;запрещение прерываний
ldi temp,low(RAMEND) ;инициализация стека
out SPL,temp ; --"--
ldi temp,(1<<PB0)+(1<<PB3)+(1<<PB5) ;определение линий
;порта B как выходных
out DDRB,temp ;PB0 - линия CS внешнего
;ЦАП с интерфейсом SPI, PB3 - ;линия MOSI, PB5 - линия SCK
ldi temp,1<<PB0 ;установка PB0 - запрет выбора
out PORTB,temp ;внешнего ЦАП
ldi temp,(1<<SPIE)+(1<<SPE)+(1<<MSTR) ;SPIE - разрешение
;прерывания SPI, SPE - ;разешение работы SPI
;MSTR - определение AVR
;как мастера
out SPCR,temp ;инициализация SPI
sei ;разрешение прерываний
ldi XH,high(0xffff) ;подготовка данных для
ldi XL,low0xffff) ;загрузки по SPI
cbi PORTB,PB0 ;сброс PB0 -разрешение
;работы внешнего ЦАП
out SPDR,XH ;передача данных
out SPDR,XL ;по SPI
sbi PORTB,PB0
reti
;****** обработка IRQ *********************
SPI: reti

при пошаговой отладке сразу же после разрешения прерываний (командой sei) вызывается обработка SPI, хотя, насколько я знаю, обработка SPI вызывается ПОСЛЕ ПЕРЕДАЧИ ДАННЫХ, а, в свою очередь, передача данных начинается только ПОСЛЕ ЗАГРУЗКИ РЕГИСТРА SPDR, которая у меня производится после общего разрешения прерываний!
Где затык?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 06:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01339 секунд с 7
ELECTRONIX ©2004-2016