From 92229431e3db45895ffe8cd644137f9cb489c424 Mon Sep 17 00:00:00 2001 From: Gabe Venberg Date: Mon, 27 Nov 2023 17:02:16 -0600 Subject: [PATCH] Temp might be working now. --- src/main.rs | 29 ++++++++++++++++++++++------- wiring.fzz | Bin 45283 -> 47649 bytes 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index e58f8c1..48e2238 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,13 +4,12 @@ #![no_std] #![no_main] -use bsp::{ - entry, - hal::gpio, -}; +use bsp::{entry, hal::gpio}; use defmt::*; use defmt_rtt as _; use embedded_hal::digital::v2::OutputPin; +use embedded_hal::spi::MODE_0; +use max31855::{Max31855, Unit}; use panic_probe as _; // Provide an alias for our BSP so we can switch targets quickly. @@ -19,8 +18,10 @@ use rp_pico as bsp; use bsp::hal::{ clocks::{init_clocks_and_plls, Clock}, + fugit::RateExtU32, pac, sio::Sio, + spi::Spi, watchdog::Watchdog, }; @@ -58,14 +59,26 @@ fn main() -> ! { let mut led_pin = pins.led.into_push_pull_output(); let mut external_led_pin = pins.gpio14.into_push_pull_output(); //clk - let _thermometer_spi_sck = pins.gpio2.into_function::(); + let thermometer_spi_sck = pins.gpio2.into_function::(); + //MOSI, I think unused? + let thermometer_spi_tx = pins.gpio3.into_function::(); //do, or MISO. - let _thermometer_spi_rx = pins.gpio4.into_function::(); + let thermometer_spi_rx = pins.gpio4.into_function::(); //cs - let _thermometer_spi_csn = pins + let mut thermometer_spi_csn = pins .gpio5 .into_push_pull_output_in_state(gpio::PinState::Low); + let thermometer_spi_device = pac.SPI0; + let spi_pin_layout = (thermometer_spi_tx, thermometer_spi_rx, thermometer_spi_sck); + let mut spi = Spi::<_, _, _, 8>::new(thermometer_spi_device, spi_pin_layout).init( + &mut pac.RESETS, + 125_000_000u32.Hz(), + 4u32.MHz(), + MODE_0, + ); + + loop { led_pin.set_high().unwrap(); external_led_pin.set_low().unwrap(); @@ -73,5 +86,7 @@ fn main() -> ! { led_pin.set_low().unwrap(); external_led_pin.set_high().unwrap(); delay.delay_ms(1000); + let value = spi.read_thermocouple(&mut thermometer_spi_csn, Unit::Celsius).unwrap(); + info!("temp is {}", value); } } diff --git a/wiring.fzz b/wiring.fzz index 4aeca3158b339abb1cfc30c68cbd5b51d7b478eb..992636306ebd910122ebeef4bb065c8925bec6ea 100644 GIT binary patch delta 8418 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 delta 6033 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