diff options
Diffstat (limited to 'src/easymini-v0.1')
| -rw-r--r-- | src/easymini-v0.1/.gitignore | 2 | ||||
| -rw-r--r-- | src/easymini-v0.1/Makefile | 85 | ||||
| -rw-r--r-- | src/easymini-v0.1/ao_easymini.c | 46 | ||||
| -rw-r--r-- | src/easymini-v0.1/ao_pins.h | 134 | 
4 files changed, 267 insertions, 0 deletions
| diff --git a/src/easymini-v0.1/.gitignore b/src/easymini-v0.1/.gitignore new file mode 100644 index 00000000..e5f7d586 --- /dev/null +++ b/src/easymini-v0.1/.gitignore @@ -0,0 +1,2 @@ +ao_product.h +*.elf diff --git a/src/easymini-v0.1/Makefile b/src/easymini-v0.1/Makefile new file mode 100644 index 00000000..612cc472 --- /dev/null +++ b/src/easymini-v0.1/Makefile @@ -0,0 +1,85 @@ +# +# AltOS build +# +# + +include ../lpc/Makefile.defs + +INC = \ +	ao.h \ +	ao_arch.h \ +	ao_arch_funcs.h \ +	ao_pins.h \ +	ao_product.h \ +	lpc.h + +# +# Common AltOS sources +# +ALTOS_SRC = \ +	ao_interrupt.c \ +	ao_romconfig.c \ +	ao_product.c \ +	ao_mutex.c \ +	ao_panic.c \ +	ao_stdio.c \ +	ao_storage.c \ +	ao_report.c \ +	ao_ignite.c \ +	ao_flight.c \ +	ao_kalman.c \ +	ao_sample.c \ +	ao_data.c \ +	ao_convert_pa.c \ +	ao_led_lpc.c \ +	ao_task.c \ +	ao_log.c \ +	ao_log_mini.c \ +	ao_cmd.c \ +	ao_config.c \ +	ao_timer_lpc.c \ +	ao_exti_lpc.c \ +	ao_serial_lpc.c \ +	ao_usb_lpc.c \ +	ao_spi_lpc.c \ +	ao_adc_lpc.c \ +	ao_beep_lpc.c \ +	ao_m25.c \ +	ao_ms5607.c + +PRODUCT=EasyMini-v0.1 +PRODUCT_DEF=-DEASYMINI_V_0_1 +IDPRODUCT=0x000a + +CFLAGS = $(PRODUCT_DEF) $(LPC_CFLAGS) -g -Os + +PROGNAME=easymini-v0.1 +PROG=$(PROGNAME)-$(VERSION).elf + +SRC=$(ALTOS_SRC) ao_easymini.c +OBJ=$(SRC:.c=.o) + +all: $(PROG) + +LDFLAGS=-L../lpc -Wl,-Taltos.ld + +$(PROG): Makefile $(OBJ) +	$(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(OBJ) $(SAT_CLIB) -lgcc + +ao_product.h: ao-make-product.5c ../Version +	$(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@ + +$(OBJ): $(INC) + +load: $(PROG) +	lpc-load $(PROG) + +distclean:	clean + +clean: +	rm -f *.o $(PROG) +	rm -f ao_product.h + +install: + +uninstall: diff --git a/src/easymini-v0.1/ao_easymini.c b/src/easymini-v0.1/ao_easymini.c new file mode 100644 index 00000000..97230b61 --- /dev/null +++ b/src/easymini-v0.1/ao_easymini.c @@ -0,0 +1,46 @@ +/* + * Copyright © 2011 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. + */ + +#include <ao.h> +#include <ao_exti.h> + +void +main(void) +{ +	ao_clock_init(); +	ao_task_init(); +	ao_timer_init(); +	ao_exti_init(); + +	ao_beep_init(); + +	ao_adc_init(); +	ao_spi_init(); +	ao_storage_init(); + +	ao_usb_init(); + +	ao_cmd_init(); +	ao_flight_init(); +	ao_ms5607_init(); +	ao_log_init(); +	ao_report_init(); +	ao_igniter_init(); +	ao_config_init(); + +	ao_start_scheduler(); +} diff --git a/src/easymini-v0.1/ao_pins.h b/src/easymini-v0.1/ao_pins.h new file mode 100644 index 00000000..d4fbe7a1 --- /dev/null +++ b/src/easymini-v0.1/ao_pins.h @@ -0,0 +1,134 @@ +/* + * 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. + */ + +#define HAS_BEEP	1 +#define	HAS_LED		1 + +/* 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 LED_PORT	0 +#define LED_PIN_RED	7 + +#define AO_LED_RED	(1 << LED_PIN_RED) + +#define LEDS_AVAILABLE	AO_LED_RED + +#define HAS_USB		1 + +#define HAS_USB_CONNECT	0 +#define HAS_USB_VBUS	0 + +#define PACKET_HAS_SLAVE	0 + +/* USART */ + +#define HAS_SERIAL		1 +#define USE_SERIAL_0_STDIN	1 +#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		1 +#define SPI_SCK0_P0_6		1 +#define HAS_SPI_1		1 +#define SPI_SCK1_P1_15		1 +#define SPI_MISO1_P0_22		1 +#define SPI_MOSI1_P0_21		1 + +/* M25 */ + +#define M25_MAX_CHIPS		1 +#define AO_M25_SPI_CS_PORT	0 +#define AO_M25_SPI_CS_MASK	(1 << 23) +#define AO_M25_SPI_BUS		1 + +/* MS5607 */ + +#define HAS_MS5607		1 +#define HAS_MS5611		0 +#define AO_MS5607_PRIVATE_PINS	0 +#define AO_MS5607_CS_PORT	0 +#define AO_MS5607_CS_PIN	7 +#define AO_MS5607_CS_MASK	(1 << AO_MS5607_CS_PIN) +#define AO_MS5607_MISO_PORT	0 +#define AO_MS5607_MISO_PIN	8 +#define AO_MS5607_MISO_MASK	(1 << AO_MS5607_MISO_PIN) +#define AO_MS5607_SPI_INDEX	0 + +#define HAS_ACCEL		0 +#define HAS_GPS			0 +#define HAS_RADIO		0 +#define HAS_FLIGHT		1 +#define HAS_EEPROM		1 +#define HAS_TELEMETRY		0 +#define HAS_APRS		0 +#define HAS_LOG			1 +#define USE_INTERNAL_FLASH	0 +#define HAS_IGNITE		1 +#define HAS_IGNITE_REPORT	1 + +#define AO_DATA_RING		16 + +/* + * ADC + */ + +#define HAS_ADC			1 + +#define AO_NUM_ADC		3 + +#define AO_ADC_0		1 +#define AO_ADC_1		1 +#define AO_ADC_2		1 + +struct ao_adc { +	int16_t		sense_a; +	int16_t		sense_m; +	int16_t		v_batt; +}; + +/* + * Igniter + */ + +#define AO_IGNITER_CLOSED	400 +#define AO_IGNITER_OPEN		60 + +#define AO_IGNITER_DROGUE_PORT	0 +#define AO_IGNITER_DROGUE_PIN	2 +#define AO_IGNITER_SET_DROGUE(v)	ao_gpio_set(AO_IGNITER_DROGUE_PORT, AO_IGNITER_DROGUE_PIN, AO_IGNITER_DROGUE, v) + +#define AO_IGNITER_MAIN_PORT	0 +#define AO_IGNITER_MAIN_PIN	3 +#define AO_IGNITER_SET_MAIN(v)		ao_gpio_set(AO_IGNITER_MAIN_PORT, AO_IGNITER_MAIN_PIN, AO_IGNITER_MAIN, v) + +#define AO_SENSE_DROGUE(p)	((p)->adc.sense_a) +#define AO_SENSE_MAIN(p)	((p)->adc.sense_m) + +#define AO_ADC_DUMP(p) \ +	printf("tick: %5u apogee: %5d main: %5d batt: %5d\n", \ +	       (p)->tick, (p)->adc.sense_a, (p)->adc.sense_m, (p)->adc.v_batt) | 
