| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
| |
This allows each LCD segment to be individually configured as to which
COM and which SEG drives it, permitting maximum flexibility in wiring.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
Handl EP0 actions from interrupt handler. This allows USB to be used
in a taskless environment, like the STM flash loader
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
| |
I haven't figured out how to assign addresses for specific initialized
variables, so we'll just have to always declare all of them and make
sure that we add new ones at the end.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
|
| |
|
|
| |
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
|
|
| |
This moves the crc_errors into the new structure and adds a receiver
battery voltage value there as well. Now the receiver status can be
monitored separately from the flight status. That also means that code
receiving state updates should be prepared to accept missing listener
or flight state values.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Unlike the AVR and CC1111 USB drivers, the STM usb driver queues IN
bytes in a local buffer instead of in the driver; this means that the
driver is queuing bytes while the previous IN packet is queued for the
host, which allows for overlapping execution.
It also means that when the local buffer is full, we must check to see
if the host has picked up the previous IN packet before trying to
queue another IN packet for transmission. This is done by always
waiting for the IN buffer to be ready before sending data.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
| |
This adds a pile of debugging hooks to the USB driver to try and
isolate various lockup-related issues. It's all disabled by default,
of course.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
|
|
|
| |
getchar relies on interrupts being blocked across the pollchar calls
and into the sleep call or it may go to sleep with data pending.
This prefixes all pollchar functions with _ to indicate that they are
to be called with interrupts blocked and eliminates all interrupt
manipulation calls from within the pollchar functions.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
|
| |
The newer(?) chips in telegps didn't like the previous programming
scheme, so go back to fixed time for write, which does an implicit
erase before every write. Also clear the DATA bit, which is only
needed for double word erase/programming.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
SD cards require 0xff when fetching data
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| | |
With the GPIO pins set to 10MHz now, we can run SPI at the maximum
possible speed (8MHz).
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| |
| | |
The GPIO pin settings affect the output impedence, and hence the
maximum speed for SPI. Cranking these to suitable values allows SPI to
run at full speed.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| | |
These might do something, and should at least bring up USB
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |/
|
|
|
|
| |
This cleans up a few values, adds more comments and a few more NVIC fields.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
Necessary for flashing skytraq chips
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
|
|
| |
We were stealing one value (0xff) in the return value from pollchar to
indicate 'not ready yet'. Instead of doing that, use the integer value
-1 and have pollchar return an int instead of a char. That
necessitated cleaning a few other bits to make sure that 0xff wouldn't
get promoted to -1 on accident.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
Split out the bits in a fairly simplistic fashion so that we support
no more than 16 LEDs still.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
Cache the next wakeup time and check that before jumping to the task
code.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
Otherwise, we run the risk of an interrupt waking a task after we've
decided to idle the CPU.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
Turn a bunch of the macros into inline functions.
Clean up the reboot method to use the stm_scb structure.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
Stop using cli/sei, which are avr-specific
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
|
| |
This replaces the array-based scheduler with a queue-based one
instead. It should have the same basic scheduling semantics, but it
walks shorter lists for each operation, making it much more efficient
when the system has a lot of tasks.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
| |
This marks the lowest portion of the stack as inaccessible to the CPU,
causing the processor to fault when it reaches it. The fault then
generates a panic message so that the user can know what happened.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
sdcc offers __critical as a machine-independent way to block
interrupts, but as gcc doesn't, we need to use a compiler-independent
construct instead. ao_arch_critical has been around since the AVR
port, but some old __critical usages remained.
This fixes a bunch of random hangs when communicating with MM over USB
or the radio as the various stdio loops were running without
interrupts blocked between the test and the sleep.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
Add sample-based profiling, using a 1kHz timer
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
Without this, there can be a long delay between asking for the beeper
and having it actually start sounding.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
This was used to debug the clock bringup, but is not useful anymore,
and probably a bad idea to boot.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |\
| |
| |
| | |
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| | |
Just list them all so users can pick what they like
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Instead of trying to get things into the ring from a variety of
functions, go back to the simpler method of storing them in globals
and having the ADC code just pluck out the most recent values.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| | |
| |
| |
| |
| |
| |
| | |
This should avoid an accidental low->high transition when switching
between multiple SPI busses.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |/
|
|
|
|
|
| |
Make sure none of the pin configurations are being used at startup
time. Split out the pin configuration into separate functions.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
Counting from 0 to 100 takes 10.1ms, so count to 99 instead.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
| |
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
This seems to make the STM32L152 happier
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
ao_delay hasn't been chip-specific for a long time, and it had a bug
in not calling ao_clear_alarm.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
The EXTI routing information is in the syscfg unit, so that needs to
be powered up or writes to its registers will be lost.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
They all get set to the correct value when enabled.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
Useful when doing time comparisons.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
| |
This provides a simple function interface for driving the LCD segments
in the STM chip. It also uses the update complete interrupt to block
LCD users during flush.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
This has each sensor mark a bit in the current data record which is
then sent for processing when all of the data are present.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
512 bytes should be enough for anybody.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
| |
This allows multiple STM pin groups to be used for each SPI
bus. Useful for the MS5607 sensor which signals conversion complete on
the MISO line.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
| |
With this, a single task can wait for any button or quadrature input
device.
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
Needed to support general GPIO interrupts
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
| |
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
| |
This is untested
Signed-off-by: Keith Packard <keithp@keithp.com>
|
| |
|
|
|
|
|
|
| |
Just like cc1111, stick the serial number and radio calibration values
at known fixed addresses so that when re-flashing the board, we can go
find the existing values.
Signed-off-by: Keith Packard <keithp@keithp.com>
|