Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - s_s

Страницы: [1] 2 Далее
1
Я, для первой пробы, так сказать проверки, сам уровни подавал, плюсик минусик, а data на светодиод, смотрел моргает нет.
Atmega сразу пошла, там 5 вольт, без всяких преобразователей уровня.

А Stm32, здесь если бы не осциллограф, я бы так и не знал, у HC368 и CPU вообще нагрузочной способности портов по ходу нет,
изменялась форма осциллограммы сигналов latch и clk. Главное эти сигналы latch и clk подать, а data на осциллограф.

В той ссылке пример spi_slave с DMA, как то у них DMA легко включается, это полный код?

Вы осциллограммы смотрели?
Вам отладчик доступен?


2
Atmega подходит, STM32 подходит, ESP32 что не подходит?
    hspi1.SPI_CPOL=SPI_CPOL_High; // полярность сигнала SCK PI_POLARITY_LOW (CPOL=0) и SPI_POLARITY_HIGH (CPOL=1)
    hspi1.SPI_CPHA=SPI_CPHA_1Edge; // фаза сигнала SCK  SPI_PHASE_1EDGE (CPHA=0) и SPI_PHASE_2EDGE (CPHA=1)

3
Эту тему с преобразователями уровней я уже прошел
Напрямую не подключал SPI к плате Dendy, через преобразователь уровня 5*3,3.
Перепробовал почти все варианты, и на резисторах и на диодах, во всех нарушалась осциллограмма сигналов со стороны 5В.
Только подошел стандартный преобразователь 5*3,3В, это который на полевых транзисторах.

4
ret=spi_slave_transmit(VSPI_HOST, &t, portMAX_DELAY);нельзя в цикле так делать, либо вы должны ждать пока мастер не заберет байт.

&t вы структуру пихаете, а там по байтно нет?

И не изобретайте t.length=8; это вроде длина буфера, попробуйте так же и t.length=1  может это 1-байт
        t.tx_buffer=sendbuf; перед структурой добавьте sendbuf[0]=0xF7; в зависимости от порядка байт либо вверх либо старт
        t.rx_buffer=NULL; //recvbuf;
и добавьте после ret=spi_slave_transmit, в качестве эксперимента, задержку секунд так 2-5, хватит что бы мастер забрал.
Я бы покопал функцию spi_slave_transmit(), я по этому и пишу что весь архив нужен.
Вы через такой конвертер уровней подключаете

5
Так трудно гадать.
Вы весь проект со всеми файлами в архив и сюда.
У вас отладчик доступен?

6
s_s, я должен тебе твой же код разъяснять?
но не у всех же у нас есть
Цитата: HardWareMan
подобный скилл
Если вам не составит большого труда пожалуйста разъясните мне?

7
И где я соблюдаю рамки длительности STB?void SPI1_IRQHandler(void) { // прерывание по окончанию передачи байта
SPI_SendData8(SPI1,last_read_controller_bytes); // в прерывании загрузка байта в регистр SPI
}

8
Т.е., пришло прерывание по фронту STB, мы загружаем регистр данных SPI и активируем nSS.
Лишняя команда
Цитата
активируем nSS
Что мой вариант = что ваш вариант + лишняя команда = одно и тоже.

9
STB прижал линию, все SPI занят, нельзя туда грузить.
Вот картинку нарисовал
и того у меня 5мкс на загрузку нового байта, к примеру на ATmega168 при 16МГц (первоначальный вариант был собран) уходит ~1мкс.
Код
если убрать две последние строки можно еще быстрее загрузить.
Пока SPI передает байт (примерно 0,2мс), я опрашиваю кнопки (на  ATmega168 при 16МГц уходит на один опрос всех кнопок 4мкс).

10
то SPI.DAT надо прогружать на прерывании от STB
Нет, STB прижал линию и clk сразу выставляется (там 2мкс всего), и казус на линии SPI получается, отладчик это показывает. Пробовал pll разгонять, на успевает он байт загрузить.

11
в регистр spi на отправку байта этот самый байт нужно вписывать сразу по прерыванию от считывания контроллера. пусть в 100500 раз чаще чем тот байт будет заюзан и отправлен по пинку от master-spi устрйоства. он будет забыт, забит, перезаписан великое число раз, но такова жертва в борьбе за лаг, минимальный лаг.
В данном случае есть два варианта:
1 как у меня сделано.
2 загрузить байт в spi и ждать пока мастер его не заберет, а это 20мс. Возможно за 20мс вы уже три раза кнопку нажмете. (он будет забыт, забит, перезаписан великое число раз,)
В противном случае конфликт возникает, мастер еще не забрал весь пакет 8 бит, только 4 бита забрать успел, а вы в регистр spi продолжаете пихать байты.

