Damien George
a0cb4eda9a
esp8266: Use VM_HOOK to call ets_loop_iter within the VM.
Starting with a divisor of 10, pystone_lowmem gives a score of 256.
9 years ago
Damien George
6a051a8e0b
esp8266/uart: Get ctrl-C working now that event-based REPL is disabled.
9 years ago
Damien George
fb6cc96951
esp8266/uart: Comment out old, unused rx buffering code.
This was originally used for non-event based REPL processing. Then it
was unused when event-based processing was activated. But now that event
based is disabled, and non-event based is back, there has been new ring
buffer code to process the chars.
9 years ago
Paul Sokolovsky
fc4c43a72e
esp8266: Switch to non event-driven REPL to support paste mode.
9 years ago
Paul Sokolovsky
785cf9a61f
esp8266: Support dedicated REPL loop (aka pull-style).
Event-driven loop (push-style) is still supported and default (controlled
by MICROPY_REPL_EVENT_DRIVEN setting, as expected).
Dedicated loop worked even without adding ets_loop_iter(), though that
needs to be revisited later.
9 years ago
Paul Sokolovsky
777232c9a5
esp8266: Disallow recursive calls to REPL.
Before this change, if REPL blocked executing some code, it was possible
to still input new statememts and excuting them, all leading to weird,
and portentially dangerous interaction.
TODO: Current implementation may have issues processing input accumulated
while REPL was blocked.
9 years ago
Paul Sokolovsky
5531437941
esp8266: Move PHY mode constants from modesp to modnetwork.
9 years ago
Damien George
4b597a1c1a
esp8266: Reset term_obj on reboot.
Also, term_obj can be NULL if socket enables REPL duplication signalling
before os.dupterm is called, so it should be checked.
9 years ago
Paul Sokolovsky
98af891610
esp8266: Implement input part of dupterm handling.
The idea is following: underlying interrupt-driven or push-style data source
signals that more data is available for dupterm processing via call to
mp_hal_signal_dupterm_input(). This triggers a task which pumps data between
actual dupterm object (which may perform additional processing on data from
low-level data source) and input ring buffer.
9 years ago
Paul Sokolovsky
61fa7c8152
esp8266: Switch back to accumulating input data via ring buffer.
But now it's generic ring buffer implemented via ringbuf.h, and is intended
for any type of input, including dupterm's, not just UART. The general
process work like this: an interrupt-driven input source puts data into
input_buf, and then signals new data available via call to
mp_hal_signal_input().
9 years ago
Paul Sokolovsky
2e75a17bab
esp8266: Fix issue when current repl line was garbage-collected.
Reference it from root pointers section.
9 years ago
Damien George
9475cc59e6
esp8266: Support synchronous wifi scanning.
That is: aps = if0.scan()
TODO: make sure that returned list has tuple with values in "standard"
order (whatever that standard is).
9 years ago
Paul Sokolovsky
d88250c06e
esp8266: Reduce heap size for now to avoid random segfaults on WiFi connect.
9 years ago
Paul Sokolovsky
c4506ed869
esp8266: Let esp8266 "os" messages go to standard (REPL) UART.
That's definitely helpful for debugging.
9 years ago
Paul Sokolovsky
402a743821
esp8266/esp_mphal: Add support for debug UART-only output.
Helpful when debugging dupterm support (because otherwise all output is
spooled to dupterm too).
To use:
mp_printf(&mp_debug_print, "...");
9 years ago
Paul Sokolovsky
8fc5e56a6a
esp8266: Enable uos.dupterm() method.
9 years ago
Paul Sokolovsky
c961889e34
esp8266: Add basic support for duplicating REPL output.
9 years ago
Damien George
6ca17c1922
esp8266: Implement os.urandom function.
Uses what is suspected to be a hardware random number generator.
9 years ago
Paul Sokolovsky
b4070ee8a4
esp8266: Allow to build without FatFs support again.
9 years ago
Paul Sokolovsky
2f02302e22
esp8266: Support importing modules from filesystem.
9 years ago
Damien George
71d40f132d
esp8266: Zero out fs_user_mount state on (soft) reset.
Otherwise device stays mounted on soft reset and leads to corruption
(since block device object is now gone).
9 years ago
Paul Sokolovsky
9edd736ee6
esp8266/moduos: Add os.remove(), proxying to VFS object.
9 years ago
Paul Sokolovsky
e8e116e7fc
esp8266/moduos: Factor out VFS method proxy helper.
9 years ago
Paul Sokolovsky
8b08a0d9ed
esp8266/moduos: Add listdir() proxy for MP_STATE_PORT(fs_user_mount)[0].
I.e. os.listdir(...) will redirect to
MP_STATE_PORT(fs_user_mount)[0].listdir(...).
9 years ago
Damien George
61230e007d
esp8266/moduos: Use mp_rom_map_elem_t for static const dictionary.
9 years ago
Paul Sokolovsky
b01a373adb
esp8266: deploy: Use --flash_size=8m option to esptool.py.
Most esp8266 modules have at least 1MB (8Mbit) of flash. If not set, vendor
functions allow to access only first 512K.
9 years ago
Paul Sokolovsky
cd6194aefc
esp8266/esp8266.ld: Put FatFs to FlashROM.
9 years ago
Paul Sokolovsky
374654f2b8
esp8266: Enable FatFs support.
9 years ago
Paul Sokolovsky
fe9bc0c573
esp8266/README: Update for the current status of the port.
9 years ago
Paul Sokolovsky
bbc65d4eda
esp8266/modesp: flash_read(): Accept buffer to read to as a second argument.
9 years ago
Paul Sokolovsky
fd86bf5917
esp8266/modesp: flash_write(): Writes in multiples of 4 bytes.
9 years ago
Paul Sokolovsky
53302f1616
esp8266: Set up UART handling task soon into init process.
Otherwise, events may be posted to non-initialized task, which leads to
segfaults.
9 years ago
Paul Sokolovsky
935e021250
esp8266: Put modpybi2c.o to FlashROM.
9 years ago
Damien George
c33a76059f
esp8266/tests: Add neopixel.py test.
9 years ago
Damien George
3962766be0
esp8266: Add esp.neopixel_write function to bit-bang WS2812 data.
9 years ago
Damien George
b62beadae0
esp8266: Link ADC class into machine module.
9 years ago
Paul Sokolovsky
f71c0699a5
esp8266: Put utils.o to FlashROM.
9 years ago
Paul Sokolovsky
9c7e3353e5
esp8266: Put lexerstr32.o into FlashROM.
9 years ago
Paul Sokolovsky
ba640bde55
esp8266/esppwm.c: Fix IRQ handler prototype.
9 years ago
Damien George
632d8efa05
esp8266: Add PWM support.
PWM implementation uses a timer and interrupts (FRC1), taken from
Espressif's/NodeMCU's implementation and adapted for our use.
8 channels are supported, on pins 0, 2, 4, 5, 12, 13, 14, 15.
Usage:
import machine
pwm0 = machine.PWM(machine.Pin(0))
pwm0.freq(1000)
pwm0.duty(500)
Frequency is shared (ie the same) for all channels. Frequency is
between 1 and 1000. Duty is between 0 and 1023.
9 years ago
Damien George
82b95f625e
esp8266: Implement software SPI class.
Supports speeds up to 500k baud, polarity=0/1, phase=0/1, and using any
pins. Only supports MSB output at the moment.
9 years ago
Paul Sokolovsky
ac671546d1
esp8266/README: Remove outdated reference to initial port heap size.
9 years ago
Damien George
a5d48b1162
esp8266: Add tests/onewire.py as a driver and test code for ds18b20 dev.
9 years ago
Damien George
78d0dde562
esp8266: Add onewire helper functions as C module.
Includes functions to read and write bits and bytes.
9 years ago
Damien George
0cdbd356fd
esp8266: Implement bit-bang I2C read, and add i2c.readfrom method.
I2C reading tested with TSL2561 luminosity sensor.
9 years ago
Damien George
5b9f361824
esp8266: Clean up bit-bang I2C implementation.
Changed from using set_sda_scl function to independent set_sda and
set_scl functions.
9 years ago
Paul Sokolovsky
667d64b430
esp8266/modpybi2c: Add missing include.
9 years ago
Damien George
dd32f02cc3
esp8266: Add basic I2C driver, with init and writeto methods.
Tested and working with SSD1306 I2C display.
9 years ago
Damien George
7059c8c23c
esp8266: Expose pin object as a public structure for use as C pin API.
This is an initial attempt at making a simple C pin API for writing
things like I2C drivers in C.
9 years ago
Paul Sokolovsky
a1d072df81
esp8266: Enable auto-indent in REPL.
9 years ago