mirror of
https://github.com/eddyem/tsys01.git
synced 2026-02-01 04:45:05 +03:00
add autoincrement of version when make; correct some bugs, seems that it works!
This commit is contained in:
parent
2213c84773
commit
a738607455
@ -13,6 +13,11 @@ DEFS := -DUSARTNUM=1 -DI2CPINS=67
|
|||||||
# for example, if you have STM32F103VBT6, you should write:
|
# for example, if you have STM32F103VBT6, you should write:
|
||||||
LDSCRIPT = stm32f042x6.ld
|
LDSCRIPT = stm32f042x6.ld
|
||||||
|
|
||||||
|
# autoincremental version & build date
|
||||||
|
VERSION_FILE := version.inc
|
||||||
|
NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1)
|
||||||
|
BUILDDATE := $(shell date +%Y-%m-%d)
|
||||||
|
|
||||||
INDEPENDENT_HEADERS=
|
INDEPENDENT_HEADERS=
|
||||||
|
|
||||||
FP_FLAGS ?= -msoft-float
|
FP_FLAGS ?= -msoft-float
|
||||||
@ -56,7 +61,7 @@ LIB_DIR := $(INC_DIR)/ld
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
# C flags
|
# C flags
|
||||||
CFLAGS += -O2 -g -D__thumb2__=1
|
CFLAGS += -O2 -g -D__thumb2__=1
|
||||||
CFLAGS += -Wall -Wextra -Wshadow -Wimplicit-function-declaration
|
CFLAGS += -Wall -Werror -Wextra -Wshadow -Wimplicit-function-declaration
|
||||||
CFLAGS += -Wredundant-decls $(INCLUDE)
|
CFLAGS += -Wredundant-decls $(INCLUDE)
|
||||||
# -Wmissing-prototypes -Wstrict-prototypes
|
# -Wmissing-prototypes -Wstrict-prototypes
|
||||||
CFLAGS += -fno-common -ffunction-sections -fdata-sections
|
CFLAGS += -fno-common -ffunction-sections -fdata-sections
|
||||||
@ -72,8 +77,8 @@ LDFLAGS += -Wl,--gc-sections
|
|||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Used libraries
|
# Used libraries
|
||||||
LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group
|
#LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group
|
||||||
LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
|
#LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
|
||||||
|
|
||||||
DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU)
|
DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU)
|
||||||
|
|
||||||
@ -103,7 +108,15 @@ $(OBJDIR):
|
|||||||
$(STARTUP): $(INC_DIR)/startup/vector.c
|
$(STARTUP): $(INC_DIR)/startup/vector.c
|
||||||
$(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $<
|
$(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $<
|
||||||
|
|
||||||
|
$(VERSION_FILE): *.[ch]
|
||||||
|
@echo " Generate version: $(NEXTVER) for date $(BUILDDATE)"
|
||||||
|
@sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE)
|
||||||
|
@sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE)
|
||||||
|
|
||||||
|
$(OBJDIR)/proto.o: proto.c $(VERSION_FILE)
|
||||||
|
|
||||||
$(OBJDIR)/%.o: %.c
|
$(OBJDIR)/%.o: %.c
|
||||||
|
@make $(VERSION_FILE)
|
||||||
@echo " CC $<"
|
@echo " CC $<"
|
||||||
$(CC) $(CFLAGS) -MD $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $<
|
$(CC) $(CFLAGS) -MD $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $<
|
||||||
|
|
||||||
@ -141,7 +154,4 @@ boot: $(BIN)
|
|||||||
@echo " LOAD $(BIN) through bootloader"
|
@echo " LOAD $(BIN) through bootloader"
|
||||||
$(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN)
|
$(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN)
|
||||||
|
|
||||||
gentags:
|
.PHONY: clean flash boot dfuboot
|
||||||
CFLAGS="$(CFLAGS) $(DEFS)" geany -g $(BINARY).c.tags *[hc] 2>/dev/null
|
|
||||||
|
|
||||||
.PHONY: clean flash boot dfuboot gentags
|
|
||||||
|
|||||||
@ -89,16 +89,16 @@ First (number zero) byte of every sequence is command mark (0xA5) or data mark (
|
|||||||
|
|
||||||
### Sensors state data format
|
### Sensors state data format
|
||||||
- byte 3 - Sstate value:
|
- byte 3 - Sstate value:
|
||||||
- - `[SENS_INITING]` = "init"
|
- `[SENS_INITING]` = "init"
|
||||||
- - `[SENS_RESETING]` = "reset"
|
- `[SENS_RESETING]` = "reset"
|
||||||
- - `[SENS_GET_COEFFS]` = "getcoeff"
|
- `[SENS_GET_COEFFS]` = "getcoeff"
|
||||||
- - `[SENS_SLEEPING]` = "sleep"
|
- `[SENS_SLEEPING]` = "sleep"
|
||||||
- - `[SENS_START_MSRMNT]` = "startmeasure"
|
- `[SENS_START_MSRMNT]` = "startmeasure"
|
||||||
- - `[SENS_WAITING]` = "waitresults"
|
- `[SENS_WAITING]` = "waitresults"
|
||||||
- - `[SENS_GATHERING]` = "collectdata"
|
- `[SENS_GATHERING]` = "collectdata"
|
||||||
- - `[SENS_OFF]` = "off"
|
- `[SENS_OFF]` = "off"
|
||||||
- - `[SENS_OVERCURNT]` = "overcurrent"
|
- `[SENS_OVERCURNT]` = "overcurrent"
|
||||||
- - `[SENS_OVERCURNT_OFF]` = "offbyovercurrent"
|
- `[SENS_OVERCURNT_OFF]` = "offbyovercurrent"
|
||||||
- byte 4 - `sens_present[0]` value
|
- byte 4 - `sens_present[0]` value
|
||||||
- byte 5 - `sens_present[1]` value
|
- byte 5 - `sens_present[1]` value
|
||||||
- byte 6 - `Nsens_present` value
|
- byte 6 - `Nsens_present` value
|
||||||
|
|||||||
@ -20,11 +20,14 @@
|
|||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h> // memcpy
|
#include <string.h> // memcpy
|
||||||
|
|
||||||
#include "can.h"
|
#include "can.h"
|
||||||
#include "hardware.h"
|
#include "hardware.h"
|
||||||
#include "proto.h"
|
#include "proto.h"
|
||||||
|
|
||||||
|
|
||||||
// incoming message buffer size
|
// incoming message buffer size
|
||||||
#define CAN_INMESSAGE_SIZE (6)
|
#define CAN_INMESSAGE_SIZE (6)
|
||||||
|
|
||||||
@ -237,7 +240,7 @@ static void can_process_fifo(uint8_t fifo_num){
|
|||||||
uint32_t *dptr = (uint32_t*)msg.data;
|
uint32_t *dptr = (uint32_t*)msg.data;
|
||||||
dptr[0] = dptr[1] = 0;
|
dptr[0] = dptr[1] = 0;
|
||||||
}
|
}
|
||||||
uint8_t len = box->RDTR & 0x7;
|
uint8_t len = box->RDTR & 0x0f;
|
||||||
msg.length = len;
|
msg.length = len;
|
||||||
msg.ID = box->RIR >> 21;
|
msg.ID = box->RIR >> 21;
|
||||||
if(len){ // message can be without data
|
if(len){ // message can be without data
|
||||||
|
|||||||
@ -100,7 +100,7 @@ void can_messages_proc(){
|
|||||||
newline(); sendbuf();
|
newline(); sendbuf();
|
||||||
}
|
}
|
||||||
// don't process alien messages
|
// don't process alien messages
|
||||||
if(can_mesg->ID != CANID || can_mesg->ID != BCAST_ID) return;
|
if(can_mesg->ID != CANID && can_mesg->ID != BCAST_ID) return;
|
||||||
int16_t t;
|
int16_t t;
|
||||||
if(data[0] == COMMAND_MARK){ // process commands
|
if(data[0] == COMMAND_MARK){ // process commands
|
||||||
if(len < 2) return;
|
if(len < 2) return;
|
||||||
|
|||||||
@ -75,23 +75,11 @@ int main(void){
|
|||||||
adc_setup();
|
adc_setup();
|
||||||
usart_setup();
|
usart_setup();
|
||||||
i2c_setup(LOW_SPEED);
|
i2c_setup(LOW_SPEED);
|
||||||
CAN_setup(0); // setup with default 250kbaud
|
|
||||||
/*
|
|
||||||
SEND("Greetings! My address is ");
|
|
||||||
printuhex(CANID);
|
|
||||||
newline();
|
|
||||||
|
|
||||||
if(RCC->CSR & RCC_CSR_IWDGRSTF){ // watchdog reset occured
|
|
||||||
SEND("WDGRESET=1\n");
|
|
||||||
}
|
|
||||||
if(RCC->CSR & RCC_CSR_SFTRSTF){ // software reset occured
|
|
||||||
SEND("SOFTRESET=1\n");
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
RCC->CSR |= RCC_CSR_RMVF; // remove reset flags
|
|
||||||
USB_setup();
|
|
||||||
readCANID();
|
readCANID();
|
||||||
if(CANID == MASTER_ID) cansniffer = 1; // MASTER in sniffer mode by default
|
if(CANID == MASTER_ID) cansniffer = 1; // MASTER in sniffer mode by default
|
||||||
|
CAN_setup(0); // setup with default 250kbaud
|
||||||
|
RCC->CSR |= RCC_CSR_RMVF; // remove reset flags
|
||||||
|
USB_setup();
|
||||||
iwdg_setup();
|
iwdg_setup();
|
||||||
|
|
||||||
while (1){
|
while (1){
|
||||||
|
|||||||
@ -20,6 +20,9 @@
|
|||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "adc.h"
|
#include "adc.h"
|
||||||
#include "can.h"
|
#include "can.h"
|
||||||
#include "can_process.h"
|
#include "can_process.h"
|
||||||
@ -28,7 +31,7 @@
|
|||||||
#include "sensors_manage.h"
|
#include "sensors_manage.h"
|
||||||
#include "usart.h"
|
#include "usart.h"
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
#include <string.h> // strlen, strcpy(
|
#include "version.inc"
|
||||||
|
|
||||||
extern volatile uint8_t canerror;
|
extern volatile uint8_t canerror;
|
||||||
|
|
||||||
@ -347,6 +350,7 @@ void cmd_parser(char *txt, uint8_t isUSB){
|
|||||||
newline();
|
newline();
|
||||||
break;
|
break;
|
||||||
default: // help
|
default: // help
|
||||||
|
SEND("https://github.com/eddyem/tsys01/tree/master/STM32/TSYS_controller build#" BUILD_NUMBER " @ " BUILD_DATE "\n");
|
||||||
SEND(
|
SEND(
|
||||||
"ALL little letters - without CAN messaging\n"
|
"ALL little letters - without CAN messaging\n"
|
||||||
"0..7 - send command to given controller (0 - this) instead of broadcast\n"
|
"0..7 - send command to given controller (0 - this) instead of broadcast\n"
|
||||||
@ -388,8 +392,9 @@ void printu(uint32_t val){
|
|||||||
*(--bufptr) = '0';
|
*(--bufptr) = '0';
|
||||||
}else{
|
}else{
|
||||||
while(val){
|
while(val){
|
||||||
*(--bufptr) = val % 10 + '0';
|
register uint32_t o = val;
|
||||||
val /= 10;
|
val /= 10;
|
||||||
|
*(--bufptr) = (o - 10*val) + '0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addtobuf(bufptr);
|
addtobuf(bufptr);
|
||||||
@ -399,8 +404,13 @@ void printu(uint32_t val){
|
|||||||
void printuhex(uint32_t val){
|
void printuhex(uint32_t val){
|
||||||
addtobuf("0x");
|
addtobuf("0x");
|
||||||
uint8_t *ptr = (uint8_t*)&val + 3;
|
uint8_t *ptr = (uint8_t*)&val + 3;
|
||||||
int i, j;
|
int i, j, z = 1;
|
||||||
for(i = 0; i < 4; ++i, --ptr){
|
for(i = 0; i < 4; ++i, --ptr){
|
||||||
|
if(*ptr == 0){ // omit leading zeros
|
||||||
|
if(i == 3) z = 0;
|
||||||
|
if(z) continue;
|
||||||
|
}
|
||||||
|
else z = 0;
|
||||||
for(j = 1; j > -1; --j){
|
for(j = 1; j > -1; --j){
|
||||||
uint8_t half = (*ptr >> (4*j)) & 0x0f;
|
uint8_t half = (*ptr >> (4*j)) & 0x0f;
|
||||||
if(half < 10) bufputchar(half + '0');
|
if(half < 10) bufputchar(half + '0');
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
#include "sensors_manage.h"
|
#include "sensors_manage.h"
|
||||||
#include "can_process.h"
|
#include "can_process.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "proto.h" // addtobuf, bufputchar
|
#include "proto.h" // addtobuf, bufputchar, memcpy
|
||||||
|
|
||||||
extern volatile uint32_t Tms;
|
extern volatile uint32_t Tms;
|
||||||
uint8_t sensors_scan_mode = 0; // infinite scan mode
|
uint8_t sensors_scan_mode = 0; // infinite scan mode
|
||||||
@ -61,6 +61,7 @@ const char *sensors_get_statename(SensorsState x){
|
|||||||
return statenames[x];
|
return statenames[x];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const double mul[5] = {-1.5e-2, 1., -2., 4., -2.};
|
||||||
/**
|
/**
|
||||||
* Get temperature & calculate it by polinome
|
* Get temperature & calculate it by polinome
|
||||||
* T = (-2) * k4 * 10^{-21} * ADC16^4
|
* T = (-2) * k4 * 10^{-21} * ADC16^4
|
||||||
@ -81,7 +82,6 @@ static uint16_t calc_t(uint32_t t, int i){
|
|||||||
int j;
|
int j;
|
||||||
double d = (double)t/256., tmp = 0.;
|
double d = (double)t/256., tmp = 0.;
|
||||||
// k0*(-1.5e-2) + 0.1*1e-5*val*(1*k1 + 1e-5*val*(-2.*k2 + 1e-5*val*(4*k3 + 1e-5*val*(-2*k4))))
|
// k0*(-1.5e-2) + 0.1*1e-5*val*(1*k1 + 1e-5*val*(-2.*k2 + 1e-5*val*(4*k3 + 1e-5*val*(-2*k4))))
|
||||||
const double mul[5] = {-1.5e-2, 1., -2., 4., -2.};
|
|
||||||
for(j = 4; j > 0; --j){
|
for(j = 4; j > 0; --j){
|
||||||
tmp += mul[j] * (double)coeff[j];
|
tmp += mul[j] * (double)coeff[j];
|
||||||
tmp *= 1e-5*d;
|
tmp *= 1e-5*d;
|
||||||
|
|||||||
Binary file not shown.
@ -18,10 +18,13 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "stm32f0.h"
|
#include "stm32f0.h"
|
||||||
#include "hardware.h"
|
#include "hardware.h"
|
||||||
#include "usart.h"
|
#include "usart.h"
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
extern volatile uint32_t Tms;
|
extern volatile uint32_t Tms;
|
||||||
static int datalen[2] = {0,0}; // received data line length (including '\n')
|
static int datalen[2] = {0,0}; // received data line length (including '\n')
|
||||||
|
|||||||
@ -21,10 +21,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "usart.h"
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
#include "usb_lib.h"
|
#include "usb_lib.h"
|
||||||
#include <string.h> // memcpy, memmove
|
|
||||||
#include "usart.h"
|
|
||||||
|
|
||||||
// incoming buffer size
|
// incoming buffer size
|
||||||
#define IDATASZ (256)
|
#define IDATASZ (256)
|
||||||
|
|||||||
@ -20,11 +20,13 @@
|
|||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#include "proto.h"
|
|
||||||
|
#include <string.h> // memcpy
|
||||||
|
|
||||||
|
#include "stm32f0.h"
|
||||||
#include "usart.h"
|
#include "usart.h"
|
||||||
#include "usb_lib.h"
|
#include "usb_lib.h"
|
||||||
#include <stdint.h>
|
|
||||||
#include <string.h> // memcpy
|
|
||||||
|
|
||||||
#ifdef EBUG
|
#ifdef EBUG
|
||||||
#undef EBUG
|
#undef EBUG
|
||||||
@ -146,17 +148,17 @@ _USB_STRING_(USB_StringProdDescriptor, u"USB-Serial Controller");
|
|||||||
*/
|
*/
|
||||||
// SET_LINE_CODING
|
// SET_LINE_CODING
|
||||||
void WEAK linecoding_handler(usb_LineCoding __attribute__((unused)) *lc){
|
void WEAK linecoding_handler(usb_LineCoding __attribute__((unused)) *lc){
|
||||||
MSG("linecoding_handler\n");
|
//MSG("linecoding_handler\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// SET_CONTROL_LINE_STATE
|
// SET_CONTROL_LINE_STATE
|
||||||
void WEAK clstate_handler(uint16_t __attribute__((unused)) val){
|
void WEAK clstate_handler(uint16_t __attribute__((unused)) val){
|
||||||
MSG("clstate_handler\n");
|
//MSG("clstate_handler\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// SEND_BREAK
|
// SEND_BREAK
|
||||||
void WEAK break_handler(){
|
void WEAK break_handler(){
|
||||||
MSG("break_handler\n");
|
//MSG("break_handler\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// handler of vendor requests
|
// handler of vendor requests
|
||||||
|
|||||||
2
STM32/TSYS_controller/version.inc
Normal file
2
STM32/TSYS_controller/version.inc
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define BUILD_NUMBER "28"
|
||||||
|
#define BUILD_DATE "2022-01-31"
|
||||||
Loading…
x
Reference in New Issue
Block a user