Теперь возьмите обычный джойстик, там вроде 4021 стоит, сдвиговый регистр, те же самые 20мс, не так ли?

И если быть точным, то не 20мс а ~10мс, мастер за 20мс запрашивает 2 пакета.

12
PAL, я осциллографом смотрел, все измерения как бы соответствует этой темы
Даже картинку свою рисовал

13
борцы за минимальный лаг будут этим недовольны
Частота опроса джойстика - 50Гц.  20 милли секунд.

14
Оооо Linux. Ну если только на виртуалку поставить.

Ладно. Х с ним.
У меня проводной джойстик на STM32F030F4P6 3,3В, используется аппаратный spi.

Вот код самого spi, может чем поможет
Напрямую не подключал SPI к плате Dendy, через преобразователь уровня 5*3,3.
Перепробовал почти все варианты, и на резисторах и на диодах, во всех нарушалась осциллограмма сигналов со стороны 5В.
Только подошел стандартный преобразователь 5*3,3В, это который на полевых транзисторах.

15
Покажите что меняли на что меняли, как подключали?
Компилятор какой?

16
Для начало бы во внутрь не мешало бы заглянуть, вдруг там усе зеленое.

17
Первая попытка засунуть spi не удалась.
А что так? Что делали, что изменяли?

18
Ну хорошо, посмотрим тогда в сторону ESP-12E,
1 - позволяет ли она соединяться с такой же ESP-12E?
2 - позволяет ли она соединяться с двумя ESP-12E?

19
ещё три бакса
Забыли про пульт, сколь там баксов?
И так 2 бакса, а вернее копейки + 3 бакса, а копейки это сколько?, на верное то же пару баксов.
Так глядишь и догоним до готового

20
NRF24
Это только приемо-передатчик, а узел управления на чем-то надо делать, к примеру atmega stm.
Вы приплюсуйте стоимость и этих деталек, + монтажные платы или на чем-то надо это собрать.


21
xpk2k, исходный код выложи, и какой компилятор, не можешь с spi разобраться, поможем.
Абсолютно прав
при этом это лютый колхоз с использованием клона на капле
Да, 2 бакса, еще и джойстик такой нужно приобрести.

22
xpk2k, ну и как это чудо собрать?

23
Здорово.
Осталось еще одну игру проверить, посмотреть как Скрудж МакДак на своей трости по кольцам прыгает.

Добавлено позже:
megavolt85, справился я с твоей подписью, теперь не раздражает.

24
а разъём джоя тебя ни разу не смутил?
а то что питание идёт на LDO от которого запитан модуль
Я бы то же сначала как-то так запитал,
а уж потом батарейку там или еще как-то думал. Тем более 5 вольт для LDO(есп) проще найти, чем 3,3 искать.
всё что делает беспроводной модуль, это "давит" на кнопки джоя на капле,
Да же если и так, то эту конструкции что в денди  поместить?
А что разве эта есп может работать в режиме "станции" ну там точки доступа?
Или эта "денди" будет подключаться к чему-то?

25
это только приёмник? что в качестве передатчика будет?
Не, это передатчик.
Интересно капля в джойстике жива? Если жива, то почему спи не использовать. За чем городить огород с 10 проводками?
Меня больше приемник интересует, и как потом этот приемник в денди засунуть.

26
Автор ты для чего джойстик собираешь?

27
Ну хорошо
Так-то вот, например, блютус-джойстик на еспшке
, собрали передатчик.
А приемник? Что приемником будет? И как этот приемник согласовать с платой денди?
А может эта еспшка позволяет соединиться с такой же еспшкой?

28
насколько spi быстрее прерывания?
Прерывание вам надо обрабатывать, а SPI сам обрабатывается, достаточно загрузит в регистр байт данных и можно идти кофейку попить, SPI сам отправит.

29
Там где, не к ночи помянута, ардуина.
Ну по чему, если использовать аппаратный SPI, то..., а время реакции если сведет к 10мс,  то будет даже совсем не плохо.

30
где на фото не хватает транзистора?
Здесь не хватает, китайцы экономят, маркировка та же что и на нижнем.
Вот карта напряжений, прибором пройдитесь, сравните. Снята с рабочей платы, картридж отсутствует, пропадает растр - это телек показывает нет видео сигнала.
Оригинальная схема.

Страницы: [1] 2 Далее