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

Зависания при включении прерывания (ESP8266 interrupts)

alexsmd

New member
Здравствуйте, разбираю пример из UDK проект gpio16_led
Адаптирую проект для диммирования лампочки.

Схема отсюда ESP8266 Projects: P3 - WIFI Mains Power Dimmer / Switch with CBDBv2

Код:
Код:
#include "ets_sys.h"
#include "osapi.h"
#include "os_type.h"
#include "user_interface.h"
#include "driver/uart.h"
#include "driver/gpio16.h"

extern int ets_uart_printf(const char *fmt, ...);
int (*console_printf)(const char *fmt, ...) = ets_uart_printf;
extern uint8_t pin_num[GPIO_PIN_NUM];

#define GPIO_ZERO_PIN 1 // GPIO5
#define GPIO_LAMP_PIN 2 // GPIO4

#define USE_US_TIMER
#define LAMP_GPIO_DELAY 20 // microseconds

const char *gpio_type_desc[] =
{
        "GPIO_PIN_INTR_DISABLE (DISABLE INTERRUPT)",
        "GPIO_PIN_INTR_POSEDGE (UP)",
        "GPIO_PIN_INTR_NEGEDGE (DOWN)",
        "GPIO_PIN_INTR_ANYEDGE (BOTH)",
        "GPIO_PIN_INTR_LOLEVEL (LOW LEVEL)",
        "GPIO_PIN_INTR_HILEVEL (HIGH LEVEL)"
};

LOCAL os_timer_t lamp_timer;

void lamp_timer_cb (void *arg){
    gpio_write(GPIO_LAMP_PIN, 0);
}

void ICACHE_FLASH_ATTR intr_callback(unsigned pin, unsigned level) {
    gpio_write(GPIO_LAMP_PIN, 1);
    os_timer_disarm(&lamp_timer);
    os_timer_setfn(&lamp_timer, (os_timer_func_t *)lamp_timer_cb, (void *)0);
    ets_timer_arm_new(&lamp_timer, LAMP_GPIO_DELAY, 0, 0);
}

void init_done(void)
{
    GPIO_INT_TYPE gpio_type;

    // Set Wifi softap mode
    wifi_station_disconnect();
    wifi_station_set_auto_connect(0);
    wifi_set_opmode(SOFTAP_MODE);

    if (set_gpio_mode(GPIO_LAMP_PIN, GPIO_PULLDOWN, GPIO_OUTPUT)) {
            console_printf("GPIO%d set GPIO_OUTPUT mode\r\n", pin_num[GPIO_LAMP_PIN]);
        } else {
            console_printf("Error: GPIO%d not set GPIO_OUTPUT mode\r\n", pin_num[GPIO_LAMP_PIN]);
    }

    gpio_write(GPIO_LAMP_PIN, 0);
    gpio_type = GPIO_PIN_INTR_POSEDGE;

    if (set_gpio_mode(GPIO_ZERO_PIN, GPIO_PULLUP, GPIO_INT)) {
        console_printf("GPIO%d set interrupt mode\r\n", pin_num[GPIO_ZERO_PIN]);
        if (gpio_intr_init(GPIO_ZERO_PIN, gpio_type)) {
            console_printf("GPIO%d enable %s mode\r\n", pin_num[GPIO_ZERO_PIN], gpio_type_desc[gpio_type]);
            gpio_intr_attach(intr_callback);
        } else {
            console_printf("Error: GPIO%d not enable %s mode\r\n", pin_num[GPIO_ZERO_PIN], gpio_type_desc[gpio_type]);
        }
    } else {
        console_printf("Error: GPIO%d not set interrupt mode\r\n", pin_num[GPIO_ZERO_PIN]);
    }
}

