Перейти к содержанию

Передача данных по аппаратному SPI


Гость химик

Рекомендуемые сообщения

Добрый день. Вопрос такой: master устройство передает 3 байта начиная с MSB, режим 0, использую аппаратный spi, оба устройства - микроконтроллеры Atmega. Пишу в CodeVisionAVR:

spi(temp_ADDR);
spi(temp_MSB);
spi(temp_LSB);

 

Как принимать эти байты в slave?

Изменено пользователем химик
Ссылка на комментарий
Поделиться на другие сайты

С работой spi разобрался. В обработчике прерывания slave написал следующее.

interrupt [SPI_STC] void spi_isr(void){

static unsigned char counter_3=1;
unsigned char data;
data=SPDR;

switch(counter_3){
  case 1: {temp_ADDR=data;counter_3++;break;}
  case 2: {temp_MSB=data;counter_3++;break;}
  case 3: {temp_LSB=data;counter_3=1;break;}   
  };

  if(counter_3==1)offset=1;									 // разрешаем обработать полученные байты

}

В PROTEUSE все работает, а в железе частично. Master отсылает байты исправно, а вот slave или коверкает их, или принимает не все байты. Кто нибудь сталкивался с таким?

Изменено пользователем химик
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...
  • 2 недели спустя...

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...