From 8d43610e1b1ec6e43ff1c5b086dff9296d25515f Mon Sep 17 00:00:00 2001 From: eddyem Date: Thu, 7 Jun 2018 18:11:02 +0300 Subject: [PATCH] fix little bugs, but I2C multiplexer don't work --- STM32/TSYS_controller/Makefile | 8 +-- STM32/TSYS_controller/hardware.c | 10 +++- STM32/TSYS_controller/hardware.h | 3 +- STM32/TSYS_controller/main.c | 41 +++++++++++++- STM32/TSYS_controller/sensors_manage.c | 39 +++++++++++-- STM32/TSYS_controller/tmp_UPGWJZ.d | 17 ------ STM32/TSYS_controller/tsys01.bin | Bin 10388 -> 11092 bytes STM32/TSYS_controller/tsys01.c.tags | 75 ++++++++++++++++++++----- STM32/TSYS_controller/usart.h | 6 ++ 9 files changed, 153 insertions(+), 46 deletions(-) delete mode 100644 STM32/TSYS_controller/tmp_UPGWJZ.d diff --git a/STM32/TSYS_controller/Makefile b/STM32/TSYS_controller/Makefile index e2dc292..4789ed0 100644 --- a/STM32/TSYS_controller/Makefile +++ b/STM32/TSYS_controller/Makefile @@ -1,14 +1,14 @@ BINARY = tsys01 BOOTPORT ?= /dev/ttyUSB0 -BOOTSPEED ?= 9600 +BOOTSPEED ?= 57600 # MCU FAMILY FAMILY = F0 # MCU code MCU = F042x6 # hardware definitions -DEFS := -DUSARTNUM=1 -DI2CPINS=B6B7 +DEFS := -DUSARTNUM=1 -DI2CPINS=67 #DEFS += -DCHECK_TMOUT -#DEFS += -DEBUG +DEFS += -DEBUG # change this linking script depending on particular MCU model, # for example, if you have STM32F103VBT6, you should write: LDSCRIPT = ld/stm32f042k.ld @@ -127,7 +127,7 @@ $(ELF): $(OBJDIR) $(OBJS) clean: @echo " CLEAN" - $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(OBJDIR)/*.map + $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(OBJDIR)/*.map *.d @rmdir $(OBJDIR) 2>/dev/null || true diff --git a/STM32/TSYS_controller/hardware.c b/STM32/TSYS_controller/hardware.c index 1701e45..206d33d 100644 --- a/STM32/TSYS_controller/hardware.c +++ b/STM32/TSYS_controller/hardware.c @@ -44,6 +44,8 @@ void gpio_setup(void){ // PA8 - power enable GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER8)) | GPIO_MODER_MODER8_O; + pin_set(LED0_port, LED0_pin); // clear LEDs + pin_set(LED1_port, LED1_pin); } void i2c_setup(I2C_SPEED speed){ @@ -53,7 +55,7 @@ void i2c_setup(I2C_SPEED speed){ curI2Cspeed = speed; } I2C1->CR1 = 0; -#if I2CPINS == A9A10 +#if I2CPINS == 910 /* * GPIO Resources: I2C1_SCL - PA9, I2C1_SDA - PA10 * GPIOA->AFR[1] @@ -64,7 +66,7 @@ void i2c_setup(I2C_SPEED speed){ GPIOA->MODER |= GPIO_MODER_MODER9_AF | GPIO_MODER_MODER10_AF; // alternate function GPIOA->OTYPER |= GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10; // opendrain //GPIOA->OTYPER |= GPIO_OTYPER_OT_10; // opendrain -#elif I2CPINS == B6B7 +#elif I2CPINS == 67 /* * GPIO Resources: I2C1_SCL - PB6, I2C1_SDA - PB7 (AF1) * GPIOB->AFR[0] -> 1<<6*4 | 1<<7*4 = 0x11000000 @@ -82,8 +84,10 @@ void i2c_setup(I2C_SPEED speed){ if(speed == LOW_SPEED){ // 10kHz // PRESC=B, SCLDEL=4, SDADEL=2, SCLH=0xC3, SCLL=0xB0 I2C1->TIMINGR = (0xB<<28) | (4<<20) | (2<<16) | (0xC3<<8) | (0xB0); - }else{ // 100kHz + }else if(speed == HIGH_SPEED){ // 100kHz I2C1->TIMINGR = (0xB<<28) | (4<<20) | (2<<16) | (0x12<<8) | (0x11); + }else{ // VERYLOW_SPEED - the lowest speed by STM register: 5.8kHz (presc = 16-1 = 15; ) + I2C1->TIMINGR = (0xf<<28) | (4<<20) | (2<<16) | (0xff<<8) | (0xff); } I2C1->CR1 = I2C_CR1_PE;// | I2C_CR1_RXIE; // Enable I2C & (interrupt on receive - not supported yet) } diff --git a/STM32/TSYS_controller/hardware.h b/STM32/TSYS_controller/hardware.h index a410cd5..c31660a 100644 --- a/STM32/TSYS_controller/hardware.h +++ b/STM32/TSYS_controller/hardware.h @@ -45,7 +45,7 @@ #define USARTX FORMUSART(USARTNUM) #ifndef I2CPINS -#define I2CPINS A9A10 +#define I2CPINS 910 #endif #ifndef LED1_port @@ -73,6 +73,7 @@ #define SENSORS_OVERCURNT() ((1<<3) != (GPIOB->IDR & (1<<3))) typedef enum{ + VERYLOW_SPEED, LOW_SPEED, HIGH_SPEED, CURRENT_SPEED diff --git a/STM32/TSYS_controller/main.c b/STM32/TSYS_controller/main.c index 916d07a..1d04fc0 100644 --- a/STM32/TSYS_controller/main.c +++ b/STM32/TSYS_controller/main.c @@ -24,6 +24,14 @@ #include "i2c.h" #include "sensors_manage.h" +#pragma message("USARTNUM=" STR(USARTNUM)) +#pragma message("I2CPINS=" STR(I2CPINS)) +#ifdef EBUG +#pragma message("Debug mode") +#else +#pragma message("Release mode") +#endif + volatile uint32_t Tms = 0; /* Called when systick fires */ @@ -31,6 +39,27 @@ void sys_tick_handler(void){ ++Tms; } +void iwdg_setup(){ + /* Enable the peripheral clock RTC */ + /* (1) Enable the LSI (40kHz) */ + /* (2) Wait while it is not ready */ + RCC->CSR |= RCC_CSR_LSION; /* (1) */ + while((RCC->CSR & RCC_CSR_LSIRDY) != RCC_CSR_LSIRDY); /* (2) */ + /* Configure IWDG */ + /* (1) Activate IWDG (not needed if done in option bytes) */ + /* (2) Enable write access to IWDG registers */ + /* (3) Set prescaler by 64 (1.6ms for each tick) */ + /* (4) Set reload value to have a rollover each 2s */ + /* (5) Check if flags are reset */ + /* (6) Refresh counter */ + IWDG->KR = IWDG_START; /* (1) */ + IWDG->KR = IWDG_WRITE_ACCESS; /* (2) */ + IWDG->PR = IWDG_PR_PR_1; /* (3) */ + IWDG->RLR = 1250; /* (4) */ + while(IWDG->SR); /* (5) */ + IWDG->KR = IWDG_REFRESH; /* (6) */ +} + int main(void){ uint32_t lastT = 0; int16_t L = 0; @@ -40,11 +69,12 @@ int main(void){ gpio_setup(); usart_setup(); i2c_setup(LOW_SPEED); - // reset on start - write_i2c(TSYS01_ADDR0, TSYS01_RESET); - write_i2c(TSYS01_ADDR1, TSYS01_RESET); + iwdg_setup(); + + SEND("Greetings!\n"); while (1){ + IWDG->KR = IWDG_REFRESH; // refresh watchdog if(lastT > Tms || Tms - lastT > 499){ LED_blink(LED0); lastT = Tms; @@ -69,6 +99,10 @@ int main(void){ i2c_setup(CURRENT_SPEED); SEND("Reinit I2C\n"); break; + case 'V': + i2c_setup(VERYLOW_SPEED); + SEND("Very low speed\n"); + break; case 'L': i2c_setup(LOW_SPEED); SEND("Low speed\n"); @@ -82,6 +116,7 @@ int main(void){ "'D' - slave discovery\n" "'T' - get raw temperature\n" "'R' - reinit I2C\n" + "'V' - very low speed\n" "'L' - low speed\n" "'H' - high speed\n"); break; diff --git a/STM32/TSYS_controller/sensors_manage.c b/STM32/TSYS_controller/sensors_manage.c index 43a452f..febcb5b 100644 --- a/STM32/TSYS_controller/sensors_manage.c +++ b/STM32/TSYS_controller/sensors_manage.c @@ -231,6 +231,10 @@ static uint8_t sensors_scan(uint8_t (* procfn)()){ // print coefficients @debug console void showcoeffs(){ int a, p, k; + if(Nsens_present == 0){ + SEND("No sensors found\n"); + return; + } for(a = 0; a <= MUL_MAX_ADDRESS; ++a){ for(p = 0; p < 2; ++p){ if(!(sens_present[p] & (1<reset\n"); i2c_setup(CURRENT_SPEED); Sstate = SENS_RESETING; break; case SENS_RESETING: // reset & discovery procedure overcurnt_ctr = 0; - if(sensors_scan(resetproc)) Sstate = SENS_GET_COEFFS; + if(sensors_scan(resetproc)){ + count_sensors(); // get total amount of sensors + if(Nsens_present){ +MSG("reset->getcoeff\n"); + Sstate = SENS_GET_COEFFS; + }else{ // no sensors found +MSG("reset->off\n"); + Sstate = SENS_OFF; + } + } break; case SENS_GET_COEFFS: // get coefficients if(sensors_scan(getcoefsproc)){ - count_sensors(); // get total amount of sensors +MSG("got coeffs for "); +#ifdef EBUG +printu(Nsens_present); +#endif +MSG(" sensors ->start\n"); Sstate = SENS_START_MSRMNT; } break; case SENS_START_MSRMNT: // send all sensors command to start measurements if(sensors_scan(msrtempproc)){ lastSensT = Tms; +MSG("->wait\n"); Sstate = SENS_WAITING; Ntemp_measured = 0; // reset value of good measurements } break; case SENS_WAITING: // wait for end of conversion if(Tms - lastSensT > CONV_TIME){ +MSG("->gather\n"); Sstate = SENS_GATHERING; } break; case SENS_GATHERING: // scan all sensors, get thermal data & calculate temperature if(sensors_scan(gettempproc)){ lastSensT = Tms; - if(Nsens_present == Ntemp_measured) // All OK, amount of T == amount of sensors + if(Nsens_present == Ntemp_measured){ // All OK, amount of T == amount of sensors +MSG("->sleep\n"); Sstate = SENS_SLEEPING; - else{ // reinit I2C & try to start measurements again + }else{ // reinit I2C & try to start measurements again +MSG("gather error ->start\n"); i2c_setup(CURRENT_SPEED); Sstate = SENS_START_MSRMNT; } @@ -311,10 +340,12 @@ void sensors_process(){ break; case SENS_SLEEPING: // wait for `SLEEP_TIME` till next measurements if(Tms - lastSensT > SLEEP_TIME){ +MSG("sleep->start\n"); Sstate = SENS_START_MSRMNT; } break; case SENS_OVERCURNT: // try to reinit all after overcurrent +MSG("overcurrent occured!\n"); sensors_on(); break; default: // do nothing diff --git a/STM32/TSYS_controller/tmp_UPGWJZ.d b/STM32/TSYS_controller/tmp_UPGWJZ.d deleted file mode 100644 index 951ce81..0000000 --- a/STM32/TSYS_controller/tmp_UPGWJZ.d +++ /dev/null @@ -1,17 +0,0 @@ -tmp_UPGWJZ.o: /tmp/tmp_UPGWJZ.cpp /usr/include/stdc-predef.h i2c.h \ - usart.c ../inc/F0/stm32f0.h ../inc/F0/stm32f0xx.h \ - ../inc/F0/stm32f042x6.h ../inc/cm/core_cm0.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/libc-header-start.h \ - /usr/include/features.h /usr/include/sys/cdefs.h \ - /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \ - /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ - /usr/include/bits/types.h /usr/include/bits/typesizes.h \ - /usr/include/bits/wchar.h /usr/include/bits/stdint-intn.h \ - /usr/include/bits/stdint-uintn.h ../inc/cm/core_cmInstr.h \ - ../inc/cm/core_cmFunc.h hardware.h usart.h /usr/include/string.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/include/stddef.h \ - /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ - /usr/include/strings.h /usr/include/bits/strings_fortified.h \ - /usr/include/bits/string_fortified.h main.c i2c.h i2c.c hardware.h \ - hardware.c diff --git a/STM32/TSYS_controller/tsys01.bin b/STM32/TSYS_controller/tsys01.bin index 6d836adb87735a7a07265e0814b26e3493d03eaa..c4ea26d5bf3baef587cb263c22ad88a64fe1f35c 100755 GIT binary patch delta 2829 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 U>CDE~PoP}GSR?Re03e8e0#weva{vGU diff --git a/STM32/TSYS_controller/tsys01.c.tags b/STM32/TSYS_controller/tsys01.c.tags index ce75179..b07b1c2 100644 --- a/STM32/TSYS_controller/tsys01.c.tags +++ b/STM32/TSYS_controller/tsys01.c.tags @@ -96,6 +96,7 @@ AHB2PERIPH_BASE AHBPERIPH_BASEÌ65536Ö0 ALL_OKÌ4Îanon_enum_1Ö0 APBPERIPH_BASEÌ65536Ö0 +BAD_TEMPERATUREÌ65536Ö0 CANÌ65536Ö0 CAN_BASEÌ65536Ö0 CAN_BTR_BRPÌ65536Ö0 @@ -1310,6 +1311,7 @@ CRS_ISR_SYNCMISS CRS_ISR_SYNCOKFÌ65536Ö0 CRS_ISR_SYNCWARNFÌ65536Ö0 CRS_ISR_TRIMOVFÌ65536Ö0 +CURRENT_SPEEDÌ4Îanon_enum_0Ö0 DBGMCUÌ65536Ö0 DBGMCU_APB1_FZ_DBG_CAN_STOPÌ65536Ö0 DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUTÌ65536Ö0 @@ -1438,6 +1440,7 @@ DMA_ISR_TEIF4 DMA_ISR_TEIF5Ì65536Ö0 DMA_ISR_TEIF6Ì65536Ö0 DMA_ISR_TEIF7Ì65536Ö0 +EBUGÌ65536Ö0 EXTIÌ65536Ö0 EXTI_BASEÌ65536Ö0 EXTI_EMR_MR0Ì65536Ö0 @@ -1984,10 +1987,6 @@ GPIO_PUPDR_PUPDR9 GPIO_PUPDR_PUPDR9_0Ì65536Ö0 GPIO_PUPDR_PUPDR9_1Ì65536Ö0 HIGH_SPEEDÌ4Îanon_enum_0Ö0 -HIGH_SPEEDÌ4Îanon_enum_2Ö0 -HIGH_SPEEDÌ4Îanon_enum_3Ö0 -HIGH_SPEEDÌ4Îanon_enum_4Ö0 -HIGH_SPEEDÌ4Îanon_enum_5Ö0 I2C1Ì65536Ö0 I2C1_BASEÌ65536Ö0 I2CPINSÌ65536Ö0 @@ -2057,7 +2056,7 @@ I2C_OAR2_OA2EN I2C_OAR2_OA2MSKÌ65536Ö0 I2C_PECR_PECÌ65536Ö0 I2C_RXDR_RXDATAÌ65536Ö0 -I2C_SPEEDÌ4096Ö0Ïanon_enum_5 +I2C_SPEEDÌ4096Ö0Ïanon_enum_0 I2C_TIMEOUTÌ65536Ö0 I2C_TIMEOUTR_TEXTENÌ65536Ö0 I2C_TIMEOUTR_TIDLEÌ65536Ö0 @@ -2187,11 +2186,14 @@ IWDG_PR_PR IWDG_PR_PR_0Ì65536Ö0 IWDG_PR_PR_1Ì65536Ö0 IWDG_PR_PR_2Ì65536Ö0 +IWDG_REFRESHÌ65536Ö0 IWDG_RLR_RLÌ65536Ö0 IWDG_SR_PVUÌ65536Ö0 IWDG_SR_RVUÌ65536Ö0 IWDG_SR_WVUÌ65536Ö0 +IWDG_STARTÌ65536Ö0 IWDG_WINR_WINÌ65536Ö0 +IWDG_WRITE_ACCESSÌ65536Ö0 LED0_pinÌ65536Ö0 LED0_portÌ65536Ö0 LED1_pinÌ65536Ö0 @@ -2199,18 +2201,18 @@ LED1_port LED_blinkÌ131072Í(x)Ö0 LINE_BUSYÌ4Îanon_enum_1Ö0 LOW_SPEEDÌ4Îanon_enum_0Ö0 -LOW_SPEEDÌ4Îanon_enum_2Ö0 -LOW_SPEEDÌ4Îanon_enum_3Ö0 -LOW_SPEEDÌ4Îanon_enum_4Ö0 -LOW_SPEEDÌ4Îanon_enum_5Ö0 MODIFY_REGÌ131072Í(REG,CLEARMASK,SETMASK)Ö0 +MSGÌ131072Í(str)Ö0 MUL_ADDRESSÌ131072Í(x)Ö0 +MUL_MAX_ADDRESSÌ65536Ö0 MUL_OFFÌ131072Í()Ö0 MUL_ONÌ131072Í()Ö0 NEWLINEÌ131072Í()Ö0 NULLÌ65536Ö0 NVICÌ65536Ö0 NVIC_BASEÌ65536Ö0 +Nsens_presentÌ16384Ö0Ïuint8_t +Ntemp_measuredÌ16384Ö0Ïuint8_t OBÌ65536Ö0 OB_BASEÌ65536Ö0 OB_RDP_RDPÌ65536Ö0 @@ -2830,12 +2832,26 @@ SCB_SHCSR_SVCALLPENDED_Msk SCB_SHCSR_SVCALLPENDED_PosÌ65536Ö0 SCS_BASEÌ65536Ö0 SENDÌ131072Í(str)Ö0 +SENSORS_OFFÌ131072Í()Ö0 +SENSORS_ONÌ131072Í()Ö0 +SENSORS_OVERCURNTÌ131072Í()Ö0 +SENS_GATHERINGÌ4Îanon_enum_2Ö0 +SENS_GET_COEFFSÌ4Îanon_enum_2Ö0 +SENS_INITINGÌ4Îanon_enum_2Ö0 +SENS_OFFÌ4Îanon_enum_2Ö0 +SENS_OVERCURNTÌ4Îanon_enum_2Ö0 +SENS_OVERCURNT_OFFÌ4Îanon_enum_2Ö0 +SENS_RESETINGÌ4Îanon_enum_2Ö0 +SENS_SLEEPINGÌ4Îanon_enum_2Ö0 +SENS_START_MSRMNTÌ4Îanon_enum_2Ö0 +SENS_WAITINGÌ4Îanon_enum_2Ö0 SET_BITÌ131072Í(REG,BIT)Ö0 SIG_ATOMIC_MAXÌ65536Ö0 SIG_ATOMIC_MINÌ65536Ö0 SIG_ATOMIC_WIDTHÌ65536Ö0 SIZE_MAXÌ65536Ö0 SIZE_WIDTHÌ65536Ö0 +SLEEP_TIMEÌ65536Ö0 SPI1Ì65536Ö0 SPI1_BASEÌ65536Ö0 SPI2Ì65536Ö0 @@ -3046,6 +3062,8 @@ SYSCFG_EXTICR4_EXTI15_PB SYSCFG_EXTICR4_EXTI15_PCÌ65536Ö0 SYSCFG_EXTICR4_EXTI15_PDÌ65536Ö0 SYSCFG_EXTICR4_EXTI15_PEÌ65536Ö0 +SensorsStateÌ4096Ö0Ïanon_enum_2 +SstateÌ16384Ö0ÏSensorsState StartHSEÌ16Í()Ö0Ïinline void StartHSI48Ì16Í()Ö0Ïinline void SysTickÌ65536Ö0 @@ -3488,6 +3506,8 @@ TSYS01_PROM_ADDR0 TSYS01_RESETÌ65536Ö0 TSYS01_START_CONVÌ65536Ö0 TXstatusÌ4096Ö0Ïanon_enum_1 +TaddrÌ16384Ö0Ïconst uint8_t +TemperaturesÌ16384Ö0Ïint16_t TmsÌ16384Ö0Ïvolatile uint32_t TmsÌ32768Ö0Ïvolatile uint32_t UARTBUFSZÌ65536Ö0 @@ -3764,6 +3784,7 @@ USB_LPMCSR_REMWAKE USB_PMAADDRÌ65536Ö0 VDDIO2_IRQHandlerÌ65536Ö0 VDDIO2_IRQnÌ65536Ö0 +VERYLOW_SPEEDÌ4Îanon_enum_0Ö0 VREFINT_CAL_ADDRÌ65536Ö0 WCHAR_MAXÌ65536Ö0 WCHAR_MINÌ65536Ö0 @@ -3993,6 +4014,7 @@ __GXX_ABI_VERSION __GXX_EXPERIMENTAL_CXX0X__Ì65536Ö0 __GXX_RTTIÌ65536Ö0 __GXX_WEAK__Ì65536Ö0 +__HARDWARE_H__Ì65536Ö0 __HAVE_GENERIC_SELECTIONÌ65536Ö0 __IÌ65536Ö0 __ID_T_TYPEÌ65536Ö0 @@ -4100,6 +4122,7 @@ __S64_TYPE __SCHAR_MAX__Ì65536Ö0 __SEG_FSÌ65536Ö0 __SEG_GSÌ65536Ö0 +__SENSORS_MANAGE_H__Ì65536Ö0 __SHRT_MAX__Ì65536Ö0 __SIG_ATOMIC_MAX__Ì65536Ö0 __SIG_ATOMIC_MIN__Ì65536Ö0 @@ -4351,40 +4374,62 @@ __x86_64__ anon_enum_0Ì2Ö0 anon_enum_1Ì2Ö0 anon_enum_2Ì2Ö0 -anon_enum_3Ì2Ö0 -anon_enum_4Ì2Ö0 -anon_enum_5Ì2Ö0 bufovrÌ16384Ö0Ïint bufovrÌ32768Ö0Ïint -calc_tÌ16Í(uint32_t t, int i)Ö0Ïuint8_t +calc_tÌ16Í(uint32_t t, int i)Ö0Ïuint16_t cntrÌ16384Ö0Ïuint32_t coefficientsÌ16384Ö0Ïuint16_t +count_sensorsÌ16Í()Ö0Ïvoid +curI2CspeedÌ16384Ö0ÏI2C_SPEED +curI2CspeedÌ32768Ö0ÏI2C_SPEED +curr_mul_addrÌ16384Ö0Ïuint8_t datalenÌ16384Ö0Ïint dlenÌ16384Ö0Ïint dma1_channel2_3_isrÌ16Í()Ö0Ïvoid +getcoefsprocÌ16Í()Ö0Ïuint8_t +gettempprocÌ16Í()Ö0Ïuint8_t gpio_setupÌ16Í(void)Ö0Ïvoid gpio_setupÌ1024Í(void)Ö0Ïvoid i2c_setupÌ16Í(I2C_SPEED speed)Ö0Ïvoid i2c_setupÌ1024Í(I2C_SPEED speed)Ö0Ïvoid +iwdg_setupÌ16Í()Ö0Ïvoid +lastSensTÌ16384Ö0Ïuint32_t linerdyÌ16384Ö0Ïint linerdyÌ32768Ö0Ïint linuxÌ65536Ö0 mainÌ16Í(void)Ö0Ïint +msrtempprocÌ16Í()Ö0Ïuint8_t newlineÌ16Í()Ö0Ïvoid newlineÌ1024Í()Ö0Ïvoid nopÌ131072Í()Ö0 +overcurnt_ctrÌ16384Ö0Ïuint8_t pin_clearÌ131072Í(gpioport,gpios)Ö0 pin_readÌ131072Í(gpioport,gpios)Ö0 pin_setÌ131072Í(gpioport,gpios)Ö0 pin_toggleÌ131072Í(gpioport,gpios)Ö0 pin_writeÌ131072Í(gpioport,gpios)Ö0 printuÌ16Í(uint32_t val)Ö0Ïvoid +printuÌ1024Í(uint32_t val)Ö0Ïvoid rbufÌ16384Ö0Ïchar rbufnoÌ16384Ö0Ïint read_i2cÌ16Í(uint8_t addr, uint32_t *data, uint8_t nbytes)Ö0Ïuint8_t read_i2cÌ1024Í(uint8_t addr, uint32_t *data, uint8_t nbytes)Ö0Ïuint8_t recvdataÌ16384Ö0Ïchar * -showcoeffsÌ16Í(uint8_t addr, uint8_t verb)Ö0Ïvoid +resetprocÌ16Í()Ö0Ïuint8_t +sens_presentÌ16384Ö0Ïuint8_t +sensors_get_stateÌ16Í()Ö0ÏSensorsState +sensors_get_stateÌ1024Í()Ö0ÏSensorsState +sensors_offÌ16Í()Ö0Ïvoid +sensors_offÌ1024Í()Ö0Ïvoid +sensors_onÌ16Í()Ö0Ïvoid +sensors_onÌ1024Í()Ö0Ïvoid +sensors_processÌ16Í()Ö0Ïvoid +sensors_processÌ1024Í()Ö0Ïvoid +sensors_scanÌ16Í(uint8_t (* procfn)())Ö0Ïuint8_t +showcoeffsÌ16Í()Ö0Ïvoid +showcoeffsÌ1024Í()Ö0Ïvoid +showtemperatureÌ16Í()Ö0Ïvoid +showtemperatureÌ1024Í()Ö0Ïvoid strdupaÌ131072Í(s)Ö0 strndupaÌ131072Í(s,n)Ö0 sys_tick_handlerÌ16Í(void)Ö0Ïvoid @@ -4396,6 +4441,8 @@ unix usart1_isrÌ16Í()Ö0Ïvoid usart_getlineÌ16Í(char **line)Ö0Ïint usart_getlineÌ1024Í(char **line)Ö0Ïint +usart_putcharÌ16Í(const char ch)Ö0Ïvoid +usart_putcharÌ1024Í(const char ch)Ö0Ïvoid usart_sendÌ16Í(const char *str, int len)Ö0ÏTXstatus usart_sendÌ1024Í(const char *str, int len)Ö0ÏTXstatus usart_send_blockingÌ16Í(const char *str, int len)Ö0ÏTXstatus diff --git a/STM32/TSYS_controller/usart.h b/STM32/TSYS_controller/usart.h index 9d6165d..c34b356 100644 --- a/STM32/TSYS_controller/usart.h +++ b/STM32/TSYS_controller/usart.h @@ -33,6 +33,12 @@ #define SEND(str) do{}while(LINE_BUSY == usart_send_blocking(str, sizeof(str)-1)) #define NEWLINE() do{}while(LINE_BUSY == usart_send_blocking('\n', 1)) +#ifdef EBUG +#define MSG(str) SEND(str) +#else +#define MSG(str) +#endif + typedef enum{ ALL_OK, LINE_BUSY,