Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

3 * pwm w atmega8

wacha
-
-
Posty: 95
Rejestracja: 22 lis 2009, o 21:19
Lokalizacja: biele

3 * pwm w atmega8

Postautor: wacha » 10 gru 2010, o 09:20

Witam wszystkich mam pytanie odniśnie z pwm w atmega8 nie wiem w jaki sposOb urzyć wszystkich trzech pwm w attiny2313 to jest proste bo jest jedno pwm , a tu potrzeba mi trzech byłbym wdzięczny za pomoc za podanie jakiegoś przykładu w bascomie jak to zrobić albo podanie linku gdzie morzna poczytać na ten temat. :607:

awatar100
-
-
Posty: 415
Rejestracja: 27 cze 2003, o 07:55
Lokalizacja: Gdańsk
Kontaktowanie:

Postautor: awatar100 » 10 gru 2010, o 15:19

e np :

Kod: Zaznacz cały

$regfile = "m8def.dat" $crystal = 8000000 Dim I As Byte Dim Czas As Byte Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1 ' dwa kanaly pwm na pb1 i pb2 Config Timer2 = Pwm , Prescale = 1 , Pwm = On , Compare Pwm = Clear Up ' trzeci kanal na pb3 Czas = 1 Do For I = 0 To 255 Pwm1a = I Pwm1b = I Ocr2 = I Waitms Czas Next I incr Czas loop
Chyba bedzie dzialc ... pisane z glowy

wacha
-
-
Posty: 95
Rejestracja: 22 lis 2009, o 21:19
Lokalizacja: biele

Postautor: wacha » 10 gru 2010, o 17:44

Dzięki serdeczne właśnie o to mi chodziło teraz bende mógł popróbować z tymi pwm :607: .

matrix
-
-
Posty: 342
Rejestracja: 7 maja 2010, o 14:02
Lokalizacja: Sochaczew
Kontaktowanie:

Postautor: matrix » 11 gru 2010, o 15:01

Tylko 3 sztuki PWM? Mało. Można mieć znacznie więcej. Można mieć tyle PWM ile wyprowadzeń procesora i to w procku jakim się chce.

Jedyny wymóg to użycie jednego timera.

wacha
-
-
Posty: 95
Rejestracja: 22 lis 2009, o 21:19
Lokalizacja: biele

Postautor: wacha » 11 gru 2010, o 18:05

Wzasadziw to mi bendą potrzebne właśnie trzy pwm.A w jaki to sposób morzna tyle mieć wyjść pwm jle wyprowadzeń procesora?

matrix
-
-
Posty: 342
Rejestracja: 7 maja 2010, o 14:02
Lokalizacja: Sochaczew
Kontaktowanie:

Postautor: matrix » 11 gru 2010, o 18:16

A w jaki to sposób morzna tyle mieć wyjść pwm jle wyprowadzeń procesora?
Pisząc programowy PWM. Działa na tyle świetnie że nie korzystam ze sprzętowego, a do tego ma tą przewagę nad sprzętowym że przedział ustawiania jest od 0 do 100%, a w zasadzie odwrotnie od 100% - najmniej PWM do 0% - najwięcej PWM.

Awatar użytkownika
Tomasz Gumny
-
-
Posty: 685
Rejestracja: 4 lut 2004, o 23:31
Lokalizacja: Trzcianka/Poznań

Postautor: Tomasz Gumny » 11 gru 2010, o 18:43

Programowy PWM zawsze będzie osiągał niższą częstotliwość przebiegu a zatem w przypadku pracy jako przetwornik C/A będzie wymagał dłuższego całkowania i będzie wolniejszy. Do tego dochodzą zupełnie nieprzewidywalne skoki czasu trwania stanu niskiego (i wysokiego), gdy procesor wykorzystuje również inne przerwania. Nawet jeśli nie będzie nic innego robił, to trudno jest uzyskać na dwóch (i więcej) programowych wyjściach PWM przebiegi o zbliżonym wypełnieniu.
Przy odrobinie staranności sprzętowy PWM również osiąga 0 i 100% wypełnienia.

matrix
-
-
Posty: 342
Rejestracja: 7 maja 2010, o 14:02
Lokalizacja: Sochaczew
Kontaktowanie:

Postautor: matrix » 11 gru 2010, o 18:59

Nie będę się spierał, bo i nie ma o co. Może kolega wie lepiej niż ja. W każdym razie nie zawiodłem się jeszcze na programowym PWM'ie wykorzystując również w trakcie dwa pozostałe timery w atmega 8. Jak dla mnie programowy PWM jest świetny.

Czajnik
-
-
Posty: 264
Rejestracja: 17 cze 2004, o 15:40
Lokalizacja: Kraków
Kontaktowanie:

Postautor: Czajnik » 12 gru 2010, o 20:24

Może się i będzie nadawał programowy.. ale do bardzo prostych zastosowań... czytaj jak napisano wcześniej do małych częstotliwości i małych rozdzielczości. Imo programowego używa się jak nie mamy dostępnego timera z wyjściami pwm, mamy ich za mało albo żywcem nam się nie chce porutować płytka od nóżki z PWMem.

Pozdrawiam
Czajnik

matrix
-
-
Posty: 342
Rejestracja: 7 maja 2010, o 14:02
Lokalizacja: Sochaczew
Kontaktowanie:

Postautor: matrix » 12 gru 2010, o 22:27

Może się i będzie nadawał programowy.. ale do bardzo prostych zastosowań... czytaj jak napisano wcześniej do małych częstotliwości i małych rozdzielczości.
Nie wiem czy to poważny projekt, ale Mirek zastosował go w swoim projekcie Mirlight'a zapodając (chyba) 24 programowe PWM'y.

Czajnik
-
-
Posty: 264
Rejestracja: 17 cze 2004, o 15:40
Lokalizacja: Kraków
Kontaktowanie:

Postautor: Czajnik » 13 gru 2010, o 08:53

Poważny projekt wcale nie musi się równać skomplikowanym (czytaj bardziej wymagającym) zastosowaniom PWMa. Wymieniona przez Ciebie ilość PWMów niejako zmusza do innego rozwiązania niż korzystanie ze sprzętowego udogodnienia ale wątpię aby koledze np był potrzebny PWM 8 bitowy z częstotliwością wystarczającą np do zagrania jakiejś melodyjki.

Z szybkich przeliczeń

asm:
wejście w przerwanie - 4 cykle
inkrementacja licznika - 1
porównanie bajtu - 2
zmiana stanu portu sądzę ze skokami ze 6 cykli
wyjście z przerwania 4 cykle

Czyli na szybkiego masz 17 razy wolniejszy PWM niż sprzętowy. Jeśli doliczysz jakiekolwiek odkładanie rejestrów na stos podczas wykonywania programu do tego pobranie z pamięci wartości OCR i licznika to robi się z tego 30-40 cykli na każdy krok PWMa.

Żeby nie było sam czasem używam programowego PWMa choćby do sterowania jasnością 8 segmentów pojedynczego wyświetlacza 8segmentów ale to co daje się osiągnąć wystarcza co najwyżej do tandetnego oszukania ludzkiego oka... bo jak już poruszać wyświetlaczem to widać klatkowanie. Konkretnie przy 8 MHz i niezbyt skomplikowanym programie towarzyszącym osiągnąłem 62 Hz i 20 kroków PWMa - Program napisany w Bascomie.Nikt nie mowi że programowe PMWy są złe... ale sam widzisz że nie jest to bogata opcja i chyba wszystkim najbardziej chodzi o to że programowo można robić wiele PWMów... ale na pewno ani nie szybkich ani nie o wysokiej rozdzielczości.

Pozdrawiam
Czajnik

wacha
-
-
Posty: 95
Rejestracja: 22 lis 2009, o 21:19
Lokalizacja: biele

Postautor: wacha » 14 gru 2010, o 10:04

