ZL27ARM: obsługa cyfrowego termometru TC77

Odczytywanie zmierzonej wartości temperatury z układu TC77 i wysyłanie danych do wyświetlacza LCD odbywa się podczas obsługi przerwania SysTick. Na listingu 2 zamieszczono funkcję obsługi tego przerwania. Odczyt temperatury jest realizowany przez funkcję TC77_GetTemp. Należy pamiętać, że wartość temperatury jest zapisana w 13 bardziej znaczących bitach, gdzie najstarszy to bit znaku. Należy więc wykonać przesunięcie o 3 bity w prawo, dodatkowo 2 najmniej znaczące bity są zerowane. W wyniku tych operacji uzyskiwana jest dokładność 0,25°C. Do przechowywania wartości zmierzonej temperatury w °C jest wykorzystywana ta sama zmienna, do której wcześniej była odczytywana wartość temperatury z układu TC77. Obliczenie temperatury jest realizowane przez iloczyn rejestru i liczby 625 w wyniku czego zmienna temp_tc77 przechowuje wartość temperatury postaci 10-4°C. Wcześniej jest sprawdzane, czy rejestr nie ma ustawionego bitu informującego o temperaturze ujemnej. W przypadku temperatur poniżej zera, aby uzyskać poprawny wynik, należy wartość zanegować i dodać 1 oraz usunąć wyzerować bit znaku.

 

List. 2

Dla zwiększenia przejrzystości w programie zastosowano trzy funkcje obsługi układu TC77. Pierwsza z nich (TC77_Init) służy do inicjalizacji układu, druga (TC77_GetTemp) do odczytania temperatury, trzecia funkcja (TC77_GetID) do pobrania ID układu. Funkcja pobrania ID układu jest niemal identyczna, jak pobrania wartości rejestru temperatury – różnica polega jedynie na tym, że w przypadku tej drugiej zaraz po pobraniu rejestru temperatury następuje zakończenie transmisji. Na listingu 3 przedstawiono funkcję pobrania ID układu TC77.

 

List. 3

Interfejs SPI w mikrokontrolerze STM32 pracuje jako Master, tak więc w czasie odbioru na linię SCK jest wystawiany sygnał o określonej częstotliwości. W celu uniknięcia tego, program po zakończeniu transmisji wyłącza interfejs SPI wykorzystując polecenie SPI1->CR1 &= ~SPI_CR1_SPE (zerujące bit SPE). Natomiast rozpoczęcie transmisji wymaga ustawienia tego bitu, jest to realizowane przez polecenie SPI1->CR1 |= SPI_CR1_SPE. Należy także zwrócić uwagę na przełączanie z trybu odbioru do nadawania realizowane przez polecenie SPI1->CR1 |= SPI_CR1_BIDIOE, powodujące ustawienie bitu BIDIOE. Wyzerowanie tego bitu powoduje przejście do trybu odbioru, polecenie ma postać SPI1->CR1 &= ~SPI_CR1_SPE.  Wartość rejestru jest zwracana poleceniem return.

Mariusz Dziębowski
m.dziebowski@interia.pl

Odnośniki:
Moduł wyświetlacza LCD KAmodLCD1
Zestaw uruchomieniowy ZL27ARM
Karta katalogowa układu TC77

Do pobrania

O autorze