summaryrefslogtreecommitdiff
path: root/stmhal
AgeCommit message (Collapse)Author
2016-01-29stmhal: Add PWM capability for LED(3) and LED(4) on pyboards.Damien George
USB CDC no longer needs TIM3 (which was originally used for LED(4) PWM) and so TIM3 has been freed for general purpose use by the user. Hence LED(4) lost its PWM capabilities. This patch reinstates the PWM capabilities using a semi-generic piece of code which allows to configure a timer and PWM channel to use for any LED. But the PWM capability is only configured if the LED is set to an intensity between 1 and 254 (ie only when needed). In that case the relevant timer is configured for PWM. It's up to the user to make sure the timers are not used if PWM is active. This patch also makes sure that PWM LEDs are turned off using standard GPIO when calling led.off() or led.intensity(0), instead of just setting the PWM counter to zero.
2016-01-29stmhal: Make TIM3 available for use by the user.Damien George
TIM3 is no longer used by USB CDC for triggering outgoing data, so we can now make it available to the user. PWM fading on LED(4) is now gone, but will be reinstated in a new way.
2016-01-29stmhal: Make USB CDC driver use SOF instead of TIM3 for outgoing data.Damien George
Previous to this patch the USB CDC driver used TIM3 to trigger the sending of outgoing data over USB serial. This patch changes the behaviour so that the USB SOF interrupt is used to trigger the processing of the sending. This reduces latency and increases bandwidth of outgoing data. Thanks to Martin Fischer, aka @hoihu, for the idea and initial prototype. See PR #1713.
2016-01-29py/runtime: mp_stack_ctrl_init() should be called immediately on startup.Paul Sokolovsky
Calling it from mp_init() is too late for some ports (like Unix), and leads to incomplete stack frame being captured, with following GC issues. So, now each port should call mp_stack_ctrl_init() on its own, ASAP after startup, and taking special precautions so it really was called before stack variables get allocated (because if such variable with a pointer is missed, it may lead to over-collecting (typical symptom is segfaulting)).
2016-01-27stmhal: Add support for the STM32F401NUCLEO board.Carmine Noviello
Includes full version of pins.csv file with correct mapping of the Nucleo STM32F401RE chip (LQFP64 package).
2016-01-26extmod/modurandom: Add some extra random functions.Damien George
Functions added are: - randint - randrange - choice - random - uniform They are enabled with configuration variable MICROPY_PY_URANDOM_EXTRA_FUNCS, which is disabled by default. It is enabled for unix coverage build and stmhal.
2016-01-23stmhal: Add support for building frozen files.Dave Hylands
This allows FROZEN_DIR=some-directory to be specified on the make command line, which will then add all of the files contained within the indicated frozen directory as frozen files in the image. There is no change in flash/ram usage if not using the feature. This is especially useful on smaller MCUs (like the 401) which only has 64K flash file system.
2016-01-19stmhal: Add os.statvfsDave Hylands
Implement enough of statvfs to determine the amount of free space on a volume.
2016-01-17extmod/modurandom: Add "urandom" module.Paul Sokolovsky
Seedable and reproducible pseudo-random number generator. Implemented functions are getrandbits(n) (n <= 32) and seed(). The algorithm used is Yasmarang by Ilya Levin: http://www.literatecode.com/yasmarang
2016-01-11py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*.Damien George
The first argument to the type.make_new method is naturally a uPy type, and all uses of this argument cast it directly to a pointer to a type structure. So it makes sense to just have it a pointer to a type from the very beginning (and a const pointer at that). This patch makes such a change, and removes all unnecessary casting to/from mp_obj_t.
2016-01-07stmhal: Remove custom mod_machine_mem_get_{read,write}_addr functions.Damien George
They are no longer needed because stm constants can now be 32 bits wide.
2016-01-07stmhal: Make stm constants big ints when they don't fit in a small int.Damien George
Adds 924 bytes of code, but means that no more hacks and work-arounds are needed due to large constants becoming negative.
2015-12-30stmhal: Fix USB on the STM32F429DISC boardDave Hylands
The USB REPL has been broken since commit 1be0fde45c8d84eaf04851af96f06aad8171b2b2 This patch allows the STM32F429DISC board (which uses the USB_HS PHY)
2015-12-25extmod/fsusermount: Move module qstrs to global pool from stmhal port.Paul Sokolovsky
2015-12-22stmhal: Add pyb.irq_stats() to get statistics about IRQ calls.Damien George
Adds a lot of code, makes IRQs a bit less efficient, but is very useful for debugging. Usage: pyb.irq_stats() returns a memory view that can be read and written, eg: list(pyb.irq_stats()) pyb.irq_stats()[0] pyb.irq_stats()[0] = 0 The patch provides general IRQ_ENTER() and IRQ_EXIT() macros that can be modified to provide further IRQ statistics if desired.
2015-12-19stmhal: Add mem8/mem16/mem32 operations to machine module.Dave Hylands
This uses the newly factored machine_mem functions.
2015-12-18stmhal: Change PLL configuration for STM32F7DISC.Fabian
Changes USB clock from 50MHz to 48MHz which improves USB communication.
2015-12-18stmhal, cc3200: Actually implement machine -> umachine module weak link.Paul Sokolovsky
2015-12-18ports: Rename "machine" module to "umachine".Paul Sokolovsky
To let unix port implement "machine" functionality on Python level, and keep consistent naming in other ports (baremetal ports will use magic module "symlinking" to still load it on "import machine"). Fixes #1701.
2015-12-16stmhal/moduselect: Implement "oneshot polling" flag.Paul Sokolovsky
Similar to recently added feature in unix port: if event triggers for an objects, its polling flags are automatically reset, so it won't be polled until they are set again explicitly.
2015-12-16stmhal: Extend SPI support to fully support all SPI devices on STM32F429.Tobias Badertscher
This includes SPI4, SPI5 and SPI6.
2015-12-12stmhal: Make uart init use struct instead of array for parsing args.Damien George
This makes it much easier to understand which arg is which, less error prone, and simpler to add a new arg.
2015-12-12stmhal: For SPI config, use HW_SPIx_SCK instead of HW_ENABLE_SPIx.Damien George
Previously, SPI was configured by a board defining MICROPY_HW_ENABLE_SPIx to 0 or 1. Now, the board should define MICROPY_HW_SPIx_SCK, MISO, MOSI and NSS. This makes it the same as how I2C is configured.
2015-12-10stmhal: add order-only dependency on build directorySven Wegener
Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
2015-12-09stmhal/timer: Use mp_float_t instead of float.Damien George
This way mp_float_t can be changed to, eg, double.
2015-12-09stmhal: Enable two USB phys to be supported together.neilh10
This is refactoring to enable support for the two USB PHYs available on some STM32F4 processors to be used at the same time. The F405/7 & F429 have two USB PHYs, others such as the F411 only have one PHY. This has been tested separately on a pyb10 (USB_FS PHY) and F429DISC (USB_HS PHY) to be able to invoke a REPL/USB. I have modified a PYBV10 to support two PHYs. The long term objective is to support a 2nd USB PHY to be brought up as a USB HOST, and possibly a single USB PHY to be OTG.
2015-12-07stmhal: Print exception information in nlr_jump_failedDave Hylands
Currently nlr_jump_fail prints that there was an uncaught exception but nothing about the exception. This patch causes nlr_jump_failed to try to print the exception. Given that printf was called on the line above, I think that the call to mp_obj_print_exception has about as much likelyhood of succeeding as the printf does.
2015-12-07stmhal: Execute boot.py and main.py when formatting the file system.Dave Hylands
When you use the USER button to perform a filesystem reset at boot time then it wipes out the filesystem and creates a new boot.py and main.py. With this patch these files are executed after formatting, ensuring that pyb and machine modules get imported.
2015-12-04stmhal: Fix uart off by 1 circular buffer size.Ryan Shaw
2015-12-04stmhal: Add option to free up TIM3 from USB VCP polling.Damien George
This is a hack to free up TIM3 so that it can be used by the user. Instead we use the PVD irq to call the USB VCP polling function, and trigger it from SysTick (so SysTick itself does not do any processing). The feature is enabled for pyboard lite only, since it lacks timers.
2015-12-04stmhal: Only use BASEPRI irq stuff if Cortex is M3 or higher.Damien George
2015-12-04stmhal: Add rtc.init() method to force RTC to re-initialise.Damien George
2015-12-04stmhal: Protect SD card DMA transactions against USB MSC contention.Damien George
Consider the following scenario: SD card is being read by pyboard; USB irq comes in for MSC read request; SD card needs to be read from within USB irq while SD read is already ongoing. Such contention needs to be avoided. This patch provides a simple solution, to raise the irq priority above that of the USB irq during SD DMA transfers. Pyboard and PC can now read from the SD card at the same time (well, reads are interleaved).
2015-12-04stmhal: Add raise_irq_pri and restore_irq_pri functions.Damien George
These can be used to disable only certain interrupts, ones at or above the given priority value.
2015-12-02stmhal: Put all DMA channel & stream definitions in dma.hDave Hylands
2015-12-02stmhal: Add board config files for PYBv1.1 and PYBLITEv1.0.Damien George
2015-11-30stmhal: Make uart.write() function correctly for timeout=0.Damien George
In non-blocking mode (timeout=0), uart.write() can now transmit all of its data without raising an exception. uart.read() also works correctly in this mode. As part of this patch, timout_char now has a minimum value which is long enough to transfer 1 character. Addresses issue #1533.
2015-11-30stmhal: uart.any() function now returns number of bytes available.Ryan Shaw
2015-11-26stmhal: Make stm.mem* support large integers.Dave Hylands
With these you can now do things like: stm.mem32[0x20000000] = 0x80000000 and read 32-bit values. You can also read all the way to the end of memory using either stm.mem32[0xfffffffc] or stm.mem32[-4]. IRQs shouldn't use mem32 at all since they'd fail if the top 2 bits weren't equal, so IRQs should be using 16-bit I/O.
2015-11-26stmahl: Fix usbd_conf.c for devices which don't have USB_HS at all.Dave Hylands
The STMCube examples define both USE_USB_HS and USE_USB_HS_IN_FS when they use the HS in FS mode. The STM32F401 doesn't have a USB_HS at all, so the USB_OTG_HS instance doesn't even exist.
2015-11-26stmhal: Allow make DEBUG=1 to buildDave Hylands
2015-11-25stmhal: Add support for the STM32F429I-DISCO kit by STMicro.Tobias Badertscher
2015-11-25extmod/fsusermount: Make configurable with MICROPY_FSUSERMOUNT.Paul Sokolovsky
2015-11-25extmod: Move fsusermount.c from stmhal for cross-port reuse.Paul Sokolovsky
2015-11-25stmhal: Increase the priority of UART IRQ.Dave Hylands
The UARTs have no FIFOs, so if interrupts are disabled for more than a character time (10 usec at 1 Mbit/sec) then characters get dropped. The overhead for handling a UART ISR is about 0.5 usec, so even at baud rates of 1 Mbit/sec this only corresponds to about 5% of the CPU. Lower baud rates will have less of an impact.
2015-11-24stmhal: Process storage idle tick handler in different slot to DMA.Damien George
2015-11-24stmhal: In SysTick IRQ handler, make uwTick variable non-volatile.Damien George
uwTick can only change in the SysTick IRQ so this IRQ function does not need to take special care with this variable. It's important to make this IRQ function as efficient as possible.
2015-11-24stmhal: Move flash storage idle tick handler from TIM3 to SysTick.Damien George
Using SysTick to do the counting and dispatch of the flash storage idle handler is more efficient than requiring a dedicated hardware timer. No new counter is needed, just the existing uwTick variable. The processing is not actually done in the SysTick IRQ, it is deferred to the flash IRQ (which runs at lower priority).
2015-11-24stmhal/irq: Set all IRQ subpriorities to 0, since they aren't used.Damien George
2015-11-24stmhal/irq: Add comment about SDIO priority being higher than DMA.Damien George