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



Teraz jest 15 sty 2025, o 14:04


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 12 kwi 2013, o 17:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2013
Posty: 236
Lokalizacja: Warszawa
Pomógł: 5

Ja nie rozumiem jednej sprawy, zgodnie z wzorami na czestotliowsc PWM mamy, ze maja byc one równe:
f_cloc/(256*N), N-preskaler. No i gites, ale zgodnie z książką mirka czestotliwosc z jaka wywolywane jest przerwanie od przepelnienia jest mniejsze 200 razy niż mozliwe przerwanie zwiazane z mozliwa czestotliwoscia dla zega 8MHz, to tak jakbym nie mógł wziąść preskalera 1, zgodnie z nastepnym wzorem :
F_OC = f_cloc/(2*N(1+OCRn)) przy warunku, ze f_OC/f_cloc <=0.5.
I tutaj jest moje główne pytanie, dlaczego?
Nie wiem, czy po prostu nózka z wbudowana mozliwoscia generowania PWM znacznie różni się od nózki mikrokontrolera bez takiej mozliwości. Bo to jakby generowanie sztuczne PWM na zwykłym wyjściu,

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 18:31 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

Ja np kompletnie nie rozumiem o co tu chodzi w tym pytaniu więc nie będę umiał pomóc :(

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 19:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2013
Posty: 236
Lokalizacja: Warszawa
Pomógł: 5

Na stronie 228 masz taki fajny opis matematyczny sposbu generacji PWM na któryms z kanałów, któregos portu. i ja po prostu nie rozumiem, czemu w pierwszym etapie zakładasz, że przerwanie będzie generowane z f=40 kHz.
Ja bym chciał w dalszym etapie sterowac z dowolnego piny servem i zastanawiam się, czy muszę dokonywac takich samych procedur. Czy po prostu zrobić to tak, że genrowac przerwanie co T= (50)^-1 i wtedy wysyłac o określonej szerokości impuls

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 19:52 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

Paul Dirac napisał(a):
Na stronie 228 masz taki fajny opis matematyczny sposbu generacji PWM na któryms z kanałów, któregos portu. i ja po prostu nie rozumiem, czemu w pierwszym etapie zakładasz, że przerwanie będzie generowane z f=40 kHz.


hmmm no tak załóżmy, że strzelam że 40 kHz bo akurat mi pasuje. Ale co za kłopot byłby żeby wynosiło np 30kHz ? wystarczyłoby dać np inny preskaler np =8 i wartość OCR=33 i nadal miałbyś PWM ale z częstotliwością ok 117Hz ...

mógłbym dać 50kHz - wtedy do OCR przy F_CPU 8MHz dałbym wartość np 156, wtedy bym miał częstotliwość PWM = ok 195H. Generalnie przy programowym PWM lepiej ustawać jak najniższą możliwą częstotliwość PWM ze względu na jak najmniejsze obciążenie procesora po prostu. Ja podałem ot tak - przykład dla 40kHz - ale przecież to nie jakiś wymóg.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 20:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2013
Posty: 236
Lokalizacja: Warszawa
Pomógł: 5

tam w tym drugim przypadku mamy 160, ale to nie wazne- przynajmniej już chyba czaje problem. Bo jesli mam dla serve okres 50hz to musze dobrac abym mial przerwanie z f=12800Hz. Ale pózniej jak przeskalowac, żebym miał 1,5ms skoro robie dla 20 ms?

W sumie sprytnie to robisz, takie próbkowanie sygnału dłuższego przykładając krótszy!
dobra dzięki za podpowiedz, przynajmniej więcej już rozumiem niż przed

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 20:25 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

Ano widzisz - przeskalować - i teraz dostrzegłeś istotę zagadnienia. Przy okazji ja mówiłem o PWM'ie do płynnego sterowania mocą (jasnością diody LED) itp ... a zrobienie programowego PWM'a na potrzebę obsługi serwa - to już trzeba się ciut więcej nagimnastykować - w taki prosty sposób - za pomocą takiego prostego programowego PWM'a ciężko będzie ci to zrealizować a jak już to będzie bardzo niestabilnie działać i serwo będzie drżało w najlepszym przypadku bo będzie za mała rozdzielczość PWM'a w zakresie regulacji serwa

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 21:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2013
Posty: 236
Lokalizacja: Warszawa
Pomógł: 5

działa-hehe
Styknęło rozpisac wszystko, bo my chcemy generowanie pwm o okresie 50Hz, czyli tzreba geneorwac przerwanie co 12,8kHz i potem w przerwaniu jesli wartosc narosnie np dla 2,1 ms: (2.1/20)*256 = 27 dla której na porcie mamy stan wysoki a dla reszty stan niski dla pwm 8-bitowego. A i obsługe przycisku, żebym mógł obrócic w lewo potem w prawo i na środek :D. Ale to chyba nie jest maksymalne wychylenie, znaczy rozdzielczośc jest zbyt mała, ale działa. To już teraz wiem, czym próbkowanie mniejsze tym dokładnośc jest lepsza.

Dobra wielkie dzięki.
Wszystko jeste napisane w książce, żeby tak umieć analizowac dokładnie to co się czyta.

jakies niezgoności praktyki ze wzorami z noty, podczas analizowania noty dla trybu CTC znalazłem wzór:
F_OCn = f_clock/(2*N*(1+OCRn)), N-preskaler.
Ja już nie rozumiem, skoro zgodnie z książką robimy cos postaci:
F_OCn = f_cloc/(N*OCRn), N-preskaler

zgodnie z założeniem to jest typowa funckja, w której wraz ze wzrostem OCRn F_OCn rośnie i odwrotnie. i teraz główne pytanie dlaczego są takie róznice typu wpisanie do rejestru OCRn dwa razy większej wartości -1 niż trzeba

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2013, o 08:49 
Offline
Użytkownik

Dołączył(a): 19 lut 2013
Posty: 26
Pomógł: 2

@Paul Dirac

Mógłbyś się podzielić tym działającym kodem ?

dzieki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2013, o 10:21 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

Paul Dirac obydwa wzory sa poprawne tylko dotycza dwoch roznych rzeczy. te pierwszy gdzie masz 2N to wzor na czestotliwosc generowana na wyjsciu OCx w trybie ctc. a drugi to na czestotliwosc wykonywania sie przerwania. i ten drugi to TO samo co w ksiazce ;) jak sobie policzysz i przeanalizujes. Jedynie w ksiazce zapomnialem jeszcze na koncu zrobic -1 zeby zmniejszyc wartosc OCRx


mozesz sobie zajrzec do najnowszej wersji MkAvrCalculatora do AVR Timer calc'a tam masz te wzorki

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO