Untitled
user_1610350
plain_text
2 years ago
1.1 kB
5
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...