Glamtie
В самом нету, рядом поставьте.
Fenribel
а я вот ни разу не работал с ними. они разве сами по себе ток не жрут?
Fenribel
у меня устройство почти всегда в лайтслипе будет, так что среднее потребление около 1мА будет. если стабилизатор сам потреблять будет сопоставимое количество, то не очень хорошее решение
Glamtie
Нет не жрут, но они нетолерантны к 5В скажем. И повышение напряжения я думаю на пользу не пойдет.
Glamtie
Ставьте стаб на есп, а на аккум 5000
Glamtie
а я вот ни разу не работал с ними. они разве сами по себе ток не жрут?
Они жрут и они вообще то не созданы для батарейного питания, у них даже в режиме глубокого сна какие то ненулевые миллиамперы.
evg
Привет народ. У меня проблема такая. Пытаюсь на двух пинах сгенерировать шим. На одной плате снимаю количество импульсов и раз в секунду передаю через rs482, на второй плате хочу воспроизвести их но значения отличаются от исходных. Использую 0 и 2 канал
Glamtie
так жрут или не жрут не понял....
Я имею в виду по сравнению с другими МК - еспки жручие. Если у MSP430 токи в спящем режиме - единицы микроампер, у еспшек от 5 миллиампер, а это уже ого. Дофига. Познается в сравнении.
evg
Прерыванием на таймерах тоже самое
evg
Esp32
Fenribel
Я имею в виду по сравнению с другими МК - еспки жручие. Если у MSP430 токи в спящем режиме - единицы микроампер, у еспшек от 5 миллиампер, а это уже ого. Дофига. Познается в сравнении.
Да не, какие 5 мА... У меня уже не помню сколько было — но что-то типа 500-1000 мкА в лайтслипе. В дипслипе ещё меньше должно быть
evg
За один раз около сотни
evg
Пару секунд
Fenribel
Я имею в виду по сравнению с другими МК - еспки жручие. Если у MSP430 токи в спящем режиме - единицы микроампер, у еспшек от 5 миллиампер, а это уже ого. Дофига. Познается в сравнении.
ну я на есп работал болшьше всего, работать с ними просто — и есть esp now встроенный, удобно) да и по расчётам срока жизни хватает вполне
Glamtie
За один раз около сотни
А вы часом не показания АЦП передаете?
evg
На первой плате снимаю импульсы аппаратным счётчиком
Fenribel
у моего устройства режим работы такой, что он выходит из лайтслипа раз в секунду и включает вайфай, так что тут больше именно вай фай жрёт, чем сам esp
evg
Потом раз в секунду передаю
Fenribel
так что если и менять что, так это вайфай на какой-нибудь rf, но с ним дольше разбираться и настраивать
evg
так что если и менять что, так это вайфай на какой-нибудь rf, но с ним дольше разбираться и настраивать
Не так давно работал с nrf глючная штука, китайский клон по крайней мере
Glamtie
Потом раз в секунду передаю
Посмотрите пошагово внешним терминалом, что они там передают, и опять же эмулировать эту передачу терминалом. Где то косяк.
evg
Данные снимаю на приемнике программно и с пина аппаратно
evg
Проблема в генерации
evg
По сериалу приходит то что надо
Glamtie
А..ну и?
Glamtie
Прерывания в первую голову. А уж опосля...
Glamtie
Где то есть прерывание.
evg
Может код гляните. Уже незнаю куда копать.
ok-home
Данные снимаю на приемнике программно и с пина аппаратно
посчитал 1 секунду - получилось 100 импульсов - передал цифру 100 - принял цифру 100 - включил шим/таймер на частоту 100 в секунду - посчитал 1 секунду - получилось 80 ?
evg
не 80, но примерно так
evg
у меня генератора импульсов нет чтоб ровно 100 передать
evg
забыл написать, если 1 датчик то нормально все
evg
если 2 то начинается проблема
evg
evg
evg
evg
Сверху то что передаю, снизу то что на пине
ok-home
если 2 то начинается проблема
и прямо если напечатать на экране то что принято то 100 будет ? генератор на есп аппаратный (ledc) или лупом на задержках ?
evg
Ledc
evg
void readAndSend(void* parameter) { // Структура для приема данных struct dataPacket { int16_t packet25; int16_t packet26; }; // Входим в бесконечный цикл для непрерывного чтения данных for (;;) { // Проверяем, есть ли достаточно данных в Serial2 для чтения пакета if (Serial2.available() >= sizeof(dataPacket)) { dataPacket packet; // Объявляем экземпляр структуры для хранения прочитанных данных // Читаем данные из Serial2 в packet Serial2.readBytes((byte*)&packet, sizeof(packet)); // Обработка данных для пина 25 if (packet.packet25 > 0) { // Если значение больше 0 int freq = packet.packet25; // Устанавливаем частоту согласно прочитанному значению ledcWrite(0, 512); // Устанавливаем скважность PWM в 50% ledcWriteTone(0, freq); // Устанавливаем частоту PWM } else if (packet.packet25 == 0) { // Если значение равно 0 ledcWrite(0, 0); // Останавливаем генерацию PWM, устанавливая скважность в 0% } // Аналогичная обработка данных для пина 26 if (packet.packet26 > 0) { int freq = packet.packet26; ledcWrite(2, 512); ledcWriteTone(2, freq); } else if (packet.packet26 == 0) { ledcWrite(2, 0); } } // Переключаем пин DE_RE_PIN обратно в режим приема digitalWrite(DE_RE_PIN, LOW); // Делаем небольшую паузу перед следующей итерацией цикла vTaskDelay(1 / portTICK_PERIOD_MS); } }
evg
еще незнаю как от паузы можно избавиться vTaskDelay(1 / portTICK_PERIOD_MS); если ее нет, то срабатывает вотчдог
Fenribel
А почему очень часто встречались раньше устройства, которые нельзя использовать во время зарядки? Сейчас даже почему-то не вспомню никакого такого прибора, но чёткое ощущение, что почти все устройства (ну кроме телефонов) лет 10 назад не работали одновременно заряжаясь... Из текущего могу вспомнить только отдельные ашкуди перезаряжаемые, но там понятно — экономят на всём. Или никто больше не помнит такого?
evg
Даже не обязательно одновременно передавать. Передаю с одного датчика, норм. Потом со второго и начинается проблема. Только с одного из датчиков нормально.
evg
Да, пробовал пустую задачу с паузой сделать, а в основной убрать. Работает. Но туризм какой-то
ok-home
void readAndSend(void* parameter) { // Структура для приема данных struct dataPacket { int16_t packet25; int16_t packet26; }; // Входим в бесконечный цикл для непрерывного чтения данных for (;;) { // Проверяем, есть ли достаточно данных в Serial2 для чтения пакета if (Serial2.available() >= sizeof(dataPacket)) { dataPacket packet; // Объявляем экземпляр структуры для хранения прочитанных данных // Читаем данные из Serial2 в packet Serial2.readBytes((byte*)&packet, sizeof(packet)); // Обработка данных для пина 25 if (packet.packet25 > 0) { // Если значение больше 0 int freq = packet.packet25; // Устанавливаем частоту согласно прочитанному значению ledcWrite(0, 512); // Устанавливаем скважность PWM в 50% ledcWriteTone(0, freq); // Устанавливаем частоту PWM } else if (packet.packet25 == 0) { // Если значение равно 0 ledcWrite(0, 0); // Останавливаем генерацию PWM, устанавливая скважность в 0% } // Аналогичная обработка данных для пина 26 if (packet.packet26 > 0) { int freq = packet.packet26; ledcWrite(2, 512); ledcWriteTone(2, freq); } else if (packet.packet26 == 0) { ledcWrite(2, 0); } } // Переключаем пин DE_RE_PIN обратно в режим приема digitalWrite(DE_RE_PIN, LOW); // Делаем небольшую паузу перед следующей итерацией цикла vTaskDelay(1 / portTICK_PERIOD_MS); } }
для начала распечатай что ты принял. циферки сходятся ? ты отправляешь количество импульсов или частоту которую нужно задать ?
Ruslan
)))
evg
То что отправляю и принимаю сходится
evg
Отправляю количество импульсов
evg
Щас узнаю что это)
evg
Ага
evg
Потому что надо rs485
evg
И дело не в передаче и приеме пакета
evg
В что то другом
Anton
я, признаюсь, не вникал, только поверхностно по вопросам пробежался
Glamtie
может быть в помехоустойчивости? Если вы там напрямую все посылаете- принимаете, то протокол то у вас уарт, чтобы ни было интерфейсом
Glamtie
оберните посылки в модбас например
evg
Дак то что отправил то и принял
Fenribel
В самом нету, рядом поставьте.
А можете помочь разобраться с мануалом?) Вот он — https://www.promelec.ru/fs/sources/4a/fe/67/3d/df95bc6b903205ae71f44148.pdf График на 11 странице говорит, что при подаче 4В на вход, стабилизатор даёт 3В на выходе. Хотя вначале сказано, что падение на стабилизаторе около 0,1В... Что я не так читаю?
ok-home
Отправляю количество импульсов
а в таймер частоту пишешь ?
evg
Количество импульсов, те что получил
evg
Таже частота получается
ok-home
я в ардуине не копенгаген, но вроде freq - это то что ты принял и заслал int freq = packet.packet26; ledcWrite(2, 512); ledcWriteTone(2, freq);
evg
Да
ok-home
ну значит измеритель измеряет у тебя не за 1 секунду
Glamtie
А значит где то с таймерами косяк?
evg
О отправляю раз в секунду. И с одним датчиком то работает
evg
Данные отправляю в одном пакете
evg
Если воспроизводить импульсы с обоих, начинают гнать оба