• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
PWM - Sygnały przesunięte w fazie
#18
Licznik/zegar jest taktowany zewnętrznie, lub poprzez układ preskalera i w zależności od jego ustawienia, tiknięcie dla licznika jest co 8, 64, 256 i 1024 impulsów zegara, albo 8, 32, 64, 128, 256 i 1024, albo jeszcze inaczej.
Licznik 8bit liczy do 256, a 16bit do 65535, albo można też ustawić do jakiej liczby ma maksymalnie liczyć nasz licznik (TOP), oraz od jakiej liczy zacząć liczenie (BOTTOM).
Jeśli więc ustawimy preskaler na przykład na 256, to dla kwarcu 16MHz, nasz licznik policzy w ciągu sekundy do 62500. I już z góry widać, że licznik ośmiobitowy przepełni się i restartuje 244.14 razy na sekundę. Takie przepełnienie może wywołać przerwanie i zmienić stan wyjścia zegara.
Ale to już pewnie wiesz.

TCCR1 - rejestr kontrolny (Timer/Counter Control Register), jest rejestrem szesnastobitowym. Oznacza to, że ma szesnaście bitów kontrolnych. Szesnaście przełączników ustawiających różne tryby naszego licznika/zegara.
Podzielony jest na dwa ośmiobitowe rejestry TCCR1A i TCCR1B. 

TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<COM1B0) | (1<<WGM11); 
Bierzemy sobie datasheet i w tabeli COMPARE OUTPUT MODE czytamy:
COM1A1 - startujemy ze stanu wysokiego, a gdy licznik osiągnie wartość wpisaną do OCR1A ustawiamy stan niski.
COM1B1 i COM1B0 - to samo co dla kanału A, tylko że odwrócona faza. Starujemy ze stanu niskiego.

WGM11 - WGM mode 2.

TCCR1B = (1<<WGM13) | (1<<CS10); 
WGM13 - WGM mode 8. To było mi potrzebne, aby ustawić TOP na ICR1.
CS10 - preskaler ustawiony na 1.

ICR1   = 400; - no właśnie TOP jest ustawiony na ICR1, więc jak licznik doliczy do TOP to zmienia się OC1x.

Przesunięcie fazy jest realizowane w taki sposób:
OCR1A = X;
OCR1B = ICR1 - X;


Nie wiem, czy dobrze to wytłumaczyłem, nie mam talentu pedagogicznego.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Wiadomości w tym wątku
PWM - Sygnały przesunięte w fazie - przez akudom - 16-07-2018, 20:46
RE: PWM - Sygnały przesunięte w fazie - przez es2 - 16-07-2018, 22:22
RE: PWM - Sygnały przesunięte w fazie - przez es2 - 17-07-2018, 09:43
RE: PWM - Sygnały przesunięte w fazie - przez es2 - 17-07-2018, 20:03
RE: PWM - Sygnały przesunięte w fazie - przez es2 - 19-07-2018, 09:36
RE: PWM - Sygnały przesunięte w fazie - przez es2 - 22-07-2018, 10:50
RE: PWM - Sygnały przesunięte w fazie - przez es2 - 23-07-2018, 12:14
RE: PWM - Sygnały przesunięte w fazie - przez Robson Kerman - 23-07-2018, 08:45

Skocz do:


Przeglądający: 1 gości