Untitled
user_1610350
plain_text
3 years ago
1.1 kB
6
Indexable
uint32_t czas=0; // Licznik czasu, zliczajacy sekundy od handlera
uint8_t sekunda=0; // Licznik przerwan ( do 10)
uint8_t sekunda_OK=0;
int i=0;
void SysTick_Handler(void) // Podprogram obslugi przerwania od SysTick'a
{
sekunda+=1; // Licz interwaly równe 100ms
if(sekunda==10)
{
sekunda=0;
sekunda_OK=1; // Daj znac, ze minela sekunda
}
}
void ADC0_IRQHandler()
{
temp = ADC0->R[0]; // Odczyt danej i skasowanie flagi COCO
if(!wynik_ok) // Sprawdź, czy wynik skonsumowany przez petlę główną
{
wynik = temp; // Wyślij wynik do pętli głównej
wynik_ok=1;
}
DAC_Load_Trig(temp); // Załadowanie nowej danej i wyzwolenie przetwornika C/A
}
uint32_t czas_trwania[20];
while(1)
{
if(sekunda_OK)
{
if(wynik_ok)
{
wynik = wynik*adc_volt_coeff;
if (wynik>=1){
czas+=1;
czas_trwania[i]=time;
LCD1602_SetCursor(2,0);
sprintf(display,"%02d",czas);
LCD1602_Print(display);
sekunda_OK=0;
wynik_ok=0;
}
Editor is loading...