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

Синхронизация часов.

pvvx

Активный участник сообщества
Так это Вы виноваты,а не они.
Встроили и не даете. А они еще не встроили. Им нечего давать.
Я дал. А они и вы - нет :p Наверно не могут - у них исходников их поделки нет - всё украдено где-то :) Espressif - шарашкина контора. Загибается уже - не может даже напечатать чипов.
 
Последнее редактирование:

pvvx

Активный участник сообщества
зато какой импульс развития и популяризации дали!!
Они-же его и закапали своим подходом. +- = 0
У вас малый кругозор в теме имеющихся на рынке SoC и других поделок с WiFi. Народ выбирает худшее. (с) Природа. Самоуничтожение - планета маленькая, стадо большое... :)
 

pvvx

Активный участник сообщества
За счет пары сторонних энтузиастов попали в течение “кухонной моды”, но “мода” прошла, а удержаться “на волне” не смогли из-за своего подхода - Espressif. :)
Не сравнивайте разное - пару тупых жадных китайцев из Espressif и людей дающих миру развитие. Впрочем и в этом вы не смыслите... :)
Роснано и Сколково ко мне на кухню не лезут и благополучно вписываются в систему самоуничтожения. У меня дети и им нужна чистая планета. :)
----------

Sasasa– вы разобрались с этим? Там встроена функция делающая поправки на время приема и запроса текущего значения у неё.

На счет организации запретов прерываний и распределения времени в Arduino на ESP обращайтесь к её писателям. В каждом заголовке исходников есть их ник и (c).
 
Последнее редактирование:

sasasa

Member
ESP1 соединяете с ESP2 проводом.
На ESP1 формируете последовательность импульсов для ESP2
На ESP2 по фронту импульса посылаете пакет по UDP для ESP1
На ESP1 измеряете время запаздывание пакета относительно фронта импульса.
В результате получится задержка и нестабильность передачи пакетов по WI-FI.
Замечу, что Вы пытаетесь решить свою задачу самым очевидным и, как правило, самым сложным методом.
Результат здесь. ESP-now пока не успел попробовать.
Есть какие-то конкретные предложения?
 

Вложения

pvvx

Активный участник сообщества
Иначе так и будете ковыряться в чужих SDK, как в чужой заднице, и ругать китайцев.
Не списывайте на всех китайцев. Разговор о китайцах из Espressif :p
Других вариантов, как ковыряться в чужих SDK вы не предложили. ESP-now сильно хуже - там джиттер будет более десятков ms - в тысячу раз более, чем уже дано и ковыряться не надо.
Замечу, что Вы пытаетесь решить свою задачу самым очевидным и, как правило, самым сложным методом.
Зато применимым на всем последующем оборудовании и прописанном в стандартах.
Вы же не смогли предложить другой метод, а разводите спам и уводите от решения вопроса, просто обманывая - подсовывая нерабочие варианты и направления. :p Не надоело?
 
Последнее редактирование:

sasasa

