From fdb97eda09ca1968df8a919d15ebd1fe191fb57e Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Thu, 31 Aug 2017 13:48:30 -0400 Subject: Add microcontroller.cpu.temperature, for use as a simple sensor on minimal boards. (#211) * Add microcontroller.cpu, the sole instance of microcontroller.Processor. microcontroller.cpu.frequency is the clock frequency, in Hz. microcontroller.cpu.temperature is the reading from the internal temperature sensor, in Celsius. None if not available. * Squeeze firmware size by using -finline-limit. Otherwise non-Express builds were slightly too big. * Update submodules. * Fix documentation glitches --- esp8266/Makefile | 1 + esp8266/common-hal/microcontroller/Processor.c | 40 ++++++++++++++++++++++++++ esp8266/common-hal/microcontroller/Processor.h | 37 ++++++++++++++++++++++++ esp8266/common-hal/microcontroller/__init__.c | 12 +++++++- esp8266/esp_mphal.c | 4 +++ 5 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 esp8266/common-hal/microcontroller/Processor.c create mode 100644 esp8266/common-hal/microcontroller/Processor.h (limited to 'esp8266') diff --git a/esp8266/Makefile b/esp8266/Makefile index 5c32160cc..3daff9c62 100644 --- a/esp8266/Makefile +++ b/esp8266/Makefile @@ -101,6 +101,7 @@ SRC_C = \ SRC_COMMON_HAL = \ microcontroller/__init__.c \ microcontroller/Pin.c \ + microcontroller/Processor.c \ analogio/__init__.c \ analogio/AnalogIn.c \ analogio/AnalogOut.c \ diff --git a/esp8266/common-hal/microcontroller/Processor.c b/esp8266/common-hal/microcontroller/Processor.c new file mode 100644 index 000000000..fb0a3d50a --- /dev/null +++ b/esp8266/common-hal/microcontroller/Processor.c @@ -0,0 +1,40 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Dan Halbert for Adafruit Industries + * + * 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. + */ + +#include "common-hal/microcontroller/Processor.h" + +#include + +#include "esp_mphal.h" + + +float common_hal_mcu_processor_get_temperature(void) { + return NAN; +} + +uint32_t common_hal_mcu_processor_get_frequency(void) { + return mp_hal_get_cpu_freq(); +} diff --git a/esp8266/common-hal/microcontroller/Processor.h b/esp8266/common-hal/microcontroller/Processor.h new file mode 100644 index 000000000..8fc59c2cb --- /dev/null +++ b/esp8266/common-hal/microcontroller/Processor.h @@ -0,0 +1,37 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Dan Halbert for Adafruit Industries + * + * 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 MICROPY_INCLUDED_ESP8266_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#define MICROPY_INCLUDED_ESP8266_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H + +#include "py/obj.h" + +typedef struct { + mp_obj_base_t base; + // Stores no state currently. +} mcu_processor_obj_t; + +#endif // MICROPY_INCLUDED_ESP8266_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/esp8266/common-hal/microcontroller/__init__.c b/esp8266/common-hal/microcontroller/__init__.c index 4fb5eee63..6aef23761 100644 --- a/esp8266/common-hal/microcontroller/__init__.c +++ b/esp8266/common-hal/microcontroller/__init__.c @@ -25,8 +25,10 @@ */ #include "common-hal/microcontroller/Pin.h" -#include "common-hal/microcontroller/Pin.h" +#include "common-hal/microcontroller/Processor.h" + #include "shared-bindings/microcontroller/Pin.h" +#include "shared-bindings/microcontroller/Processor.h" #include "eagle_soc.h" #include "ets_alt_task.h" @@ -52,6 +54,14 @@ void common_hal_mcu_enable_interrupts() { enable_irq(saved_interrupt_state & ~(1 << ETS_LOOP_ITER_BIT)); } +// The singleton microcontroller.Processor object, returned by microcontroller.cpu +// It currently only has properties, and no state. +mcu_processor_obj_t common_hal_mcu_processor_obj = { + .base = { + .type = &mcu_processor_type, + }, +}; + // This macro is used to simplify pin definition in boards//pins.c #define PIN(p_name, p_gpio_number, p_gpio_function, p_peripheral) \ const mcu_pin_obj_t pin_## p_name = { \ diff --git a/esp8266/esp_mphal.c b/esp8266/esp_mphal.c index effed04dd..748c90292 100644 --- a/esp8266/esp_mphal.c +++ b/esp8266/esp_mphal.c @@ -55,6 +55,10 @@ void mp_hal_delay_us(uint32_t us) { } } +uint32_t mp_hal_get_cpu_freq(void) { + return system_get_cpu_freq() * 1000000; +} + int mp_hal_stdin_rx_chr(void) { for (;;) { int c = ringbuf_get(&input_buf); -- cgit v1.2.3