GPIO16 jako INPUT - nie działa

User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

Wykorzystanie tego pinu jest trochę specyficzne. Wiem, że chcąc go wykorzystać jako wyjście np. do sterowania przekaźnikiem to trzeba użyć definicji

Code: Select all

#define USE_GPIO16_OUTPUT
Kłopot zaczyna się wtedy gdy chcemy go wykorzystać jako wejście. Zdefiniowane tego w ten sposób niestety nie działa:

Code: Select all

#define USE_GPIO16_INPUT
A może to ja nie potrafię tego zastosować. Ktoś już testował GPIO16 jako wejście, np dla przycisku typu button lub sensor?
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Jeszcze w ustawieniach kanałów musisz ustawić gpio 16

supla_input_cfg[x].gpio_id = 16;
SUPLA.... Nareszcie w domu.
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

pzygmunt wrote: Tue Feb 21, 2017 8:17 am Jeszcze w ustawieniach kanałów musisz ustawić gpio 16

supla_input_cfg[x].gpio_id = 16;
Tak, wiem. Niestety nie działa. Przy ustawieniach

Code: Select all

#define B_BTN1_PORT		14
wszystko dziala OK, ale po zmianie na

Code: Select all

#define B_BTN1_PORT		16
Już to nie działa

Code: Select all

supla_input_cfg[1].type = supla_esp_cfg.CfgButtonType == BTN_TYPE_SWITCH ? INPUT_TYPE_SWITCH : INPUT_TYPE_BUTTON;
supla_input_cfg[1].gpio_id = B_BTN1_PORT;
supla_input_cfg[1].flags = INPUT_FLAG_PULLUP;
supla_input_cfg[1].relay_gpio_id = B_RELAY1_PORT;
supla_input_cfg[1].channel = 1;
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
Zybi
Posts: 1511
Joined: Sun Jun 26, 2016 4:24 pm

Post

"GPIO16 can only be used as gpio read/write. No support for open-drain/interrupt/pwm/i2c/ow"
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

Zybi wrote: Tue Feb 21, 2017 12:51 pm "GPIO16 can only be used as gpio read/write. No support for open-drain/interrupt/pwm/i2c/ow"
Czyli powinno działać. Przynajmniej ja tak zrozumiałem.
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Jeżeli jest to zgodne z instrukcją to nie wyłapiesz przerwania. Musiałbyś co chwilę sprawdzać stan gdzieś timerem.
SUPLA.... Nareszcie w domu.
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

pzygmunt wrote: Tue Feb 21, 2017 6:12 pm Jeżeli jest to zgodne z instrukcją to nie wyłapiesz przerwania. Musiałbyś co chwilę sprawdzać stan gdzieś timerem.
Zrobiłem timer do sprawdzania stanu GPIO16 i działa - wyświetlam sobie zmiany na terminalu. Problem mam teraz taki, jaką funkcję wywołać w przerwaniu tego timera do wywołania odpowiednich reakcji tak jak to jest w przypadku innych wejść typu BUTTON lub INPUT.

Dobra. Poradziłem sobie :D
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Jeżeli BUTTON to zmieniasz stan zawsze po zwolnieniu przycisku na odwrotny do bieżącego
(1->0)

uint8 v = gpio__input_get(14);
supla_esp_gpio_relay_hi(14, v == 1 ? 0 : 1, 1);

Jeżeli SWITCH to zmiana przy każdej zmianie stanu 0->1, 1->0
SUPLA.... Nareszcie w domu.
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

pzygmunt wrote: Wed Mar 01, 2017 7:45 am Jeżeli BUTTON to zmieniasz stan zawsze po zwolnieniu przycisku na odwrotny do bieżącego
(1->0)

uint8 v = gpio__input_get(14);
supla_esp_gpio_relay_hi(14, v == 1 ? 0 : 1, 1);

Jeżeli SWITCH to zmiana przy każdej zmianie stanu 0->1, 1->0
Dzieki, ale jak pisałem wcześniej to już sobie poradziłem. :D
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
User avatar
lesny8
Posts: 3132
Joined: Mon Dec 11, 2017 9:43 pm
Has thanked: 10 times
Been thanked: 9 times

Post

Chwile mi zajęło zanim się pokapowałem czemu na GPIO16 nie jest tak miętowo jak na innych pinach i z uwagi na to że działam na płytkach inCan od @Espablo muszę to obsłużyć tak samo.
Na razie z braku czasu nie bawiłem się jeszcze z timerem i zmianą stanu jak pisze @pzygmunt, ale wziąłem aktualny soft inCan na terminal żeby sprawdzić czy wszystko gra i niestety co jakiś czas udaje mi się wprowadzić ESP w stan jak poniżej

Code: Select all

 ets Jan  8 2013,rst cause:1, boot mode:(3,7)

