* created include/libopencm3/cm3/nvic.h from the respective stm32 and
lpc43xx files. the chip specific definitions were left in place (they
were already split out in sthe stm32 case).
* created lib/cm3/nvic.c from the respective stm32 and lpc43xx files. a
hack from the lpc43xx was taken over (for manipulating the internal
interrupts); for now it'll work.
* created a include/libopencm3/dispatch/ directory where the dispatching
of files with common interfaces but different implenentations can
happen; for now, an nvic.h there includes the respective irq name
definitions. (future implementations might have some automation or
preprocessor magic there; so far, it's manual dispatching based on
defines.)
* for efm32, an nvic.h gets generated from an interrupt list, the
rationale for code generation is, in this case, that this can't be
done easily in c preprocessor, and it's really just a list of
definitions and not code proper.
* examples now include <libopencm3/cm3/nvic.h> instead of
<libopencm3/stm32/nvic.h>
Conflicts:
lib/lm3s/vector.c -- split out to lm3s/irq.h
lib/stm32/f4/vector.c -- put the floating point initialization code into a function like in lpc43xx
Add object files to Makefile to include new modules into lib.
Correct typo in pwr.c
Add two new functions to timer.c to preset the counter (for use
with deadman style timeouts) and to identify an interrupt
source.
Also noticed lib/makefile.include didn't clean lib/stm32, which
isn't a target. Added a fix.
* simple polling of an injected channel
* timer triggered sampling of an injected channel
* timer triggered sampling and IRQ handling of an injected channel
* timer triggered sampling and IRQ handling of 4 injected channels
remove rcc_set_adc_clk - use rcc version
Added functions:
- adc_power_on
- adc_start_conversion_direct
- adc_set_dual_mode
- adc_eoc
- adc_eoc_injected
- adc_read_regular
- adc_read_injected
- adc_set_injected_offset
Tested dual mode scanned regular, but no tests of injected yet.
Changes: "discontinuous" was misspelled.
- adc_set_discontinuous_mode_regular - added "length" parameter
- adc_disable_discontinuous_mode_regular - name change
- adc_enable_discontinuous_mode_injected - name change
- adc_enable_automatic_injected_group_conversion - disable triggers
- adc_enable_jeoc_interrupt - name change to match common usage in lib
- adc_disable_jeoc_interrupt - ditto
- adc_enable_external_trigger_regular - remove incorrect test on parameter
- adc_enable_external_trigger_injected - ditto
- adc_set_sample_time - name change to match function's purpose
- adc_set_conversion_time_on_all_channels - ditto
- adc_set_injected_sequence - changed order of register loading (ref Barlow's issue)
- adc_enable_analog_watchdog_on_all_channels - flipped AWDSGL
- adc_enable_analog_watchdog_on_selected_channel - ditto
added aliases for expected commonly used functions to avoid sudden user code breakage
In adc.h, corrected errors in SQR names
added "deprecated" compiler warnings to adc_on and to aliases defined in adc.c
the cortex generic interrupts get moved to lib/cm3/vector.c, the
platorms' individual irq names, initialization and handler prototypes go
to platoform specific irq.h files.
as the vector.c file heavily depends on platoform specific headers, it
can't be built once-and-for-all in lib/cm3/, so there are inclusion
stubs in the various architecture dirs; this might be better solved with
Makefile / include path handling.
one particular file is lib/lpc43xx/vector.c; that platform's
initialization code contains an additional section to copy everything
from flash to ram (which probably performs better there). that code
still resides in the inclusion stub, and gets mashed in using defines.
would need a cleaner implementation together with the Makefile solution.
this commit contains some files of the upcoming efm32 branch, from which
it was cherry-picked.
the .bin files produced from before and after this commit only differ in
lpc43xx, where the startup sequence was subtly modified.
Adds libopencm3/cm3/assert.h header that provides assertion check macros
similar to those provided by the standard C library.
Thanks to Nicolas Schodet for help.
New doc directory with config files and generated html, LaTeX/pdf.
Makefile provided for autogeneration and explanatory README.
The project structure is hostile to doxygen, which can't cope with functions
of the same name. Doxygen is run for each family separately, and separately
for LaTeX generation. Customized layout files sort of "integrate" HTML, and
separate pdfs are generated for each family. Not ideal but seems the best
solution until doxygen changes, if at all.