Commit graph

7622 commits

Author SHA1 Message Date
brisk
c5d8adacf7 pulse_counter_ulp: Enable ULP coprocessor on ESP32-S3
The S3 has separate sdkconfig configuration options for the ULP, which
appear to operate in addition to the generic versions.
2024-11-17 21:10:00 +10:30
brisk
e7f86e4fc3 pulse_counter_ulp: Add test specific to esp32-s3 2024-11-17 21:03:58 +10:30
brisk
e86ade632d pulse_counter_ulp: Clang tidy 2024-10-07 23:17:42 +10:30
brisk
8c8bde9b90 pulse_counter_ulp: Linter doesn't like C++17 nested namespaces 2024-10-07 22:37:43 +10:30
brisk
3208a2f0c5 pulse_counter_ulp: Fix namespace 2024-10-07 22:30:44 +10:30
brisk
a9b1f32828 pulse_counter_ulp: Add namespace to dummy header to pass lint 2024-10-07 22:25:00 +10:30
brisk
36e1573927 pulse_counter_ulp: Add ulp_main.h to satisfy clang-tidy
This is generated by IDF at compile time, but clang-tidy doesn't know about it so fails at its inclusion.
2024-10-07 22:17:52 +10:30
brisk
70ac9daf4c pulse_counter_ulp: Try using ulp_main as a system include 2024-10-06 21:15:10 +10:30
brisk
2b7fc64e46 pulse_counter_ulp: Add required structure to dummy header 2024-10-06 19:18:17 +10:30
brisk
cdb0d0de9b ulp_pulse_counter: Add dummy ulp_main.h to appease clang-tidy
The real version is generated by IDF
2024-10-06 19:08:52 +10:30
brisk
6900b97b25 pulse_counter_ulp: clang-tidy exlusions on IDF generated aspects 2024-10-06 18:15:09 +10:30
brisk
1feb0bf8cb pulse_counter_ulp: Fix enum case 2024-10-06 18:08:29 +10:30
brisk
ad3b75601e pulse_counter_ulp: Fix whitespace 2024-10-06 17:34:08 +10:30
brisk
bc8dd18bf5 pulse_counter_ulp: Add brisk0 as codeowner 2024-10-06 17:25:47 +10:30
brisk
8619852a28 pulse_counter_ulp: Add tests
Modified from pulse_counter, reduced in scope to esp32
2024-10-06 17:25:47 +10:30
brisk
e5ac747225 pulse_counter_ulp: Validate platform properly
Only available on ESP32 with ESP-IDF
2024-10-06 17:25:47 +10:30
brisk
7b9d000522 pulse_counter_ulp: Tidy comments 2024-10-06 17:25:47 +10:30
brisk
c57ad9fff9 pulse_counter_ulp: Count pulses not edges
- Count both separately in ULP program
- Manage pin inversion manually in update()
- Take into account configured mode
2024-10-06 17:25:47 +10:30
brisk
40b18666c9 pulse_counter_ulp: Remove total sensor automation
This automation doesn't preserve state over deep sleep, making it unhelpful for
the ULP pulse counter.
2024-10-06 17:25:47 +10:30
brisk
67b746693f pulse_counter_ulp: Record and dump all config items 2024-10-06 17:25:47 +10:30
brisk
8b66ff90d8 pulse_counter_ulp: fix typo in bc64701 2024-10-06 17:25:47 +10:30
brisk
4a8907d70d pulse_counter_ulp: Store mean_exec_time in Ulp Program
This lets the estimated interval survive sleep, and finally provide reasonable
interval estimates over deep sleep periods.
2024-10-06 17:25:47 +10:30
brisk
2b453289a9 pulse_counter_ulp: Use factory method to construct UlpProgram when we're ready 2024-10-06 17:25:47 +10:30
brisk
5646dd5d0c pulse_counter_ulp: Make sleep duration configurable, keep estimate of ulp runtime 2024-10-06 17:25:47 +10:30
brisk
bd9029c2b2 pulse_counter_ulp: avoid zero 2024-10-06 17:25:47 +10:30
brisk
c882b58e53 pulse_counter_ulp: Don't break chrono type-safety 2024-10-06 17:25:47 +10:30
brisk
b41746cc54 pulse_counter_ulp: Use std::chrono instead of millis()
millis() appears to jump when a time component synchronises. steady_clock() should avoid this.
2024-10-06 17:25:47 +10:30
brisk
e736091950 pulse_counter_ulp: refactor UlpProgram class 2024-10-06 17:25:47 +10:30
brisk
2ba3b85440 pulse_counter_ulp: Add run_count to ULP program 2024-10-06 17:25:47 +10:30
brisk
31e72a5232 pulse_counter_ulp: remove time component 2024-10-06 17:25:47 +10:30
brisk
7cd5bad1c2 pulse_counter_ulp: only read valid bits of ulp_edge_count 2024-10-06 17:25:47 +10:30
brisk
bd8858e053 pulse_counter_ulp: CountMode to enum class 2024-10-06 17:25:47 +10:30
brisk
4517698322 pulse_counter_ulp: rename classes and remove filter 2024-10-06 17:25:47 +10:30
brisk
5fb117e0ea pulse_counter_ulp: expunge other storage types 2024-10-06 17:25:47 +10:30
brisk
3059e65d13 pulse_counter_ulp: Remove filter configuration 2024-10-06 17:25:47 +10:30
brisk
5f98bf4808 pulse_counter_ulp: Remove unnecessary configuration variables 2024-10-06 17:25:47 +10:30
brisk
9c70733028 pulse_counter_ulp: Rename files to use suffix 2024-10-06 17:25:47 +10:30
brisk
7e22e7f813 pulse_counter: Restore original pulse counter 2024-10-06 17:25:47 +10:30
brisk
2b51fe7f95 pulse_counter: Move ulp pulse_counter to its own folder 2024-10-06 17:25:47 +10:30
brisk
146f733be9 pulse_counter: Use 64 bit time always 2024-10-06 17:25:47 +10:30
brisk
5efcbf8dfc pulse_counter: save last_time_ as preference
This lets rates be calculated across deep sleeps when a time source is configured
2024-10-06 17:25:47 +10:30
brisk
f2046573fb pulse_counter: When using Time, don't update until time sync
Avoids nonphysical spikes across reboots, sleeps or time syncs
2024-10-06 17:25:47 +10:30
brisk
b230491fd2 pulse_counter: enable use of RealTimeClock 2024-10-06 17:25:47 +10:30
brisk
68b0e145f8 pulse_counter: ULP maintain total pulse-count through deep sleep
Note that the ULP program is not able to count pulse rate through deep-sleep yet due to the loss of timing over deep-sleep
2024-10-06 17:25:47 +10:30
brisk
a7c68f4e08 pulse_counter: Remove ULP self-wakeup
Wakeup will be handled by the deep-sleep component instead
2024-10-06 17:25:47 +10:30
brisk
bb0ed5b855 pulse_counter: Replace storage enum with dependency injection
This substantially reduces the need for #ifdefs to handle conditional dependency on the ULP system
2024-10-06 17:25:47 +10:30
brisk
fe533952cc pulse_counter: conditionally compile ULP 2024-10-06 17:25:47 +10:30
brisk
30d4a7fb34 pulse_counter: Integrate platformio ulp example into pulse_counter 2024-10-06 17:25:47 +10:30
brisk
49b4169f51 pulse_counter: Add ULP sources from Platformio example
Source: https://github.com/platformio/platform-espressif32/tree/develop/examples/espidf-ulp-pulse
2024-10-06 17:25:47 +10:30
brisk
349dc506ce pulse_counter: Add custom CMakeLists when using use_ulp
This is necessary to compile the ULP program in ESP-IDF
2024-10-06 17:25:47 +10:30