load 0x40100000, len 30004, room 16 
tail 4
chksum 0x8c
load 0x3ffe8000, len 988, room 4 
tail 8
chksum 0xdb
load 0x3ffe83e0, len 10940, room 0 
tail 12
chksum 0xed
csum 0xed
rf[112] : 00
rf[113] : 00
rf[114] : 01

SDK ver: 1.5.4(baaeaebb) compiled @ May 17 2016 19:23:54
phy ver: 972, pp ver: 10.1

RST reason: 0
Board: inCan
Firmware: V2.6
CFG READ SUCCESS!
CFG BUTTON TYPE: switch
-------------------------
Relay K1: GPIO_5
Relay K2: GPIO_13
Button 1: GPIO_14
Button 2: GPIO_12
Sensor 1: GPIO_4
Sensor 2: GPIO_16
Thermometer: GPIO_2
Btn Config:  GPIO_0
Config(x10): GPIO_4
Led Config:  GPIO_2
-------------------------
ROLLER SHUTTER: OFF
THERMOMETER TYPE: DHT22
SENSOR1 TYPE: NO
SENSOR2 TYPE: NO
BUTTON1 TYPE: bistable
BUTTON2 TYPE: bistable
-------------------------
InputCfgTriggerOff: 0
STATE READ SUCCESS!
Starting 176233
Disconnected
data  : 0x3ffe8000 ~ 0x3ffe83d9, len: 985
rodata: 0x3ffe83e0 ~ 0x3ffeae9c, len: 10940
bss   : 0x3ffeaea0 ~ 0x3fff1830, len: 27024
heap  : 0x3fff1830 ~ 0x3fffc000, len: 42960
mode : sta(**:**:**:**:**:**)
add if0
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 3
cnt 

