Страница 1 из 1

Передача данных из МК в МК методом SPI AVR

Добавлено: Пт ноя 18, 2011 19:36:28
ATrosh
Нужна помощь!!!
Подскажите пожалуйста код с коментарием работы с SPI. :dont_know:
Тоесть из одного МК AVR отправить данные в другой МК AVR с выводом на LСD.

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Сб ноя 19, 2011 01:43:18
Xerion
У Ревича в книге про асм авр был программный SPI с комментариями (код кстати рабочий, я проверял)

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Сб ноя 19, 2011 09:54:23
s64
пройдись по темам, где обсуждают работу с LCD от мобильников, большинство из стекляшек работает по SPI, там и подсмотришь.

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Сб ноя 19, 2011 12:08:10
Jack_A
s64 писал(а):пройдись по темам, где обсуждают работу с LCD от мобильников, большинство из стекляшек работает по SPI, там и подсмотришь.
Очень полезно бывает чтение даташитов. Вот открыл я первый попавшийся на Атмега32 и
там на стр. 141-142 прямо черным по бумажному :

Assembly Code Example(1)
SPI_MasterInit:
; Set MOSI and SCK output, all others input
ldi r17,(1<<DD_MOSI)|(1<<DD_SCK)
out DDR_SPI,r17
; Enable SPI, Master, set clock rate fck/16
ldi r17,(1<<SPE)|(1<<MSTR)|(1<<SPR0)
out SPCR,r17
ret
SPI_MasterTransmit:
; Start transmission of data (r16)
out SPDR,r16
Wait_Transmit:
; Wait for transmission complete
sbis SPSR,SPIF
rjmp Wait_Transmit
ret


C Code Example(1)
void SPI_MasterInit(void)
{
/* Set MOSI and SCK output, all others input */
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);
/* Enable SPI, Master, set clock rate fck/16 */
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}
void SPI_MasterTransmit(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)))
;
}



Assembly Code Example(1)
SPI_SlaveInit:
; Set MISO output, all others input
ldi r17,(1<<DD_MISO)
out DDR_SPI,r17
; Enable SPI
ldi r17,(1<<SPE)
out SPCR,r17
ret
SPI_SlaveReceive:
; Wait for reception complete
sbis SPSR,SPIF
rjmp SPI_SlaveReceive
; Read received data and return
in r16,SPDR
ret
C Code Example(1)
void SPI_SlaveInit(void)
{
/* Set MISO output, all others input */
DDR_SPI = (1<<DD_MISO);
/* Enable SPI */
SPCR = (1<<SPE);
}
char SPI_SlaveReceive(void)
{
/* Wait for reception complete */
while(!(SPSR & (1<<SPIF)))
;
/* Return data register */
return SPDR;
}

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Сб ноя 19, 2011 19:49:07
s64
чтение даташитов не обсуждается - это по умолчанию. человек спрашивал примеры использования.

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Сб ноя 19, 2011 22:26:33
Jack_A
s64 писал(а):чтение даташитов не обсуждается - это по умолчанию. человек спрашивал примеры использования.
Дык это и есть пример использования. Если я выложу кусок из своего проекта - чем приблизительно такой же код будет лучше ?

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Сб ноя 19, 2011 22:46:50
ATrosh
Спасибо всем! Буду пробовать. Если есть еще примеры буду рад :beer: . С asm там понятно и литература есть, но у меня программатор stk500 для AVR Studio4 еще по почте не подошел. Пробую через Bascom c stk200, но в нелпе не все понятно.

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Сб ноя 19, 2011 22:48:25
s64
коментариями на русском он будет лучше. а еще лучше если мы тут совместно напишем ему курсовую или контрольную. очередной студент.

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Сб ноя 19, 2011 23:27:56
ATrosh
Давно уже не студент 36 год идет! Просто для дела надо. Все старался своей головой, но что-то застопорился да и по образованию зоо-инженер :)

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Сб дек 03, 2011 10:13:46
s_black
ATrosh писал(а):Нужна помощь!!!
Подскажите пожалуйста код с коментарием работы с SPI. :dont_know:
Тоесть из одного МК AVR отправить данные в другой МК AVR с выводом на LСD.
Подсказываю

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Вс янв 15, 2012 12:35:34
ATrosh
s_black спасибо за помощь :lol:

Re: Передача данных из МК в МК методом SPI AVR

Добавлено: Вс янв 15, 2012 20:15:19
s_black
Я рад, что информация оказалась Вам полезной :beer: