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

 
 
 
Reply to this topicStart new topic
> Передача данных по SPI, Вывод полученных данных в порт
Васька
сообщение Feb 13 2012, 05:46
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 27-03-11
Из: г. Горький
Пользователь №: 63 911



Здравствуйте! Начал осваивать МК. Нужно передать данные от одного МК другому по SPI. МК atmega 128. Взял готовую реализацию SPI из datasheet. Вроде ничего сложного. Данные как бы передаются, а в порт ничего не выводится. Подскажите, пожалуйста, неучу, где ошибка.

Инициализация мастера

Код
void SPI_MasterTransmit()
{
unsigned char cData;
/* Запуск передачи данных */
cData = 0x55;
SPDR = cData;
/* Ожидание завершения передачи данных */
while(!(SPSR & (1<<SPIF)))
;
}

void main(void)
{
PORTB=0x00;
DDRB=0x07;
SPCR=0x50;
SPSR=0x00;
SPI_MasterTransmit();
}



Инициализация слэйва

Код
unsigned char SPI_receive(void)
{
unsigned char data;
data = SPDR;
while(!(SPSR & (1<<SPIF)));
return data;
}

void main(void)
{
PORTB=0x00;
DDRB=0x08;
PORTE=0x00;
DDRE=0xFF;
SPCR=0x40;
SPSR=0x00;
PORTE = SPI_receive();
}
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 13 2012, 08:25
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



В слэйве надо data = SPDR; поставить после while(!(SPSR & (1<<SPIF)));
Go to the top of the page
 
+Quote Post
Васька
сообщение Feb 13 2012, 17:15
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 27-03-11
Из: г. Горький
Пользователь №: 63 911



Заработало! Спасибо sm.gif
Go to the top of the page
 
+Quote Post

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

 


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


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