void user_rf_pre_init(void){}
void user_init(void) {

    system_timer_reinit();
    system_init_done_cb(init_done);

}
Проблемы:
1) зависает при попытке запустить прерывания, потом WDT сбрасывает, и так пока не заработает норлмально, в среднем и 5 попыток включается нормально 1 раз.
вывод UART
[off]
Код:
ets Jan  8 2013,rst cause:2, boot mode:(
ets Jan  8 2013,rst cause:1, boot mode:(3,7)

load 0x40100000, len 26668, room 16
tail 12
chksum 0x25
ho 0 tail 12 room 4
load 0x3ffe8000, len 996, room 12
tail 8
chksum 0x63
load 0x3ffe83e8, len 668, room 0
tail 12
chksum 0x43
csum 0x43

SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_POSEDGE (UP)¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_POSEDGE (UP) mod¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_POSEDGE (UP) ¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_P¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPI¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 ena¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode [B]// в этом моменте зависает[/B]
¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode[B] // в этом моменте зависает[/B]
¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
G¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_POSEDGE (UP) mode [B]// сдесь код сработал корректно[/B]
[/off]
2) Когда все таки заработало нормально, Периодически лампа начинает моргать, вызвано тем что проц не посылает почему-то сигнал о включении лампочки.

Данные осциллографа - P_20160701_150728.jpg (пс. не вставляется картинка)\
Видео - V_20160701_152528.mp4
видно как моргает в начале и в конце

3) Подскажите как мне передать параметр в колбек таймера, пытался не получилось, чтобы сделать один колбек для 2 таймеров с параметром включения или выключения, вместо 2х функций как сейчас. Спасибо!
 

nikolz

Well-known member
Здравствуйте, разбираю пример из UDK проект gpio16_led
Адаптирую проект для диммирования лампочки.

Схема отсюда ESP8266 Projects: P3 - WIFI Mains Power Dimmer / Switch with CBDBv2

Код:
Код:
#include "ets_sys.h"
#include "osapi.h"
#include "os_type.h"
#include "user_interface.h"
#include "driver/uart.h"
#include "driver/gpio16.h"

extern int ets_uart_printf(const char *fmt, ...);
int (*console_printf)(const char *fmt, ...) = ets_uart_printf;
extern uint8_t pin_num[GPIO_PIN_NUM];

#define GPIO_ZERO_PIN 1 // GPIO5
#define GPIO_LAMP_PIN 2 // GPIO4

#define USE_US_TIMER
#define LAMP_GPIO_DELAY 20 // microseconds

const char *gpio_type_desc[] =
{
        "GPIO_PIN_INTR_DISABLE (DISABLE INTERRUPT)",
        "GPIO_PIN_INTR_POSEDGE (UP)",
        "GPIO_PIN_INTR_NEGEDGE (DOWN)",
        "GPIO_PIN_INTR_ANYEDGE (BOTH)",
        "GPIO_PIN_INTR_LOLEVEL (LOW LEVEL)",
        "GPIO_PIN_INTR_HILEVEL (HIGH LEVEL)"
};

LOCAL os_timer_t lamp_timer;

void lamp_timer_cb (void *arg){
    gpio_write(GPIO_LAMP_PIN, 0);
}

void ICACHE_FLASH_ATTR intr_callback(unsigned pin, unsigned level) {
    gpio_write(GPIO_LAMP_PIN, 1);
    os_timer_disarm(&lamp_timer);
    os_timer_setfn(&lamp_timer, (os_timer_func_t *)lamp_timer_cb, (void *)0);
    ets_timer_arm_new(&lamp_timer, LAMP_GPIO_DELAY, 0, 0);
}

