Взаимодействие Двух Avr По Spi

16-03-2013, 02:03 От: admin Посмотрели: 870
Доброго времени суток, возникла проблема - не могу обеспечить передачу данных от одного мк atmega16 к другому (тоже 16-я мега) по spi.



Примеры инициализации, передачи и приёма символа брал из даташита, однако данные не приходят ни на реальном железе, ни в протеусе. Ниже привожу код для мк-мастера и мк-слэйва:



master:






#include <avr/io.h>
#include <avr/interrupt.h>
volatile char bo;

int main(void)
{
DDRB|=(1<<PB4)|(1<<PB5)|(0<<PB6)|(1<<PB7); //все выходы кроме MISO
SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPI2X); //тактирование на половинной частоте от рабочей
sei();
while(1)
{
bo=spi_get(); //бесконечный приём символа
}
}
char spi_get()
{
while(!(SPSR & (1<<SPIF)));
return SPDR;
}



slave:






#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
DDRB|=(0<<PB4)|(0<<PB5)|(1<<PB6)|(0<<PB7); //все входы кроме MISO
SPCR|=(1<<SPE);

sei();


while(1)
{
SPDR = 'j'; //посылаем символ 'j' на другой МК
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)));
}
}



Надеюсь на Вашу помощь!
Раздел: AVR

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Взаимодействие Двух Avr По Spi все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба

Добавление комментария

Ваше имя:*
E-Mail:*
Текст:
Вопрос:
Решите уравнения x+2x=789
Ответ:*
Введите два слова, показанных на изображении:



Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Май 2024    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031