Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 22.03.2013, 04:22  
pavned
Прописка
 
Регистрация: 25.10.2012
Сообщений: 112
Сказал спасибо: 50
Сказали Спасибо 1 раз в 1 сообщении
pavned на пути к лучшему
По умолчанию ATmega32 16 бит SPI

Доброго времени суток.
Делаю обмен информацией по SPI порциями по 16 бит.

Отправка 16 бит со стороны сервера:
Код:
void spi_ad_16(unsigned short data) 
{
    unsigned char MSdata = ((data ››8) & 0x00FF);
    unsigned char LSdata = (data & 0x00FF);

    SPDR = MSdata; 
    while(!(SPSR & (1‹‹SPIF)));
    SPDR = LSdata;
    while(!(SPSR & (1‹‹SPIF)));
}
Вопрос в том, как нужно правильно принимать. Точнее, как "собрать" два 8-битных числа в одно 16битное, понимаю что сдвиг, но... как правильно?
Код:
unsigned short SPI_SlaveReceive(void)
{
	unsigned char MSdata;
        unsigned char LSdata;
	unsigned short data;
	
        /* Wait for reception complete */
        while(!(SPSR & (1‹‹SPIF)));
	MSdata = SPDR;
	while(!(SPSR & (1‹‹SPIF)));
	LSdata = SPDR;
    
	//вот здесь???
        //data = MSdata+LSdata

        return data;
}

что-то наподобие такого работать будет?
Код:
data = MSdata;
data = data ‹‹ 8;
data += LSdata;
спасибо за помощь.
Реклама:

Последний раз редактировалось pavned; 22.03.2013 в 04:41.
pavned вне форума  
Непрочитано 22.03.2013, 04:45  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: ATmega32 16 бит SPI

Код:
unsigned short SPI_SlaveReceive(void)
{
unsigned short data;
/* Wait for reception complete */
        while(!(SPSR & (1‹‹SPIF)));
	data = SPDR;
	while(!(SPSR & (1‹‹SPIF)));
	data =( data ‹‹ 8 ) + SPDR;
       return data;
}
Yurkin2007 вне форума  
Сказали "Спасибо" Yurkin2007
pavned (22.03.2013)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
10 бит в SPI протоколе Faworit Микроконтроллеры, АЦП, память и т.д 6 09.09.2012 15:30
STM32 и 9 бит SPI... всё так плохо? st__1 Микроконтроллеры, АЦП, память и т.д 94 07.08.2012 21:05
ATmega48-ATmega32 связь по SPI Pavel_xx Микроконтроллеры, АЦП, память и т.д 14 14.10.2011 11:20
Мистическая проблема с SPI в atmega32 Solaris_M Микроконтроллеры, АЦП, память и т.д 33 13.10.2011 16:40
Глюк Протеуса при работе с SPI ATMEGA32 Klim63 Микроконтроллеры, АЦП, память и т.д 0 17.05.2010 03:04


Часовой пояс GMT +4, время: 00:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot