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.

Просмотров:   4043

Комментарии

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!