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

 
 
> [MEGA8] Проблема с SPI slave
dW2005
сообщение Nov 16 2016, 07:36
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 4-10-06
Пользователь №: 20 960



Доброго времени суток, возникла необходимость допилить уже существующий девайс на восьмой меге, добавив туда измерение времени с выдачей результата мастеру на ADUC836.
Проблема в том, что постоянно возникают коллизии при записи ответа в SPDR, пробовал добавлять на мастере задержки между отправляемыми байтами - безрезультатно.

Кусок кода мастера (с51) выглядит так:

CODE
set_spi_ss(1);
delay_ms(1);

// signature
cs = 'F';
EA = 0;
SPIDAT = cs;
while(ISPI == 0);
ISPI = 0;
b = SPIDAT;
EA=1;
spi_test[0] = b;
//mode
cs += 5;
EA=0;
SPIDAT = 5;
while(ISPI == 0);
ISPI = 0;
b = SPIDAT;
EA = 1;
spi_test[0] = b;

... (тут остальные байты пакета данных)

set_spi_ss(0);
delay_ms(1);


Код мастера отлажен и работает с данным девайсом (только на передачу), ЦАПом, флешкой. Полярность/фаза у обоих естественно те же самые.

Код slave'a (avrgcc) покамест вообще обрезал до безобразия, убрав запись в буфер/проверку SPCR на коллизии, оставив только "голый" ответ:

CODE
void SPI_SlaveInit(void)
{
DDRB=(1<<PINB4) | (BIT(0)) | (BIT(1)); //MISO as OUTPUT
SPCR=(1<<SPE)|(1<<SPIE); //Enable SPI && interrupt enable bit
SPDR=0x88;
}

ISR (SPI_STC_vect)
{
UCHAR c = SPDR;
SPDR = 0x55; // that's what i'm trying to send back
}



В свое время делал подобный обмен по SPI на 8051-совместимых и STM32, подобных проблем не вылезало sad.gif.
Буду премного благодарен за любой пинок в нужном направлении.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dW2005
сообщение Nov 17 2016, 17:02
Сообщение #2





Группа: Участник
Сообщений: 5
Регистрация: 4-10-06
Пользователь №: 20 960



В меге SPI interrupt у слейва возникает после приема очередного байта от мастера. Коллизии возникают вида "запись в регистр во время активной передачи данных".
Частота SPI у ADUC'a самая медленная, Fclk/16.

Жаль что до понедельника напрочь отсутствует осциллограф, а вместе с ним и возможность взглянуть поподробнее на творящееся безобразие sad.gif
Go to the top of the page
 
+Quote Post
k155la3
сообщение Nov 18 2016, 07:20
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(dW2005 @ Nov 17 2016, 20:02) *
(1) В меге SPI interrupt у слейва возникает после приема очередного байта от мастера. Коллизии возникают вида "запись в регистр во время активной передачи данных".
. . . .
(2)Жаль что до понедельника напрочь отсутствует осциллограф, а вместе с ним и возможность взглянуть поподробнее на творящееся безобразие sad.gif

(1) я так понял буферизации нет.
(2) сильно облегчите себе жизнь исползуя лог. анализатор, который позволяет "разобрать" протокол. Посмотрите 2-3 месяца назад была тема по
разбору "полетов" на I2C тут (лог. анализатор) Saleae.
Цена вопроса 15 кваксов - если готовое.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dW2005   [MEGA8] Проблема с SPI slave   Nov 16 2016, 07:36
- - Genadi Zawidowski   А почему в мастере дожидаетесь передачи не после в...   Nov 16 2016, 07:50
|- - dW2005   Цитата(Genadi Zawidowski @ Nov 16 2016, 10...   Nov 16 2016, 08:12
- - aiwa   Полярность сигнала SS "наоборот". Провер...   Nov 16 2016, 17:49
|- - dW2005   Цитата(aiwa @ Nov 16 2016, 20:49) Полярно...   Nov 17 2016, 09:26
- - aiwa   Частота SPI не должна превышать четверть частоты м...   Nov 17 2016, 13:35
- - k155la3   Проверьте соответствие кол-во байт в запросе масте...   Nov 17 2016, 15:36
- - ivn   Попробуйте поменять чип. У меня был случай в гото...   Nov 18 2016, 06:37
- - dW2005   @ivn ->Чип менять пробовал (есть 2 идентичные п...   Nov 18 2016, 11:33
- - ILYAUL   Вам бы почитать как Mega работает как слейв и Вы б...   Nov 18 2016, 18:47
- - aiwa   Цитата(dW2005 @ Nov 18 2016, 14:33) Друго...   Nov 20 2016, 01:12
- - ivn   По моему мнению, если с железом все ОК, то ошибка ...   Nov 21 2016, 08:52


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

 


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


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