Esempio n. 1
0
int main(void) {
  // Разрешить светодиод arduino pro mini.
  DDRB |= _BV(DDB5);
  timer_init();
  uart_async_init();
  i2c_init();
  queue_init();
  init_int0();
  // Разрешить прерывания.
  sei();
  uart_readln(&commands_reciver);
  uart_writeln("start");
  // Бесконечный цикл с энергосбережением.
  for(;;) {
    switch(queue_getTask()) {
      case DO_REQUEST_RTC_DATA_START : //Установть позицию на регистр 0x0
        ds3231_buf[0] = 0;
        i2c_send(0xD0, ds3231_buf, 1, &callBackForRequestRtcData);
        break;
      case DO_REQUEST_RTC_DATA_END : //Читаем 7 байт
        i2c_recive(0xD0 + 1, ds3231_buf, 7, &callBackForRequestRtcData);
        break;
      case DO_TIMER1_OVF :
        i2c_init();
        //queue_putTask(DO_REQUEST_RTC_DATA_START);
        timer1_doing = 0;
        break;
      case COMMAND_SEND_I2C :
        i2c_send(commands_reciver_param1[0], // Адресс.
                 commands_reciver_param2, // Буфер.
                 commands_reciver_param3[0], // Количество.
                 &callBackForSendI2CData);
        break;
      case COMMAND_RECIVE_I2C :
        i2c_recive(commands_reciver_param1[0], // Адресс.
                 ds3231_buf, // Буфер.
                 commands_reciver_param3[0], // Количество.
                 &callBackForReciveI2CData);
        break;
      default : sleep_mode();
    }
  }
  return 0;
}
Esempio n. 2
0
int main(void)

{
	uint16_t CalcCRC16(uint8_t data_array[], int data_lenght);
	 
	 int i;
	 /////////////////////OSCYLATOR 32MHZ///////////////////////////////////////////
	init_osc32();
	 ////KONFIGURACJA ADC////////////////////////////////////////////////////////////////
	 konfiguracja_adc();
	 /////////UART////////////////////////////////////////////////////////////////////////
	 PORTC_OUTSET = PIN7_bm; //Let's make PC7 as TX
	 PORTC_DIRSET = PIN7_bm; //TX pin as output
	  
	 PORTC_OUTCLR = PIN6_bm;
	 PORTC_DIRCLR = PIN6_bm; //PC6 as RX
	 setUpSerial();
	///////////////////////////////////////////////////////////////////////////////
	PORTF_DIR=PIN0_bm;
	//PORTF_OUTSET=PIN0_bm;  //zapalenie diody 
	PORTC.DIRSET	=	PIN0_bm;		// pin C0  jako wyjœcie
	PORTC.DIRSET	=	PIN1_bm;		// pin C0  jako wyjœcie
	////////////////////////Flip//////////////////////////////////////////////// 
	PORTE.DIRCLR	=	PIN5_bm;				// pin E5 jako wejœcie
	PORTE.PIN5CTRL	=	PORT_OPC_PULLUP_gc;		// podci¹gniêcie do zasilania
	////////////////////////////Klawisze gora do³ prawo lewo//////////////////////////////////////////
	PORTF.DIRCLR	=	PIN1_bm|PIN2_bm|PIN5_bm|PIN6_bm;
	PORTF.PIN1CTRL	=	PORT_OPC_PULLUP_gc|PORT_ISC_FALLING_gc;	
	PORTF.PIN2CTRL	=	PORT_OPC_PULLUP_gc;	
	PORTF.PIN5CTRL	=	PORT_OPC_PULLUP_gc;	
	PORTF.PIN6CTRL	=	PORT_OPC_PULLUP_gc;
	///////////////////////////////////Przerwanie INT0/////////////////////////////////////////////////////
	init_int0();
	//////////////////////////TIMER0//////////////////////////////////////////////////////
	timer();
	//////////////////////W£¥CZENIE PRZERWAÑ//////////////////////////////////////////
	sei();								// globalne w³¹czenie przerwañ
	////////////////////////////////////////////////////////////////////////////////////////
	LcdInit();									// inicjalizacja sterownika LCD
	LcdGoto(0,0);
	Lcd("*Inzynierka_DiagBoX*");					// wyœwietlenie napisu
	LcdGoto(20,0);
	Lcd("Przedstawia:");
	LcdGoto(25,1);
	Lcd("Marek Wudarczyk");
   _delay_ms(1000);
    LcdClear();
	
           while (1){   
			   LcdClear();
			   LcdGoto(0,0);
	           LcdDec(ADC);
			   LcdGoto(5,0);
			   Lcd("CNT = ");
			   LcdDec(TCC0.CNT);
			   LcdGoto(0,1);
			   LcdDec(TCC0.PER);
			   LcdGoto(20,1);
			   Lcd("czas:");
			   LcdDec(c);
			   
			  i=usart_getc();
				if(i==2){
					while(1){
							uint8_t i,j=0;			
							i=usart_getc();
							uint16_t ADC = ADC_GetResults();
							uint8_t buff[] = {mlody_bajt(ADC),stary_bajt(ADC)};
							buff[2] = mlody_bajt(CalcCRC16(buff,2));
							buff[3] = stary_bajt(CalcCRC16(buff,2));
								while(j<4){
									sendChar(buff[j]);
									j++;
								}
								
								 LcdClear();
								Lcd("CRC:");
								LcdDec(buff[2]);
							    _delay_ms(10);
								 if(i == 2){
									break;
			 }
					}
						i=0;
				}
			if(i==1){
					PORTF_OUTTGL=PIN0_bm;  
					i=0;
			}
			if(!(PORTE.IN & PIN5_bm)) /* je¿eli przycisk FLIP jest wciœniêty*/ {
				while(1){  
						uint32_t licz;
						licz++;
						if((licz>15100)&&(PORTE.IN & PIN5_bm)){
							licz=0;
						
							c+=10;
							break;
						}
			
				}	 
			 }

		_delay_ms(100);

       
	}
			}