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

 
 
> Неустойчивая работа SPI (ATMega8), Связь рвется на высокой частоте передачи
Didro
сообщение Nov 10 2009, 20:20
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 94
Регистрация: 9-04-07
Пользователь №: 26 893



Добрый день,
отлаживаю связь между двумя ATMega8 через SPI (стенд на изображении в прицепе )
Наблюдаю следующую картину:

при тестировании идет в прерывании таймера посылка 2х байт:

Код
void SPI_MasterTransmit(unsigned char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)));
}
...

SPI_MasterTransmit(12);
SPI_MasterTransmit(13);


а в Slave прием:
Код
SIGNAL (SPI_STC_vect)
{
spi_input = SPDR;

SPDR = 111; //отсыл в ответ

Spiarr[Spiarc] = spi_input;// читаем принятое в массив
Spiarc = Spiarc + 1;// увеличиваем индекс массива приемника
if (Spiarc == 2) // когда = 2 то анализируем принятый "пакет"
{
Spiarc = 0;

if ((Spiarr[0] == 12)&&(Spiarr[1]==13))
    {
           PORTB ^= (1<<1);//  мигаем если пришло то что отправляли
    }
}

}


светодиод первое время мигает - т.е. принимает данные, но через минут 5 потоковой пересылки, с частотой отправки 1 кГц светодиод гаснет - т.е. данные приняты со сбоем или не приняты.

Ощущение такое что накапливается какаято ошибка в отправке.

Свойственно ли это spi ? Поддерживает ли он потоковую пердачу без ошибок ?
С чем это может быть связано ? Можно SPI вести проводами или это целиком наплатный интерфейс ?

В будущем нужно будет связывать ATMega8 с CAN-контроллером (для выхода на CAN-шину) - планировал разместить их на разных платах и кинуть шлейфом, можно ли так делать ?

Спасибо
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



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

 


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


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