Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATtiny25/45/85

Generator czasu martwego

obrazek

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

obrazek

Generator czasu martwego

Generator czasu martwego (ang. Dead Time Generator) został udostępniony dla par wyjściowych PWM timera/licznika 1, aby bezpiecznie sterować zewnętrznymi przełącznikami energii. Generator ten jest oddzielnym blokiem, który można podłączyć do timera/licznika 1 i używać do wprowadzania martwych przerw (okresów nienachodzących na siebie) dla par wyjść komplementarnych (OC1A-OC1A i OC1B-OC1B). Podział zadań jest następujący: timer/licznik generuje wyjście PWM, a generator czasu martwego generuje nienakładające się sygnały PWM pary wyjść z sygnału PWM timera/licznika. Dostępne są dwa generatory czasu martwego, po jednym dla każdego wyjścia PWM. Czas nienakładania się jest regulowany, a wyjście PWM i wyjście komplementarne PWM są ustawiane oddzielnie i niezależnie dla obu wyjść PWM.

Generacja czasu martwego opiera się na dwóch 4-bitowych licznikach zliczających w dół, które odliczają czas martwy, co pokazuje rysunek powyżej. Przed generatorem czasu martwego znajduje się dedykowany preskaler, który może dzielić zegar timera/licznika 1 (PCK lub CK) przez 1, 2, 4 lub 8. Udostępnia to duży zakres czasów martwych do generowania. Preskaler jest sterowany dwoma bitami DTPS1[1:0] z rejestru we/wy pod adresem 0x23. Blok posiada również detektor zboczy narastającego i opadającego, który jest używany do wyzwalania okresu zliczania czasu martwego. W zależności od zbocza jedno z przejść przy zboczach narastających OC1x lub OC1x jest opóźniane, aż licznik zliczy do zera. Komparator jest używany do porównywania licznika z zerem i zatrzymywania wstawiania czasu martwego po osiągnięciu zera. Licznik jest ładowany 4-bitową wartością DT1xH lub DT1xL z rejestru we/wy DT1x, zależnie od zbocza na wyjściu generatora PWM generator, gdy rozpoczęte zostało wstawienie czasu martwego.

Długość okresu zliczania ustawia użytkownik przez wybór ustawień preskalera w rejestrze 0x23 i wybór wartości czasu martwego w rejestrze we/wy DT1x. Rejestr DT1x składa się z dwóch 4-bitowych pól: DT1xH
i DT1xL, które oddzielnie kontrolują okresy czasu martwego wyjścia PWM i jego wyjścia komplementarnego. W ten sposób narastające zbocza na końcówkach OC1x i OC1x mogą posiadać różne okresy czasu martwego. Czas martwy jest ustawiany jako liczba preskalowanych taktów zegarowych generatora czasu martwego.

Na początek:  podrozdziału   strony 

Opis rejestrów

DTPS1 – Timer/Counter1 Dead Time Prescaler Register 1 – Rejestr 1 preskalera czasu martwego timera/licznika 1

Bit 7 6 5 4 3 2 1 0  
0x23 DTPS11 DTPS10 DTPS1
Zapis/Odczyt O O O O O O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 1:0 – DTPS1[1:0]: Dead Time Prescaler – Preskaler czasu martwego

Dedykowany preskaler czasu martwego znajdujący się przed generatorem czasu martwego może dzielić zegar timera/licznika 1 (PCK lub CK) przez 1, 2, 4 lub 8 udostępniając szeroki zakres czasów martwych, które mogą być generowane. Preskaler czasu martwego sterowany jest dwoma bitami DTPS1[1:0], które definiują współczynnik podziału preskalera wg poniższej tabelki.

DTPS11 DTPS10 Podział zegara timera/licznika 1
0 0 przez 1 (bez dzielenia)
0 1 przez 2
1 0 przez 4
1 1 przez 8

DT1A – Timer/Counter1 Dead Time A – Czas martwy A dla timera/licznika 1

Bit 7 6 5 4 3 2 1 0  
0x25 DT1AH3 DT1AH2 DT1AH1 DT1AH0 DT1AL3 DT1AL2 DT1AL1 DT1AL0 DT1A
Zapis/Odczyt Z/O Z/O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Rejestr A wartości czasu martwego jest 8-bitowym rejestrem do zapisu/odczytu.

Opóźnienie czasu martwego na końcówkach OC1A i OC1A jest ustawiane przez wartość w rejestrze DT1A. Rejestr składa się z dwóch pól, DT1AH[3:0] i DT1AL[3:0], po jednym dla każdego komplementarnego wyjścia. Stąd różne czasy martwe można ustawić dla zbocza narastającego wyjścia OC1A i OC1A.

Bity 7:4 – DT1AH[3:0]: Dead Time Value for OC1A Output – Wartość czasu martwego dla wyjścia OC1A

Czas martwy wyjścia OC1A. Opóźnienie czasu martwego jest ustawiane jako liczba preskalowanych taktów timera/licznika. Minimalny czas martwy wynosi zero, a maksymalny jest równy okresowi preskalowanego zegara timera/licznika przemnożonemu przez 15.

Bity 3:0 – DT1AL[3:0]: Dead Time Value for OC1A Output – Wartość czasu martwego dla wyjścia OC1A

Czas martwy wyjścia OC1A. Opóźnienie czasu martwego jest ustawiane jako liczba preskalowanych taktów timera/licznika. Minimalny czas martwy wynosi zero, a maksymalny jest równy okresowi preskalowanego zegara timera/licznika przemnożonemu przez 15.

DT1B – Timer/Counter1 Dead Time B – Czas martwy B dla timera/licznika 1

Bit 7 6 5 4 3 2 1 0  
0x24 DT1BH3 DT1BH2 DT1BH1 DT1BH0 DT1BL3 DT1BL2 DT1BL1 DT1BL0 DT1B
Zapis/Odczyt Z/O Z/O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Rejestr B wartości czasu martwego jest 8-bitowym rejestrem do zapisu/odczytu.

Opóźnienie czasu martwego na końcówkach OC1B i OC1B jest ustawiane przez wartość w rejestrze DT1B. Rejestr składa się z dwóch pól, DT1BH[3:0] i DT1BL[3:0], po jednym dla każdego komplementarnego wyjścia. Stąd różne czasy martwe można ustawić dla zbocza narastającego wyjścia OC1B i OC1B.

Bity 7:4 – DT1BH[3:0]: Dead Time Value for OC1B Output – Wartość czasu martwego dla wyjścia OC1B

Czas martwy wyjścia OC1B. Opóźnienie czasu martwego jest ustawiane jako liczba preskalowanych taktów timera/licznika. Minimalny czas martwy wynosi zero, a maksymalny jest równy okresowi preskalowanego zegara timera/licznika przemnożonemu przez 15.

Bity 3:0 – DT1BL[3:0]: Dead Time Value for OC1B Output – Wartość czasu martwego dla wyjścia OC1B

Czas martwy wyjścia OC1B. Opóźnienie czasu martwego jest ustawiane jako liczba preskalowanych taktów timera/licznika. Minimalny czas martwy wynosi zero, a maksymalny jest równy okresowi preskalowanego zegara timera/licznika przemnożonemu przez 15.

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.