diff --git a/avrIOhelper/io-helper.h b/avrIOhelper/io-helper.h index 194b702..5a550c1 100644 --- a/avrIOhelper/io-helper.h +++ b/avrIOhelper/io-helper.h @@ -108,8 +108,8 @@ void ioHelperEdgeDetector(void); #define BitPinD7 16 //I16 #define BitPinG2 17 //I17 #define BitPinG1 18 //I18 -#define BitPinD3 10 //INO -#define BitPinD2 11 //IN1 +#define BitPinD3 19 //INO +#define BitPinD2 20 //IN1 #define BTN_HEIZEN_AN BitPinK2 #define BTN_HEIZEN_AUS BitPinK3 diff --git a/gefran_gtf.c b/gefran_gtf.c index f1b8a9e..c52c492 100644 --- a/gefran_gtf.c +++ b/gefran_gtf.c @@ -1,12 +1,15 @@ #include "modbus-master.h" +#include "gefran_gtf.h" #include -#define FIRMWARE_VERSION 120 - uint16_t gtf_firmware_version(uint8_t address){ + return gtf_read_register(address, GTF_FIRMWARE_VERSION); +} + +uint16_t gtf_read_register(uint8_t address, uint8_t reg){ uint16_t val = 0; - readReg(address, FIRMWARE_VERSION, 1); - int8_t res = wait_receive(1, &val, 250); + readReg(address, reg, 1); + int8_t res = wait_receive(1, &val, 30); if(!res) return val; @@ -14,3 +17,24 @@ uint16_t gtf_firmware_version(uint8_t address){ return res; } +int8_t gtf_write_register(uint8_t address, uint8_t reg, uint16_t value){ + writeReg(address, reg, value); + return wait_write(100); +} + +int8_t gtf_read_coil(uint8_t address, uint8_t coil){ + uint16_t val=0; + readCoil(address, coil); + uint8_t res = wait_receive_coil(20); + if(res) + return -1; + return val; +} + +int8_t gtf_write_coil(uint8_t address, uint8_t coil, uint8_t val){ + writeCoil(address, coil, val); + uint8_t res = wait_write(100); + if(res) + return -1; + return val; +} diff --git a/gefran_gtf.h b/gefran_gtf.h index 1b1a1ab..9d08dc5 100644 --- a/gefran_gtf.h +++ b/gefran_gtf.h @@ -1,2 +1,15 @@ +#include + +#define GTF_PV 0 +#define GTF_OuP 3 +#define GTF_FIRMWARE_VERSION 122 +#define GTF_OPERATING_HOURS 161 +#define GTF_BAUDRATE 24 +#define GTF_SETPOINT 27 +#define GTF_POWER 106 uint16_t gtf_firmware_version(uint8_t address); +uint16_t gtf_read_register(uint8_t address, uint8_t reg); +int8_t gtf_write_register(uint8_t address, uint8_t reg, uint16_t value); +int8_t gtf_read_coil(uint8_t address, uint8_t coil); +int8_t gtf_write_coil(uint8_t address, uint8_t coil, uint8_t val); diff --git a/main.c b/main.c index 3394f36..44e9c00 100644 --- a/main.c +++ b/main.c @@ -142,7 +142,6 @@ int main(){ // INIT MCU avr_init(); spi_init(); //SPI Master, MODE0, 4Mhz(DIV4), CS_PB.3=HIGH - suitable for WIZNET 5x00(1/2/5) - //spi_speed_tst(); / Here on SPI pins: MOSI 400Khz freq out, on SCLK 3.2MhzOUT (Witk SPI CLK 4Mhz) ioHelperInitBuffer(); ioHelperIoConf(); @@ -203,6 +202,9 @@ int main(){ #endif //printf("anlage: %x\n\r", read_Input(IN_ANLAGE_EIN_INV, LEVEL)); + gtf_write_register(5, 54, 1); + gtf_write_register(5, 55, _BV(4)); + gtf_write_register(5, 56, 100); while(1) { @@ -228,18 +230,13 @@ int main(){ mqtt_pub(&mqtt_client, "/Filamentanlage/01_Extruder/kraft", msg, strlen(msg)); #endif - //modbus_io_set_Output(4, 0, TOGGLE); - //printf("gefran: 0x%02X\n", gtf_firmware_version(1)); - //printf("gefran: 0x%02X\n", gtf_firmware_version(2)); - //printf("gefran: 0x%02X\n", gtf_firmware_version(3)); - //printf("gefran: 0x%02X\n", gtf_firmware_version(4)); - //printf("gefran: 0x%02X\n", gtf_firmware_version(5)); - //printf("gefran: 0x%02X\n", gtf_firmware_version(6)); - //printf("gefran: 0x%02X\n", gtf_firmware_version(7)); - //printf("gefran: 0x%02X\n", gtf_firmware_version(8)); - //printf("gefran: 0x%02X\n", gtf_firmware_version(9)); - //printf("gefran: 0x%02X\n", gtf_firmware_version(10)); - //printf("\n"); + printf("gefran 54: 0x%02X\n", gtf_read_register(5, 54)); + printf("gefran 55: 0x%02X\n", gtf_read_register(5, 55)); + printf("gefran 56: 0x%02X\n", gtf_read_register(5, 56)); + + printf("gefran pv: 0x%02X\n", gtf_read_register(5, GTF_PV)); + printf("gefran oup: 0x%02X\n", gtf_read_register(5, GTF_OuP)); + printf("\n"); } if(millis() - timer_read_slave > 200){ @@ -283,9 +280,9 @@ int main(){ #if PLC_MQTT_ENABLED // send misc info if(millis() - timer_send_uptime > 5000){ - timer_send_uptime += 5000; + timer_send_uptime = millis(); char msg[64]; - sprintf(msg, "%ld", millis()/1000); + //sprintf(msg, "%ld", millis()/1000); mqtt_pub(&mqtt_client, "/Filamentanlage/01_Extruder/uptime", msg, strlen(msg)); } #endif diff --git a/uart.c b/uart.c index aa928c8..539623c 100644 --- a/uart.c +++ b/uart.c @@ -8,8 +8,14 @@ FILE uart_output = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); void uart_init() { DDRD |= 1 << 1; // TX - UART_BAUD_REGH = (BAUDRATE>>8); - UART_BAUD_REGL = BAUDRATE; // set baud rate + UART_BAUD_REGH = UBRRH_VALUE;//(BAUDRATE>>8); + UART_BAUD_REGL = UBRRL_VALUE;//BAUDRATE; // set baud rate + +#if USE_2X + UART_CTRL_REGA |= (1 << USE_2X); +#else + UART_CTRL_REGA &= ~(1 << USE_2X); +#endif UART_CTRL_REGB |= (1< +#include -#define BAUD 9600 #define BAUDRATE ((F_CPU)/(BAUD*16UL)-1) #define UART_BAUD_REGH UBRR0H