diff options
| author | Bdale Garbee <bdale@gag.com> | 2014-05-08 16:09:11 -0600 | 
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2014-05-08 16:09:11 -0600 | 
| commit | acaad70e3db8f0b6ae45ca8309833db57bdf5ca2 (patch) | |
| tree | 8c3cee1045ba63e310467e40ab15f508eb0840b1 | |
| parent | 2dfc4bc92b11252f17103f28198a702a3fdc2b2d (diff) | |
first cut of usbrelay-v0.1 support .. LEDs wiggle, not switching relay yet
| -rw-r--r-- | src/usbrelay-v0.1/ao_pins.h | 73 | ||||
| -rw-r--r-- | src/usbrelay-v0.1/ao_serial_lpc.h | 33 | ||||
| -rw-r--r-- | src/usbrelay-v0.1/ao_usbrelay.c | 78 | ||||
| -rw-r--r-- | src/usbrelay-v0.1/flash-loader/ao_pins.h | 33 | 
4 files changed, 217 insertions, 0 deletions
| diff --git a/src/usbrelay-v0.1/ao_pins.h b/src/usbrelay-v0.1/ao_pins.h new file mode 100644 index 00000000..ed60486d --- /dev/null +++ b/src/usbrelay-v0.1/ao_pins.h @@ -0,0 +1,73 @@ +/* + * Copyright © 2015 Bdale Garbee <bdale@gag.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#define HAS_BEEP	0 + +#define AO_STACK_SIZE	384 + +#define IS_FLASH_LOADER	0 + +/* Crystal on the board */ +#define AO_LPC_CLKIN	12000000 + +/* Main clock frequency. 48MHz for USB so we don't use the USB PLL */ +#define AO_LPC_CLKOUT	48000000 + +/* System clock frequency */ +#define AO_LPC_SYSCLK	24000000 + +#define HAS_USB		1 + +#define HAS_USB_CONNECT	0 +#define HAS_USB_VBUS	0 +#define HAS_USB_PULLUP	1 +#define AO_USB_PULLUP_PORT	0 +#define AO_USB_PULLUP_PIN	6 + +/* USART */ + +#define HAS_SERIAL		1 +#define USE_SERIAL_0_STDIN	0 +#define SERIAL_0_18_19		1 +#define SERIAL_0_14_15		0 +#define SERIAL_0_17_18		0 +#define SERIAL_0_26_27		0 + +/* SPI */ + +#define HAS_SPI_0		0 +#define SPI_SCK0_P0_6		0 +#define HAS_SPI_1		0 +#define SPI_SCK1_P1_15		0 +#define SPI_MISO1_P0_22		0 +#define SPI_MOSI1_P0_21		0 + +/* LED */ + +#define LED_PORT		0 +#define LED_PIN_RED		23 +#define LED_PIN_GREEN		7 +#define AO_LED_RED		(1 << LED_PIN_RED) +#define AO_LED_GREEN		(1 << LED_PIN_GREEN) + +#define LEDS_AVAILABLE		(AO_LED_RED|AO_LED_GREEN) + +/* Kludge the SPI driver to not configure any + * pin for SCK or MOSI + */ +#define HAS_SCK1		0 +#define HAS_MOSI1		0 diff --git a/src/usbrelay-v0.1/ao_serial_lpc.h b/src/usbrelay-v0.1/ao_serial_lpc.h new file mode 100644 index 00000000..a95b6af1 --- /dev/null +++ b/src/usbrelay-v0.1/ao_serial_lpc.h @@ -0,0 +1,33 @@ +#define AO_LPC_USARTCLK 12000000 + +static const struct { +	uint16_t dl; +	uint8_t divaddval; +	uint8_t mulval; +} ao_usart_speeds[] = { +	[AO_SERIAL_SPEED_4800] = { /* actual =  4800.00 */ +		.dl = 125, +		.divaddval = 1, +		.mulval = 4 +	}, +	[AO_SERIAL_SPEED_9600] = { /* actual =  9603.07 */ +		.dl = 71, +		.divaddval = 1, +		.mulval = 10 +	}, +	[AO_SERIAL_SPEED_19200] = { /* actual = 19181.59 */ +		.dl = 23, +		.divaddval = 7, +		.mulval = 10 +	}, +	[AO_SERIAL_SPEED_57600] = { /* actual = 57692.31 */ +		.dl = 7, +		.divaddval = 6, +		.mulval = 7 +	}, +	[AO_SERIAL_SPEED_115200] = { /* actual = 115384.6 */ +		.dl = 4, +		.divaddval = 5, +		.mulval = 8 +	}, +}; diff --git a/src/usbrelay-v0.1/ao_usbrelay.c b/src/usbrelay-v0.1/ao_usbrelay.c new file mode 100644 index 00000000..5f4bf963 --- /dev/null +++ b/src/usbrelay-v0.1/ao_usbrelay.c @@ -0,0 +1,78 @@ +/* + * Copyright © 2014 Bdale Garbee <bdale@gag.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#include <ao.h> + +uint8_t		relay_output; + +// 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: +		ao_led_on(AO_LED_RED); +		ao_led_off(AO_LED_GREEN); +		break; +	default: +		ao_led_off(AO_LED_RED); +		ao_led_on(AO_LED_GREEN); +	} +} + +static void +ao_relay_select(void) __reentrant +{ +	uint8_t output; + +	ao_cmd_decimal(); +        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); +} + +static __code struct ao_cmds ao_relay_cmds[] = { +	{ ao_relay_select, "R <output>\0Select relay output" }, +	{ 0, NULL } +}; + +void +main(void) +{ +	ao_clock_init(); +	ao_task_init(); +	ao_timer_init(); + +	ao_usb_init(); + +	ao_serial_init(); + +	ao_led_init(LEDS_AVAILABLE); + +	// initialize to default output +	relay_output = 0; +	ao_relay_control(relay_output); + +	ao_cmd_init(); + +	ao_cmd_register(ao_relay_cmds); + +	ao_start_scheduler(); +} diff --git a/src/usbrelay-v0.1/flash-loader/ao_pins.h b/src/usbrelay-v0.1/flash-loader/ao_pins.h new file mode 100644 index 00000000..a8046009 --- /dev/null +++ b/src/usbrelay-v0.1/flash-loader/ao_pins.h @@ -0,0 +1,33 @@ +/* + * Copyright © 2013 Keith Packard <keithp@keithp.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#ifndef _AO_PINS_H_ +#define _AO_PINS_H_ + +#include <ao_flash_lpc_pins.h> + +#define AO_BOOT_PIN		1 +#define AO_BOOT_APPLICATION_GPIO	0 +#define AO_BOOT_APPLICATION_PIN		19 +#define AO_BOOT_APPLICATION_VALUE	1 +#define AO_BOOT_APPLICATION_MODE	AO_EXTI_MODE_PULL_UP + +#define HAS_USB_PULLUP		1 +#define AO_USB_PULLUP_PORT	0 +#define AO_USB_PULLUP_PIN	6 + +#endif /* _AO_PINS_H_ */ | 
