diff options
| author | Bdale Garbee <bdale@gag.com> | 2014-05-08 16:24:26 -0600 | 
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2014-05-08 16:24:26 -0600 | 
| commit | c49e13a7807a74bb66c83cd4a2e10eb601f59e62 (patch) | |
| tree | 0e04e2a6455cd7e383f4512cc2e95e1faf5f5014 | |
| parent | acaad70e3db8f0b6ae45ca8309833db57bdf5ca2 (diff) | |
relay control implemented, this project is now complete
| -rw-r--r-- | src/usbrelay-v0.1/ao_pins.h | 6 | ||||
| -rw-r--r-- | src/usbrelay-v0.1/ao_usbrelay.c | 18 | 
2 files changed, 21 insertions, 3 deletions
| 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); | 
