//! objects, which by default represent both input and output channels. The channels can be split
> "#, chip!() , r#" specific: There are "#, property!("dedicated_gpio.channel_count", str) , r#" dedicated GPIO channels available.
//! The drivers can take channels and pins by value or by reference. Pass these objects by reference
//! These functions operate purely on channel bitmasks (bit 0 -> channel 0, bit 1 -> channel 1, ...)
Dedicated GPIOs are tied to CPU cores and a driver must only be used on the core that has created it.
Do not send the drivers to another core, either directly, or indirectly via a thread that is not pinned to a core.
// Channel traits allow us to implement DedicatedInputOutput, and users can choose to work with 8 IO
// references, so that the user is not forced to give up the pin driver, and that we're not forced
// to figure out Drop semantics with `reborrow`, and the pins aren't remembered by the dedicated
// We can't use the interconnect traits, because we want them to be implemented for references, too.
/// Due to how the hardware works, [`DedicatedGpioOutput`] can drive any number of GPIO pins. Use
/// [`DedicatedGpioOutput::new`] to create a driver, then [`DedicatedGpioOutput::with_pin`] to add
/// A dedicated GPIO output can drive any number of GPIO pins. The driver releases the pins when
/// bit 0 -> channel 0, bit 1 -> channel 1, etc. A bit value of 1 means the channel output is high.
All dedicated GPIO drivers in a bundle must be configured on the same core as the bundle itself
Dedicated GPIO drivers must only be disabled if configured on the same core as the bundle itself.
/// drivers. Enables reading multiple dedicated input channels with a single low-level read (see
All dedicated GPIO drivers in a bundle must be configured on the same core as the bundle itself.
Dedicated GPIO drivers must only be disabled if configured on the same core as the bundle itself.
configured on the current and same core, and the bundle must only be used on the core that created it.
For example, do not create the bundle on core 0 and then call <code>write_bits</code> from a task
All dedicated GPIO drivers in a bundle must be configured on the same core as the bundle itself.
Dedicated GPIO drivers must only be disabled if configured on the same core as the bundle itself.
low_level::write(bits, 0); // or low_level::write(bits & self.mask, 0); the latter is safer but slower