Spi интерфейс

Обсуждаем контроллеры компании Atmel.
Ответить
Hailmary
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Ср янв 18, 2023 13:01:27

Spi интерфейс

Сообщение Hailmary »

Люди, помогите кто может. Как впихнуть на ассемблере 16 бит в 8-битный регистр spdr, чтобы настроить внешний ацп?
Реклама
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Spi интерфейс

Сообщение roman.com »

Код: Выделить всё

LDS R22, FIFO+0     // Чтение SRAM        -2 такт 
OUT SPDR, R22       // Запись SPI         -1 такт
while_0:            // while(!(SPSR & (1<<7)));
SBIC PINB, 2        // проверка SS = 0    -1 такт
RJMP SPI_stop       // > SPI_stop         -1 такт // -1 такт(переход)
SBIS SPSR, 7        // проверка флаг SPIF -1 такт(SPIF Сбрасывается при чтении SPSR)
RJMP while_0        // > while_           -1 такт // -1 такт(переход)
IN  R22, SPDR       // Чтение SPI         -1 такт
STS FIFO+0, R22     // Запись SRAM        -2 такт 
SPI_stop:           // SPI_stop
Реклама
Аватара пользователя
VNS
Говорящий с текстолитом
Сообщения: 1627
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Re: Spi интерфейс

Сообщение VNS »

Вам нужно передать два байта по SPI внешнему АЦП? Если так, то второй бай загружаете в регистр SPDR в прерывании по окончании передачи очередного байта…
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Spi интерфейс

Сообщение roman.com »

Код: Выделить всё

// передаём первый байт

LDS R22, FIFO+0     // Чтение SRAM        -2 такт
OUT SPDR, R22       // Запись SPI         -1 такт
while_0:            // while(!(SPSR & (1<<7)));
SBIC PINB, 2        // проверка SS = 0    -1 такт
RJMP SPI_stop       // > SPI_stop         -1 такт // -1 такт(переход)
SBIS SPSR, 7        // проверка флаг SPIF -1 такт(SPIF Сбрасывается при чтении SPSR)
RJMP while_0        // > while_           -1 такт // -1 такт(переход)
IN  R22, SPDR       // Чтение SPI         -1 такт
STS FIFO+0, R22     // Запись SRAM        -2 такт

// передаём второй байт

LDS R22, FIFO+1     // Чтение SRAM        -2 такт
OUT SPDR, R22       // Запись SPI         -1 такт
while_1:            // while(!(SPSR & (1<<7)));
SBIC PINB, 2        // проверка SS = 0    -1 такт
RJMP SPI_stop       // > SPI_stop         -1 такт // -1 такт(переход)
SBIS SPSR, 7        // проверка флаг SPIF -1 такт(SPIF Сбрасывается при чтении SPSR)
RJMP while_1        // > while_           -1 такт // -1 такт(переход)
IN  R22, SPDR       // Чтение SPI         -1 такт
STS FIFO+1, R22     // Запись SRAM        -2 такт

SPI_stop:           // SPI_stop
Реклама
Эиком - электронные компоненты и радиодетали
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Spi интерфейс

Сообщение Martian »

а если тыщу байт? копи-пасте не сломается?
Реклама
akl
Друг Кота
Сообщения: 4447
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Spi интерфейс

Сообщение akl »

Как вариант, когда адрес SPSR>$1F

Код: Выделить всё

IND_OUT:
	OUT	SPDR,R20
WAIT_R20:
	IN	R16,SPSR
	SBRS	R16,SPIF
	RJMP	WAIT_R20
;*****
	OUT	SPDR,R21
WAIT_R21:
	IN	R16,SPSR
	SBRS	R16,SPIF
	RJMP	WAIT_R21
Реклама
Hailmary
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Ср янв 18, 2023 13:01:27

Re: Spi интерфейс

Сообщение Hailmary »

Все спасибо за ответы, буду пробовать.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Spi интерфейс

Сообщение Demiurg »

Код: Выделить всё

// В даташите на АЦП нужно узнать, какой байт отправляется первым, старший или младший

Init_Ext_ADC:
...
ldi  r16, HIGH (SETT_EXT_ADC_VAL) // Отправка старшего байта значений настройки АЦП.
out  SPDR, r16

Init_Ext_ADC_1:
in   r16, SPSR
sbrs r16, SPIF
rjmp Init_Ext_ADC_1

ldi  r16, LOW (SETT_EXT_ADC_VAL) // Отправка младшего байта значений настройки АЦП.
out  SPDR, r16

Init_Ext_ADC_2:
in   r16, SPSR
sbrs r16, SPIF
rjmp Init_Ext_ADC_2

...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15585
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Spi интерфейс

Сообщение BOB51 »

В любом случае никто не запрещает программную реализацию SPI (или I2C) с любой длиной данных...
:roll:
Ответить

Вернуться в «AVR»