void init_done(void)
{
    GPIO_INT_TYPE gpio_type;

    // Set Wifi softap mode
    wifi_station_disconnect();
    wifi_station_set_auto_connect(0);
    wifi_set_opmode(SOFTAP_MODE);

    if (set_gpio_mode(GPIO_LAMP_PIN, GPIO_PULLDOWN, GPIO_OUTPUT)) {
            console_printf("GPIO%d set GPIO_OUTPUT mode\r\n", pin_num[GPIO_LAMP_PIN]);
        } else {
            console_printf("Error: GPIO%d not set GPIO_OUTPUT mode\r\n", pin_num[GPIO_LAMP_PIN]);
    }

    gpio_write(GPIO_LAMP_PIN, 0);
    gpio_type = GPIO_PIN_INTR_POSEDGE;

    if (set_gpio_mode(GPIO_ZERO_PIN, GPIO_PULLUP, GPIO_INT)) {
        console_printf("GPIO%d set interrupt mode\r\n", pin_num[GPIO_ZERO_PIN]);
        if (gpio_intr_init(GPIO_ZERO_PIN, gpio_type)) {
            console_printf("GPIO%d enable %s mode\r\n", pin_num[GPIO_ZERO_PIN], gpio_type_desc[gpio_type]);
            gpio_intr_attach(intr_callback);
        } else {
            console_printf("Error: GPIO%d not enable %s mode\r\n", pin_num[GPIO_ZERO_PIN], gpio_type_desc[gpio_type]);
        }
    } else {
        console_printf("Error: GPIO%d not set interrupt mode\r\n", pin_num[GPIO_ZERO_PIN]);
    }
}

void user_rf_pre_init(void){}
void user_init(void) {

    system_timer_reinit();
    system_init_done_cb(init_done);

}
Проблемы:
1) зависает при попытке запустить прерывания, потом WDT сбрасывает, и так пока не заработает норлмально, в среднем и 5 попыток включается нормально 1 раз.
вывод UART
[off]
Код:
ets Jan  8 2013,rst cause:2, boot mode:(
ets Jan  8 2013,rst cause:1, boot mode:(3,7)

load 0x40100000, len 26668, room 16
tail 12
chksum 0x25
ho 0 tail 12 room 4
load 0x3ffe8000, len 996, room 12
tail 8
chksum 0x63
load 0x3ffe83e8, len 668, room 0
tail 12
chksum 0x43
csum 0x43

SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_POSEDGE (UP)¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_POSEDGE (UP) mod¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_POSEDGE (UP) ¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_P¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPI¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 ena¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode [B]// в этом моменте зависает[/B]
¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode[B] // в этом моменте зависает[/B]
¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
G¢@*r…ÄP±µ±Kít¥dr×.@éù.©Ñª¡Ko8a /tµ$v'áêÉ*±T±±±©©ÄP«¯±@íù*±…¢ünzA¬‰8xºvA,P%!ù(¡‡(A¬¡{~An êÉ*±R·*±±@j|±C©µù*±¢ünzAl )ém~±T[!ù(P±+tÇmX@j|½Å*µù*±‰ønzA¬‰8xºvA,T[ár§(±Õ¢ü
SDK ver: 1.5.0 compiled @ Nov 27 2015 13:37:51
phy ver: 484, pp ver: 9.5

mode : softAP(1a:fe:34:a1:4a:1a)
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
GPIO4 set GPIO_OUTPUT mode
GPIO5 set interrupt mode
GPIO5 enable GPIO_PIN_INTR_POSEDGE (UP) mode [B]// сдесь код сработал корректно[/B]
[/off]
2) Когда все таки заработало нормально, Периодически лампа начинает моргать, вызвано тем что проц не посылает почему-то сигнал о включении лампочки.

Данные осциллографа - P_20160701_150728.jpg (пс. не вставляется картинка)\
Видео - V_20160701_152528.mp4
видно как моргает в начале и в конце

3) Подскажите как мне передать параметр в колбек таймера, пытался не получилось, чтобы сделать один колбек для 2 таймеров с параметром включения или выключения, вместо 2х функций как сейчас. Спасибо!
объявите переменную как глоальную, т е напишите ее вне функции колбека и записывайте в нее значение. Кроме того, создайте переменную -флаг и пишите в нее команду (признак) по этому признаку делайте ветвление в колбеке.
 
Сверху Снизу