Statistics: Posted by cranphin — Wed Aug 21, 2019 1:46 am
Code:
const BaseType_t ret = xTaskCreate(ds_task,
"ds_task",
2048,
NULL,
// See https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/api-guides/system-tasks.html for prio's
15, // Can't go higher, who cares about stable WiFi.
&ds_task_handle);
Code:
#include <xtensa/xtruntime.h>
#include "esp8266/gpio_struct.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
// At microsecond speeds, the functions from gpio.h are too heavy
#define GPIO_FAST_SET_1(gpio_num) GPIO.out_w1ts |= (0x1 << gpio_num)
#define GPIO_FAST_SET_0(gpio_num) GPIO.out_w1tc |= (0x1 << gpio_num)
#define GPIO_FAST_OUTPUT_ENABLE(gpio_num) GPIO.enable_w1ts |= (0x1 << gpio_num)
#define GPIO_FAST_OUTPUT_DISABLE(gpio_num) GPIO.enable_w1tc |= (0x1 << gpio_num)
#define GPIO_FAST_GET_LEVEL(gpio_num) ((GPIO.in >> gpio_num) & 0x1)
Code:
uint32_t IRAM_ATTR onewire_read_bit(void) {
uint32_t r;
uint32_t savedLevel = XTOS_DISABLE_ALL_INTERRUPTS;
GPIO_FAST_OUTPUT_ENABLE(ONEWIRE_PIN);
GPIO_FAST_SET_0(ONEWIRE_PIN);
ets_delay_us(3);
GPIO_FAST_OUTPUT_DISABLE(ONEWIRE_PIN);
ets_delay_us(10); // Somewhere near here, sometimes we still get 10us extra delay
r = GPIO_FAST_GET_LEVEL(ONEWIRE_PIN);
XTOS_RESTORE_INTLEVEL(savedLevel);
usleep(53);
return r;
}
Statistics: Posted by cranphin — Wed Aug 14, 2019 5:02 am
Statistics: Posted by cranphin — Sun Aug 11, 2019 10:21 pm
Statistics: Posted by cranphin — Tue Jul 23, 2019 5:54 am
Statistics: Posted by btomic — Thu Apr 05, 2018 6:15 am