• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

BLE SoC PHY6202

pvvx

Активный участник сообщества
Непонятно, почему gcc настолько сливает keil.
На gcc надо писать по другому. У gcc проблемы с оптимизацией некоторых вариантов. Вроде уже описывал...
Не применять загрузку адресов, т.к. gcc их плохо оптимизит и не вставляет чтение-запись со смещением, а откладывает яйца в виде загрузки адреса по PC+xxx.
Т.е. желательно давать на вход процедуры указатель на структуру. Тогда gcc деваться некуда и выборка данных будет только со смещением от этого указателя :)
Не писать как дети это делают - сотни разрозненных переменных, на которые gcc будет каждый раз грузить адрес.
И т.д.
Вы смотрели asm на загрузку pGlobal_config[n]. И т.к. указатель всего один, то разницы по длине кода у gcc и Кейл на этом фрагменте нет.
 

pvvx

Активный участник сообщества
Не зря регистры в STM описаны структурами...
Перевод ESP8266 описания регистров на структуры и массивы сократил код более чем на 20%, а по скорости исполнения на более 50%.
 

cool2000

Member
В том то и дело, что в этом фрагменте немного кода, а со структурами работа идёт в основном через указатели.
Пришлось даже написать микро tracer.
 

pvvx

Активный участник сообщества
 

pvvx

Активный участник сообщества
у Telink эти интервалы по осциллограмме получаются порядка 1200мкс.
А у PHY622x?
Числа не говорят о реальной паузе.
У Telink - на основных каналах 20*7.5=150 us и занято приемом запроса на сканирование...
Перед дополнительным каналом 6.7*50=335 us.
(смотреть шаг клетки к zoom)
 

cool2000

Member
pvvx написал(а):
А у PHY622x?
Числа не говорят о реальной паузе.
Я не точно выразился. Это интервалы между началом передачи на каналах, т.е. длительность передачи плюс длительность паузы. На прием у phy тайм-аут выставляется отдельно. И все это должно по замыслу китайцев укладываться в 1500мкс. Надо будет ещё проверить как задаётся опорная частота на BB.
 

pvvx

Активный участник сообщества
PHY 1M, +Макс dBm:
1710879586936.png
Telink 1M, +0 dBm:
1710879606832.png

И у PHY паузы плавают до +200 us.
 

pvvx

Активный участник сообщества
Я не точно выразился. Это интервалы между началом передачи на каналах, т.е. длительность передачи плюс длительность паузы. На прием у phy тайм-аут выставляется отдельно.
А я тоже не точно - в Ext. ADV может не быть приема запроса на соединение или доп. сканирования на основных каналах. Зависит от флагов и т.д. Тогда запрос принимается на доп. канале... Т.е. надо читать доки, а лень :)
Помню что на основных пауза на прием синхро между TX к 500 us.
 

cool2000

Member
Т.е. по завершении передачи, в течение минимум 150мкс чип должен пытаться принять на той же частоте запрос на соединение?
pvvx написал(а):
Зависит от флагов
Да есть там обработка похожих флагов. В детали пока не вдавался
 

pvvx

Активный участник сообщества
А это PHY ответил на запрос сканирования:
1710880224985.png
Надо второй канал включить на ток потребления, чтобы видеть когда идет прием, но тоже лениво и счас нет смысла...
 

pvvx

Активный участник сообщества
Надо сделать так:
1710880628439.png
От WiFi к Вольту дает :)
 

pvvx

Активный участник сообщества
А от смартфона - 2..5В :)
1710881408412.png
Это так смарт облучает...
 

pvvx

Активный участник сообщества
Вместо д405 что-то ещё можно использовать?
Не помню, но какой-то есть из десятка тех, которые ставят на детекторы радаров. Все остальные от такого импульса уже будут дохлые - сразу пробой. Их и руками трогать незя... паять вообще с ошейниками...
Но 405-й достаточно низкочастотный по сравнению с новыми :) Наверно для наведения был разработан в CCCP... чтобы пофиг были наводки...
 

pvvx

Активный участник сообщества
Я не искал других, т.к. этот и ещё несколько у меня с 1984 года, когда и родились. Валяется всегда у осла, в хламе проводов и не сдох. А в детстве я его мучал всем что было, т.к. для меня тогда это были какие-то экзотические диоды, которые в мультивибратор не впаять :)
 

cool2000

Member
Тайминги на основных каналах поправил, и опять начинаются непонятные моменты. Длина передаваемых данных в примере 1200 байт. Реально передаются только первые 245 байт и дальше после паузы в ~200мс (чуть меньше с учётом времени с начала передачи на 37 канале) снова начинает передаваться реклама на основных каналах. Непонятно, это так и должно быть, т. е. весь массив передаётся только в ответ на scan или это ошибка?
 
Сверху Снизу