36 lines
866 B
C
36 lines
866 B
C
|
#include <libopencm3/stm32/gpio.h>
|
||
|
|
||
|
#include "pinout.h"
|
||
|
|
||
|
#include "addon_io.h"
|
||
|
|
||
|
static const uint32_t OUTPUT_LIST[2] = {ADDON_ISO_IO_OUT1, ADDON_ISO_IO_OUT2};
|
||
|
|
||
|
void addon_io_init(void)
|
||
|
{
|
||
|
// Isolated outputs configuration: output, initially low = off
|
||
|
gpio_clear(ADDON_ISO_IO_PORT, ADDON_ISO_IO_OUT1 | ADDON_ISO_IO_OUT2);
|
||
|
gpio_mode_setup(ADDON_ISO_IO_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, ADDON_ISO_IO_OUT1 | ADDON_ISO_IO_OUT2);
|
||
|
|
||
|
// Isolated inputs configuration: input, no pull resistors
|
||
|
gpio_mode_setup(ADDON_ISO_IO_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, ADDON_ISO_IO_IN);
|
||
|
}
|
||
|
|
||
|
|
||
|
void addon_io_iso_out_on(uint8_t idx)
|
||
|
{
|
||
|
gpio_set(ADDON_ISO_IO_PORT, OUTPUT_LIST[idx]);
|
||
|
}
|
||
|
|
||
|
|
||
|
void addon_io_iso_out_off(uint8_t idx)
|
||
|
{
|
||
|
gpio_clear(ADDON_ISO_IO_PORT, OUTPUT_LIST[idx]);
|
||
|
}
|
||
|
|
||
|
|
||
|
bool addon_io_read_iso_in(void)
|
||
|
{
|
||
|
return gpio_get(ADDON_ISO_IO_PORT, ADDON_ISO_IO_IN) != 0;
|
||
|
}
|