/*! * \file : sysdata.h * \brief : Header for sysdata.c file. * This file contains the common defines of the application. * */ #ifndef __SYS_DATA_H #define __SYS_DATA_H #ifdef __cplusplus extern "C" { #endif #include "stdint.h" #define CONCAT(a, b) CONCAT_INNER(a, b) // These three macros #define CONCAT_INNER(a, b) a ## b // generate unique variables #define UNIQUE_NAME(base) CONCAT(base, __COUNTER__) // according to template "baseX", like "base1", "base2" and etc. #define SAMPLE_ARRAY_SIZE 64 //------------------------------------------------------------------------------ typedef union { uint16_t w; int16_t sw; uint8_t b[2]; int8_t sb[2]; } bword_t; //------------------------------------------------------------------------------ // This structure must be aligned to 4-byte address volatile typedef struct { // Device spezifisch / Einstellungsbereich uint16_t device_type; // 0 ECS interne Gertetyp Kennung (IHP 500 -> daher wird angedacht die Gerätekennung 500 zu nehmen) uint16_t UNIQUE_NAME(reserved); // 1 Reserviert wg Alignement uint32_t sn; // 2-3 Seriennummer Teil 1 -> wird bei der Produktion geschrieben uint16_t fw_revision_major; // 4 Firmware Revision Major -> wird bei einer neuen Gertegeneration hochgezhlt uint16_t fw_revision_minor; // 5 Firmware Revision Minor -> wird hochegezhlt, wenn nderungen in der Firmware auch nderungen in der Bedienungsanleitung zur Folge haben uint16_t fw_revision_revision; // 6 Firmware Revision Revision -> wird bei jeder nderung der Firmware hochgezhlt uint16_t UNIQUE_NAME(reserved); // 7 Reserviert wg Alignement uint32_t baudrate; // 8-9 Die Modbus Baudrate (default 19200 Bit/s). Gltig im Bereich von 50 Bit/s bis 1000 000 Bit/s uint16_t parityMode; // 10 UART Parity Mode (default EVEN) mgliche Werte 0=EVEN, 1=ODD, 2=NONE uint16_t stopBit; // 11 UART Stop Bit Reserviert, Aktuell automatisch selektiert nach Modbus standart Bei Parity EVEN oder ODD 1, bei NONE werden 2 stopbits genutzt uint16_t slave_address; // 12 Modbus Slave Adresse (default 1) mgliche Werte von 1 bis 247 uint16_t command; // 13 Kommando Word, das Schreiben bestimmter Werte in dieses Register fhrt bestimmte Aktionen aus uint16_t res1[6]; uint16_t operatingMode; uint16_t reserved[79]; } device_parameter_t; //------------------------------------------------------------------------------ // This structure must be aligned to 4-byte address volatile typedef struct { /*offset 0*/ /* 2 of 8 */ int16_t chipTemp; // 100 /* 4 of 8 */ int16_t relaisTemp; // 101 /* 6 of 8 */ uint16_t voltage_input; // 102 /* 8 of 8 */ uint16_t voltage_output; // 103 /* 2 of 8 */ int16_t voltage_relais; // 104 /* 2 of 8 */ int16_t fan_pwm; // 105 /* 2 of 8 */ int16_t fan_rpm; // 106 /* 2 of 8 */ int16_t ovp_state; // 107 /* 2 of 8 */ int16_t lvp_state; // 108 /* 2 of 8 */ int16_t fault_state; // 109 /* 2 of 8 */ int16_t relais_state; // 115 } device_values_t; //------------------------------------------------------------------------------ typedef struct { device_parameter_t parameter; // 0-99 device_values_t values; // 100 } sys_data_struct_t; //------------------------------------------------------------------------------ typedef volatile union { sys_data_struct_t s; bword_t mb[sizeof(sys_data_struct_t) / 2]; } sys_data_t; //------------------------------------------------------------------------------ extern sys_data_t sys_data; //------------------------------------------------------------------------------ void SYS_DATA_Init(void); #ifdef __cplusplus } #endif #endif // __SYS_DATA_H