LinkedIn YouTube Facebook
Szukaj

Wstecz
IoT

STM32 i czujnik koloru TCS3200

Obsługa przerwania SysTick ogranicza się do cyklicznego przełączania aktualnie wybranego filtru oraz odczytaniu zliczonych impulsów z rejestru licznika. Poniżej przedstawiono fragment kodu, który wykonywany jest w czasie wybrania jednego filtru. Analogiczne działanie realizowane jest przy pozostałych filtrach. Program do przełączania stanu pracy realizowany jest przy wykorzystaniu funkcji case.

void SysTick_Handler(void)
{
	extern uint16_t licznik;
	extern uint16_t FreqRed;
	extern uint16_t FreqGreen;
	extern uint16_t FreqBlue;
	extern uint16_t FreqClear;

	switch(licznik)
	{
		case 7 :
			//odczyt wartości licznika
			FreqGreen = TIM_GetCounter(TIM2);
			//przypisanie nowej wartości do zmiennej
			licznik = 0;
		break;
		case 6 :
			//zmiana wybranego filtru światła układu TCS3200D
			TCS3200_DISABLE;
			TCS3200_Green;
			TCS3200_ENABLE;
			//przypisanie nowej wartości do zmiennej
			licznik = 7;
		break;
		...
	}

	//wyzerowanie licznika
	TIM_SetCounter(TIM2,0);
}

Na początku obsługi przerwania mamy informację na temat wcześniej zadeklarowanych zmiennych, ich deklaracja została wykonana w pliku main.c. Na końcu obsługi przerwania mamy polecenie zerujące licznik TIM2.

Następnie w pętli głównej programu realizowana jest inicjalizacja wyświetlacza oraz wypełnieni go odpowiednią zawartością. Po tym działaniu program przechodzi do nieskończonej pętli, w czasie jej trwania przeprowadzana jest aktualizacja wartości na wyświetlaczu.
Mariusz Dziębowski