Merge pull request #55 from icewind1991/reset-timing
Make reset timing device specificembedded-hal-1.0
commit
43aba4ddb1
|
|
@ -94,7 +94,7 @@ where
|
|||
spi: &mut SPI,
|
||||
delay: &mut DELAY,
|
||||
) -> Result<(), SPI::Error> {
|
||||
self.interface.reset(delay);
|
||||
self.interface.reset(delay, 10);
|
||||
|
||||
// 3 Databytes:
|
||||
// A[7:0]
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ where
|
|||
spi: &mut SPI,
|
||||
delay: &mut DELAY,
|
||||
) -> Result<(), SPI::Error> {
|
||||
self.interface.reset(delay);
|
||||
self.interface.reset(delay, 10);
|
||||
|
||||
// set the power settings
|
||||
self.interface
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ where
|
|||
delay: &mut DELAY,
|
||||
) -> Result<(), SPI::Error> {
|
||||
// HW reset
|
||||
self.interface.reset(delay);
|
||||
self.interface.reset(delay, 10);
|
||||
|
||||
if self.refresh == RefreshLUT::QUICK {
|
||||
self.set_vcom_register(spi, (-9).vcom())?;
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ where
|
|||
spi: &mut SPI,
|
||||
delay: &mut DELAY,
|
||||
) -> Result<(), SPI::Error> {
|
||||
self.interface.reset(delay);
|
||||
self.interface.reset(delay, 10);
|
||||
|
||||
self.wait_until_idle();
|
||||
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ where
|
|||
) -> Result<(), SPI::Error> {
|
||||
// Values taken from datasheet and sample code
|
||||
|
||||
self.interface.reset(delay);
|
||||
self.interface.reset(delay, 10);
|
||||
|
||||
// start the booster
|
||||
self.interface
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ where
|
|||
delay: &mut DELAY,
|
||||
) -> Result<(), SPI::Error> {
|
||||
// reset the device
|
||||
self.interface.reset(delay);
|
||||
self.interface.reset(delay, 10);
|
||||
|
||||
// set the power settings
|
||||
self.interface.cmd_with_data(
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ where
|
|||
delay: &mut DELAY,
|
||||
) -> Result<(), SPI::Error> {
|
||||
// Reset the device
|
||||
self.interface.reset(delay);
|
||||
self.interface.reset(delay, 10);
|
||||
|
||||
// Set the power settings
|
||||
self.cmd_with_data(spi, Command::POWER_SETTING, &[0x37, 0x00])?;
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ where
|
|||
delay: &mut DELAY,
|
||||
) -> Result<(), SPI::Error> {
|
||||
// Reset the device
|
||||
self.interface.reset(delay);
|
||||
self.interface.reset(delay, 2);
|
||||
|
||||
// V2 procedure as described here:
|
||||
// https://github.com/waveshare/e-Paper/blob/master/RaspberryPi%26JetsonNano/python/lib/waveshare_epd/epd7in5bc_V2.py
|
||||
|
|
|
|||
|
|
@ -159,13 +159,18 @@ where
|
|||
///
|
||||
/// Often used to awake the module from deep sleep. See [EPD4in2::sleep()](EPD4in2::sleep())
|
||||
///
|
||||
/// TODO: Takes at least 400ms of delay alone, can it be shortened?
|
||||
pub(crate) fn reset<DELAY: DelayMs<u8>>(&mut self, delay: &mut DELAY) {
|
||||
let _ = self.rst.set_low();
|
||||
//TODO: why 200ms? (besides being in the arduino version)
|
||||
delay.delay_ms(200);
|
||||
/// The timing of keeping the reset pin low seems to be important and different per device.
|
||||
/// Most displays seem to require keeping it low for 10ms, but the 7in5_v2 only seems to reset
|
||||
/// properly with 2ms
|
||||
pub(crate) fn reset<DELAY: DelayMs<u8>>(&mut self, delay: &mut DELAY, duration: u8) {
|
||||
let _ = self.rst.set_high();
|
||||
//TODO: same as 3 lines above
|
||||
delay.delay_ms(10);
|
||||
|
||||
let _ = self.rst.set_low();
|
||||
delay.delay_ms(duration);
|
||||
let _ = self.rst.set_high();
|
||||
//TODO: the upstream libraries always sleep for 200ms here
|
||||
// 10ms works fine with just for the 7in5_v2 but this needs to be validated for other devices
|
||||
delay.delay_ms(200);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue