Exemplo n.º 1
0
void LCD_ShowSPPV(uint8_t event){
  char buff[16];
  sprintf(buff, "SP: %d", SP);
  LCD_WriteTextXY(buff, 0, 0);
  sprintf(buff, "PV: %d", PV);
  LCD_WriteTextXY(buff, 0, 1);
  TIM_Cmd(TIM3, ENABLE);  // Wlacz Tim2
}
Exemplo n.º 2
0
void TIM3_IRQHandler(void){
  char buff[16];
  sprintf(buff, "SP: %d", SP);
  LCD_WriteTextXY(buff, 0, 0);
  sprintf(buff, "PV: %d", PV);
  LCD_WriteTextXY(buff, 0, 1);
  TIM_ClearITPendingBit(TIM3,TIM_IT_CC3); // Clear interruption bit

}
Exemplo n.º 3
0
/*******************************************************************************
* Function Name  : RTC_IRQHandler
* Description    : This function handles RTC global interrupt request.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void RTC_IRQHandler(void)
{
  volatile unsigned long int stanRTC;
  static unsigned char stanRTCTekst[17] = {"0\0"};
  unsigned long int godziny, minuty, sekundy;

  if (RTC_GetITStatus(RTC_IT_SEC) != RESET)
  {
    // Czekaj na zakonczenie ewentualnych operacji zapisu do rejestrów RTC
    RTC_WaitForLastTask();

    // Wyczysc flage od przerwania RTC
    RTC_ClearITPendingBit(RTC_IT_SEC);

    // Zmiana stanu wyprowadzenia PB15 co 1s
    GPIO_WriteBit(GPIOB, GPIO_Pin_15, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_15)));

		stanRTC=RTC_GetCounter();
    //sprintf((char *)stanRTCTekst,"%16i\0",stanRTC);
    //LCD_WriteTextXY(stanRTCTekst,0,1);		   

    sekundy=stanRTC%60;               //liczba sekund od ostatniej pelnej minuty
    minuty=(long int)(stanRTC)/60;    //dzielenie calkowite, "usuniecie" sekund, czas pracy w samych minutach
    godziny=(long int)(minuty)/60;    //dzielenie calkowite, "usuniecie" minut, czas pracy w samych godzinach
    minuty=minuty%60;                 //liczba minut od ostatniej pelnej godziny

    sprintf((char *)stanRTCTekst,"%3i:%02i:%02i\0",godziny,minuty,sekundy);
    LCD_WriteTextXY(stanRTCTekst,7,1);	
  }
}
Exemplo n.º 4
0
void EditTd(uint8_t event){
  char buff[16];
  if(menu_event == E_UP)
    PID._Td += 0.1;
  if(menu_event == E_DOWN)
    PID._Td -= 0.1;
  sprintf(buff, "%.2f", PID._Td);
  LCD_WriteTextXY(buff, 0,1);
}
Exemplo n.º 5
0
int main(void)
{
  volatile unsigned long int i;
  int temperatura;
  unsigned char temperaturaTekst[8]={" 0,0 C\0"};
	static const unsigned char stopienSymbol[8] = {0x06,0x09,0x09,0x06,0x00,0x00,0x00,0}; //symbol stopnia

  //konfiguracja systemu
  RCC_Config();   
  GPIO_Config(); 
  NVIC_Config();  
  SPI_Config(); 
  /*Tu nalezy umiescic ewentualne dalsze funkcje konfigurujace system*/
  GPIO_ResetBits(GPIOB, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);		 

  LCD_Initialize();                                         //Inicjalizacja wysietlacza
  LCD_SetUserChar(1, 1, stopienSymbol);                     //Umiesc symbol stopnia pod kodem =1
  LCD_WriteCommand(HD44780_CLEAR);                          //Wyczysc wyswietlacz
  LCD_WriteText("Temp.:\0");        
  temperaturaTekst[5]=1;
  LCD_WriteTextXY(temperaturaTekst,7,0);                    //Wstaw do tekstu znak stopnia
  
  #define SPI_Mode_Slave_Mask ((unsigned short int)0xFEFB)  //Maska pozwalajaca wyzerowac bity trybu pracy wprost w rejestrzez SPIx->CR1
  while (1) {
    /*Tu nalezy umiescic glowny kod programu*/
    SPI1->CR1 |= SPI_Mode_Master;                           //Ustaw tryb master - wymusi to zmiane stanu NSS na niski
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); //Czekaj na dane
    temperatura = SPI_I2S_ReceiveData(SPI1);                //Odczytaj dane
    if ((temperatura&0x04)==0){                             //Sprawdz, czy zakonczono juz pierwszy pomiar po wlaczeniu ukladu TC77
      temperatura=0;                                        //Jesli nie, ustaw temp=0,  wprzeciwnym razie wynik bedzie bledny (>500stC)
    }
    temperatura = temperatura >> 3;                         //Usun 3 LSB
    SPI1->CR1 &= SPI_Mode_Slave_Mask;                       //Ustaw tryb slave - wymusi to zmiane stanu NSS na wysoki

		temperatura = (temperatura * 625)/100;                  //1 bit temperatury odpowiada 0,0625 stopnia
		sprintf((char *)temperaturaTekst, "%2d,%d C ", temperatura / 100, (temperatura % 100)/10 );
    temperaturaTekst[4]=1;                                  //Wstaw do tekstu znak stopnia
    LCD_WriteTextXY(temperaturaTekst,7,0);  
    for (i=0;i<4500000ul;i++); 
    GPIO_WriteBit(GPIOB, GPIO_Pin_15, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_15)));
  };
  return 0;
}
Exemplo n.º 6
0
void EditSP(uint8_t event){
  TIM_Cmd(TIM3, DISABLE);  // Wylacz Tim2
  char buff[16];
  if(menu_event == E_UP){
    if(SP < 4095)
      SP += 100;
  }
  if(menu_event == E_DOWN){
    if(SP > 0)
      SP-=100;
  }
  sprintf(buff, "%d", SP);
  LCD_WriteTextXY(buff, 0,1);
}
Exemplo n.º 7
0
void ChangeMenu(void)
{
  //przejdz do nastepnego stanu
  current_menu = menu[current_menu].next_state[menu_event];
  LCD_Clear();
  LCD_WriteTextXY(menu[current_menu].first_line, 0, 0);

  //wywolaj funkcje zwrotna
  if (menu[current_menu].callback)
    menu[current_menu].callback(menu_event);
  //wyswietl komunikat 
  //skasuj zdarzenie
  menu_event = E_IDLE;								
  TIM_Cmd(TIM2, DISABLE);  // Wylacz przerwania od Tim2

}
Exemplo n.º 8
0
void LCD_ShowPID(uint8_t event){
  char buff [16];
  sprintf(buff, "P=%.1fI=%.1fD=%.1f", PID._Kp, PID._Ti, PID._Td);
  LCD_WriteTextXY(buff, 0,1);
  TIM_Cmd(TIM3, DISABLE);  // Wy³acz TIM3
}