14 Commits

Author SHA1 Message Date
DaneSlattery
aa0e257ffe
RMT Onewire Peripheral (#454)
* commit test 1

test commit 2

next device

asd

* try example, haven't built yet

* Add feature flags for legacy RMT examples

Remove references to the ds18b20 specific device.

Add a feature flag `rmt-legacy` that, when enabled, will build the
original rmt modules from v4 of the esp-idf. When disabled, the v5
rmt interface can be used for one wire applications.

Implement the Iterator trait for a device search and use the Iterator
in the example.

* Add more feature guards to examples compile

* Add alternative main functions for examples

* Use std threading

* Add std to thread sleep

* use std duration

* correct use for legacy rmt component

* Remove local bindings and use the esp-idf-sys master

* fix a typo

* Remove esp-idf component inclusion

* Update gitignore

* Fix examples

* mut-ex out the example compilation

* add implementation for temperature readings

* Conditional compile

* esp4.4 compile

* Changes to cargo and config

* Remove OWDevice and simplify API

* Remove phantomdata that is not required

* adjust lifetimes for single search at a time

* Keep RMT peripheral and add channel to onewire

Moves the RMT driver into a private `driver` module, which will only be compiled in rmt-legacy mode.

Also reduce the number of cfg feature flags in examples by wrapping the implementation in a module.

* modularise examples

* Fix for CI

* update example name to make it pop

---------

Co-authored-by: Dane Slattery <dane@polarmonitoring.com>
Co-authored-by: DaneSlattery <dane_s@umantec.net>
2024-08-10 16:11:38 +03:00
David Sheets
5657073293
RMT symbols and musical buzzer example bugfix for ESP32 (#354)
* rmt: wrap rmt_item32_t in a newtype

This makes it much easier to use `TxRmtDriver::start_iter` and
`TxRmtDriver::start_iter_blocking` (#113).

* examples/rmt_musical_buzzer: fix for ESP32

Possibly broken by #97, possibly never worked. The ESP-IDF repo
specifically excludes the ESP32 from the RMT musical buzzer demo
because its RMT unit lacks hardware looping. Before this change, the
demo would simply hang when trying to play the second note possibly
because the ESP32 RMT unit does not support asynchronous stopping.

As an added bonus, this example is now much easier to modify to
experiment with 1-bit chiptune synthesis by making every symbol
(cycle) accessible in the ISR iterator.

* rmt: remove Pulse::into_rmt_item in favor of Symbol::new

Also, factor Pulse pairs into function arguments for ease of use.
2024-01-31 15:39:29 +02:00
ivmarkov
bb92e2a47e Async examples 2023-10-14 07:36:30 +00:00
ivmarkov
8cc193aa35
TWAI driver async hack; examples cleanup (#292)
* Hacky async TWAI driver

* Async TWAI: Custom priority and pin to core

* Async TWAI: Proper configuration of alerts

* Do not refer to esp-idf-sys as it is not an explicit dependency anymore
2023-08-27 10:47:18 +03:00
enelson1001
8e312529b9
Add RMT receiver (#104)
* Add RMT receiver

* Changed line 891 to rmt_item32_t,
Changed line 835 to carrier_rm

* rmt.rs - changed line 891 to rmt_item32_t
rmt.rs - changed line 835 to carrier_rm

* Changed rmt channel implementation

* wrong rx_config_t field name

* More cleanup from rebase

* Fix cargo fmt check errors

* guess #1 to fix errors

* Try to fix clippy error

* Can't use log change to println
Change gpio pins for esp32-c3

* old update to esp-idf-hal newer one coming

* Fix format errors

* Update TxRmtDriver and RxRmtDriver

* Fix compile errors

* fix rmt_morse_code.rs error

* Fix format failure

* Fix more errors

* Fix examples

* Change PulsePair durationX type
 - use u16 instead of PulseTicks

Co-authored-by: enelson1001 <ednelson5080@gmail>
2022-11-12 13:01:37 +02:00
ivmarkov
d6370068ef Move all peripheral generics into the constructors 2022-11-01 10:00:24 +02:00
Ronen Ulanovsky
db54a533b1 Fixup riscv-ulp-hal delay and examples 2022-10-07 20:53:26 +03:00
ivmarkov
22ab6f272a Native delay API does not need self 2022-09-25 12:17:59 +03:00
ivmarkov
574e9764e7 Native delay API does not need self 2022-09-25 11:08:08 +03:00
ivmarkov
0a2687234a Rename Config back to TransmitConfig 2022-09-22 09:34:58 +03:00
Ivan Markov
baf9bae9a9 Fix examples
Fix examples

Fix examples

Fix examples

Fix examples
2022-09-18 11:01:33 +03:00
Ivan Markov
9a1ade644f Update examples
Restore LedcTimerDriver

Fix the ledc driver code
2022-09-18 11:01:33 +03:00
Albin Hedman
617a7b3dcb Make RMT examples compile for ESP32 and ESP32-C2 2022-07-07 19:08:30 +03:00
gak
2b6fe48fa0
WIP: RMT (tx) (#44)
* WIP: Initial tx rmt implementation

* Rename Bulder to Config to line up with other mods

* WIP Potential traits for a "pulses" mod in embedded-hal

* WIP: Initial tx rmt implementation

* Rename Bulder to Config to line up with other mods

* WIP Potential traits for a "pulses" mod in embedded-hal

* Copied example code from ledc fork. Semi-working example.

* Rename level to pulse. dev-dep versions.

* WIP RMT, Examples

* WIP RMT Fix neopixel example

* WIP RMT morse code work

* WIP RMT fixed morse example

* WIP RMT more config, docs.

* WIP RMT fix compilation

* WIP RMT Fix doc comment in example.

* WIP RMT: notes on examples

* WIP RMT Group up same level config items.

* WIP RMT Change half_inserted to an Option

* WIP RMT Don't need to return Result in clear()

* WIP RMT Config refactor. Into for enum.

* Result instead of Option in PulseTick

* Don't use floats for ticks calcs

* WIP Duration for ticks

* Cleanups.

* Moved Duration logic into PulseDuration.

* Remove unused tick_hz field.

* Cleanups.

* WIP playing around with generics

* Refactored out Vec storage out of Writer

* WIP Heap and Stack implementations for data

* WIP about to nuke tricky const code

* Cleanups

* Own PinState. start/start_blocking.

* Wrap duty percent with range safety.

* Use units::Hertz

* Use Hertz in ticks_hz

* Stop transmitting implementation

* Fix morse example

* rmt peripheral for channels (4 for now)

* Small tweaks

* Morse example to demo more functionality

* WIP Fixes and testing functionality

* Cleanups and notes

* Assign devices to number of channels. Cleanups.

* Sprinkled TODO's around for docs/fixes

* Longer messages don't repeat so remove it for now

* Rename data to signal because data is a too generic term

* More docs

* Don't mention receiving in description.

* More docs

* Rename `add` to `push` like Vec. More docs.

* Rename `Writer` to `Transmit` to line up with rmt docs.

* Accidentally had idle_level in carrier config.

* More docs and cleanups. std compatibility.

* Remove chip::HwChannel import because of a * import later.

* Separate duration to ticks calc. Music example.

* Added comment on example.

* clippy: ok_or_else, Default.

* fixes: mut self, allows/features, alloc, &Pulse.

* only need feature alloc for the use warning.

* rename Signal implementations

* Alloc, morse example fix.

* Didn't need that map. iter does the ref.

* Clippy repairs. println! instead of info!
2022-03-02 19:11:30 +02:00