connected with xyz, channel 1
dhcp client start...
ip:***.***.***.***,mask:***.***.***.***,gw:***.***.***.***
WiFi Status: 5
IP Received
client handshake start.
client handshake ok!
Server connected
Registered and ready.
Free heap size: 26200
��n�n��nb����b�␌␌l`␂␌r�n␒��r�n�b��␒b�np␒�|␒�n��|�␒b��`␂␂␂�␒b�np␒�|␒�n��n�⌂b��r��␀�b�␒n�␒��r␂␌�n␌��␒rr�nprl��␒��b␌l�lb␌␌␌␌bpbl`␂��n␌l`␂��n�nn|␒␂�␎l�␒n��␀�␒���rb␌ll`␂␐␒n|␎�nnn�␎����rl�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�␎�␂lₒb␂l�`␂��r�nnn�␎��`␂�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�␎��lₒb␂l�`␂��r�nnn�␎��`␂�r␒�n�~�n�rl|�n�|���␒�n��n�|��b��r�nnn�␎�␂l₞␒b␂l�`␂��r�nnn�␎��`␂�␒n��␀�l�␒��rb␌�l`␂�r�l�␀�ln�␀��n�|��`␂�r�l��ln���n�|��`␂␂r�␒n��␒␂␌�b�n�~��␂��l�p�l�␌␌b�l��lll␌b�␜�␌b�␌l`␂�r�l��ln���n�|��`␂�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�␎�␂lₒb␂l�`␂���p~�nn�␎��`␂�r�l��ln���n�|��`␂�r�l��ln���n�|��`␂�r�l��ln���n�|��`␂�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�r�␂l₞␒b␂l�`␂��r�nnn�␎��`␂�r�l��ln�␀��n�|��`␂�r�l��ln���n�|��`␂�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�r�␂l✐��|␀l�|rl��r�nnn�␎��`␂�r�l��ln���n�|��`␂�r�l��ln���n�|��`␂�r␒�n�nn�rl|�n삞␒�␒�n��n�|��b��r�nnn�␎�␂l✐�b␂l�`␂��r�nnn�␎��`␂�r�l��ln���n�|��`␂�r�l��ln�␀��~��n�␎l�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�␎�␂l✞�␂l�`␂�r�l��ln���n�|��`␂��r�nnn�␎��`␂��lb��␀�ln���~��n�rl�r�l��ln���~��n�␎l�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�␎��␀lₒ�|␀l�`␂���p~�nn�␎��`␂�r�l�␀�ln���n�|��`␂�r�l��ln���n�|��`␂�r␒�n�nn�rl|�n삒�␒�n��n�|��b���p~�nn�␎�␂lₒb␂l�`␂��r�nnn�␎��`␂�r�l��ln���n�|��`␂�r�l��ln���n�|��rl�r␒�n�nn�rl|�n삒�␒�n��n��n�b��r�nnn�␎�␂lₒ�|␀l�`␂�r�l��ln���n�|��`␂��r�nnn�␎��`␂�r�l�␀�ln���n�|��`␂�r�l�␀�ln���n�|��`␂�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�␎��lₒb␂l�`␂���␎�nnn�r��`␂�r�l��ln���n�|��`␂�r�l��ln���n�|��`␂�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�␎�␂lₒb␂l�`␂���p~�nn�␎��rl�r�l��ln���n�|��`␂�r�l��ln���n�|��`␂�r␒�n�nn�rl|�n삒��|␂��n�|��b��r�nnn�␎�␂lₒb␂l�`␂��r�nnn�␎��`␂�r�l�␀�ln���n�|��`␂�r�l��ln���n�|��`␂�r�l��ln���n��n�␎l�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�␎��␀lₒb␂l�`␂��r�nnn�␎��`␂�r�l��ln���n�|��`␂��lb�␂�ln���n�|��`␂�r␒�n�nn�rl|�n�|�����|␂��n��n�b���␎�nnn�␎�␂lₒb␂l�`␂��r�nnn�␎��`␂�r�l��ln���n�|��`␂�r�l��ln���n�|��␎l�r�l�␀�ln�␀��~��n�␎l�r␒�n�nn�rl|�n삒�␒�n��n�|��b��r�nnn�␎�␂l✐��|␀l�`␂��r�nnn�␎��`␂�r�l��ln���n��n�␎l�r�l��ln���n�|��`␂�r␒�n�nn�rl|�n�|���␒�n��n�|��b��r�nnn�␎�␂l₞�␂l�`␂��r�nnn�␎��`␂�r�l��ln���n�|��`␂�r�l��ln���n�|��␎l�r␒�n�~�n�rl|�n삒�␒�n��n�|��b��r�nnn�␎�␂lₒb␂l�`␂��r�nnn�␎��`␂�r�l��ln���n�|��`␂�␒��``��l�␌�b�l�~�␒�␎l����␒�����␎l␜b��␂␌n�␂␂␂�␒n~␒b␌�ll�␜�l`␂�r␒�n�nn�rl␐��nln�l`␂�r�n␎l
 ets Jan  8 2013,rst cause:1, boot mode:(3,7)

load 0x40100000, len 30004, room 16 
tail 4
chksum 0x8c
load 0x3ffe8000, len 988, room 4 
tail 8
chksum 0xdb
load 0x3ffe83e0, len 10940, room 0 
tail 12
chksum 0xed
csum 0xed
rf[112] : 00
rf[113] : 00
rf[114] : 01

SDK ver: 1.5.4(baaeaebb) compiled @ May 17 2016 19:23:54
phy ver: 972, pp ver: 10.1

RST reason: 4
Board: inCan
Firmware: V2.6
CFG READ SUCCESS!
CFG BUTTON TYPE: switch
-------------------------
Relay K1: GPIO_5
Relay K2: GPIO_13
Button 1: GPIO_14
Button 2: GPIO_12
Sensor 1: GPIO_4
Sensor 2: GPIO_16
Thermometer: GPIO_2
Btn Config:  GPIO_0
Config(x10): GPIO_4
Led Config:  GPIO_2
-------------------------
ROLLER SHUTTER: OFF
THERMOMETER TYPE: DHT22
SENSOR1 TYPE: NO
SENSOR2 TYPE: NO
BUTTON1 TYPE: bistable
BUTTON2 TYPE: bistable
-------------------------
InputCfgTriggerOff: 0
STATE READ SUCCESS!
Starting 177365
Disconnected
data  : 0x3ffe8000 ~ 0x3ffe83d9, len: 985
rodata: 0x3ffe83e0 ~ 0x3ffeae9c, len: 10940
bss   : 0x3ffeaea0 ~ 0x3fff1830, len: 27024
heap  : 0x3fff1830 ~ 0x3fffc000, len: 42960
mode : sta(**:**:**:**:**:**)
add if0
WiFi Status: 1
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 3
cnt 

connected with xyz, channel 1
dhcp client start...
ip:***.***.***.***,mask:***.***.***.***,gw:***.***.***.***
WiFi Status: 5
IP Received
client handshake start.
client handshake ok!
Server connected
Registered and ready.
Free heap size: 26440

Po dłuższej chwili robi reset i jak doczytałem jest to Power reboot, Software reset

Code: Select all

rst cause:1
RST reason: 4
Czy da się GPIO16 w taki sposób obsłużyć, żeby moduł się nie restartował i mieć 100% tego pewność?
Jeśli tak to jak? ;)
Last edited by lesny8 on Sat Mar 24, 2018 10:49 pm, edited 1 time in total.
SOP 2023 :heavy_check_mark:
SOP 2024 :heavy_check_mark:
Czekam na kolejne Supla Offline Party :upside_down_face:
🧩: 🔑cz->b ⛴️+ila

Return to “Pomoc”