-
Daniel Friesel authoredDaniel Friesel authored
resistive_load.cc 2.44 KiB
#include "driver/resistive_load.h"
#include "driver/gpio.h"
#include "arch.h"
#ifndef RESISTIVE_LOAD_PIN1
#error RESISTIVE_LOAD_PIN1 must be set
#endif
#ifndef RESISTIVE_LOAD_PIN2
#error RESISTIVE_LOAD_PIN2 must be set
#endif
#ifndef RESISTIVE_LOAD_PIN3
#error RESISTIVE_LOAD_PIN3 must be set
#endif
#ifndef RESISTIVE_LOAD_PIN4
#error RESISTIVE_LOAD_PIN4 must be set
#endif
void ResistiveLoad::setup()
{
gpio.output(RESISTIVE_LOAD_PIN1, 0);
gpio.output(RESISTIVE_LOAD_PIN2, 0);
gpio.output(RESISTIVE_LOAD_PIN3, 0);
gpio.output(RESISTIVE_LOAD_PIN4, 0);
}
void ResistiveLoad::switchToNone()
{
gpio.write(RESISTIVE_LOAD_PIN1, 0);
gpio.write(RESISTIVE_LOAD_PIN2, 0);
gpio.write(RESISTIVE_LOAD_PIN3, 0);
gpio.write(RESISTIVE_LOAD_PIN4, 0);
}
void ResistiveLoad::switchTo750()
{
gpio.write(RESISTIVE_LOAD_PIN1, 1);
gpio.write(RESISTIVE_LOAD_PIN2, 1);
gpio.write(RESISTIVE_LOAD_PIN3, 0);
gpio.write(RESISTIVE_LOAD_PIN4, 0);
}
void ResistiveLoad::switchTo1K0()
{
gpio.write(RESISTIVE_LOAD_PIN1, 1);
gpio.write(RESISTIVE_LOAD_PIN2, 0);
gpio.write(RESISTIVE_LOAD_PIN3, 0);
gpio.write(RESISTIVE_LOAD_PIN4, 0);
}
void ResistiveLoad::switchTo2K4()
{
gpio.write(RESISTIVE_LOAD_PIN1, 0);
gpio.write(RESISTIVE_LOAD_PIN2, 1);
gpio.write(RESISTIVE_LOAD_PIN3, 0);
gpio.write(RESISTIVE_LOAD_PIN4, 1);
}
void ResistiveLoad::switchTo3K3()
{
gpio.write(RESISTIVE_LOAD_PIN1, 0);
gpio.write(RESISTIVE_LOAD_PIN2, 1);
gpio.write(RESISTIVE_LOAD_PIN3, 0);
gpio.write(RESISTIVE_LOAD_PIN4, 0);
}
void ResistiveLoad::switchTo10K()
{
gpio.write(RESISTIVE_LOAD_PIN1, 0);
gpio.write(RESISTIVE_LOAD_PIN2, 0);
gpio.write(RESISTIVE_LOAD_PIN3, 0);
gpio.write(RESISTIVE_LOAD_PIN4, 1);
}
void ResistiveLoad::switchTo47K()
{
gpio.write(RESISTIVE_LOAD_PIN1, 0);
gpio.write(RESISTIVE_LOAD_PIN2, 0);
gpio.write(RESISTIVE_LOAD_PIN3, 1);
gpio.write(RESISTIVE_LOAD_PIN4, 0);
}
void ResistiveLoad::nop1K0(unsigned int duration_ms)
{
switchTo1K0();
arch.delay_ms(duration_ms);
switchToNone();
}
void ResistiveLoad::nop2K4(unsigned int duration_ms)
{
switchTo2K4();
arch.delay_ms(duration_ms);
switchToNone();
}
void ResistiveLoad::nop3K3(unsigned int duration_ms)
{
switchTo3K3();
arch.delay_ms(duration_ms);
switchToNone();
}
void ResistiveLoad::nop10K(unsigned int duration_ms)
{
switchTo10K();
arch.delay_ms(duration_ms);
switchToNone();
}
void ResistiveLoad::nop47K(unsigned int duration_ms)
{
switchTo47K();
arch.delay_ms(duration_ms);
switchToNone();
}
ResistiveLoad resistiveLoad;