Skip to content

Instantly share code, notes, and snippets.

Avatar

Ivan Grokhotkov igrr

View GitHub Profile
@igrr
igrr / esp32c3_gpio_interrupt.c
Created May 3, 2022 — forked from ermacv/esp32c3_gpio_interrupt.c
Code to reproduce "interrupt is not triggered during the light sleep" on ESP32-C3 (updated)
View esp32c3_gpio_interrupt.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/gpio.h"
#include "esp_pm.h"
#include "esp_log.h"
#include "esp_sleep.h"
View get_set_time_example.c
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
static void set_time(void);
static void get_time(void);
void app_main(void)
{
@igrr
igrr / tlc5947.py
Created Dec 2, 2021
MicroPython module for the TLC5947 (untested)
View tlc5947.py
# SPDX-FileCopyrightText: 2017 Tony DiCola for Adafruit Industries
#
# SPDX-License-Identifier: MIT
#
# MicroPython module for the TLC5947 12-bit 24 channel LED PWM driver.
# Based on CircuitPython version of the same by Tony DiCola, Walter Haschka.
#
from machine import Pin, SPI
@igrr
igrr / esp.ksy
Created Nov 25, 2021
Kaitai Struct description of ESP binary image format (starting from ESP32)
View esp.ksy
# Try it out by opening https://ide.kaitai.io/ and copying this file there
# Based on an article by @angelcarve about ESP8266 binary image parsing with Kaitai Struct:
# https://carvesystems.com/news/parsing-binaries-with-kaitai-struct/
meta:
id: esp
file-extension: bin
endian: le
seq:
@igrr
igrr / idos.py
Last active Jul 13, 2021 — forked from grafuls/idos.py
python script for getting time left for next bus with idos(Brno)
View idos.py
from bs4 import BeautifulSoup as bs
from dateutil import parser
from datetime import datetime
import requests
import re
# search for all buses leaving from one station in any direction
URL = 'http://jizdnirady.idnes.cz/brno/odjezdy/?f=cervinkova&fc=302003&lng=E&submit=true'
View test_io.c
#include <stdio.h>
#include <unistd.h>
#include "driver/adc.h"
#include "driver/gpio.h"
#include "driver/rtc_io.h"
#include "soc/cpu.h"
const char* names[] = {"D2", "D3", "CLK", "CMD", "D0", "D1"};
const int pins[] = {12, 13, 14, 15, 2, 4};
const int adc_channels[] = {5, 4, 6, 3, 2, 0};
@igrr
igrr / esp32s2beta_dedicated_gpio_example_main.c
Created Jan 13, 2020
ESP32-S2 (beta) dedicated GPIO example
View esp32s2beta_dedicated_gpio_example_main.c
/* ESP32-S2 (beta) "dedicated GPIO" peripheral example */
#include <stdio.h>
#include "sdkconfig.h"
#include "soc/system_reg.h"
#include "esp32s2beta/rom/gpio.h"
#include "soc/gpio_sig_map.h"
#include "driver/gpio.h"
/* The header file is not yet in IDF; however this is the only register we need. */
View time_until_timestamp.c
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <assert.h>
static time_t get_tz_offset(time_t now) {
struct tm local, utc;
localtime_r(&now, &local);
View low_speed_ledc.c
#include <stdio.h>
#include "esp_err.h"
#include "driver/ledc.h"
#include "driver/periph_ctrl.h"
void app_main()
{
periph_module_enable(PERIPH_LEDC_MODULE);
View rtc_data_in_fast_mem.patch
diff --git a/components/esp32/ld/esp32.common.ld b/components/esp32/ld/esp32.common.ld
index 32fc089..884717c 100644
--- a/components/esp32/ld/esp32.common.ld
+++ b/components/esp32/ld/esp32.common.ld
@@ -11,12 +11,15 @@ SECTIONS
. = ALIGN(4);
*(.rtc.literal .rtc.text)
*rtc_wake_stub*.o(.literal .text .literal.* .text.*)
+ _rtc_text_end = ABSOLUTE(.);
} >rtc_iram_seg