summaryrefslogtreecommitdiff
path: root/stmhal/timer.c
AgeCommit message (Collapse)Author
2014-10-10Add support for complimentary channel output and deadtime.Dave Hylands
This patch enables output on the complimentary channels (TIMx_CHyN). For timers 1 and 8, deadtime can also be inserted when the channels transition. For the pyboard, TIM8_CH1/CH1N and TIM8_CH2/CH2N can take advantage of this.
2014-10-05stmhal: Use mp_uint_t where appropriate.Damien George
Found these by compiling stmhal with mp_uint_t of type uint32_t instead of unsigned int. This actually makes a difference to the code, but just a curiosity.
2014-10-05stmhal, timer: Fix timer.chanel so mode can be a keyword.Damien George
2014-10-05stmhal, timer: Improve accuracy of freq computation.Damien George
2014-10-05stmhal, timer: Set freq from float; get timer source freq.Damien George
Timers now have the following new features: - can init freq using floating point; eg tim.init(freq=0.1) - tim.source_freq() added to get freq of timer clock source - tim.freq() added to get/set freq - print(tim) now prints freq
2014-10-04stmhal: Allow pyb.freq() function to change SYSCLK frequency.Damien George
Eg pyb.freq(120000000) sets the CPU to 120MHz. The frequency can be set at any point in the code, and can be changed as many times as you like. Note that any active timers will need to be reconfigured after a freq change. Valid range is 24MHz to 168MHz (but not all freqs are supported). The code maintains a 48MHz clock for the USB at all times and it's possible to change the frequency at a USB REPL and keep the REPL alive (well, most of the time it stays, sometimes it resets the USB for some reason). Note that USB does not work with pyb.freq of 24MHz.
2014-09-29stmhal: Fix edge case for timer PWM of 100%.Damien George
Also improve precision of calculating PWM percent in integer mode. Also update teensy with edge case fix.
2014-09-27Fix timer overflow code.Dave Hylands
Teensy doesn't need to worry about overflows since all of its timers are only 16-bit. For PWM, the pulse width needs to be able to vary from 0..period+1 (pulse-width == period+1 corresponds to 100% PWM) I couldn't test the 0xffffffff cases since we can't currently get a period that big in python. With a prescaler of 0, that corresponds to a freq of 0.039 (i.e. cycle every 25.56 seconds), and we can't set that using freq or period. I also tested both stmhal and teensy with floats disabled, which required a few other code changes to compile.
2014-09-25stmhal, timer: Factor code to compute PWM percent; improve 32bit case.Damien George
Also do the same for teensy timer code.
2014-09-23Add pulse_width_percent to teensy.Dave Hylands
Fix stmhal and teensy print routines to report actual prescaler an period. Fix teensy build to use soft-float Add USE_ARDUINO_TOOLCHAIN option to teensy build
2014-09-21stmhal: Add pulse_width_ratio to timer channel object.Damien George
This allows to set the pulse width (for PWM mode) as a ratio relative to the period of the timer. Eg, 0.5 is a 50% duty cycle. You can set the ratio in the channel init, or using channel.pulse_width_ratio; the latter can also read the pulse width as a ratio.
2014-09-19Add Timer support (PWM, OC, IC) for stmhal and teensyDave Hylands
2014-08-30Change some parts of the core API to use mp_uint_t instead of uint/int.Damien George
Addressing issue #50, still some way to go yet.
2014-08-14stmhal: Resolve question in comment about timer clock.Damien George
2014-07-03Rename machine_(u)int_t to mp_(u)int_t.Damien George
See discussion in issue #50.
2014-07-02stmhal: Some reordering of code/functions.Damien George
2014-06-30Add timer_deinit and call it just before doing a soft-restartDave Hylands
This fixes #733.
2014-06-19Prefix ARRAY_SIZE with micropython prefix MP_Emmanuel Blot
2014-05-03Add license header to (almost) all files.Damien George
Blanket wide to all .c and .h files. Some files originating from ST are difficult to deal with (license wise) so it was left out of those. Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
2014-05-03stmhal: Remove #include <stdint.h> from mpconfigport.h.Damien George
Make include dependencies neater, and adheres to the coding convention that headers should not include headers.
2014-05-02stmhal: Add documentation for DAC and Timer classes.Damien George
2014-04-26Simplify names for argcheck.c / arg parsing.Damien George
2014-04-26Add ARRAY_SIZE macro, and use it where possible.Damien George
2014-04-21stmhal, timer: Remove obsolete global variable.Damien George
2014-04-21stmhal: Add Timer class: simple TIM control, incl callback on IRQ.Damien George
Simple but functional timer control. More sophistication will eventually be added, or for now just use direct register access :) Also added pyb.freq() function to get MCU clock frequencies.
2014-04-16stmhal: Improve flash storage cache management.Damien George
Internal flash used for the filesystem is now written (from the cache) only after a 5s delay, or when a file is closed, or when the drive is unmounted from the host. This delay means that multiple writes can accumulate in the cache, and leads to less writes to the flash, making it last longer. It's implemented by a high-priority interrupt that takes care of flash erase and write, and flushing the cache. This is still only an interim solution for the flash filesystem. It eventually needs to be replaced with something that uses less RAM for the cache, something that can use more of the flash, and something that does proper wear levelling.
2014-04-15stmhal: Add ADC function to read data at a given frequency.Damien George
Reads ADC values into a bytearray (or similar) at a fixed rate. Needs a better name and improved API. Also fix up DAC dma function (which also needs a better name and API).
2014-04-05py: Change nlr_jump to nlr_raise, to aid in debugging.Damien George
This does not affect code size or performance when debugging turned off. To address issue #420.
2014-04-02stmhal: Add timer module; move servo PWM from TIM2 to TIM5.Damien George
As per issue #257, servo is better on TIM5 because TIM2 is connected to more GPIO.