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

ESP8266 и аппаратный таймер hw_timer

Melandr

Member
Вот не я один сталкивался
esp8266.ru/forum/threads/kak-povesit-preryvanie-s-knopki-na-gpio16.1741/
решения так и не увидел
 

Melandr

Member
Трудно конечно спорить с Вашим авторитетом...
Но при обработке двух внешних прерываний я думаю проблема не в Arduino IDE.
возможно неправильно сделаны обработчики прерываний, но пока не нашел нигде работающих примеров с двумя прерываниями
 

pvvx

Активный участник сообщества
Зачем вы мешаете процедуры от Arduino с данным костылем, да ещё в прерывании?
Кто вам сказал что millis() не включает разрешение прерываний не дойдя до выхода из вашего прерывания?
Который месяц вы заняты этой ерундой - уже сто раз можно было бы купить полностью рабочий под ваши условия вариант без ESP, а не копаться в ESP8266 не имеющем описаний в паблике.
 

Melandr

Member
при комментировании второго прерывания начинает работать первое
Код:
void dimmer_start() {
  dimmer_stop();
  TIMER_COUNT = 0;
  PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_GPIO1);
  PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);
  PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_GPIO3);
  gpio_output_set(0, 0, BIT(GPIO_OUT), BIT(GPIO_IN));
  gpio_output_set(0, 0, 0, BIT(GPIO_IN_SENS));
  GPIO_PIN2_CFG &= ~BIT(2); // normal out (push-pull)
  ets_isr_attach(ETS_GPIO_INUM, GPIOs_intr_handler, NULL);
  //ets_isr_attach(ETS_GPIO_INUM, SENSORs_intr_handler, NULL);
  ets_isr_attach(ETS_FRC_TIMER1_INUM, TIMER_intr_cb, NULL);
  gpio_pin_intr_state_set(GPIO_IN, GPIO_PIN_INTR_POSEDGE);
  gpio_pin_intr_state_set(GPIO_IN_SENS, GPIO_PIN_INTR_POSEDGE);
  INTC_EDGE_EN |= BIT(1); // + timer0
  ets_isr_unmask(BIT(ETS_FRC_TIMER1_INUM) | BIT(ETS_GPIO_INUM)); // разрешить прерывания GPIOs & Timer0
}
 

Melandr

Member
Который месяц вы заняты этой ерундой - уже сто раз можно было бы купить полностью рабочий под ваши условия вариант без ESP, а не копаться в ESP8266 не имеющем описаний в паблике.
Вопрос не стоит в покупке.
Просто интересно разобраться.
Если пошариться по интернету люди очень многие вещи реализуют на ESP
 

Melandr

Member
Я с Вами согласен, на AVR можно было давно реализовать двухканальный диммер, с управлением двумя выключателями. но как-то посмотрев сколько всего сделано на ESP думалось, что эту задачу реально реализовать на ESP.
 

nikolz

Well-known member
Трудно конечно спорить с Вашим авторитетом...
Но при обработке двух внешних прерываний я думаю проблема не в Arduino IDE.
возможно неправильно сделаны обработчики прерываний, но пока не нашел нигде работающих примеров с двумя прерываниями
правильно думаете.
судя по вопросам, Вы не читали учебники по радиотехнике и программированию . А не мешало бы с них начать.
 

Melandr

Member
судя по вопросам, Вы не читали учебники по радиотехнике и программированию . А не мешало бы с них начать.
Судя по Вашим ответам, Вы тоже не читали учебники. Так как смысловой нагрузки в Ваших ответах - 0.
ЗЫ: а для использования нескольких входов по прерыванию необходимо было объявить один обработчик с условиями проверки регистра статуса. Вы так много читающий, почему то не сказали, но зато несете всякий "высер".
Если pvvx и критикует, но он действительно давал стоящие советы, а вы только форум засоряете.
 

pvvx

Активный участник сообщества
для использования нескольких входов по прерыванию необходимо было объявить один обработчик с условиями проверки регистра статуса.
Это относится к самым элементарным вещам... и такое я не поправляю.

PS: И отстаньте от нашего местного клоуна. Без него скучнее. :)
 

nikolz

Well-known member
Судя по Вашим ответам, Вы тоже не читали учебники. Так как смысловой нагрузки в Ваших ответах - 0.
ЗЫ: а для использования нескольких входов по прерыванию необходимо было объявить один обработчик с условиями проверки регистра статуса. Вы так много читающий, почему то не сказали, но зато несете всякий "высер".
Если pvvx и критикует, но он действительно давал стоящие советы, а вы только форум засоряете.
форум засоряете Вы и Зы.
Так как вы разразились словесным поносом, то действительно учебники не читали.
 

pvvx

Активный участник сообщества
Если пошариться по интернету люди очень многие вещи реализуют на ESP
Да, до сих пор джиттер у PWM на ESP8266 не исправлен.
Простой осциллограф тоже показывает, хотя не все периоды может проверить:
1615274636092.png
Т.е. более процента, не считая пропуски осла (более 70% периодов при такой функции).
Это в приложении по ссылке, если не дышать (если WiFi слабо активен), т.е. по максималке самый чистый замер.
И ради этого в SDK переписали в RAM половину функций из ROM и перенесли таблицу прерываний в RAM...
 
Сверху Снизу