#define FW_STR "2.1 02 Aug 2021"
/*
IO1 - PA4 - ADC
IO2 - PA2 - OUTPUT
IO3 - PA0 - SPI CS
IO4 - PA6 - SPI MISO
IO5 - PA7 - SPI MOSI
IO6 - PA3 - INPUT
IO7 - PA1 - PWM OUTPUT
IO8 - NC
IO9 - PB1 - PWM INPUT
IOx - PA5 - SPI SCK
LED - PF0
*/
var _msg() {
var c = stoi(&MSG.RX, 'c');
memcpy(SYS.RAM, &MSG.RX, MSG.SIZE);
switch (c) {
case 'S':
PA2.VALUE = 1;
break;
case 'R':
PA2.VALUE = 0;
break;
case 'A':
sprintf(&UART0.TX, "A%d\n", PA4.VALUE);
break;
case 'K':
PA0.VALUE = 0;
memcpy(&SPI.DR, SYS.RAM+1, MSG.SIZE-1);
sprintf(&UART0.TX, "K%d\n", SYS.RAM+1);
PA0.VALUE = 1;
break;
case 'G':
sprintf(&UART0.TX, "G%d\n", PA3.VALUE);
break;
case 'F':
sprintf(&UART0.TX, "F%d\n", PB1.VALUE);
break;
case 'I':
sprintf(&UART0.TX, "I%s\n", FW_STR);
break;
default:
break;
}
}
var io_setup() {
// IO1 - PA4 - ADC
PA4.MODE = GPIO_MODE_ADC;
// IO2 - PA2 - OUTPUT
PA2.MODE = GPIO_MODE_OUTPUT|GPIO_INIT_LOW|GPIO_OTYPE_PP;
// IO6 - PA3 - INPUT
PA3.MODE = GPIO_MODE_INPUT | GPIO_PULL_DOWN;
// IO7 - PA1 - PWM OUTPUT
PA1.MODE = GPIO_MODE_OPWM|GPIO_INIT_LOW|GPIO_OTYPE_PP;
// IO9 - PB1 - PWM INPUT
PB1.MODE = GPIO_MEASURE_FREQ|GPIO_MODE_IPWM|GPIO_INIT_LOW;
// LED - PF0
PF0.MODE = GPIO_MODE_OUTPUT|GPIO_INIT_HIGH|GPIO_OTYPE_PP;
// IO3 - PA0 - SPI CS
// IO4 - PA6 - SPI MISO
// IO5 - PA7 - SPI MOSI
// IOx - PA5 - SPI SCK
PA0.MODE = GPIO_INIT_LOW|GPIO_OTYPE_PP|GPIO_TYPE_SOFTWARE|GPIO_MODE_OUTPUT;
SPI.SETUP = SPI_SETUP_POLARITY_LOW|SPI_SETUP_EDGE_LEADING|1000/*kBod*/;
SPI.EN = 1;
PA1.PWM = 128;
TIM2.FREQ = TIM3.FREQ = 2;
TIM2.EN = TIM3.EN = 1;
UART0.CFG = UART_MODE_PLAIN | UART_CONFIG_START;
__enable_irq();
}
var main() {
io_setup();
while (1) {};
return 0;
}