Generatory PWM w Attiny 2313
- matelektronik
- Użytkownik
- Posty: 161
- Rejestracja: 01 sie 2006, 11:48
- Lokalizacja: Przezchlebie
- Kontakt:
Generatory PWM w Attiny 2313
Witam !!!
W dokumentacji Attiny 2313 wyczytalem ze procek ma cztery kanały pwm. W jaki sposob mam to rozumiec? Czy moge dolaczyc do wyjsc OC... np cztery diody LED i one moga byc sterowane kazda osobno?
pzdr
W dokumentacji Attiny 2313 wyczytalem ze procek ma cztery kanały pwm. W jaki sposob mam to rozumiec? Czy moge dolaczyc do wyjsc OC... np cztery diody LED i one moga byc sterowane kazda osobno?
pzdr
-
ZbeeGin
Owszem, posiada 4 kanały PWM.
Dwa z nich są sterowane przez licznik TIMER1 i mogą mieć rodzielczość 8, 9, 10 lub też 16 bitów. Wyjściami są końcówki OC1A, OC1B. Wypełnienie przebiegów z tych wyjść może być róźne - lecz podstawa czasu jak i rozdzielczość będzie wspólna.
Kolejne dwa kanały są sterowane przez licznik TIMER0 i mają rodzielczość 8 bitów. Wyjściami są końcówki OC0A, OC0B i tak jak w przypadku poprzedniego licznika wypełnienie może być różne a podstawa czasu jak i rodzielczość wspólna.
O trybach pracy PWM obu liczników możesz poczytać we wspomnianej dokumentacji.
Jeśli chcesz 4 kanały PWM to należy wybrać w obu licznikach taki sam tryb i podział sygnału zegarowego przez prescaler. Na przykład: prescaler przez 8, rozdzielczość 8-bit, FastPWM i za pomocą rejestrów OCR1A, OCR1B, OCR0A, OCR0B regulować niezależnie poziom wypełnienia na 4 wspomnianych końcówkach.
Dwa z nich są sterowane przez licznik TIMER1 i mogą mieć rodzielczość 8, 9, 10 lub też 16 bitów. Wyjściami są końcówki OC1A, OC1B. Wypełnienie przebiegów z tych wyjść może być róźne - lecz podstawa czasu jak i rozdzielczość będzie wspólna.
Kolejne dwa kanały są sterowane przez licznik TIMER0 i mają rodzielczość 8 bitów. Wyjściami są końcówki OC0A, OC0B i tak jak w przypadku poprzedniego licznika wypełnienie może być różne a podstawa czasu jak i rodzielczość wspólna.
O trybach pracy PWM obu liczników możesz poczytać we wspomnianej dokumentacji.
Jeśli chcesz 4 kanały PWM to należy wybrać w obu licznikach taki sam tryb i podział sygnału zegarowego przez prescaler. Na przykład: prescaler przez 8, rozdzielczość 8-bit, FastPWM i za pomocą rejestrów OCR1A, OCR1B, OCR0A, OCR0B regulować niezależnie poziom wypełnienia na 4 wspomnianych końcówkach.
-
ZbeeGin
Zapraszam do lektury noty katalogowej układu Tiny2313, strona 2: http://www.atmel.com/dyn/resources/prod ... oc2543.pdfmichal17 pisze:a na których końcówkach są oc0a, b i oc1b ??
To naprawdę nie boli...
- matelektronik
- Użytkownik
- Posty: 161
- Rejestracja: 01 sie 2006, 11:48
- Lokalizacja: Przezchlebie
- Kontakt:
-
ZbeeGin
- gazmajster
- -
- Posty: 30
- Rejestracja: 01 sie 2006, 22:13
- Lokalizacja: Z Zagłębia Drewna
- Kontakt:
-
ZbeeGin
Rzeczywiście jest to dość zawiłe w szczegółach.gazmajster pisze:Ja tak przy okazji, a jak się ma sprawa PWM w Tiny26 z poziomu Bascoma
Bo jakos nie mogę dojść końca.
Z poziomu BASCOM-a da się użyć trybu PWM licznika TIMER1, lecz całą konfigurację trzeba wykonać samemu, poprzez bezpośrednią modyfikację rejestrów licznika. Żadne polecenie CONFIG TIMER1 nie zadziała poprawnie już z tego faktu, że prescaler tego licznika ma o wiele więcej podziałów niż wynika ze składni tego polecenia. A poza tym może także pracować w trybie asynchronicznym.
ATTiny26 posiada dwa 8-bitowe kanały PWM których komplementarne wyjścia są dostępne na zewnątrz. W istocie tryb komplementarny jest używany wyłącznie przy sterowaniu przetwornicami. Na wyjściach pojawiają się przebiegi lustrzane z przerwą zwaną czasem martwym. Można też skonfigurować PWM by generował pojedynczy sygnał tylko na "pozytywnych" (OC1A, OC1B) końcówkach wyjściowych, gdy "negatywne" (~OC1A, ~OC1B) są wyłączone.
Ważną rolę odgrywa rejestr OCR1C który razem z preskalerem pozwala na regulację częstotliwości pracy układu PWM w zakresie 20-500kHz. Nie należy go mylić z trzecim nie dostępnym na zewnątrz kanałem PWM!
Układ pracuje tylko w jednym trybie: Fast PWM - więc licznik liczy tylko w górę do wartości wpisanej do OCR1C, po czym zeruje się i zaczyna od nowa. Zmiany wypełnienia przebiegu wyjściowego regulujemy oczywiście przez wpisywanie danych do rejestrów OCR1A, OCR1B.
- gazmajster
- -
- Posty: 30
- Rejestracja: 01 sie 2006, 22:13
- Lokalizacja: Z Zagłębia Drewna
- Kontakt:
-
ZbeeGin
Żadnego assemblera nie będziesz potrzebował. Wszystko zrobisz z poziomu BASCOMa przez prostę operacje przypisań lub ustawianie/zerowanie bitów.gazmajster pisze:Dzięki za odpowiedz myślę , że tu należałoby użyć assemblera a w tym języku to ja jestem za cienki
Przykład:
Kod: Zaznacz cały
Set TCCR1B.6
TCCR1A = &b10100011
TCCR1B = &b00000100
OCR1A = &h7F
OCR1B = &h03
OCR1C = 255Z grubsza to co napisałem wcześniej włączy licznik TIMER1 w trybie PWM zliczający sygnał zegarowy podzielony przez 8. Wyjścia OC1A, OC1B zostaną podłączone do generatorów i będą generować impulsy o wypełnieniu 50% i 1%. Wyzeruje sobie także preskaler, przed uruchomieniem licznika.
p.s. Nie testowałem tych paru instrukcji. Napisałem to przeglądając tylko notę katalogową. Zatem mogłem coś przeoczyć.