mirror of
https://github.com/m5stack/M5Stack_MicroPython.git
synced 2026-05-20 10:14:44 -07:00
Updated MicroPython scheduler functions Updated all affected modules esp-idf sdspi_host driver refactored Using SDCard in SPI mode and display at the same time now works Tested on M5Stack & Adafruit 2.4" TFT Featherwing Display module refactored uses (modified) esp-idf spi-master driver 16-bit color mode added low level display functions added get TP calibration constants function added Backlight on/off function added M5Stack & GENERIC display types added display initialization sequence for unknown display types can now be handled from MicroPython tpcalib frozen module updated I2C module refactored SLAVE mode added Low level I2C functions added esp-idf i2c driver modified SPI module updated UART module updated network module updated machine module: added method for reading internal ESP32 temperature sensor _thread module: status of the system tasks is now available in _thread.list() os module: SDCard mode can now be configured from MicroPython time.ticks_xx() functions now returns correct tick count after time update rtc module updated Added MPU9250 frozen module (available on M5Stack) Experimental Bluetooth support, not yet finished Experimental support for eve display modules, not yet finished License file added License information in many source files updated/added
103 lines
3.6 KiB
C
103 lines
3.6 KiB
C
/*
|
|
* This file is part of the MicroPython ESP32 project, https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo
|
|
*
|
|
* Development of the code in this file was sponsored by Microbric Pty Ltd
|
|
*
|
|
* The MIT License (MIT)
|
|
*
|
|
* Copyright (c) 2014 Damien P. George
|
|
* Copyright (c) 2018 LoBo (https://github.com/loboris)
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
* in the Software without restriction, including without limitation the rights
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
* THE SOFTWARE.
|
|
*/
|
|
|
|
#ifndef INCLUDED_MPHALPORT_H
|
|
#define INCLUDED_MPHALPORT_H
|
|
|
|
#include <stdint.h>
|
|
#include "py/ringbuf.h"
|
|
#include "lib/utils/interrupt_char.h"
|
|
|
|
extern ringbuf_t stdin_ringbuf;
|
|
extern uint32_t mp_hal_wdg_rst_tmo;
|
|
|
|
uint64_t getTicks_base();
|
|
void setTicks_base(uint64_t ticks_base);
|
|
|
|
void disableStdin(const char *pat);
|
|
|
|
void mp_hal_set_wdt_tmo();
|
|
void mp_hal_reset_wdt();
|
|
|
|
uint64_t mp_hal_ticks_us(void);
|
|
__attribute__((always_inline)) static inline uint32_t mp_hal_ticks_cpu(void) {
|
|
uint32_t ccount;
|
|
__asm__ __volatile__("rsr %0,ccount":"=a" (ccount));
|
|
return ccount;
|
|
}
|
|
|
|
int mp_hal_stdin_rx_chr(uint32_t timeout);
|
|
void mp_hal_stdout_tx_newline();
|
|
void mp_hal_stdout_tx_str(const char *str);
|
|
void mp_hal_stdout_tx_strn(const char *str, uint32_t len);
|
|
void mp_hal_stdout_tx_strn_cooked(const char *str, uint32_t len);
|
|
|
|
uint64_t mp_hal_ticks_ms(void);
|
|
int mp_hal_delay_ms(uint32_t ms);
|
|
void mp_hal_delay_us(uint32_t);
|
|
void mp_hal_delay_us_fast(uint32_t);
|
|
void mp_hal_set_interrupt_char(int c);
|
|
uint32_t mp_hal_get_cpu_freq(void);
|
|
|
|
#define mp_hal_quiet_timing_enter() MICROPY_BEGIN_ATOMIC_SECTION()
|
|
#define mp_hal_quiet_timing_exit(irq_state) MICROPY_END_ATOMIC_SECTION(irq_state)
|
|
|
|
// C-level pin HAL
|
|
#include "py/obj.h"
|
|
#include "driver/gpio.h"
|
|
#define MP_HAL_PIN_FMT "%u"
|
|
#define mp_hal_pin_obj_t gpio_num_t
|
|
mp_hal_pin_obj_t machine_pin_get_id(mp_obj_t pin_in);
|
|
#define mp_hal_get_pin_obj(o) machine_pin_get_id(o)
|
|
#define mp_obj_get_pin(o) machine_pin_get_id(o) // legacy name; only to support esp8266/modonewire
|
|
#define mp_hal_pin_name(p) (p)
|
|
static inline void mp_hal_pin_input(mp_hal_pin_obj_t pin) {
|
|
gpio_set_direction(pin, GPIO_MODE_INPUT);
|
|
}
|
|
static inline void mp_hal_pin_output(mp_hal_pin_obj_t pin) {
|
|
gpio_set_direction(pin, GPIO_MODE_INPUT_OUTPUT);
|
|
}
|
|
static inline void mp_hal_pin_open_drain(mp_hal_pin_obj_t pin) {
|
|
gpio_set_direction(pin, GPIO_MODE_INPUT_OUTPUT_OD);
|
|
}
|
|
static inline void mp_hal_pin_od_low(mp_hal_pin_obj_t pin) {
|
|
gpio_set_level(pin, 0);
|
|
}
|
|
static inline void mp_hal_pin_od_high(mp_hal_pin_obj_t pin) {
|
|
gpio_set_level(pin, 1);
|
|
}
|
|
static inline int mp_hal_pin_read(mp_hal_pin_obj_t pin) {
|
|
return gpio_get_level(pin);
|
|
}
|
|
static inline void mp_hal_pin_write(mp_hal_pin_obj_t pin, int v) {
|
|
gpio_set_level(pin, v);
|
|
}
|
|
|
|
#endif // INCLUDED_MPHALPORT_H
|