Obsługa przetwornika ADC w mikrokontrolerach STM32

Na początku programu następuje inicjalizacja poszczególnych elementów jak: RCC, GPIO, przerwanie SysTick, konwerter ADC oraz inicjalizacja wyświetlacza. Zasadnicza część programu jest realizowana w nieskończonej pętli. Na początku tej pętli jest wykonywany odczyt rejestru po skończonym pomiarze konwertera ADC. Odczyt jest realizowany wraz wykonaniem iloczynu logicznego, który zeruje cztery najmniej znaczące bity. W następnym kroku jest obliczane napięcie – wykorzystywane są tu zmienne typu float. Kolejnym etapem jest wyznaczenie wartości poszczególnych cyfr wartości napięcia, są to obliczenia matematyczne z wykorzystaniem rzutowania zmiennych na zmienną typu uint8_t. Na końcu uzyskane dane są prezentowane na podłączonym wyświetlaczu.
Szczególną uwagę należy zwrócić na sposób prezentowania wyniku danych za pomocą diod LED. Operacja ta jest realizowana przez zapis do rejestru BSRR odpowiedniego portu. Rejestr ten jest 32-bitwy i realizuje dwie funkcje. Za pierwszą z nich odpowiedzialne jest 16 starszych bitów, ich ustawienie powoduje ustawienie stanu niskiego na wskazanych wyjściach. Drugą funkcję realizuje 16 młodszych bitów, które odpowiedzialne są za ustawienie wskazanych wyjść w stan wysoki.
W programie należy zwrócić także uwagę na inicjalizację konwertera ADC, kod przedstawiono na listingu 2.

List. 2

Jest to klasyczna inicjalizacja przetwornika, uwagę należy zwrócić, iż po inicjalizacji ciągła praca przetwornika ADC jest wyłączona. Jak zostało zaznaczone wcześniej rozpoczęcie pojedynczej konwersji przetwornika ADC jest realizowane przez programowe ustawienie odpowiedniego bitu rejestru. Operacja ta jest realizowana w czasie obsługi przerwania od SysTick, kod obsługi przerwania został przedstawiono na listingu 3.

List. 3

Mariusz Dziębowski
m.dziebowski@interia.pl

Odnośniki:
Moduł wyświetlacza LCD KAmodLCD1
Zestaw uruchomieniowy ZL27ARM

Do pobrania

O autorze