• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Uart

Evgen84

New member
Добрый день всем...Вопрос..есть отладочный модуль ESP8266MOD серия Vendor. На плате штатный usb преобразователь CP2102. Настроил Uart0. Посылки отслеживаю через minicom. Отправка данных с модулю работает в норме. Данные что принимает смотрю через "эхо".. код вложен в обработчик прерываний. Вопрос почему после приема данных различной длины происходит reset модуля..?
 

nikolz

Well-known member
Добрый день всем...Вопрос..есть отладочный модуль ESP8266MOD серия Vendor. На плате штатный usb преобразователь CP2102. Настроил Uart0. Посылки отслеживаю через minicom. Отправка данных с модулю работает в норме. Данные что принимает смотрю через "эхо".. код вложен в обработчик прерываний. Вопрос почему после приема данных различной длины происходит reset модуля..?
так как ничего не выкладываете, то будем гадать на кофейной гуще.
предположу два варианта:
1) у вас есть цикл в котором процессор долго сидит и в итоге срабатывает WDT
2) принимаете большой объем данных который выходит за границы массива.
 

Evgen84

New member
так как ничего не выкладываете, то будем гадать на кофейной гуще.
предположу два варианта:
1) у вас есть цикл в котором процессор долго сидит и в итоге срабатывает WDT
2) принимаете большой объем данных который выходит за границы массива.
Добрый день.... сейчас постараюсь выложить код,чтобы было понятно..
 

Вложения

Evgen84

New member
так как ничего не выкладываете, то будем гадать на кофейной гуще.
предположу два варианта:
1) у вас есть цикл в котором процессор долго сидит и в итоге срабатывает WDT
2) принимаете большой объем данных который выходит за границы массива.
В файле file_1.c представил код прерывания.. В файле file_2.c код основной функции...
 

Вложения

Evgen84

New member
так как ничего не выкладываете, то будем гадать на кофейной гуще.
предположу два варианта:
1) у вас есть цикл в котором процессор долго сидит и в итоге срабатывает WDT
2) принимаете большой объем данных который выходит за границы массива.
В файле file_1.c представил код прерывания.. В файле file_2.c код основной функции...
почему не берете uart.c из SDK?
почему не берете uart.c из SDK?
Добрый день....я взял за основу файл uart.c из SDK и использую его..в file_3 привел функцию из SDK обработчик прерываний..но там нет как обрабатывается входной буфер, поэтому добавил обработку как я указал в file_1.c....
 

Вложения

Evgen84

New member
так как ничего не выкладываете, то будем гадать на кофейной гуще.
предположу два варианта:
1) у вас есть цикл в котором процессор долго сидит и в итоге срабатывает WDT
2) принимаете большой объем данных который выходит за границы массива.
В файле file_1.c представил код прерывания.. В файле file_2.c код основной функции...
почему не берете uart.c из SDK?
почему не берете uart.c из SDK?
Добрый день....я взял за основу файл uart.c из SDK и использую его..в file_3 привел функцию из SDK обработчик прерываний..но там нет как обрабатывается входной буфер, поэтому добавил обработку как я указал в file_1.c....
зачем так много таймеров?
причем два с одинаковым интервалом.
Вы же колбек от них параллельно не обработаете.

Подскажите...тогда как обрабатывается callback таймеров..не нашел функции такой в мануале...есть все фукции котороые я использовал при работе с таймерами...или лучше использовать hf_timer`s
 

Evgen84

New member
так как ничего не выкладываете, то будем гадать на кофейной гуще.
предположу два варианта:
1) у вас есть цикл в котором процессор долго сидит и в итоге срабатывает WDT
2) принимаете большой объем данных который выходит за границы массива.
В файле file_1.c представил код прерывания.. В файле file_2.c код основной функции...
почему не берете uart.c из SDK?
почему не берете uart.c из SDK?
Добрый день....я взял за основу файл uart.c из SDK и использую его..в file_3 привел функцию из SDK обработчик прерываний..но там нет как обрабатывается входной буфер, поэтому добавил обработку как я указал в file_1.c....
зачем так много таймеров?
причем два с одинаковым интервалом.
Вы же колбек от них параллельно не обработаете.

Подскажите...тогда как обрабатывается callback таймеров..не нашел функции такой в мануале...есть все фукции котороые я использовал при работе с таймерами...или лучше использовать hf_timer`s
 

nikolz

