From: Bdale Garbee Date: Thu, 8 May 2014 22:24:26 +0000 (-0600) Subject: relay control implemented, this project is now complete X-Git-Tag: 1.3.2.2~124 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=c49e13a7807a74bb66c83cd4a2e10eb601f59e62 relay control implemented, this project is now complete --- diff --git a/src/usbrelay-v0.1/ao_pins.h b/src/usbrelay-v0.1/ao_pins.h index ed60486d..e760c21b 100644 --- a/src/usbrelay-v0.1/ao_pins.h +++ b/src/usbrelay-v0.1/ao_pins.h @@ -66,6 +66,12 @@ #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN) +/* RELAY */ + +#define RELAY_PORT 0 +#define RELAY_PIN 3 +#define RELAY_BIT (1 << RELAY_PIN) + /* Kludge the SPI driver to not configure any * pin for SCK or MOSI */ diff --git a/src/usbrelay-v0.1/ao_usbrelay.c b/src/usbrelay-v0.1/ao_usbrelay.c index 5f4bf963..879094b5 100644 --- a/src/usbrelay-v0.1/ao_usbrelay.c +++ b/src/usbrelay-v0.1/ao_usbrelay.c @@ -19,16 +19,25 @@ uint8_t relay_output; +void +ao_relay_init(void) +{ + lpc_scb.sysahbclkctrl |= (1 << LPC_SCB_SYSAHBCLKCTRL_GPIO); + lpc_gpio.dir[RELAY_PORT] |= RELAY_BIT; +} + // switch relay to selected output, turn correct LED on as a side effect static void ao_relay_control(uint8_t output) { switch (output) { case 1: + lpc_gpio.pin[RELAY_PORT] |= RELAY_BIT; ao_led_on(AO_LED_RED); ao_led_off(AO_LED_GREEN); break; default: + lpc_gpio.pin[RELAY_PORT] &= ~RELAY_BIT; ao_led_off(AO_LED_RED); ao_led_on(AO_LED_GREEN); } @@ -43,9 +52,10 @@ ao_relay_select(void) __reentrant if (ao_cmd_status != ao_cmd_success) return; output = ao_cmd_lex_i; - - printf ("Relay control not implemented yet, %u selected\n", output); - ao_relay_control(output); + if (output > 1) + printf ("Invalid relay position %u\n", output); + else + ao_relay_control(output); } static __code struct ao_cmds ao_relay_cmds[] = { @@ -66,6 +76,8 @@ main(void) ao_led_init(LEDS_AVAILABLE); + ao_relay_init(); + // initialize to default output relay_output = 0; ao_relay_control(relay_output);