Skip to content

Instantly share code, notes, and snippets.

@igrr
igrr / esp32s3-psram-alloc-exec.c
Created July 10, 2023 17:18
Copy a function into PSRAM on ESP32-S3 and execute it
/*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdio.h>
#include <string.h>
#include "esp_err.h"
#include "esp_log.h"
@igrr
igrr / makehex.py
Created January 13, 2023 16:17
create an intel hex file from IDF build directory
#!/usr/bin/env python
import intelhex
import json
from pathlib import Path
def main():
build_dir = Path('build')
if not build_dir.exists() or not build_dir.is_dir():
print('build directory doesn\'t exist')
@igrr
igrr / esp32c3_gpio_interrupt.c
Created May 3, 2022 18:53 — forked from ermacv/esp32c3_gpio_interrupt.c
Code to reproduce "interrupt is not triggered during the light sleep" on ESP32-C3 (updated)
#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"
#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 December 2, 2021 21:03
MicroPython module for the TLC5947 (untested)
# 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 November 25, 2021 20:19
Kaitai Struct description of ESP binary image format (starting from ESP32)
# 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 July 13, 2021 19:25 — forked from grafuls/idos.py
python script for getting time left for next bus with idos(Brno)
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'
#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 January 13, 2020 05:06
ESP32-S2 (beta) dedicated GPIO example
/* 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. */
#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);