max6675 library works

This commit is contained in:
Sebastian 2018-08-29 00:43:29 +02:00
parent 145d1f8ef9
commit 69ed2fc701
2 changed files with 26 additions and 21 deletions

View File

@ -32,9 +32,9 @@ fn configure_clocks(rcc: &mut rcc::RCC) {
rcc.clock_config rcc.clock_config
.configure(|c| { .configure(|c| {
c.set_pll_multiplier(10) c.set_pll_multiplier(10)
.set_pll_source(rcc::PllSource::HsiDiv2) .set_pll_source(rcc::PllSource::HsiDiv2)
}); });
rcc.clock_control.set_pll_on(true); rcc.clock_control.set_pll_on(true);
while !rcc.clock_control.pll_ready() {} while !rcc.clock_control.pll_ready() {}
@ -64,16 +64,17 @@ fn configure_peripherals(rcc: &mut hcl::platform::rcc::RCC,
.set_output_config(7, gpio::OutputConfig::AfPushPull) .set_output_config(7, gpio::OutputConfig::AfPushPull)
// MISO1 // MISO1
.set_mode(6, gpio::PinMode::Input) .set_mode(6, gpio::PinMode::Input)
.set_input_config(6, gpio::InputConfig::PullUpDown)
// NSS1 // NSS1
.set_mode(4, gpio::PinMode::Output50MHz) .set_mode(4, gpio::PinMode::Output50MHz)
.set_output_config(4, gpio::OutputConfig::PushPull) .set_output_config(4, gpio::OutputConfig::PushPull)
}); });
usart.configure(|u| { usart.configure(|u| {
u.set_enabled(true) u.set_enabled(true)
.set_tx_enabled(true) .set_tx_enabled(true)
.set_baudgen((21, 11)) .set_baudgen((21, 11))
}); // 115.2 kbaud }); // 115.2 kbaud
} }
@ -92,16 +93,18 @@ fn run(mut scs: scs::Instance, mut p: hcl::platform::Instance) {
loop { loop {
for i in 0u16..0xffff {
let res = max6675::read(spi, gpio, 4); let res = max6675::read(spi, gpio, 4);
let msg = match res { let msg = match res {
Ok(temp) => format!("> {}\r\n", temp).into_bytes(), Ok(temp) => format!("> {}\r\n", temp).into_bytes(),
Err(err) => format!("Error > {}\r\n", err).into_bytes(), Err(err) => format!("Error > {}\r\n", err).into_bytes(),
}; };
printer.print(msg); printer.print(msg);
for y in 0u32..0xFFFFFF {
unsafe { asm!("nop" :::: "volatile") };
} }
} }
} }

View File

@ -11,13 +11,15 @@ pub fn read<SPIAddr, GPIOAddr>(spi: &mut PeripheralRef<spi::SPI, SPIAddr>,
GPIOAddr: Location GPIOAddr: Location
{ {
spi.configure(|s| { spi.configure(|s| {
s.set_enabled(true) s.set_enabled(true)
.set_master_mode(true) .set_master_mode(true)
.set_software_slave_select(true) .set_software_slave_select(true)
.set_clock_divider(128) .set_clock_divider(128)
.set_data_16bit(true) .set_data_16bit(true)
.set_clock_skip_first(true) .set_clock_skip_first(true)
}); // required for master mode, even if ss is done manually
.set_slave_select_output_enabled(true)
});
nss_gpio.reset_bit(nss_idx); nss_gpio.reset_bit(nss_idx);