Например TDA7294

Форум РадиоКот • Просмотр темы - глюки по SPI
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 29, 2025 20:41:16

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 36 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: глюки по SPI
СообщениеДобавлено: Вт сен 11, 2012 16:10:58 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
Сильно прошу не бить, связь двух МК осилил самостоятельно пересылку двух байт тоже осилил ....
Осталось подружить три контроллера один мастер два slave, и тут затык при передаче мастера все посылки проходят,
а вот ответы от slave- oв теряются предположительно из-за одновременно включенных на slave- ах выходов MISO.
Помогите , а то моя голова уже кругом и лапки кверху...
проэкт в протеусе 7,7 sp2 :cry:


Вложения:
SPI передача N байтов.rar [29.19 KiB]
Скачиваний: 242

_________________
идейный борец за ден. знаки всего мира
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Вт сен 11, 2012 16:21:14 
Потрогал лапой паяльник
Аватар пользователя

Карма: 2
Рейтинг сообщений: 13
Зарегистрирован: Чт июн 23, 2011 07:55:51
Сообщений: 330
Рейтинг сообщения: 0
Воткните в шину по резистору междду каждым мк и с помошью осцилограмок посмотрите причины коллизий.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Вт сен 11, 2012 16:35:08 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
А сигналы SS у каждого помощника свои, или на одну линию повесили?
Должны быть у каждого персональный сигнал выбора, тогда никаких коллизий не будет

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Вт сен 11, 2012 16:37:56 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
да ессно у каждого корпуса свой SS

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср сен 12, 2012 11:02:31 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
Решено кому-то может пригодиться. Прерывание по SPI генериться только после получения полного байта в SPDR
Соответственно ноги у двух slave находятся в состоянии выходов и когда один из них бросает пакет то второй высаживает линию.
Решил проблему так: задействовал внешнее прерывание (у меня в проэкте оно всё-равно используется и проверяю если на ноге SS=0 то перевожу ногу на выход) соответственно конфликтов нет...
Мож у кого есть решение поэлегантнее, приму к рассмотрению, мой проект пока еще не окончательный,
планируется передача от одного мастера - произвольному slave пакет произвольной длины. Работаю над продолжением промежуточный вариант предосталяю на рассотрение


Вложения:
SPI передача N байтов.rar [32.28 KiB]
Скачиваний: 250

_________________
идейный борец за ден. знаки всего мира
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 09:26:21 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
новый прикол... после отладки передачи 2-х байт... загнал этот кусок передачи в бОльший проект.И вуаля, при первой посылке по сигналам SCK, MOSI идет заполнение как при ШИМ с частотой Fcpu, плюс ко всему после первой посылки теряются 5-7 посылок. И следующие уже идут без заполнения и без потерь...Помогите.....

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 09:35:11 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Вт июн 29, 2010 12:31:49
Сообщений: 670
Рейтинг сообщения: 0
Фильтры по питанию процов есть?
Напарывался уже пару раз на это. Не с SPI, но всё-таки было. Даже если сам БП помех не выдаёт.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 09:42:21 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
после 7805 стоит 470uF.
Главное proteus сцуко мне показывает все ок даже на удвоенной скорости передачи, а вот в железке никак не идет..

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 11:12:39 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 889
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6216
Откуда: Minsk
Рейтинг сообщения: 0
Вот за что я люблю Протеус ( и потому им не пользуюсь :) ) -- ему по фиг разводка платы, экранировка, наводки и т.д.
Ну что тут можно посоветовать, кроме банального : возьми осцилл и ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 11:22:40 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
Вот как раз осцыл и показывает смотри пост выше.....
Какая задержка должна быть/может быть от загрузки данных в регистр SPDR до выдачи их по SPI?
Нужна ли инициализация SPI каждый раз перед посылкой пачки байт?
Пишу в CVAVR инициализация SPI
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 4000,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First

//SPCR = 0x50;
SPCR=0xD0;
SPSR=0x00;
достаточно?

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 11:27:42 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
По осцылу заметил что заполнение частотой происходит только новоустановленный байт, то есть если в посылке устанавливается новый байт то он заполнен частотой Fcpu а осталые идут без заполнения и SCK тоже идут без заполнения уже со второй посылки..... Куда копать?????

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 12:09:16 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Чет я не понял, вы вроде пользуетесь CVAVR, и спрашиваете правильно ли регистры настроили.
В нем есть даже выбор master/slave
Сдается мне, что есть аппаратное разрешение коллизий.Ведь интерфейс аппаратный.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 12:18:04 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
Ага только несколько раз я уже курил даташит, визард не правильно выставляет биты инициализации SPI.
Плюс (скорее минус) передача DWORD не реализована в визарде. WCOl молчит шоб ему.

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 12:39:18 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Похоже только вы разбираетесь как правильно выставить биты, а целая команда разработчиков вообще не вкуривают.
А передачу дворд можно слепить из передачи байта легко.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 13:56:56 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
Я сказал только то, что я сказал не более не додумывайте лишнего...

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 15:38:46 
Мудрый кот
Аватар пользователя

