Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 22 mar 2026, o 23:50


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 10 paź 2015, o 17:22 
Offline
Użytkownik

Dołączył(a): 05 sty 2014
Posty: 46
Pomógł: 0

Witam,
Chcę uruchomić 16bit PWM na Timerze1 atmega32 i oczywiście mam z tym problem.
Jak dla mnie w dokumentacji jest za dużo informacji i nie potrafię wyciągnąć to co istotne.
Mam taki kawałek kodu, ale coś to nie chce działać. Diodę mam podpiętą anodą do pinu PD4.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



I w tym momencie dioda powinna świecić na maxa, a nie świeci i w ogóle zmiana wypełnienia nie daje żadnej zmiany :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 paź 2015, o 17:44 
Offline
Użytkownik

Dołączył(a): 06 maja 2013
Posty: 25
Pomógł: 0

Timer jest 16 bitowy, PWM to raczej max 10bit.
Ta dioda to w konfiguracji jako wyjście podpięta do tego pinu działa? Logiczne 0 lub 1 włącza/wyłącza.

Zobacz tu: http://forbot.pl/blog/artykuly/programo ... pwm-id5021
wszystko wyjaśnione w temacie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 paź 2015, o 17:59 
Offline
Użytkownik

Dołączył(a): 05 sty 2014
Posty: 46
Pomógł: 0

Przeprasza, za kłopot. Głupi błąd zrobiłem :P aż wstyd się przyznać. Program jest dobry, tylko podczas wgrywania programu do procka miałem zaznaczony nie ten projekt co trzeba.
A ja wyczytałem gdzieś w necie, że Timer1 może pracować jako 16bitowy PWM, tylko wtedy mamy do dyspozycji jedno wyjście OC1B do dyspozycji ;)
Pozdrawiam i dzięki za zainteresowanie tematem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 paź 2015, o 21:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 gru 2011
Posty: 204
Lokalizacja: Boguchwała
Pomógł: 3

Miałem podobne problemy i ten twój wątek pomógł mi go rozwiązać dzięki.

Nie wstydż się błędów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 paź 2015, o 21:00 
Offline
Użytkownik

Dołączył(a): 05 sty 2014
Posty: 46
Pomógł: 0

Jednak mam kolejny problemik.
Potrzebuję 16bitowego PWMa o częstotliwości 96kHz, a jest mi to wszystko potrzebne do sterowania silniczkiem BLDC o maksymalnych obrotach 10tys obr/min.
I potrzebuję osiągnąć dużą dokładność w regulacji prędkości.
Tak sobie czytam w bluebooku ten fragment o programowym pwmie i nie do końca kumam o co w tym chodzi.
Dlaczego np dzielimy obliczoną częstotliwość na 256 jeśli wybieramy rozdzielczość 8bit ?

Czyli jeśli ja mam na procku atmega32 zegar 11059200Hz i obliczę wartość TCNT2 = 141,
bo 11059200Hz/115 = 96166Hz = 96,166kHz, to (255-115)+1 = 141.
Ale teraz jeśli moje 96166Hz podziele przez moją rozdzielczość 65535 to mi nie pasuje.
Moje pytanie brzmi jak osiągnąć na avr PWM 16bit 96kHz ?


Acha dodam tylko, ze próbowałem na timerach sprzętowych. Najbliższa częstotliwość do 96kHz jaką udało mi się uzyskać to 86,4kHz na Timer2, preskaler 128, zegar 11MHz.
Ale tylko Timer2 ma możliwy preskaler 128 i niestety jest 8bitowy :/
P.S.
Nie wiem czy mam tutaj pisać, czy zakładać nowy temat ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2015, o 20:42 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

Witajcie.
Też próbuje uruchomić Timer1 w trybie 15 FAST PWM i zgodnie z dokumentacją Atmegi32 nie daje rady

Kod powinien być taki, a nie działa
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a taki działa taki ale nie jako FAST PWM tylko 10bit PWM
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2015, o 21:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

A jest jakiś konkretny powód dlaczego chcesz użyć trybu 15 Fast Pwm a nie któregoś z trybów 5, 6 lub 7?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2015, o 21:50 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

nie ma - to jest do ściemniania podświetlenia wyświetlacza więc każdy będzie dobry - ten10bit w zupełności wystarczy, ale z ciekawości chciałbym wiedzieć o co chodzi z tym trybem 15 i dlaczego nie da się go ustawić. Ciekawe jest to że w tym trybie OCR1A przyjmuje wartośći od -32768 do 32768. Tutaj może być błąd, ale z datasheetu nie mogę wyczytać niczego co pomogłoby włączyć ten tryb,

------------------------ [ Dodano po: 26 minutach ]

Ale coś dalej jest nie tak - nawet z tym trybem 10 bitowym (Tryb 3) - jeśli ustawię prescaler na 1
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to wtedy podświetlanie na wyświetlaczu jakby faluje - a kiedy nie ustawię prescalera to zgodnie z dokumentacją "Brak sygnału zegarowego – licznik jest zatrzymany"
- to jakim cudem działa ten PWM? I to działa poprawnie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO