• Система автоматизации с открытым исходным кодом на базе 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 или это ошибка?
 
Сверху Снизу