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

Опубликовано lamazavr - вс, 06/14/2015 - 23:08
Body

Задумал я как-то написать свою прошивку для 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.

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

Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.