summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* altos/stm: Allow DMA channels to be hijacked by other codeKeith Packard2017-02-20
| | | | | | | This lets code which needs finer control over DMA to use the channel without interference, and leaves the DMA engine running so that it can. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Allow for console to be used for stdioKeith Packard2017-02-20
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/avr: Avoid warning about unused args in stdio_put and stdio_getKeith Packard2017-02-20
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Allow use basepri instead of primask for masking interruptsKeith Packard2017-02-20
| | | | | | | | | | | | This allows for high priority interrupts (priority 0) to run, even when other interrupts are blocked. Code executing in such interrupt handlers must not attempt to control task execution as that will race with the scheduler. Select this by defining AO_NONMASK_INTERRUPT in ao_pins.h. non-maskable interrupt priority is AO_STM_NVIC_NONMASK_PRIORITY Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stm: Interrupt priority is in the upper bits of the priority maskKeith Packard2017-02-20
| | | | | | | | | | Because the STM32L only offers 16 priority levels, the bottom four bits of each priority mask are not used. All of the interrupt priority settings in the system were using values < 16, making them all effectively the same. Fix that by moving them into the upper 4 bits and using symbolic constants everywhere. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Don't wait while idle if trying to minimize interrupt latencyKeith Packard2017-02-20
| | | | | | | | Keeping the scanout running reasonably means keeping interrupt latency constant, and that requires leaving the CPU running. Don't wait for interrupts when the system is running in this mode. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/cc1111: Remove unneeded initialization in ao_timer.cKeith Packard2017-02-20
| | | | | | | | The timers are all stopped when the chip boots, so no need to stop them. This saves some text space, allowing the current code to (just barely) fit. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/telemini-v3.0: Swap main and apogee sense pins.Keith Packard2017-02-20
| | | | | | These were just hooked up wrong in the software. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Split out TeleMini v3 log/telem labelingKeith Packard2017-02-20
| | | | | | | Allow the ground software to know which TeleMini version is in use, even though they are very similar with only ADC values differing. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/telemini-v3.0: Finish initial turn-onKeith Packard2017-02-20
| | | | | | | TeleMini v3.0 is nearly working; there are some ADC issues still, and lots of altosui work left to decode the new telemetry packet. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/telemini-v3.0: Update to second prototype versionKeith Packard2017-02-20
| | | | | | | | Separate radio xtal means we run the processor at 48MHz. Fix the battery monitoring voltage divider resistor values. Disable most of the code until we've got the radio working. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Initial TeleMini v3.0 codeKeith Packard2017-02-20
| | | | | | For first prototype, which attempted to use the SoC clock for the radio. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Add adc and beep support for TeleMini v3.0Keith Packard2017-02-20
| | | | | | | Note that the ADC code is running very slowly as required by the high impedance dividers on the TeleMini v3.0 pyro circuits. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Require SPI speed to be declared for cc1200Keith Packard2017-02-20
| | | | | | | The cc1200 can't run SPI faster than 10MHz, so make sure every device picks a SPI clock slower than that. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Allow applications to define LEDs for ao_report.cKeith Packard2017-02-20
| | | | | | In case they don't have both a red and green LED. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Allow projects to not use the USB boot loaderKeith Packard2017-02-20
| | | | | | Let applications define HAS_BOOT_LOADER on their own if desired. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Complain if the SPI configuration isn't completeKeith Packard2017-02-20
| | | | | | | | If the pin usage values SPI_1_PA5_PA6_PA7 or SPI_1_PB3_PB4_PB5 aren't defined, then the speed values for the pins aren't going to get set correctly, which results in erratic SPI behaviour. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/stmf0: Allow apps to leave interrupt vectors at 0Keith Packard2017-02-20
| | | | | | | | TeleMini v3.0 doesn't need a boot loader, so we'll have the app run its interrupt vector right at the bottom of the address space instead of copying it to the bottom of ram and reconfiguring the chip to use that. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Eliminate printf format warning with long vs intKeith Packard2017-02-20
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/chaoskey: use both halves of the CRCKeith Packard2017-02-20
| | | | | | | | When pulling 16 bits from the 32-bit crc, instead of just using the low bits, xor the two halves together. This appears to even out the number of zero and one bits. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Start adding scheme symbolsKeith Packard2017-02-20
| | | | | | Migrating to something more like scheme Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Add casts to keep the latest GCC from whingingKeith Packard2017-02-20
| | | | | | Something about alignment issues. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Tell compiler that the two lisp memory pools are alignedKeith Packard2017-02-20
| | | | | | | Otherwise, it will generate unaligned accesses to things fetched from them. Sigh. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Clean up hanoi.lisp demo a bitKeith Packard2017-02-20
| | | | | | No serious changes. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Move stack recursion check after null checkKeith Packard2017-02-20
| | | | | | Don't crash when printing null stack this way. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Include memory stats for test programKeith Packard2017-02-20
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Cleanup some DBG definesKeith Packard2017-02-20
| | | | | | Get rid of the remaining duplicate defines. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Share binary search for memory chunk between mark and moveKeith Packard2017-02-20
| | | | | | Save some text space. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Add builtin 'collect'Keith Packard2017-02-20
| | | | | | Collect memory, return amount free. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Sort frames by atomKeith Packard2017-02-20
| | | | | | | | | Fortunately, the collector always retains the relative order between addresses, so we can sort based on the atom address itself. This reduces the time spent looking for names in larger (e.g. global) frames. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Build new ao_lisp_stack.c into test and lambdakeyKeith Packard2017-02-20
| | | | | | Helpful to include the new source file. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: bounds check in move_map plus binary searchKeith Packard2017-02-20
| | | | | | | | | | This makes move_map faster by skipping all addresses which aren't changing. Also changed the interface from address to offset to avoid computing the offset multiple times. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Empty lambda body is not an errorKeith Packard2017-02-20
| | | | | | It's not very exciting, but it's still legal Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Use poly stashes for stacksKeith Packard2017-02-20
| | | | | | Saves some memory. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Make DBG settings globalKeith Packard2017-02-20
| | | | | | This avoids having different values in different files, which wasn't useful. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Add continuationsKeith Packard2017-02-20
| | | | | | This provides call/cc and makes 'stacks' visible to the application. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Take advantage of implicit progns in hanoi demoKeith Packard2017-02-20
| | | | | | | Remove extra progn wrappers now that cond, lambda and while all support implicit ones. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: have 'while' return the last body valueKeith Packard2017-02-20
| | | | | | | Instead of always returning 'nil', let while return the last body value. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Take advantage of implicit progn in ROM codeKeith Packard2017-02-20
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Make lambda, cond and while all have implicit prognsKeith Packard2017-02-20
| | | | | | | This lets all of these execute more than one sexpr, returning the value of the last. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Compile ao_lisp_make_const -no-pieKeith Packard2017-02-20
| | | | | | Makes debugging easier Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Fix uninitialized values in ao_lisp_make_constKeith Packard2017-02-20
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Dump globals on errorKeith Packard2017-02-20
| | | | | | Useful for debugging Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Fix error atom name in ao_lisp_lengthKeith Packard2017-02-20
| | | | | | Cut&paste error. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Remove some stale frame debugging checksKeith Packard2017-02-20
| | | | | | No-one sets frame->_num to 0xff to hit these Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Clean up hanoi.lisp comments.Keith Packard2017-02-20
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: Eliminate compiler warning about array bounds at -O3Keith Packard2017-02-20
| | | | | | | | | Using ao_lisp_pool - 4 caused the compiler to whinge about computing an address outside the bounds of the array. Sigh. Restructure the code to do the adjustment-by-4 in the integer computations instead of the pointer ones. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/lisp: binary search for chunk in collectKeith Packard2017-02-20
| | | | | | Speeds up collect a bit Signed-off-by: Keith Packard <keithp@keithp.com>
* altos/test: Disable position independent executablesKeith Packard2017-02-20
| | | | This makes debugging programs so much harder
* altos/lisp: Allow empty defun bodiesKeith Packard2017-02-20
| | | | | | This allows for (defun foo()) Signed-off-by: Keith Packard <keithp@keithp.com>