X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Flpc%2Fao_arch.h;h=05bb97d9cb3a8cbf9c7fe314f512a095fede33f5;hb=HEAD;hp=a8d3cfc4435a0d03c77501e75ac0000684b1f5e0;hpb=0dd148e388944d8d265da51d62806c4a00b2c13d;p=fw%2Faltos diff --git a/src/lpc/ao_arch.h b/src/lpc/ao_arch.h index a8d3cfc4..05bb97d9 100644 --- a/src/lpc/ao_arch.h +++ b/src/lpc/ao_arch.h @@ -3,7 +3,8 @@ * * 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. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -24,26 +25,19 @@ * LPC11U14 definitions and code fragments for AltOS */ -#define AO_STACK_SIZE 320 - -#define AO_LED_TYPE uint16_t +#ifndef AO_STACK_SIZE +#define AO_STACK_SIZE 512 +#endif +#define AO_GPIO_TYPE uint8_t #define AO_PORT_TYPE uint32_t -#ifndef AO_TICK_TYPE -#define AO_TICK_TYPE uint16_t -#define AO_TICK_SIGNED int16_t -#endif +#define AO_LED_TYPE AO_PORT_TYPE /* Various definitions to make GCC look more like SDCC */ #define ao_arch_naked_declare __attribute__((naked)) #define ao_arch_naked_define -#define __pdata -#define __data -#define __xdata -#define __code const -#define __reentrant #define __interrupt(n) #define __at(n) @@ -56,29 +50,12 @@ #define ao_arch_interrupt(n) /* nothing */ -#undef putchar -#undef getchar -#define putchar(c) ao_putchar(c) -#define getchar ao_getchar - -extern void putchar(char c); -extern char getchar(void); - /* * ao_romconfig.c */ -#define AO_ROMCONFIG_VERSION 2 - -#define AO_ROMCONFIG_SYMBOL(a) __attribute__((section(".romconfig"))) const - -extern const uint16_t ao_romconfig_version; -extern const uint16_t ao_romconfig_check; -extern const uint16_t ao_serial_number; -extern const uint32_t ao_radio_cal; - -#define ao_arch_task_members\ - uint32_t *sp; /* saved stack pointer */ +#define AO_ROMCONFIG_SYMBOL __attribute__((section(".init.1"))) const +#define AO_USBCONFIG_SYMBOL __attribute__((section(".init.2"))) const #define ao_arch_block_interrupts() asm("cpsid i") #define ao_arch_release_interrupts() asm("cpsie i") @@ -127,18 +104,37 @@ ao_serial_init(void); /* SPI definitions */ -#define AO_SPI_SPEED_12MHz 4 -#define AO_SPI_SPEED_6MHz 8 -#define AO_SPI_SPEED_4MHz 12 -#define AO_SPI_SPEED_2MHz 24 -#define AO_SPI_SPEED_1MHz 48 -#define AO_SPI_SPEED_500kHz 96 -#define AO_SPI_SPEED_250kHz 192 - -#define AO_SPI_SPEED_FAST AO_SPI_SPEED_12MHz +#define _AO_SPI_SPEED_12MHz 4 +#define _AO_SPI_SPEED_8MHz 6 +#define _AO_SPI_SPEED_6MHz 8 +#define _AO_SPI_SPEED_4MHz 12 +#define _AO_SPI_SPEED_2MHz 24 +#define _AO_SPI_SPEED_1MHz 48 +#define _AO_SPI_SPEED_500kHz 96 +#define _AO_SPI_SPEED_250kHz 192 +#define _AO_SPI_SPEED_125kHz 384 +#define _AO_SPI_SPEED_62500Hz 768 + +static inline uint32_t +ao_spi_speed(int index, uint32_t hz) +{ + (void) index; + if (hz >= 4000000) return _AO_SPI_SPEED_4MHz; + if (hz >= 2000000) return _AO_SPI_SPEED_2MHz; + if (hz >= 1000000) return _AO_SPI_SPEED_1MHz; + if (hz >= 500000) return _AO_SPI_SPEED_500kHz; + if (hz >= 250000) return _AO_SPI_SPEED_250kHz; + if (hz >= 125000) return _AO_SPI_SPEED_125kHz; + return _AO_SPI_SPEED_62500Hz; +} #define AO_BOOT_APPLICATION_BASE ((uint32_t *) 0x00001000) +#define AO_BOOT_APPLICATION_BOUND ((uint32_t *) (0x00000000 + 32 * 1024)) #define AO_BOOT_LOADER_BASE ((uint32_t *) 0x00000000) #define HAS_BOOT_LOADER 1 +/* ADC definitions */ + +#define AO_ADC_MAX 32767 + #endif /* _AO_ARCH_H_ */