/* Hinweis: Wird diese Funktion ohne Pullups an IN0 und IN1 ausgefuehrt, so kommt es zu wdt-Resets. Daher ports-Device nur konfigurieren, wenn auch ein IO-Expander angeschlossen ist! */ void ports_init (device_data_ports *p, eds_block_p it) { if (portsDeviceCreated == true) { canix_syslog_P(SYSLOG_PRIO_DEBUG, PSTR("Additional ports configuration ignored")); return; } portsDeviceCreated = true; // There can be only ONE ports Device expanderActive = false; i2c_init (); // SDA/SDL-Pins sind ueber I2C-master-Lib ATmegatypabhaengig festgelegt uint8_t i; for (i=0; i<4*MAXIMUM_NUMBER_OF_EXPANDER_BOARDS; i++) { valuesOfPortsOnExpBoard[i] = 0; previousValuesOfPortsOnExpBoard[i] = 255; } expBoard = &p->config.expander0; // z.B. 0,255,15,15 (4x OUT, -, 4x IN, 4x IN) if (p->config.base == 128) { // Zur Erzeugung der Startpinnummern (Ingo's Nummerierung): outBase = 12; inBase = 16; // Bsp.:expStartPins[] = {12,20,28,36, 44,52,60,68, 16,24,32,40, 48,56,64,72}; } else // Christoph's aktuelle Nummerierung: { outBase = inBase = 32; } configurePorts (); }
int main(void) { // wdt_disable(); /* Stop watchdog timer */ configurePorts(); InitLCD(0x03); /** Initialise the OS stuff, setup the control and receive tasks, and jump to the OS. */ initNartos(); // controlTaskID = taskStart((uint16_t)*controlTask,FALSE); testLCDID = taskStart((uint16_t)*testLCD,FALSE); nartos(); // for (;;) // { // LCDByte(0,0x00); // LCDByte(0,0x08); // LCDWriteString("Hello"); // LCDWriteString("A"); // LCDByte(1,0x41); // LCDByte(1,0x43); // LCDByte(1,0x50); // LCDByte(1,0x49); // LCDByte(1,0x41); // } // for (;;) // { // uint8_t x=0; // } }
void __fastcall TMinosControlForm::FormShow( TObject */*Sender*/ ) { static bool shown = false; if (!shown) { shown = true; configurePorts( monitor ); // and now we wish to set up our line monitor(s) and attach their ports monitor.initialise(); controlLineEventThread = new GJV_thread( "controlLineEventThread", procLineEvents, ( void * ) this, true ) ; ConnectTimer->Enabled = true; } }
int main(void) { volatile unsigned int xcoord; volatile unsigned int ycoord; unsigned int i; //SSI1[0x020] = 0x02; // RTIC clear SSIICR... maybe configurePorts(); LCD_Init(); setArea(0x00, ENDCOL, 0x00, ENDPAGE); drawSizeColor(TOTALAREA, 0xFF, 0xFF, 0xFF); //white drawSizeColor(TOTALAREA, 0x00, 0x00, 0x01); //black //draw outlines drawRedSquare(); drawGreenSquare(); drawYelSquare(); //default off drawRedEmpty(); drawGreenEmpty(); drawYelEmpty(); while (1) { //SSI1[0x008] = 0xD0; if(input){ input = false; xcoord = SUMX / CNTX; ycoord = SUMY / CNTY; if(LOWX < xcoord && xcoord < HIGHX){ if(REDLY < ycoord && ycoord < REDHY){ flipRed(); } else if(GREENLY < ycoord && ycoord < GREENHY){ flipGreen(); } else if(YELLY < ycoord && ycoord < YELHY){ flipYel(); } } SUMX = 0; SUMY = 0; CNTX = 0; CNTY = 0; for(i = 0; i < 0xFFFF; i++); } } }
int main(void) { // wdt_disable(); /* Stop watchdog timer */ configurePorts(); InitLCD(); uint8_t data[16]; uint8_t control = 0; for (uint8_t i=8; i>0; i--) { data[i] = 35; } displayLCD(data,control); for (;;) { displayLCD(data,control); } }
void tftInit() { configurePorts(); RST_HIGH; _delay_ms(5); RST_LOW; _delay_ms(15); RST_HIGH; _delay_ms(15); CS_HIGH; WR_HIGH; CS_LOW; Lcd_Write_Com(0x11); // Exit_sleep_mode _delay_ms(20); Lcd_Write_Com(0xD0); // Power_Setting Lcd_Write_Data(0x07); // 0000 0111 - Vci1 = 1.0 * Vci Lcd_Write_Data(0x42); // 0100 0010 - PON (generate VLOUT3), VGL=3*Vci1 Lcd_Write_Data(0x18); // 0001 1000 - VREG1OUT=Vci*1.95 Lcd_Write_Com(0xD1); // VCOM_Control Lcd_Write_Data(0x00); // 0000 0000 - select D1h for VCM setting Lcd_Write_Data(0x07); // 0000 0111 - VCOMH=0.72*VREG1OUT Lcd_Write_Data(0x10); // 0001 0000 - VCOM_ampl=VREGOUT1*1.02 Lcd_Write_Com(0xD2); // Power_Setting_for_normal_mode Lcd_Write_Data(0x01); // 0000 0001 - Gamma driver ampl. = Source driver ampl. = 1.0 Lcd_Write_Data(0x02); // 0000 0010 - fDCDC2=Fosc/16 ; fDCDC1=Fosc/4 Lcd_Write_Com(0xC0); // Panel_driving_setting Lcd_Write_Data(0x10); // 0001 0000 - Grayscale inversion, gate driver pin arrangement Lcd_Write_Data(0x3B); // 0011 1011 - (value+1)*8 = number of lines to drive (59+1=60, 60*8=480) Lcd_Write_Data(0x00); // 0000 0000 - Scanning start position // Missing parameter????? The following // parameters are not consistent with the manual! Lcd_Write_Data(0x02); // 0000 0010 - ?????? Lcd_Write_Data(0x11); // 0001 0001 - source output level in non-display area; Lcd_Write_Com(0xC5); // Frame_rate_and_inversion_control Lcd_Write_Data(0x03); // 0000 0011 - Frame rate 72 Hz // This is the most important register, since it sets the // way how the frame memory is set when it is written, // and how the frame memory is mapped to the display panel Lcd_Write_Com(0x36); // Set_address_mode Lcd_Write_Data(0b00101000); // |||||||+-- Vertical flip // ||||||+--- Horizontal flip // |||||+---- 0 // ||||+----- Pixels sent in RGB order // |||+------ LCD refresh top to bottom // ||+------- Page/Column order // |+-------- Column address order left to right // +--------- Page address order top to bottom Lcd_Write_Com(0x3A); // Set_pixel_format Lcd_Write_Data(0x55); // x101 x101 - 16 bit per pixel (65536 colors) Lcd_Write_Com(0x2A); // Set_column_address Lcd_Write_Data(0x00); // 0000 0000 Lcd_Write_Data(0x00); // 0000 0000 - Start column = 0 Lcd_Write_Data(0x01); // 0000 0001 Lcd_Write_Data(0x3F); // 0011 1111 - End column = 0x13F = 319 Lcd_Write_Com(0x2B); // Set_page_address Lcd_Write_Data(0x00); // 0000 0000 Lcd_Write_Data(0x00); // 0000 0000 - Start page = 0 Lcd_Write_Data(0x01); // 0000 0001 Lcd_Write_Data(0xE0); // 1110 0000 - End page = 320 (???) (should be 1DF?) _delay_ms(120); Lcd_Write_Com(0x29); // Set_display_on Lcd_Write_Com(0x2c); // Write_memory_start }
// Fuer die timer_handler gilt: // 1: 1th, 10: 10th, 100: 100th -Sekundenaufruftakt void idle_handler(void) { uint8_t i; // uint16_t unusedSRAM; //in bytes // 10msec Takt: if (timer_event_100th) { // Event Flag zuruecksetzen timer_event_100th = 0; if (expanderActive) handlerForExpanderUpdate(); else if (portsDeviceCreated) configurePorts(); // Ausnahme: EMV-Sicherung for (i = 0; i < MAX_PDEVICE_DATA; i++) { uint8_t *p = pdevice_data[i]; if (p) { switch (*p) { case EDS_zentralheizungspumpe_BLOCK_ID: zentralheizungspumpe_timer_handler((device_data_zentralheizungspumpe *) p, 100); break; case EDS_reedkontakt_BLOCK_ID: reedkontakt_timer_handler((device_data_reedkontakt *) p, 100); break; case EDS_multitaster_BLOCK_ID: multitaster_timer_handler((device_data_multitaster *) p, 100); break; case EDS_rolladenAutomat_BLOCK_ID: rolladenAutomat_timer_handler((device_data_rolladenAutomat *) p, 100); break; case EDS_analogComparator_BLOCK_ID: analogComparator_timer_handler((device_data_analogComparator *) p, 100); break; case EDS_rolladen_BLOCK_ID: rolladen_timer_handler((device_data_rolladen *) p, 100); break; case EDS_zeitzone_BLOCK_ID: zeitzone_timer_handler((device_data_zeitzone *) p, 100); break; case EDS_lichtzone_BLOCK_ID: lichtzone_timer_handler((device_data_lichtzone *) p, 100); break; case EDS_powerportAutomat_BLOCK_ID: powerportAutomat_timer_handler((device_data_powerportAutomat *) p, 100); break; case EDS_ports_BLOCK_ID: ports_timer_handler((device_data_ports *) p, 100); break; case EDS_tempsensor_BLOCK_ID: tempsensor_timer_handler((device_data_tempsensor *) p, 100); break; case EDS_rolladenSchlitzpos_BLOCK_ID: rolladenSchlitzpos_timer_handler((device_data_rolladenSchlitzpos *) p, 100); break; case EDS_poti_BLOCK_ID: poti_timer_handler((device_data_poti *) p, 100); break; case EDS_helligkeitssensor_BLOCK_ID: helligkeitssensor_timer_handler((device_data_helligkeitssensor *) p, 100); break; case EDS_powerport_BLOCK_ID: powerport_timer_handler((device_data_powerport *) p, 100); break; case EDS_heizung_BLOCK_ID: heizung_timer_handler((device_data_heizung *) p, 100); break; case EDS_schalter_BLOCK_ID: schalter_timer_handler((device_data_schalter *) p, 100); break; case EDS_zeitschaltuhr_BLOCK_ID: zeitschaltuhr_timer_handler((device_data_zeitschaltuhr *) p, 100); break; case EDS_taster_BLOCK_ID: taster_timer_handler((device_data_taster *) p, 100); break; } } } } // 100msec Takt if (timer_event_10th) { // Event Flag zuruecksetzen timer_event_10th = 0; for (i = 0; i < MAX_PDEVICE_DATA; i++) { uint8_t *p = pdevice_data[i]; if (p) { switch (*p) { case EDS_zentralheizungspumpe_BLOCK_ID: zentralheizungspumpe_timer_handler((device_data_zentralheizungspumpe *) p, 10); break; case EDS_reedkontakt_BLOCK_ID: reedkontakt_timer_handler((device_data_reedkontakt *) p, 10); break; case EDS_multitaster_BLOCK_ID: multitaster_timer_handler((device_data_multitaster *) p, 10); break; case EDS_rolladenAutomat_BLOCK_ID: rolladenAutomat_timer_handler((device_data_rolladenAutomat *) p, 10); break; case EDS_analogComparator_BLOCK_ID: analogComparator_timer_handler((device_data_analogComparator *) p, 10); break; case EDS_rolladen_BLOCK_ID: rolladen_timer_handler((device_data_rolladen *) p, 10); break; case EDS_zeitzone_BLOCK_ID: zeitzone_timer_handler((device_data_zeitzone *) p, 10); break; case EDS_lichtzone_BLOCK_ID: lichtzone_timer_handler((device_data_lichtzone *) p, 10); break; case EDS_powerportAutomat_BLOCK_ID: powerportAutomat_timer_handler((device_data_powerportAutomat *) p, 10); break; case EDS_ports_BLOCK_ID: ports_timer_handler((device_data_ports *) p, 10); break; case EDS_tempsensor_BLOCK_ID: tempsensor_timer_handler((device_data_tempsensor *) p, 10); break; case EDS_rolladenSchlitzpos_BLOCK_ID: rolladenSchlitzpos_timer_handler((device_data_rolladenSchlitzpos *) p, 10); break; case EDS_poti_BLOCK_ID: poti_timer_handler((device_data_poti *) p, 10); break; case EDS_helligkeitssensor_BLOCK_ID: helligkeitssensor_timer_handler((device_data_helligkeitssensor *) p, 10); break; case EDS_powerport_BLOCK_ID: powerport_timer_handler((device_data_powerport *) p, 10); break; case EDS_heizung_BLOCK_ID: heizung_timer_handler((device_data_heizung *) p, 10); break; case EDS_schalter_BLOCK_ID: schalter_timer_handler((device_data_schalter *) p, 10); break; case EDS_zeitschaltuhr_BLOCK_ID: zeitschaltuhr_timer_handler((device_data_zeitschaltuhr *) p, 10); break; case EDS_taster_BLOCK_ID: taster_timer_handler((device_data_taster *) p, 10); break; } } } } // 1sec Takt if (timer_event_1) { // Event Flag zuruecksetzen timer_event_1 = 0; for (i = 0; i < MAX_PDEVICE_DATA; i++) { uint8_t *p = pdevice_data[i]; if (p) { switch (*p) { case EDS_zentralheizungspumpe_BLOCK_ID: zentralheizungspumpe_timer_handler((device_data_zentralheizungspumpe *) p, 1); break; case EDS_reedkontakt_BLOCK_ID: reedkontakt_timer_handler((device_data_reedkontakt *) p, 1); break; case EDS_multitaster_BLOCK_ID: multitaster_timer_handler((device_data_multitaster *) p, 1); break; case EDS_rolladenAutomat_BLOCK_ID: rolladenAutomat_timer_handler((device_data_rolladenAutomat *) p, 1); break; case EDS_analogComparator_BLOCK_ID: analogComparator_timer_handler((device_data_analogComparator *) p, 1); break; case EDS_rolladen_BLOCK_ID: rolladen_timer_handler((device_data_rolladen *) p, 1); break; case EDS_zeitzone_BLOCK_ID: zeitzone_timer_handler((device_data_zeitzone *) p, 1); break; case EDS_lichtzone_BLOCK_ID: lichtzone_timer_handler((device_data_lichtzone *) p, 1); break; case EDS_powerportAutomat_BLOCK_ID: powerportAutomat_timer_handler((device_data_powerportAutomat *) p, 1); break; case EDS_ports_BLOCK_ID: ports_timer_handler((device_data_ports *) p, 1); break; case EDS_tempsensor_BLOCK_ID: tempsensor_timer_handler((device_data_tempsensor *) p, 1); break; case EDS_rolladenSchlitzpos_BLOCK_ID: rolladenSchlitzpos_timer_handler((device_data_rolladenSchlitzpos *) p, 1); break; case EDS_poti_BLOCK_ID: poti_timer_handler((device_data_poti *) p, 1); break; case EDS_helligkeitssensor_BLOCK_ID: helligkeitssensor_timer_handler((device_data_helligkeitssensor *) p, 1); break; case EDS_powerport_BLOCK_ID: powerport_timer_handler((device_data_powerport *) p, 1); break; case EDS_heizung_BLOCK_ID: heizung_timer_handler((device_data_heizung *) p, 1); break; case EDS_schalter_BLOCK_ID: schalter_timer_handler((device_data_schalter *) p, 1); break; case EDS_zeitschaltuhr_BLOCK_ID: zeitschaltuhr_timer_handler((device_data_zeitschaltuhr *) p, 1); break; case EDS_taster_BLOCK_ID: taster_timer_handler((device_data_taster *) p, 1); break; case EDS_timeservice_BLOCK_ID: timeservice_timer_handler((device_data_timeservice *) p, 1); break; case EDS_dcf77_receiver_BLOCK_ID: dcf77_receiver_timer_handler((device_data_dcf77_receiver *) p, 1); break; } } } /* * vermutlich nicht ganz korrekt und per "EDS config RAM overflow" * schon zum Teil abgedeckt: unusedSRAM = get_mem_unused(); if( * unusedSRAM < MAX_MEM_CRITICAL_SIZE ) { * canix_syslog_P(SYSLOG_PRIO_CRITICAL, PSTR("mem_free: %d * bytes"), unusedSRAM); } */ } }