Well-known member
В файле file_1.c представил код прерывания.. В файле file_2.c код основной функции...




Добрый день....я взял за основу файл uart.c из SDK и использую его..в file_3 привел функцию из SDK обработчик прерываний..но там нет как обрабатывается входной буфер, поэтому добавил обработку как я указал в file_1.c....



Подскажите...тогда как обрабатывается callback таймеров..не нашел функции такой в мануале...есть все фукции котороые я использовал при работе с таймерами...или лучше использовать hf_timer`s
аппаратный таймер используется если надо интервалы в мкс
колбек таймера это обычная функция с одним параметром, которая будет вызвана при возникновении прерывания
поэтому пишите ее как любую другую
если она исполняется долго,
то лучше таймер устанавливать на один раз,
тогда в конце колбек функции повторно его запускаете.
пример колбека есть в п 3.2.4 стр 10 в докум по SDK
 

Evgen84

New member
аппаратный таймер используется если надо интервалы в мкс
колбек таймера это обычная функция с одним параметром, которая будет вызвана при возникновении прерывания
поэтому пишите ее как любую другую
если она исполняется долго,
то лучше таймер устанавливать на один раз,
тогда в конце колбек функции повторно его запускаете.
пример колбека есть в п 3.2.4 стр 10 в докум по SDK
Понял по колбекам...спасибо..
 

Evgen84

New member
Понял по колбекам...спасибо..
Можете разяснить еще один вопрос...для работы с wifi добавил в код функцию user_rf_cal_sector_set(void)....при сборке проекта выдал ошибки...не могу понять где найти данные объявления...в файлах привел для наглядности...файл includes.h все мои плдключенные инклюды...в файле make.c ошибка сборки при довавлении функции user_rf_cal_sector_set(void)...
 

Вложения

nikolz

Well-known member
Можете разяснить еще один вопрос...для работы с wifi добавил в код функцию user_rf_cal_sector_set(void)....при сборке проекта выдал ошибки...не могу понять где найти данные объявления...в файлах привел для наглядности...файл includes.h все мои плдключенные инклюды...в файле make.c ошибка сборки при довавлении функции user_rf_cal_sector_set(void)...
функция user_rf_cal_sector_set(void) определяет где находятся сектора для записи параметров wifi по умолчанию
если используете модули с 4Mb (ESP-12 nodemcu wemos)
то можно записать так
uint32 user_rf_cal_sector_saet(){ return 1019; }
для полной версии функции укажите
#include "user_interface.h"
 

Evgen84

New member
Понял по колбекам...спасибо..
Можете разяснить еще один вопрос...для работы с wifi добавил в код функцию user_rf_cal_sector_set(void)....при сборке проекта выдал ошибки...не могу понять где найти данные объявления...в файлах привел для наглядности...файл includes.h все мои плдключенные инклюды...в файле make.c ошибка сборки при довавлении функции user_rf_cal_sector_set(void)...
функция user_rf_cal_sector_set(void) определяет где находятся сектора для записи параметров wifi по умолчанию
если используете модули с 4Mb (ESP-12 nodemcu wemos)
то можно записать так
uint32 user_rf_cal_sector_saet(){ return 1019; }
для полной версии функции укажите
#include "user_interface.h"
include добавил...ошибка осталась...А если указать как вы предложили то компилится без ошибок...
 

nikolz

Well-known member
Можете разяснить еще один вопрос...для работы с wifi добавил в код функцию user_rf_cal_sector_set(void)....при сборке проекта выдал ошибки...не могу понять где найти данные объявления...в файлах привел для наглядности...файл includes.h все мои плдключенные инклюды...в файле make.c ошибка сборки при довавлении функции user_rf_cal_sector_set(void)...


include добавил...ошибка осталась...А если указать как вы предложили то компилится без ошибок...
возможно у вас не прописан путь к user_interface.h
можно либо прописать либо скопировать файл к себе в проект
 

Evgen84

New member
возможно у вас не прописан путь к user_interface.h
можно либо прописать либо скопировать файл к себе в проект
Добавил файл user_interface.h в папку к хидерам как которая укузанна в Makefile... ошибка коплиляции осталась...
возможно у вас не прописан путь к user_interface.h
можно либо прописать либо скопировать файл к себе в проект
Посмотрел какие include входят в файл user_interface.h .. не нашел где прописаны переменные на которые указывают ошибки при компиляции..
 
Сверху Снизу