void io_initialize (int standalone) { if (disksim->iosim_info == NULL) { iosim_initialize_iosim_info (); } bus_set_depths(); // fprintf (outputfile, "Back from bus_set_depths\n"); StaticAssert (sizeof(ioreq_event) <= DISKSIM_EVENT_SIZE); device_initialize(); bus_initialize(); controller_initialize(); iodriver_initialize(standalone); }
int main(void) { uint8_t msglen = 0; uint8_t msg[BUS_MAXRECVMSGLEN]; uint16_t sender = 0; uint16_t module_id = 0; io_initialize(); clk_initialize(); scomm_initialize_uart1(&g_serial_phy); //register_set_u16(MOD_eReg_ModuleID, 0x0003); register_get(MOD_eReg_ModuleID, 0, &module_id); bus_configure(&g_bus, module_id); bus_initialize(&g_bus, 0);// initialize bus on UART 0 sei(); LED_STATUS_OFF; LED_ERROR_OFF; clk_timer_start(&g_LED_timer, CLOCK_MS_2_TICKS(1000)); while (1) { // check for message and read it if (bus_get_message(&g_bus)) { bgw_forward_bus_msg(&g_bus, &g_serial_phy); if (bus_read_message(&g_bus, &sender, &msglen, msg)) { interpret_message(sender, msglen, msg); } } bgw_forward_serial_msg(&g_bus, &g_serial_phy); if (clk_timer_is_elapsed(&g_LED_timer)) { // cyclic reset of error LED LED_ERROR_OFF; LED_STATUS_TOGGLE; clk_timer_start(&g_LED_timer, CLOCK_MS_2_TICKS(1000)); } } return 0; }
int main (void) { uint8_t msglen = 0; uint8_t msg[BUS_MAXRECVMSGLEN]; uint16_t module_id = BUS_UNKNOWNADR, sender = 0, val; uint16_t new_temp; DDRC |= ((1<<PC3) | (1<<PC4)); PORTC &= ~((1<<PC3) | (1<<PC4)); clk_initialize(); //register_set_u16(MOD_eReg_ModuleID, 0x000E); // configure a bus node with address X register_get(MOD_eReg_ModuleID, 0, &module_id); bus_configure(&g_bus, module_id); bus_initialize(&g_bus, 0);// initialize bus on UART 0 spi_master_init_blk(); zagw_initialize(); sei(); register_get(APP_eReg_DesiredTempDay1, 0, &g_target_temp); gdisp_initialize(); gdisp_goto_col_line(0,0); gdisp_put_text("aktuell"); gdisp_goto_col_line(61,0); gdisp_put_text("Soll"); draw_temperatures(); draw_window_closed(); gdisp_choose_font(gdisp_font1_x8); gdisp_goto_col_line(0,3); gdisp_put_text("Addr: "); draw_hex16_value(g_bus.sCfg.uOwnNodeAddress); clk_timer_start(&g_app_timer, 100); while (1) { if (bus_get_message(&g_bus)) { if (bus_read_message(&g_bus, &sender, &msglen, msg)) { interpret_message(&g_bus, msg, msglen, sender); } } if (clk_timer_is_elapsed(&g_app_timer)) { clk_timer_start(&g_app_timer,10); gdisp_choose_font(gdisp_font1_x8); gdisp_goto_col_line(0,3); gdisp_put_text("Temp: "); if (zagw_receive()) { val = zagw_get_bits(); draw_hex16_value(val); new_temp = zagw_get_temperature(); if (new_temp != g_current_temp) { send_temperature(new_temp); } g_current_temp = new_temp; draw_temperatures(); } else { gdisp_put_text("PERR"); } } } return 0; }