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

 
 
> не работает SPI, помогите запустить SPI
skef
сообщение Nov 4 2009, 18:06
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 29-10-09
Из: брежнев
Пользователь №: 53 292



есть 2 мк ATMEGA8, необходимо организовать обмен данными между ними по SPI
CODE
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8def.inc"
rjmp RESET ; Reset Handler
reti;rjmp EXT_INT0 ; IRQ0 Handler
reti;rjmp EXT_INT1 ; IRQ1 Handler
reti;rjmp TIM2_COMP ; Timer2 Compare Handler
reti;rjmp TIM2_OVF ; Timer2 Overflow Handler
reti;rjmp TIM1_CAPT ; Timer1 Capture Handler
reti;rjmp TIM1_COMPA ; Timer1 CompareA Handler
reti;rjmp TIM1_COMPB ; Timer1 CompareB Handler
reti;rjmp TIM1_OVF ; Timer1 Overflow Handler
reti;rjmp TIM0_OVF ; Timer0 Overflow Handler
rjmp SPI_STC ; SPI Transfer Complete Handler
reti;rjmp USART_RXC ; USART RX Complete Handler
reti;rjmp USART_UDRE ; UDR Empty Handler
reti;rjmp USART_TXC ; USART TX Complete Handler
reti;rjmp ADC ; ADC Conversion Complete Handler
reti;rjmp EE_RDY ; EEPROM Ready Handler
reti;rjmp ANA_COMP ; Analog Comparator Handler
reti;rjmp TWSI ; Two-wire Serial Interface Handler
reti;rjmp SPM_RDY ; Store Program Memory Ready Han

reset:
ldi r16,(1<<PB3)+(1<<PB5)
out ddrb,r16 ;mosi and sck is output

ldi r16,255
out portd,r16 ;input port (key)

ldi r16,(1<<spie)+(1<<spe)+(1<<mstr)
out spcr,r16 ;spi enableand, spi int. enable, master mode


ldi r16,high(RAMEND)
out SPH,r16 ;Set Stack Pointer to top of RAM
ldi r16,low(RAMEND)
out SPL,r16
sei ;Enable interrupts

main:
rjmp main ;Main program start

SPI_STC:
ldi r16,(1<<mstr)
out spcr,r16 ;master mode

in r16,pind ;read keyport
out spdr,r16 ;spi data transmitter write
reti


и программа slave:

CODE
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8def.inc"
rjmp RESET ; Reset Handler
reti;rjmp EXT_INT0 ; IRQ0 Handler
reti;rjmp EXT_INT1 ; IRQ1 Handler
reti;rjmp TIM2_COMP ; Timer2 Compare Handler
reti;rjmp TIM2_OVF ; Timer2 Overflow Handler
reti;rjmp TIM1_CAPT ; Timer1 Capture Handler
reti;rjmp TIM1_COMPA ; Timer1 CompareA Handler
reti;rjmp TIM1_COMPB ; Timer1 CompareB Handler
reti;rjmp TIM1_OVF ; Timer1 Overflow Handler
reti;rjmp TIM0_OVF ; Timer0 Overflow Handler
rjmp SPI_STC ; SPI Transfer Complete Handler
reti;rjmp USART_RXC ; USART RX Complete Handler
reti;rjmp USART_UDRE ; UDR Empty Handler
reti;rjmp USART_TXC ; USART TX Complete Handler
reti;rjmp ADC ; ADC Conversion Complete Handler
reti;rjmp EE_RDY ; EEPROM Ready Handler
reti;rjmp ANA_COMP ; Analog Comparator Handler
reti;rjmp TWSI ; Two-wire Serial Interface Handler
reti;rjmp SPM_RDY ; Store Program Memory Ready Han

reset:
ldi r16,(1<<pb4)
out ddrb,r16 ;miso is out

ldi r16,255
out ddrd,r16 ;output port (led)

ldi r16,(1<<spie)+(1<<spe)
out spcr,r16 ;spi enableand spi int. enable


ldi r16,high(RAMEND)
out SPH,r16 ; Set Stack Pointer to top of RAM
ldi r16,low(RAMEND)
out SPL,r16
sei ; Enable interrupts

main:
rjmp main ; Main program start

SPI_STC:
in r16,spdr
out portb,r16
reti


схема смоделирована в протеусе.
обмена данными нет, шины молчат...
может быть кто-нибудь подскажет, где я ошибся?


--------------------
на любой элемент найдется мощность, которая его сожжет.
Go to the top of the page
 
+Quote Post



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

 


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


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