1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
//! SPI
//!
//! # Example
//!
//! For full source code, please refer to the ATmega SPI example:
//! [`atmega2560-spi-feedback.rs`](https://github.com/Rahix/avr-hal/blob/main/examples/atmega2560/src/bin/atmega2560-spi-feedback.rs)
//!
//! ```
//! let dp = attiny_hal::Peripherals::take().unwrap();
//! let pins = attiny_hal::pins!(dp);
//!
//! let (mut spi, mut cs) = spi::Spi::new(
//! dp.SPI,
//! pins.pa4.into_output(),
//! pins.pa6.into_output(),
//! pins.pa5.into_pull_up_input(),
//! pins.pa3.into_output(),
//! spi::Settings::default(),
//! );
//!
//! let data_out = b"Hello World!";
//! let mut data_in = [0u8; 12];
//!
//! cs.set_low().unwrap();
//! spi.transfer(&mut data_in, data_out).unwrap();
//! cs.set_high().unwrap();
//!
//! ufmt::uwriteln!(&mut serial, "data: {:?}", data_in).unwrap();
//! ```
#[allow(unused_imports)]
use crate::port;
pub use avr_hal_generic::spi::*;
#[cfg(feature = "attiny88")]
pub type Spi = avr_hal_generic::spi::Spi<
crate::Attiny,
crate::pac::SPI,
port::PB5,
port::PB3,
port::PB4,
port::PB2,
>;
#[cfg(feature = "attiny88")]
avr_hal_generic::impl_spi! {
hal: crate::Attiny,
peripheral: crate::pac::SPI,
sclk: port::PB5,
mosi: port::PB3,
miso: port::PB4,
cs: port::PB2,
}
#[cfg(feature = "attiny167")]
pub type Spi = avr_hal_generic::spi::Spi<
crate::Attiny,
crate::pac::SPI,
port::PA5,
port::PA4,
port::PA2,
port::PA6,
>;
#[cfg(feature = "attiny167")]
avr_hal_generic::impl_spi! {
hal: crate::Attiny,
peripheral: crate::pac::SPI,
sclk: port::PA5,
mosi: port::PA4,
miso: port::PA2,
cs: port::PA6,
}