Esempio n. 1
0
/* 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 ();
}
Esempio n. 2
0
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;
	}
}
Esempio n. 4
0
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++);
      }
   }
}
Esempio n. 5
0
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);
  }
}
Esempio n. 6
0
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
}
Esempio n. 7
0
// 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); }
	 */
    }
}