|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
13.12.2014, 01:58 | #1 (permalink) |
Новичок
Регистрация: 13.12.2014
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
SPI для ATmega 128A на ассемблере
.include "m128def.inc" .equ LowByte=60 .equ CS=PB0 .equ SCK=PB7 .org $000 rjmp reset .org $001C rjmp timer1_ovf reset: cli ldi r16, TCNT1H out TCNT1H, r16 ldi r16, LowByte //ldi r16, TCNT1L out LowByte, r16 ldi r16, (1<<TOIE1) out TIMSK, r16 ldi r16, (1<<CS10)|(1<<CS11) out TCCR1B, r16 ldi r17, (1<<4) out DDRB, r17 clr r16 sei main: RJMP main ldi r18, 1<<ADEN| 1<<ADIE|1<<ADPS2|1<<ADPS0 out ADCSRA, r18 timer1_ovf: eor r16, r17 out PORTE, r16/// ;start ADC 1/32=125; interrupt enable ldi r18, 1<<ADEN| 1<<ADIE|1<<ADPS2|1<<ADPS0|1<<ADSC out ADCSRA, r18 /*ldi r18, 1<<ADFR out ADCSRA, r18 ldi r18, 1<<ADSC out ADCSRA, r18*/ SPI_MasterInit: ; Установка MOSI и SCK на вывод, все остальные на ввод ldi r17,(1<<DDB5)|(1<<DDB1) out DDRB,r17 ; Разрешение SPI в режиме мастера, установка скорости связи fck/16 ldi r17,(1<<SPE)|(1<<MSTR)|(1<<SPR0) out SPCR,r17 ret SPI_MasterTransmit: ; Запуск передачи данных (r16) out SPDR,r16 Wait_Transmit: ; Ожидание завершения передачи данных sbis SPSR,SPIF rjmp Wait_Transmit ret SPI_SlaveInit: ; Установка MISO на вывод и всех ост. на ввод ldi r17,(1<<DDB3) out DDRB,r17 ; Разрешение SPI ldi r17,(1<<SPE) out SPCR,r17 ret SPI_SlaveReceive: ; Ожидание завершения передачи sbis SPSR,SPIF rjmp SPI_SlaveReceive ; Чтение принятых данных и выход из процедуры in r16,SPDR ret |
13.12.2014, 01:58 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Я уверен, что данный список должен вам помочь Доктор фьюзов для AVR - ATmega Fusebit Doctor Монтажная станция своими руками на ATmega 8515 в BASCOM AVR |
13.12.2014, 07:23 | #2 (permalink) |
Member
Регистрация: 08.10.2013
Сообщений: 47
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 390
|
Не вижу установки указателя стека.
Код:
reset: cli LDI R22,HIGH(RAMEND) LDI R23,LOW(RAMEND) OUT SPH,R22 OUT SPL,R23 |
19.12.2014, 16:08 | #3 (permalink) |
Member
Регистрация: 13.05.2011
Сообщений: 401
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 274
|
Строки
Код:
ldi r18, 1<<ADEN| 1<<ADIE|1<<ADPS2|1<<ADPS0 out ADCSRA, r18 Дальше в коде много ошибок. Нет вызова подпрограмм. Первая же подпрограмма слилась с обработчиком прерываний.. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|