Mnie osobiście potrzeba trzech pwm i to najlepiej sprzętowych 1pwm ma podawać poprzez filtr rc napięcie wzorcowe na stabilizator lm723 2pwm podaje napięcie poprzez filtr rc na komparator sterujący prądem a 3pwm steruje wentylatorem całe urządzenie będzie czymś w rodzaju zasilacza cyfrowego z regulacją napięcia i prądu wyjściowego. :607:

Awatar użytkownika
Tomasz Gumny
-
-
Posty: 685
Rejestracja: 4 lut 2004, o 23:31
Lokalizacja: Trzcianka/Poznań

Postautor: Tomasz Gumny » 14 gru 2010, o 10:54

W takim wypadku używaj sprzętowych wyjść PWM a jeśli ich zabraknie, to programowy może sterować jedynie wentylator.

Bras
-
-
Posty: 11
Rejestracja: 12 sty 2011, o 23:28
Lokalizacja: Pruszcz Gdański

Postautor: Bras » 16 sty 2011, o 16:53

Witam
Mam pytanie odnośnie PWM, czy można w jakiś sposób ustawić sprzętowy PWM aby pracował w taki sposób: 0,75 ms stan wysoki, 9,25 ms stan niski. Nie wiem czy jestem w błędzie, ale nie udało mi się tego zrobić w oparciu o sprzętowe możliwości i zrobiłem to programowo.
Pozdrawiam Paweł

Awatar użytkownika
Tomasz Gumny
-
-
Posty: 685
Rejestracja: 4 lut 2004, o 23:31
Lokalizacja: Trzcianka/Poznań

Postautor: Tomasz Gumny » 16 sty 2011, o 17:41

Czy możesz zdradzić o jaki procesor i z jakim zegarem chodzi? Oczywiście jeśli to nie tajemnica...

Awatar użytkownika
j_bravo
-
-
Posty: 189
Rejestracja: 14 wrz 2005, o 16:30
Lokalizacja: Lublin
Kontaktowanie:

Postautor: j_bravo » 16 sty 2011, o 18:43

A może użyć Atmega88 ? kosztuje tyle samo co Atmega8 a ma aż 6 PWM.

Bras
-
-
Posty: 11
Rejestracja: 12 sty 2011, o 23:28
Lokalizacja: Pruszcz Gdański

Postautor: Bras » 16 sty 2011, o 23:09

Witam
W moim przypadku to Atmega8 8Mhz

Awatar użytkownika
Tomasz Gumny
-
-
Posty: 685
Rejestracja: 4 lut 2004, o 23:31
Lokalizacja: Trzcianka/Poznań

Postautor: Tomasz Gumny » 17 sty 2011, o 00:00

Przy kwarcu 8MHz, po preskalerze /8 wyjdzie 1MHz. Ustawiając TOP na 9999 (zatem musi to być T1) uzyskasz częstotliwość PWM równą 100Hz. Wpisując 750 (lub 749) do odpowiedniego OCR1 uzyskasz wymagany przebieg.

Bras
-
-
Posty: 11
Rejestracja: 12 sty 2011, o 23:28
Lokalizacja: Pruszcz Gdański

Postautor: Bras » 25 sty 2011, o 00:36

Witam
Tomku co oznacza "Ustawiając TOP na 9999", gdzie tą wartość wpisać, jak ją przeliczać. Przejrzałem, wydaje mi się dość dokładnie, zawartość z książki M. Wiązania Prog. mikrokon. w języku Bascom i nic o TOP nie znalazłem. Mam nadzieję że dobrze zrozumiałem dział o taimerach, przeliczanie itp. no a z tym TOPem nie mogę się pozbierać.
Proszę o wyjaśnienie
Paweł

Awatar użytkownika
Tomasz Gumny
-
-
Posty: 685
Rejestracja: 4 lut 2004, o 23:31
Lokalizacja: Trzcianka/Poznań

Postautor: Tomasz Gumny » 25 sty 2011, o 00:44

Zależnie od wybranego trybu pracy wartość TOP może być przechowywana w rejestrze OCR1A lub ICR1 - strona 101 pdf-a ATmega8.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 26 gości