Anonymous
А как впиндюрить таймер в цикл ?
Anonymous
Чтобы интервал был равный на 8 реле
Andy
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/timer.html
Anonymous
Я имел ввиду милис
Andy
Не знаю что такое "милис", но догадываюсь, что миллисекунды. Таймер по ссылке можно настроить с точностью до 1/80 MHz
romanetz
А как впиндюрить таймер в цикл ?
можно в разные задачи, например...
romanetz
нужно сформулировать задачу точнее
Andy
? не понял :( мне это зачем?
Vitaliy
сорян. мимо
SetPf
Выручайте дурака. Sprintf(dest, "%u", 1 ); Печатает миллионы.
SetPf
hhu, i и прочее пробовал.
SetPf
Причем же в лог и прочее печатает нормально =\
Alexey
как вариант, стоит memset сделать перед печатью
SetPf
как вариант, стоит memset сделать перед печатью
Ща перепротестил - сам sprintf нормально отрабатывает.
SetPf
У меня стоит несколько макросов с VA_ARGS
SetPf
до него
Alexey
Задача - обеспечить нультерминатор
Alexey
Теста ради его можно прямо в строку вписать
SetPf
Да там не с нулем дело. Оно в середине строки впечатывается.
SetPf
Текст нормально, а конверсия числа - хрень
Alexey
У меня на пиках с флотами было такое, нули печатал в буфер. На есп вроде норм работало всегда
Alexey
Ещё момент, в буфере есть utf-8 символы? Встречал проблемму некорректной работы sprintf с кириллицей (ютф) в буфере
Dr Zlo
и куда потом отправляется?
SetPf
Короче. Я все там костылю свой велосипедный выкидышь эксепшенов.
Alexey
😄
SetPf
Там примерно следующий говнокод void ThrowException( const char* const function, size_t line, const char* const subject, const char* content, ... ) { static size_t nesting_level = 0; static char formated_content[4][256] = {}; static portMUX_TYPE myMutex = portMUX_INITIALIZER_UNLOCKED; // Nesting handling portENTER_CRITICAL(&myMutex); char* destination = formated_content[nesting_level]; nesting_level++; portEXIT_CRITICAL(&myMutex); va_list args; va_start(args, content); sprintf(destination, content, args); va_end(args); FatalException exception = {subject, destination, function, line}; throw exception; }
SetPf
Давайте пожалуйста не будем обсуждать говнокодовость =)
SetPf
Спсибо.
SetPf
И вот такое макро #define THROW_EXCEPTION(subject, content, ...) ThrowException((__FUNCTION__), (__LINE__), (subject), (content), ##__VA_ARGS__)
SetPf
Собственно при THROW_EXCEPTION("Test", "Test %u", 1); Печатаются миллионы
SetPf
Как обычно сам себя перемакросил =\
Alexey
Какое конкретно число печатается?
SetPf
1073435424
Alexey
ну вот, в хексе это 0x3FFB5320. Слишком уж на адрес похоже, да?
SetPf
Есть такое.
Alexey
Может я хреново знаю си, но строчки static char formated_content[4][256] = {}; char* destination = formated_content[nesting_level]; мне кажутся подозрительными. Для чего двумерный массив там?
SetPf
Что бы была возможность в нескольких тасках параллельно эт осделать и все к черту не полетело.
SetPf
Если бы с указателем на это были бы проблемы - мне бы текст нормально не вывело.
SetPf
я думаю проблема в va_list
Alexey
я думаю проблема в va_list
судя по коду, там все в порядке
SetPf
vsprinf надо использовать
SetPf
SetPf
Alexey
именно, посмотрел свой код, но не заметил что не sprintf, а vsprintf использую 🙈
SetPf
Только сейчас обратил внимание
SetPf
SetPf
SetPf
pdTRUE == 0?
SetPf
Все узрил, прекрасный кодстайл =\
Dr Zlo
чтобы случайно не перезаписать что-то в памяти
Dr Zlo
void ProtocolHelper::printf(const char* format, ...) { const uint16_t buffer_size = 256; char buffer[buffer_size]; uint16_t length = 0; va_list args; va_start(args, format); length = vsnprintf(buffer, buffer_size, format, args); va_end(args); this->write(buffer, length); }
Henadz
Добрый день сообществу. Никак не могу победить прошивку SDK-2.2.1 на ESP-01 Заводскую прошивку запорол еще на этапе изучения при установке Blink в среде Ардуино ))) перестало реагировать на AT команды и исчез из поле зрения Wi Fi. После этого прошился Blanc.bin и установил прошивку ESPEasy (устанавливается одним бинарником по адресу 0х00000) - Wi fi определяется, все работает. Правда нет поддержки АТ, но это просто особенность данной прошивки. Прошивка SDK-2.2.1 не дается вообще никак, в плане - прошивать то прошивает, но нет общения с платой через COM порт в терминалах ну и как точка доступа - тоже тишина.
Доброго дня. По моим опытам-долго не заморачивался. Скачал прошивки версии 304 300 221 и начал прошивать с самой свежей. Стала только 221. Вывод=ставь ту -которая становится на твой чип. Далее. После первой прошивки скетча еспка перестает видеть АТ-команды, также и после прошивки под Луа. Чтоб АТ-команды поддерживались-нужно ставить заводскую опять с нуля. Ат-команды поддерживаются вместе с заводской прошивкой, а вот версию можно отдельно потом менять. Удачи.
Dr Zlo
Для читаемости
Yuriy
вот скажите - а как посчитать и ворнинг не получить? без дублирования - цикла - итератор же
Yuriy
а с чем подобное связано? ничего не было - пять минут назад шилось на отлично. ошибка ( и новая частота тоже) стабильно - не сбой какой
Anonymous
Как обозначить одной переменной сразу много пинов
Anonymous
???
Yuriy
использовать массив uint8_t pin[n]
Anonymous
Напишите пример с int
Anonymous
И pinmode
Yuriy
зачем int?
Anonymous
Понял, спасибо
Yuriy
class Relay : { private: uint8_t _pin; bool _inverted; public: Relay(uint8_t pin) :, _pin{pin} { pinMode(_pin, OUTPUT); digitalWrite(_pin, _inverted ? HIGH : LOW); }; void setOn() { digitalWrite(_pin, _inverted ? LOW : HIGH); } }; std::vector<Relay*> _relay; // сколько памяти хватит можно - сделать
Anonymous
А можно просто присвоить имя на 8 пинов одной строкой?
Yuriy
А можно просто присвоить имя на 8 пинов одной строкой?
да - ее потом разобрать придётся. зачем. Просто массив , указатель + размер - достаточно. Больше вопрос знаем заранее их количество или нет
Anonymous
Вы объясняете из рассчёта на кодера
Anonymous
Как перечислить правильно все пины которые я хочу задействовать одним именем
Yuriy
А можно просто присвоить имя на 8 пинов одной строкой?
напиши что надо - полностью - кину пример
Anonymous
Int rele8shtuk = 15,16,17,5,18,19,21,23
Yuriy
int rele[] ={тоже самое};
Anonymous
Еапп
Anonymous
:)
Yuriy
а дальше чего?
Anonymous
Между квадратами пропуск?