ZL27ARM: detekcja kolorów za pomocą czujnika TCS3200
Sygnał wyjściowy czujnika TCS3200D ma postać przebiegu prostokątnego o stałym wypełnieniu i zmiennej częstotliwości. Do pomiaru częstotliwości użyto TIMER2 mikrokontrolera, który sprawdzany jest sekwencyjnie w odpowiednim czasie wyznaczonym przez SYSTICK w celu odczytania liczby impulsów przypadających na jednostkę czasu, a tym samym wyznaczenia wartości składowych światła. Konfiguracja liczników TIM2 oraz SYSTICK przebiega jak poniżej:
//konfiguracja licznika TIM2 TIM_TimeBaseStructure.TIM_Period = 9999; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //konfiguracja sygnału taktujacego TIM2 TIM_TIxExternalClockConfig (TIM2, TIM_TIxExternalCLK1Source_TI1,TIM_ICPolarity_Rising, 0x0); //wlaczenie licznika TIM_Cmd(TIM2, ENABLE); //pobranie informacji o częstotliwosci RCC_GetClocksFreq(&RCC_Clocks); //konfiguracja SysTick SysTick_Config(RCC_Clocks.SYSCLK_Frequency/100);
Po wykonaniu konfiguracji timerów oraz wyświetlacza LCD program w nieskończonej pętli przekształca dane dla odpowiedniego filtru koloru pobrane z licznika TIM2 w obsłudze przerwania SYSTICK na 4 jednocyfrowe cyfry w kodzie ASCII. Przykładowy kod dla zmiany liczby czterocyfrowej na 4 liczby jednocyfrowe w ASCII:
//aktualizacja informacji, filtr - Clear tmp = FreqClear; Clear3=(tmp % 10) + 0x30;//jednosci tmp = tmp /10; Clear2=(tmp % 10) + 0x30;//dziesiatki tmp = tmp / 10; Clear1=(tmp % 10) + 0x30;//setki tmp = tmp / 10; Clear0=(tmp % 10) + 0x30;//tysiace
Zmienna FreqClear, podobnie jak FreqRed, FreqGreen oraz FreqBlue, jest aktualizowana w obsłudze przerwania licznika SYSTICK. W przerwaniu tym jest programowo zmieniany filtr koloru czujnika i po ściśle określonym czasie wyznaczonym przez SYSTICK następuje odczytanie wartości TIM2 oraz jego wyzerowanie, następnie rozpoczęcie pomiaru dla innego filtru koloru. Przy każdym wykonaniu przerwania mierzona jest inna składowa, ostatni pomiar tyczy się składowej światła dla filtru green po czym od początku sprawdzane są dane z TCS3200D dla filtru niebieskiego, czerwonego, przeźroczystego oraz zielonego:
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 wartosci licznika
FreqGreen = TIM_GetCounter(TIM2);
//przypisanie nowej wartosci do zmiennej
licznik = 0;
break;
case 6 :
//zmiana wybranego filtru swiatla ukladu TCS3200D
TCS3200_DISABLE;
TCS3200_Green;
TCS3200_ENABLE;
//przypisanie nowej wartosci do zmiennej
licznik = 7;
break;
case 5 :
//odczyt wartosci licznika
FreqClear = TIM_GetCounter(TIM2);
//przypisanie nowej wartosci do zmiennej
licznik = 6;
break;
case 4 :
//zmiana wybranego filtru swiatla ukladu TCS3200D
TCS3200_DISABLE;
TCS3200_Clear;
TCS3200_ENABLE;
//przypisanie nowej wartosci do zmiennej
licznik = 5;
break;
case 3 :
//odczyt wartosci licznika
FreqRed = TIM_GetCounter(TIM2);
//przypisanie nowej wartosci do zmiennej
licznik = 4;
break;
case 2 :
//zmiana wybranego filtru swiatla ukladu TCS3200D
TCS3200_DISABLE;
TCS3200_Red;
TCS3200_ENABLE;
//przypisanie nowej wartosci do zmiennej
licznik = 3;
break;
case 1 :
//odczyt wartosci licznika
FreqBlue = TIM_GetCounter(TIM2);
//przypisanie nowej wartosci do zmiennej
licznik = 2;
break;
default :
//zmiana wybranego filtru swiatla ukladu TCS3200D
TCS3200_DISABLE;
TCS3200_Blue;
TCS3200_ENABLE;
//przypisanie nowej wartosci do zmiennej
licznik = 1;
break;
}
TIM_SetCounter(TIM2,0);
}

Aleksandra Krajewska opowiada o nowym rozdziale w rozwoju firmy EAE Elektronik – w tym budowie nowej hali produkcyjnej
KIOXIA wprowadza urządzenia z wbudowaną pamięcią flash QLC UFS 4.1 dla rozwiązań mobilnych
Urządzenie Sentinum wykorzystuje moduł SiP firmy Nordic do raportowania danych z czujników wewnętrznych i zewnętrznych 


![https://www.youtube.com/watch?v=kmvM5hVSzCM Piata już edycja konferencji Hardware Design Masterclasses dla elektroników zaskoczyła frekwencją, tym bardziej, że spotkanie było dwudniowe. Film jest krótką relacją z wydarzenia, bazującą na wypowiedziach prelegentów. [materiał redakcyjny] Zapraszamy do obejrzenia!](https://mikrokontroler.pl/wp-content/uploads/2026/01/Rafal-tytulowe.png)


