GPIO в Esp8266. Подключаем DS18B20

Задумал я как-то написать свою прошивку для esp8266. Nodemcu это конечно круто, но мы в состоянии на С писать.
Собрал компилятор для этого модулька, взял библиотеку для ds18b20, которая когда-то была написана для AVR…

Для адаптации нужно правильно написать макросы для ногодрыга.
В sdk esp8266 для дергания ногой предназначены довольно замороченые функции. Давайте попробуем с ними разобраться.
Для того чтобы работать с GPIO нужно подключить заголовок.

#include "gpio.h"

Для работы с ногами есть одна функци. Она настраивает ногу как вход/выход, и заодно еще устанавливает её значение.

void gpio_output_set(uint32 set_mask, uint32 clear_mask, uint32 enable_mask,uint32 disable_mask)

set_mask — маска установки 1 (пардон за трудности перевода). Если пишем туда 1 бит, то устанавливается высокий уровень, если 0 — ничего не меняется.
clear_mask — маска установки 0. Если пишем туда 1 бит, от устанавливается низкий уровень, если 0 — ничего не меняется.
enable_mask — если ставим 1, то ножка настраивается на выход.
disable_mask — установкой 1 бита настраиваем на вход.

Посмотрим на примере GPIO2.
Чтобы настроить ножку на вход:

gpio_output_set(0, 0, 0, BIT2)

Чтобы настроить на выход и установить низкий уровень:

gpio_output_set(0, BIT2, BIT2, 0)

Чтобы настроить на выход и установить высокий уровень:

gpio_output_set(BIT2, 0, BIT2, 0)

Можно настраивать сразу несколько ног.
Что будет если настроить одну ногу на вход и выход или установить её в 1 и 0 одному Богу известно.

Дабы ничего не перепутать китай предусмотрел макросы GPIO_OUTPUT_SET(gpio_no, bit_value) и GPIO_DIS_OUTPUT(gpio_no). Тут комментарии не нужны.
Чтобы получить состояние входа предусмотрен макрос GPIO_INPUT_GET(gpio_no).

Можно поморгать диодиком.

После определения макросов датчик ожил.
Если интересно, код на GitHub.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий

  1. Леха

    Вообще не плохо было бы рассказать про написание прошивок с использованием чистоно sdk, без мусора в виде ардуины или вообще lua, js, python. А то материалов, да еще на руссок по этой теме очень мало. Максимум — помигать диодом, без упоминания работы с переферией.

    Ответить
  2. Даша

    Нужны

    Ответить