Arduino Polska Forum
ATTINY24, a PWM z wyjściem przeciwsobnym - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: ATTINY24, a PWM z wyjściem przeciwsobnym (/watek-attiny24-a-pwm-z-wyj%C5%9Bciem-przeciwsobnym)

Strony: 1 2 3


ATTINY24, a PWM z wyjściem przeciwsobnym - aj123 - 07-08-2020

Witajcie.
Sytuacja wygląda w ten sposób; potrzebuję zaprogramować uC attiny24 do generowania przebiegu PWM o zmiennym wypełnieniu na wyjściu OC1A oraz tego samego przebiegu, ale o odwróconym stanie i w zgodnej fazie na wyjściu OC1B. W zasadzie najprościej byłoby generować tylko jeden sygnał PWM, a następnie przy pomocy tranzystora PNP dorobić drugie, przeciwsobne wyjście, ale;
- skomplikuje to konstrukcję
- potrzebuję mieć również możliwość programowego ustawienia stanu niskiego na obu tych wyjściach (to też da się zrobić na tranzystorach, ale jeszcze bardziej skomplikuje układ, a miejsca jest niewiele)

Podsumowując; nie wiem w jaki sposób ustawić rejestry timera żeby na dwóch wyjściach generował komplementarny PWM w taki sposób aby nie występowała sytuacja, w której na obu wyjściach jednocześnie będzie stan wysoki. Natomiast, w moim przypadku, kwestię deadtime-u oraz częstotliwości generowanego przebiegu można pominąć.

Pamiętam, że kiedyś chyba zrobiłem coś podobnego na arduino z użyciem biblioteki TimerOne, ale w tym przypadku arduino jest jedynie programatorem dla wspomnianego uC, natomiast biblioteka TimerOne go nie obsługuje.

Będę wdzięczny za pomoc Smile


RE: ATTINY24, a PWM z wyjściem przeciwsobnym - Agregacik - 08-08-2020

A nie da się w ten deseń:
digitalWrite(OC1B,!digitalRead(OC1A));
Pomysł z kategorii zwariowanych Smile


RE: ATTINY24, a PWM z wyjściem przeciwsobnym - aj123 - 10-08-2020

Ty tak na poważnie?


RE: ATTINY24, a PWM z wyjściem przeciwsobnym - Agregacik - 10-08-2020

No nie próbowałem, zwykle jak odpowiadam to albo wiem albo to przetestowałem. Ta odpowiedź była na zasadzie spróbuj. Jak nie działa to do kosza i już.
Jak wiesz, że takie coś jest niemożliwe to napisz słówko.
Ja raczkuję w programowaniu i na pewno nigdy nie będę sprinterem Smile


RE: ATTINY24, a PWM z wyjściem przeciwsobnym - kaczakat - 11-08-2020

Zobacz ten temat: PWM przesuniete w fazie


RE: ATTINY24, a PWM z wyjściem przeciwsobnym - aj123 - 12-08-2020

Chyba nie do końca o to chodzi, a przynajmniej tak wynika z filmów zamieszczanych tam przez autorów.
Owszem, mają dwa wyjścia PWM i zależność, że jeśli na wyjściu A jest wypełnienie 25% to na wyjściu B jest 75%, ale brakuje tej synchronizacji, że stan wysoki na wyjściu B jest _tylko_ wtedy, gdy na wyjściu A jest stan niski.


RE: ATTINY24, a PWM z wyjściem przeciwsobnym - aj123 - 13-08-2020

Naprawdę, nikt nic?


RE: ATTINY24, a PWM z wyjściem przeciwsobnym - Jarewa0606 - 13-08-2020

Nie można timer ustawić na przepełnienie, i przerwaniu machać pinami?? Timer w locie prze konfigurować i mamy zmienną PWM i częstotliwość. A jedno wyjście jest synchronizowane z drugim i mozemy mieć przeciwne stany..

Tylko pewnie zbyt dużej częstotliwości nie można mówić..


RE: ATTINY24, a PWM z wyjściem przeciwsobnym - aj123 - 13-08-2020

Generalnie nie zależy mi na częstotliwości. Myślę, że te kilkaset Hz wystarczy. Jak ustawić ten timer?


RE: ATTINY24, a PWM z wyjściem przeciwsobnym - Jarewa0606 - 13-08-2020

to zalezy jaką chcesz częstotliwość

Ale to będzie wyglądało mniej więcej tak,

Ustaw timer1 do przerwania ISR(TIMER1_COMPA_vect)

w przerwaniu ISR(TIMER1_COMPA_vect) prze konfiguruj timer na przerwanie ISR(TIMER1_COMPB_vect)

a w przerwaniu ISR(TIMER1_COMPB_vect) prze konfiguruj go na przerwanie ISR(TIMER1_COMPA_vect)

i w każdym przerwaniu machaj pinami dwóch wyjść ....

w jednym i drugim przerwaniu będzie trzeba ustawić OCR1A i OCR1B a wypełnienie to własnie stosunek ich czasów... Wiec jak chcesz częstotliwość stała 1kHz to suma OCR1A i OCR1B musi być zawsze równa 1ms...