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

 
 
> [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
Ответов
aiwa
сообщение Nov 16 2016, 17:49
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Полярность сигнала SS "наоборот". Проверьте его.
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
|- - 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
- - dW2005   В меге SPI interrupt у слейва возникает после прие...   Nov 17 2016, 17:02
|- - k155la3   Цитата(dW2005 @ Nov 17 2016, 20:02) (1) В...   Nov 18 2016, 07:20
- - 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 Текстовая версия Сейчас: 19th June 2025 - 04:03
Рейтинг@Mail.ru


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