Карма: 24
Рейтинг сообщений: 286
Зарегистрирован: Чт июн 10, 2010 08:55:35
Сообщений: 1810
Откуда: Сибирские Афины
Рейтинг сообщения: 0
kama3er писал(а):
после 7805 стоит 470uF.
Главное proteus сцуко мне показывает все ок даже на удвоенной скорости передачи, а вот в железке никак не идет..
А керамика около МК, как можно ближе к ножкам питания имеется?

Схему обычной картинкой можете "прицепить"?
За одно и фото монтажа не плохо было бы.

_________________
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 17:33:56 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
Вопрос с заполнением снимается... Это сцуко говенные осциллографы AKTAKOM не успевал отрисовывать... проверил на TEKTRONIX все ок - нету там заполнения.. Извиняюсь за дезинформацию ...
Антиреклама не пользуйтесь люди осцылами фирмы AKTAKOM мало того что, подобные глюки ловить приходиться, так они еще драйвера по win7 зажимают продают как отдельное ПО, хотя эта же серия выпускаемая сейчас комплектуется по умолчанию драйвеами под win7. Вот и приходиться держать еще и win XP.... Нехорошие люди!

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Ср окт 31, 2012 17:41:01 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
Kavka монтажки, нет все собрано на PINBOARD...
нашел что у меня выдает spi часть посылки в железе...
лезут только младшие байты...
Ищу дальше

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Чт ноя 01, 2012 15:11:28 
Открыл глаза
Аватар пользователя

Зарегистрирован: Ср фев 15, 2012 17:30:44
Сообщений: 41
Откуда: Украина Шостка
Рейтинг сообщения: 0
Вот мой кусочек кода передачи приема
в PROTEUS посылки летят на ура
в железе хрень какая-то
пропадают биты ....
такое впечатление что в SPDR попадает какая-то фигня вместо нужного значения
ХЕЛП МИ ПЛИЗ!!! :cry:

volatile unsigned long int add_value@0x01D5;
volatile unsigned int res_volt@0x01D9;
volatile unsigned char resive[4]@0x01DD, transfer[4]@0x01E1;

void SPI_MasterTransmit(long int cData)
{
char a,i;
#asm
clr r26
sts 0x01E1, r26
sts 0x01E2, r26 ;очищаем регистр
sts 0x01E3, r26 ;пустое значение во все байты переменной transfer
sts 0x01E4, r26 ;

sts 0x01DD, r26 ;пустое значение во все байты переменной resive
sts 0x01DE, r26 ;
sts 0x01DF, r26 ;
sts 0x01E0, r26 ;
#endasm

if (cData==add_value)
{
i=4;
#asm
lds r26,0x01D8 ; //add_value
sts 0x1E1, r26 ; //transfer
lds r26,0x01D7 ;//затасовываем перемм int Add_value в массив char transfer[]
sts 0x01E2, r26 ;
lds r26,0x01D6 ;
sts 0x01E3, r26 ;
lds r26,0x01D5 ;
sts 0x01E4, r26 ;
#endasm

PORTB &= ~(1<<1);
}
if (cData==volt_step)
{
i=2;
#asm
lds r26,0x01E6 ; //volt
sts 0x1E1, r26 ; //transfer
lds r26,0x01E5 ;// таж самое только с volt
sts 0x1E2, r26 ;
#endasm

PORTB &= ~(1<<2);
}
for (a = 0; a < i;)
{
delay_us(10);
SPDR = transfer[a]; // даные для записи
while(!(SPSR & (1<<SPIF))) // ждем подтверждения прохода байта - байт принят
;
resive[a]=SPDR;
a++;
};

if (cData==add_value)
{
PORTB |= (1<<1);

};
if (cData==volt_step)
{
PORTB |= (1<<2);
#asm
lds r24,0x01DD ;загружаем байт переменной resive в переменную res_volt
sts 0x01DA, r24
lds r24,0x01DE
sts 0x01D9, r24
#endasm
};

_________________
идейный борец за ден. знаки всего мира


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: глюки по SPI
СообщениеДобавлено: Чт ноя 01, 2012 19:31:13 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Кошмар, черт могу сломит.
Удивляюсь как вообще у вас этот код работает.
Может добавите алгоритм действий в виде блок схемы, чтобы было понятно чего вы добиваетесь?
И почему у вас простые массивы выглядят как адреса каждой ячейки?Разве нельзя адресу задать осмысленное имя и с ним работать?
Типа такого:
Код:
 _receive0 equ @0x01DD
 _receive1 equ  _resive0+1


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y