Member
Sasasa– вы разобрались с этим? Там встроена функция делающая поправки на время приема и запроса текущего значения у неё.
Пока нет. Когда вставил:
Код:
extern uint64_t get_tsf_station(void) ICACHE_FLASH_ATTR; // step 1 us
получаю это
Код:
_test.ino:173: undefined reference to `get_tsf_station()'
_test.ino:185: undefined reference to `get_tsf_station()'
_test.ino:186: undefined reference to `get_tsf_station()'
Хотя в этих указанный строчках даже не упомянул о get_tsf_station()

173. Serial.println("IP address: ");
185. Serial.println(" .... START ..... ");
186. }// end setup

Наверное не так делаю. libnet80211_new_v154 переименовал как libnet80211.a , поставил в место оригинального.
Пока дальше Аrduino не сдвинулся, но как я понимаю, это влияет только на ошибку, а не в работоспособности в целом. Надеюсь скоро разберусь. Спасибо.
--
p.s. сейчас посмотрел - у меня SDK 1.5.1_16_01_08, может из-за этого на работает
 

pvvx

Активный участник сообщества
p.s. сейчас посмотрел - у меня SDK 1.5.1_16_01_08, может из-за этого на работает
Я не вижу смысла патчить все варианты SDK. Кому надо, тот сам сделает - места указаны, код закрытых либ в части 80211 соответствует FreeBSD (но внесены китай-фичи+ошибки) - годятся структуры и заголовки от него.
 

sasasa

Member
переставлю v1.5.4 и попробую
Кажется простым copy/paste нельзя поставить в Ардуино IDE файлы другой SDK и libnet80211_new.a o_O Или по другому там надо их переставлять?
Пока ничем больше как Ардуино не пользовался.
Что там лучше поставить чтобы пользоваться SDK v1.5.4?
Espressif-ESP8266-DevKit-v2.2.1-x86 + Eclipse Neon x86?
Может быть другие варианты?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Кажется простым copy/paste нельзя поставить в Ардуино IDE файлы другой SDK и libnet80211_new.a o_O Или по другому там надо их переставлять?
Пока ничем больше как Ардуино не пользовался.
Что там лучше поставить чтобы пользоваться SDK v1.5.4?
Espressif-ESP8266-DevKit-v2.2.1-x86 + Eclipse Neon x86?
Может быть другие варианты?
Тут не могу вам помочь. У меня руки опускаются после инсталляции Arduino ESP и трансляции любого примера. В лог не лезут все варниги и в сообщение не вставить из их количества...
Писали школьники из первого класса?
---
Вставил нормальные опции компилятору: -Wall -Werror
Всё - не транслирует ничего. Итого: в помойку эту Arduino для ESP.
Пример WiFiClient:
Код:
Arduino: 1.6.13 (Windows 7), Плата:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)"

....\ESP8266WiFi\src\ESP8266WiFiGeneric.cpp:155:127: warning: unused parameter 'e' [-Wunused-parameter]

     WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_STAMODE_DHCP_TIMEOUT, [f](System_Event_t* e){

                                                                                                                               ^

....\ESP8266WiFi\src\ESP8266WiFiGeneric.cpp:454:6: warning: unused parameter 'name' [-Wunused-parameter]

void wifi_dns_found_callback(const char *name, ip_addr_t *ipaddr, void *callback_arg) {

      ^

In file included from ....\ESP8266WiFi\src\WiFiClient.cpp:41:0:

....\ESP8266WiFi\src\include/ClientContext.h:250:15: warning: unused parameter 'pcb' [-Wunused-parameter]

         err_t _sent(tcp_pcb* pcb, uint16_t len) {

               ^

....\ESP8266WiFi\src\include/ClientContext.h:278:20: warning: unused parameter 'pcb' [-Wunused-parameter]

         recv_ret_t _recv(tcp_pcb* pcb, pbuf* pb, err_t err) {

                    ^

....\ESP8266WiFi\src\include/ClientContext.h:278:20: warning: unused parameter 'err' [-Wunused-parameter]

....\ESP8266WiFi\src\include/ClientContext.h:303:14: warning: unused parameter 'err' [-Wunused-parameter]

         void _error(err_t err) {

              ^

....\ESP8266WiFi\src\include/ClientContext.h:315:15: warning: unused parameter 'pcb' [-Wunused-parameter]

         err_t _poll(tcp_pcb* pcb) {

               ^

....\ESP8266WiFi\src\WiFiClient.cpp:136:8: warning: unused parameter 'err' [-Wunused-parameter]

int8_t WiFiClient::_connected(void* pcb, int8_t err)

        ^

....\ESP8266WiFi\src\WiFiClient.cpp:145:6: warning: unused parameter 'err' [-Wunused-parameter]

void WiFiClient::_err(int8_t err)

      ^

In file included from ....\ESP8266WiFi\src\WiFiClientSecure.cpp:40:0:

....\ESP8266WiFi\src\include/ClientContext.h:250:15: warning: unused parameter 'pcb' [-Wunused-parameter]

         err_t _sent(tcp_pcb* pcb, uint16_t len) {

               ^

....\ESP8266WiFi\src\include/ClientContext.h:278:20: warning: unused parameter 'pcb' [-Wunused-parameter]

         recv_ret_t _recv(tcp_pcb* pcb, pbuf* pb, err_t err) {

                    ^

....\ESP8266WiFi\src\include/ClientContext.h:278:20: warning: unused parameter 'err' [-Wunused-parameter]

....\ESP8266WiFi\src\include/ClientContext.h:303:14: warning: unused parameter 'err' [-Wunused-parameter]

         void _error(err_t err) {

              ^

....\ESP8266WiFi\src\include/ClientContext.h:315:15: warning: unused parameter 'pcb' [-Wunused-parameter]

         err_t _poll(tcp_pcb* pcb) {

               ^

....\ESP8266WiFi\src\WiFiClientSecure.cpp:182:27: warning: unused parameter 'fd' [-Wunused-parameter]

     static ClientContext* getIOContext(int fd) {

                           ^

....\ESP8266WiFi\src\WiFiClientSecure.cpp: In function 'int ax_port_read(int, uint8_t*, size_t)':

....\ESP8266WiFi\src\WiFiClientSecure.cpp:539:53: warning: suggest parentheses around '&&' within '||' [-Wparentheses]

     if (!_client || _client->state() != ESTABLISHED && !_client->getSize()) {

                                                     ^

....\ESP8266WiFi\src\WiFiClientSecure.cpp: At global scope:

....\ESP8266WiFi\src\WiFiClientSecure.cpp:567:16: warning: unused parameter 'filename' [-Wunused-parameter]

extern "C" int ax_get_file(const char *filename, uint8_t **buf) {

                ^

....\ESP8266WiFi\src\WiFiClientSecure.cpp:579:18: warning: unused parameter 'file' [-Wunused-parameter]

extern "C" void* ax_port_malloc(size_t size, const char* file, int line) {

                  ^

....\ESP8266WiFi\src\WiFiClientSecure.cpp:579:18: warning: unused parameter 'line' [-Wunused-parameter]

....\ESP8266WiFi\src\WiFiClientSecure.cpp:596:18: warning: unused parameter 'file' [-Wunused-parameter]

extern "C" void* ax_port_realloc(void* ptr, size_t size, const char* file, int line) {

                  ^

....\ESP8266WiFi\src\WiFiClientSecure.cpp:596:18: warning: unused parameter 'line' [-Wunused-parameter]

In file included from ....\ESP8266WiFi\src\WiFiServer.cpp:38:0:

....\ESP8266WiFi\src\include/ClientContext.h:250:15: warning: unused parameter 'pcb' [-Wunused-parameter]

         err_t _sent(tcp_pcb* pcb, uint16_t len) {

               ^

....\ESP8266WiFi\src\include/ClientContext.h:278:20: warning: unused parameter 'pcb' [-Wunused-parameter]

         recv_ret_t _recv(tcp_pcb* pcb, pbuf* pb, err_t err) {

                    ^

....\ESP8266WiFi\src\include/ClientContext.h:278:20: warning: unused parameter 'err' [-Wunused-parameter]

....\ESP8266WiFi\src\include/ClientContext.h:303:14: warning: unused parameter 'err' [-Wunused-parameter]

         void _error(err_t err) {

              ^

....\ESP8266WiFi\src\include/ClientContext.h:315:15: warning: unused parameter 'pcb' [-Wunused-parameter]

         err_t _poll(tcp_pcb* pcb) {

               ^

....\ESP8266WiFi\src\WiFiServer.cpp:99:12: warning: unused parameter 'status' [-Wunused-parameter]

WiFiClient WiFiServer::available(byte* status) {

            ^

....\ESP8266WiFi\src\WiFiServer.cpp:134:8: warning: unused parameter 'buffer' [-Wunused-parameter]

size_t WiFiServer::write(const uint8_t *buffer, size_t size) {

        ^

....\ESP8266WiFi\src\WiFiServer.cpp:134:8: warning: unused parameter 'size' [-Wunused-parameter]

In file included from ..../tools/sdk/lwip/include/lwip/opt.h:46:0,

                 from ....\ESP8266WiFi\src\WiFiServer.cpp:35:

....\ESP8266WiFi\src\WiFiServer.cpp: In member function 'int8_t WiFiServer::_accept(tcp_pcb*, int8_t)':

..../tools/sdk/lwip/include/lwip/debug.h:66:32: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]

   LWIP_PLATFORM_ASSERT(message); } while(0)

                                ^

..../tools/sdk/lwip/include/lwip/tcp.h:335:36: note: in expansion of macro 'LWIP_ASSERT'

#define          tcp_accepted(pcb) LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", \

                                    ^

....\ESP8266WiFi\src\WiFiServer.cpp:155:5: note: in expansion of macro 'tcp_accepted'

     tcp_accepted(_pcb);

     ^

....\ESP8266WiFi\src\WiFiServer.cpp: At global scope:

....\ESP8266WiFi\src\WiFiServer.cpp:151:8: warning: unused parameter 'err' [-Wunused-parameter]

int8_t WiFiServer::_accept(tcp_pcb* apcb, int8_t err) {

        ^

....\ESP8266WiFi\src\WiFiServer.cpp:159:6: warning: unused parameter 'client' [-Wunused-parameter]

void WiFiServer::_discard(ClientContext* client) {

      ^

In file included from ....\ESP8266WiFi\src\WiFiUdp.cpp:41:0:

....\ESP8266WiFi\src\include/UdpContext.h:329:10: warning: unused parameter 'upcb' [-Wunused-parameter]

     void _recv(udp_pcb *upcb, pbuf *pb,

          ^

....\ESP8266WiFi\src\include/UdpContext.h:329:10: warning: unused parameter 'addr' [-Wunused-parameter]

....\ESP8266WiFi\src\include/UdpContext.h:329:10: warning: unused parameter 'port' [-Wunused-parameter]

....\cores\esp8266\cont_util.c: In function 'cont_init':

....\cores\esp8266\cont_util.c:35:26: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]

     for(int pos = 0; pos < sizeof(cont->stack) / 4; pos++)

                          ^

cc1.exe: all warnings being treated as errors

exit status 1
Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E Module).

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
В большинстве файлов упоминается Copyright (c) 2014 Ivan Grokhotkov. Пишите ему - пусть исправляет, тогда может помогу... А пока будем считать, что Arduino для ESP8266 ещё не отлажена.
PS: Я не вижу каким образом среди тысяч warning в начальной прошивке найти свой… Мода отключать все warning-и и привела программеров Espressif к тому, что их SDK после долгих лет так и не отлажена. Теперь это распространяется и на другое ПО :(.
 
Последнее редактирование:

sasasa

Member
Чем вы пользуетесь для загрузки кода в ЕСПку? Если несколько, то посоветуйте не очень сложный вариант чтобы я мог установить SDK 1.5.4 либы. Попробовал Eclipse, но пока как в тёмном лесу o_O
Кстати интересно что после замены файлов SDK, Serial.println(system_get_sdk_version()); больше не показывает мой предыдущий v1.5.1 а сейчас v1.5.3(aec24ac9), хотя и файл скачал ESP8266_NONOS_SDK_V1.5.4_16_05_20
Может быть не в версии файла беда а для Ардуино надо иначе писать? uint64_t я переписал в место uint64
Код:
extern uint64_t get_mac_time(void) ICACHE_FLASH_ATTR; // step 1 us
#define get_tsf_ap() get_mac_time()
extern uint64_t get_tsf_station(void) ICACHE_FLASH_ATTR; // step 1 us
И странные эти ошибки в строчках, где совсем другое написано. Когда то раньше у меня было что-то похожее, но сейчас не помню как решил проблему.
 

pvvx

Активный участник сообщества
Чем вы пользуетесь для загрузки кода в ЕСПку?
Исправленной esptool.py
И странные эти ошибки в строчках, где совсем другое написано. Когда то раньше у меня было что-то похожее, но сейчас не помню как решил проблему.
Отключили вывод варнингов и всё что связано с трансляцией на вывод в Ардуино. Это не выход, а разгильдяйство :)

PS: SDK2.0 пропатчено - доступ к TSF в web-свалке с исходниками...
 
Последнее редактирование:

sasasa

Member
Может быть там просто надо добавить эти либу с #include ...?
Ну как может быть что она не видна, если она там есть?!?
 

pvvx

Активный участник сообщества
Может быть там просто надо добавить эти либу с #include ...?
Ну как может быть что она не видна, если она там есть?!?
Я уже ответил - ничем не могу помочь в Arduino для ESP. Она у меня не рабочая. Ни какая из версий - везде сотни варнингов, у компилятора отключены опции -Wall -Werror, не говоря уже о опции -pedantic-errors...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Не так выразился. o_O Я хотел спросить чем вы пишите и компилируйте код, чтобы включит SDK либу?
В Arduino "бинарные" библиотеки подключаются в файле "platform.txt".
В самом редакторе-окне-амбразуре Ардуино код C++ и возможно надо написать:
extern "C" uint64_t get_mac_time(void); // step 1 us
#define get_tsf_ap() get_mac_time()
extern "C" uint64_t get_tsf_station(void); // step 1 us
 

sasasa

Member
Уже пробовал - не помогает. Вся хр.ь в том что, только я вписиваю где то uint64_t var1 = get_tsf_station();, то Ардуин сразу сходит сума и показывает ошибки на линиях в которых нет ошибок.
$%^%%$#%&^*&%^$@!ъ% :mad:
 

pvvx

Активный участник сообщества
Уже пробовал - не помогает. Вся хр.ь в том что, только я вписиваю где то uint64_t var1 = get_tsf_station();, то Ардуин сразу сходит сума и показывает ошибки на линиях в которых нет ошибок.
$%^%%$#%&^*&%^$@!ъ% :mad:
Напишите какие версии Дурины и от куда взяты.
 

sasasa

Member
Какие библиотеки должны быт включены(#include...) в начале скетча?

--
Arduino 1.6.8 , Из Аrduino.cc
ESP8266 из Github http://arduino.esp8266.com/stable/package_esp8266com_index.json, скопирована в Arduino/ hardware,
сейчас добавлен SDK 1.5.4 в ESP8266com/ES{8266/tools/SDK
всё вроде работает ну только не то что из libnet80211.a, хотя я из неё ничего больше кроме get_tsf_station() не пробовал.
 
Сверху Снизу