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

 
 
> Управление atmega16 с ПК, Через SPI - подскажите пример кода для контроллера
zi4rox
сообщение Nov 9 2008, 12:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-04-08
Пользователь №: 36 480



Всем привет,

Как с ПК передать байты (некую команду допустим) в МК по SPI я знаю. Загвоздка вот в чем:
подскажите плиз как запрограммировать сам МК, чтобы тот прочитал переданный байт и уже мог с ним работать? (Там получается что МК в режиме SLAVE)

* Любой пример рабочего кода, любой совет - за все огромное спасибо!
** Также сейчас осваиваю proteus - если есть какие нибудь шаблоны/модели интересные где с SPI можно поиграться - поделиться так же плиз

Сообщение отредактировал zi4rox - Nov 9 2008, 13:04
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SysRq
сообщение Nov 9 2008, 17:24
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



WinAVR, ATMega16:
CODE
#include <avr\io.h>

#define DDR_SPI DDRB
#define DD_MISO PB6

void SPI_SlaveInit(void)
{
/* Set MISO output, all others input */
DDR_SPI = (1 << DD_MISO);
/* Enable SPI */
SPCR = (1 << SPE);
}

unsigned char SPI_SlaveReceive(void)
{
/* Wait for reception complete */
while(!(SPSR & (1 << SPIF)))
;
/* Return data register */
return SPDR;
}

#define CMD1 0xC0
#define CMD2 0xC1
#define CMD3 0xC2
#define CMD4 0xC3

int main(void)
{
SPI_SlaveInit();

for(;;)
{
switch(SPI_SlaveReceive())
{
case CMD1:
break;
case CMD2:
break;
case CMD3:
break;
case CMD4:
break;
default:
// cmd unknown
break;
}
}

return 0;
}

Go to the top of the page
 
+Quote Post



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

 


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


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