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

 
 
> обмен по spi, как передать по spi 52 бита
vados
сообщение Mar 19 2010, 08:10
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 19-12-08
Пользователь №: 42 609



Кто может - помогите! Есть проблема при передаче по SPI. Нужно организовать передачу 52 бит для управления аудиопроцессором lc75373(только в одну сторону).
В принципе код есть - точная копия из ДШ. Но при прогоне в PROTEUS, между байтами получается промежуток, как понял из ДШ после передачи одного байта генератор SPI останавливается и из-за этого получаются промежутки, или это глюк PROTEUS?

Код
unsigned char i=0;
unsigned char mass_data [7] = { 0x0A, 0xff, 0x3A, 0xAf, 0xdd, 0xA0, 0xcf };// mass_data - массив с данными вместо 52 56бит(пока)
void SPI_MasterTransmit(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)))
;

while (1)
      {
      while(i<7)
        {
        PORTB=0x10;// PORTB.4 - вывод SS - chip select                              
        SPI_MasterTransmit( mass_data [i] );
        i++;        
        }
        PORTB=0;
}


Можно ли это сделать аппаратно, проблема еще в том что кол-во бит не кратно восьми, или лучше все это делать программно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andron_
сообщение Mar 19 2010, 09:52
Сообщение #2


.NET developer
***

Группа: Свой
Сообщений: 218
Регистрация: 20-10-07
Из: Новосибирск
Пользователь №: 31 532



Цитата
данные гонятся только побайтно через небольшие промежутки

как написали, так и гонятся.
сначала начинается передача, затем вы ждете окончания, и лишь потом идете на начало цикла, проверяете условие, выставляете порт в нужное состояние...
в MasterTransmit если строчки кода местами поменять, задержка между байтами будет меньше.
Go to the top of the page
 
+Quote Post



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

 


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


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