Po przepełnieniu licznika on się zeruje automatycznie? W większości trybów licznik zeruje się podczas przepełnienia. Wyjątkiem są niektóre tryby PWM, np. Phase Correct PWM Mode: The phase correct PWM mode is based on a dual-slope operation. The counter counts repeatedly from BOTTOM to MAX and then from MAX to BOTTOM.
A ten Twój timer1 nie liczy może w dwie strony? Mode 11, PWM, phase correct.
To nie jest bug w architekturze tylko nieznajomość dokumentacji. Przeczytaj sobie rozdział dotyczący Fast PWM - tam masz to dokładnie opisane. Jak komuś to przeszkadza to powinien użyć trybu Phase Correct PWM.
No to wszystko jasne :):) WAVR studio PWMy sa skopane lekko mowiac ;) Ojj ile ja sie nasiedzialem zanim sie o tym przekonalem:) Na AVR freaks otrzymalem potwierdzenie o tym bugu;)
Nie załączyłeś schematu, ani nie napisałeś jak podłączona jest dioda do OC2 (PB3), a od tego zależy czy zaświeca się gdy na pinie jest 0 czy 1 - istotne dla wyjaśnienia Twojego problemu. PWM W tym fragmencie: - używasz CS10 choć w tym rejestrze nie występuje, jednak ustawia brak preskalera - czy tak chciałeś?
Umieścić to w jednej linijce? O to chodzi? Niekoniecznie :wink:. TCCR1B = _BV(CS12) | _BV(CS10); // preskaler TCCR1B |= _BV(WGM10); // PWM, Phase Correct, 8bit
Edit: 14:48 (at)mpier dobra wskazówka, jednak chodzi w trybie PWM, Phase Correct, 8-bit clk/64 . Przy czym nadal nie rozumiem czemu wartość przeze mnie wpisana ginie, a nie przepisze się w kolejnym cyklu. To będzie chyba to. Nie ma się kiedy zapisać, jeśli timer nie zdążył się "przekręcić". Wstaw odpowiednio długie delay() po zapisie do OCR1A, to się...
Kod który zamieściłem jest na ATTiny2313 więc nie powinno być problemu z przeniesieniem na ATMega8 - wystarczy sprawdzić i ew. zmienić nazwy rejestrów. Mam nadzieję że Ci się przyda. void PWMint(void) { DDRB |= (1 << PORTB2); DDRD |= (1 << PORTD5); // jako wyjscia DDRB |= (1 << PORTB4); TCCR0A =...
Twoje wpisy do rejestrów są "prawie " poprawne. TCCR1A |= (1<<COM1A0); Zobacz w tabeli 46 jaki tryb działania końcówki OC1A włączyłeś... Teraz już rozumiesz dlaczego jest 2 razy mniejsza?
Niestety nie mam oscyloskopu. Chce mierzyć wartość prądu jaki pobiera odbiornik który w tym przypadku jest baterią superkondensatorów. Prąd jest mi potrzebny do dostosowania wypełnienia które steruje napięciem. Do obwodu dołączyłem cewke żeby trochę wygładzić przebieg prądu. Mniej więcej wygląda to tak że ustawiam maksymalny prąd oraz napięcie, zwiększam...
Nie prościej te diody sterować bezpośrednio z mikrokontrolera? Z ATtiny13 na 3 nogach wysterujesz 6 LED, zostają jeszcze dwie linie do przekaźnika i jakiegoś np. guzika. Zostając nawet przy Twoim rozwiązaniu: do czego jest potrzebny PWM "phase correct"? "Fast" nie wystarczy? Bez problemu możesz użyć timera i do generowania PWM i do odmierzania czasu,...
Ldi Acc, 1;(...) Out TCCR1A, Acc Tym sposobem ustawiasz licznik w tryb PWM, Phase Correct, 8-bit . Strona 120, Tabelka 53 pdf-a od ATmega8515 . -- Pozdrawiam, Daniel
Tylko dioda zamiast się ściemnić, jest wrażenie jakby z dużą częstotliwością(jak da oka) mrugała... Co trzeba zmienić aby dioda się ściemniła? Preskaler ustaw na 1 (albo na 8) i włącz tryb FastPWM. Obecnie masz preskaler 64 i tryb Phase Correct. Dlatego dioda miga około 30Hz. Twoja Biblia: http://www.atmel.com/Images/doc2543.pdf
Sprawdź jak zareaguje gdy dodasz jedną jedynkę zamiast zera w linii 53 czyli Tccr0a = &B11110001 'phase correct zamień na Tccr0a = &B11110011 'fast pwm
CTC to nie jest PWM. Ciebie interesuje Phase Correct PWM - zobacz animację: http://mikrokontrolery.blogspot.com/2011... wtedy jakość dźwięku będzie najlepsza. Będziesz także potrzebował drugi timer do podana następnej próbki z założoną częstotliwością próbkowania dźwięku. To od wypełnienia zależy napięcie jakie uzyskam na wyjściu...
PWM jest proste jak drut, i nie ma tu nic "szczegółowego". Co ma być szczegółowe? Liczenie wartości średniej? "Konkrety i szczegóły", dotyczą urządzeń, w których PWM jest stosowane(regulatory, przetwornice, falowniki). Nie dotyczą PWM samego w sobie.
Przykład z Bascoma na ATmega8 do sterowania serwem modelarskim: $regfile = "m8def.dat" $crystal = 8000000 'on chip clock speed Osccal = &HC1 'uC 8MHz internall clock New calibration byte Tccr2 = &B01100110 'PWM2, clear down, phase correct, prescale 256 -> 16ms Acsr = &B10000000 'Analog Comparator disable Dim W As Byte 'Servo position ....
Tu masz rację. Myślałem o Timerach 8 bitowych bo tu było pytanie o Timer0/2 Timer1 jest konfigurowany jako Phase Correct a Timer2 jako Fast PWM https://obrazki.elektroda.pl/8915388600_...
Dzięki... i rozumiem, że Counter0 liczy do 255, ... W trybie , który przedstawiłem - tak , ale w innych trybach, gdzie TOP może stanowić rejestr OCR0A , jest inaczej. a wypełnienie przebiegu wynosi Pwm0a/255? Dokładnie rzecz ujmując Pwm0a/256 Z jaką częstotliwością działa PWM (domyślnie chyba 500kHz)? Da się ją regulować? Mówiąc ogólnie - częstotliwość...
He he he, racja :D I drugie pytanie: Czy normalne jest to, jeśli na obu rejestrach wpisze wartość 0x00 to wyjścia PWM na których są diody LED będą lekko świeciły??? The extreme values for the OCR0A Register represents special cases when enerating a PWM waveform output in the fast PWM mode. If the OCR0A is set equal to BOTTOM, the output will be a narrow...
"Phase correct" = zgodny fazowo. Skądinąd po "trybie sklepu" w telewizorze chyba już nic mnie nie zdziwi (po angielsku "store mode", czyli "zapamiętaj tryb"). ;)
Witajcie. Tak sobie czytam datasheet ATtiny44, sekcję dotyczącą Timera1 (strona 110.) i trybu PWM (Phase Correct i Phase & Freq. Correct) i mam wątpliwości dotyczące ustawień. Jak wiadomo wypełnienie przebiegu ustawiamy korzystając z rejestru porównania OCR1A natomiast wartość TOP definiująca pośrednio częstotliwość przebiegu PWM równa jest jednej z...
Można uśredniać przebieg z rezystora pomiarowego (filtrem RC) i uzyskać w ten sposób wartość średnią prądu. I w zależności od niego sterować PWMem. Ale wymaga to specjalnego algorytmu żeby uzyskać stały prąd. Można też dać coś podobnego do regulacji na wzmacniaczu operacyjnym. Czyli każdej wartości zmierzonego prądu przyporządkować jakąś wartość PWMa....
Phase Correct.
phase correct mode, odpoweni top i masz. Dzielić chyba umiesz/.
(at)seba_x:A co to za bzdura?:> • Peripheral Features – Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode A co do pytania autora, nie, zliczanie umożliwiają tylko dwa pierwsze timery. Trzeciego można używać jako wewnętrznego. Nie tylko...
No jeżeli jest Phase Correct to ok. To wystarczy zadeklarować przerwanie za pomocą On Timer. A potem je obsługiwać odpowiednio.
Gdybyś pokazał kod to zapewne byłoby łatwiej, niektórzy mogą myśleć, że zbyt łatwo :) [syntax=c] #include <avr/io.h> //silniki #define MOT1A (1<<PA0) #define MOT2A (1<<PA1) #define PWM1 (1<<PD5) #define PWM2 (1<<PD4) int main(void) { DDRD |= PWM1; PORTB |= PWM1; //silmik1 DDRA |= MOT1A | MOT2A; //wyjście PORTA |= MOT2A;...
Sprawdź może tryb FAST albo CTC, bo dla Phase Correct są tam jakieś ograniczenia.
Kombinujecie jak koń pod górkę. Po co te kombinacje z IFem dla wartości PWM = 0? Wystarczy przecież włączyć PWMa w trybie Phase Correct. qubak zresztą już do tego doszedł tylko jeszcze nie wie o co tam chodzi. Wszystko jest w datasheecie :D Ale po krótce wyjaśnię. CTC to tryb w którym licznik może mieć (uznajmy że po prostu ma) skrócony cykl. Czyli...
Możesz mi powiedzieć dlaczego do TCCR1A podstawiasz jako binarną liczbę a do TCCR1B jako szesnastkową...? To błąd tylko tu na forum czy masz tak w programie...? Tak jak teraz PWM masz skonfigurowane jak PWM, Phase Correct, 10-bit... Wartość TOP stała na 0x03FF... Prescal 1... czyli brak... Może problem jest w samej zasadzie działania trybu Phase Correct...?...
Witam, chciałbym wyzwalać PWM z zewnętrznego wejścia Atmegi dla TC0 będzie to pin T0 PD4. Przy ustawieniu na preskaler wszystko działa jak ustawiam na External to nić się nie dzieje. Jeszcze coś trzeba ustawić? [syntax=c]//Inicjalizacja PWM TCCR0A |= (0 << WGM01) | (1 << WGM00); //ustawienie 8-bit PWM, Phase Correct TCCR0B |= (0 <<...
W trybie fast PWM timer1 może działać w 8, 9 lub 10-bitowym trybie. Skoro dla timera0 udało Ci się dobrać preskaler do 488 Hz, to na timerze1 będzie dokładnie tak samo... No chyba, że użyłeś trybu phase correct - używasz wtedy phase correct dla PWM timera1 i ustawiasz sobie wartość TOP za pomocą rejestru ICR1 - zostają OCR1A i OCR1B na generowanie PWM....
AVRy przy zerowym wypełnieniu PWM generują krótką szpilkę W trybie FastPWM. W trybie Phase Correct PWM już nie.
we wszystkich przypadkach wybralem PWM, Phase Correct.(8 bit) w kazdym razie tak mi sie wydaje
Ustawiam preskaler na 8 i mam częstotliwość prawie 300 Hz a potrzebuje 2 razy tyle jak to zrobić, bo przecież nie mogę ustawić preskalera na 4? Czyli przynajmniej jedno można stwierdzic, że taktujesz processor 1,2 MHz; a nie jak twierdziłeś i zakładałeś wczwśniej; 9600 000(!)_ Twoja konfiguracja timera0: Phase Correct PWM i otrzymany wynik częstotliwości...
(nie mam w tym momencie czasu aby przyjrzeć się temu bliżej, postaram się odpowiedzieć następnym razem pełniej) Masz napisane: TCCR1A = (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0); //8bit PWM, phase correct TCCR1B = (1<<CS12) | (1<<WGM12); 8-bit PWM, phase correct ma wlaczone tylko WGM10. Tak jak Ty masz WGMy ustawione to wynika,...
Bo PWM0 ustawiłeś na Fast PWM 8 bit a PWM1 na PWM Phase Correct 10 bit.
Czy Twój PWM jest "phase-correct", jak np. w przypadku regulatorów do silników elektrycznych? Jeśli nie, to może widoczne miganie podczas zmiany współczynnika wypełnienia wynika z jednoczesnej zmiany fazy? Szczerze mówiąc nie wiem. Tak jak wspomniałem na początku posta układ logiczny poszukałem w internecie
A działa w trybie Phase Correct? #define PWMH ((PINB)&(1<<PB3)) mi się nie podoba. Co to miało robić?
Wzmacniacz Harman Kardon HK 6950R, objawy: potencjometr balance zbytnio się przekręca, ale funkcjonuje, na zdjęciu jest tak zlutowany nie wiem czy wcześniej było coś robione. Wciskanie przycisków Phase Correct Loudness, Subsonic, Tone Defeat i Obejście Preampu powodują puknięcia w kolumnach oraz jak nie ma puszczonego dźwięku, to słychać wyraźne brumienie...
Z tego co widzę - radzisz sobie z angielskim, więc najlepiej poczytaj dokumentację od mikrokontrolera. PWM jest tam fajnie opisany. Dodano po 1 Druga sprawa - wklej cały kod, z tego co wkleiłeś - nie widać w jaki sposób uruchamiasz tą funkcję pwm(); Dodano po 4 I tak na pierwszy rzut oka nie widzę, żebyś "zapalał" w rejestrze TCCR1A bity COM1A1, COM1A0:...
Witam. Pierwszy Twój wzór dotyczy: Phase Correct PWM Mode drugi to: Fast PWM mode
TCCR1A: 00000001 TCCR1B: 00000011 Wychodzi na to że jest w trybie: PWM, Phase Correct, 8-bit, dzięki :D
Ja sobie robię sprzętowo czas martwy na zwykłym AVR'ku np. M8 itp. Odpalam pierwszy timer w trybie Phase and Frequency Correct PWM. Końcówki OC1A i OC1B ustawiam do pracy w przeciwfazie. Dla jednego kanału np. do OCR1A dodaję stała wartość do zadanego wypełnienia, a do OCR1B taką samą wartość odejmuję. (albo na odwrót). Czas martwy można więc regulować...
Przeczytaj ten piękny manual do procesora. Zawiera on wszystkie odpowiedzi na pytania - nawet te, których jeszcze nie zadałeś. Nie zapomnij pominąć Phase Correct Mode .
Piszę program w AVRStudio 4.13SP2. Działanie programu jest (a właściwie powinno być) następujące: Mikrokontroler generuje sygnał PWM o częstotliwości 50Hz i czasie trwania od 0,5ms do 2,5ms. Sygnał wysyłany jest na wyprowadzenie OC1A. Przy wyzerowaniu licznika podczas zliczania w dół wywoływane jest przerwanie włączające przetwarzanie A/C. Wewnątrz...
Witam. Na forum jestem nowy, ale Atmege8 gryzę już od roku:). Zakładam że czytałeś datasheet'a od Atmega8 i niestety nie udało Ci się zrozumieć.Jeżeli tak to Ci pomogę. Po pierwsze w Atmega8 masz trzy timery/countery: -Timer0 8bit -Timer1 16bit -Timer2 8bit Timer1 i Timer2 możesz wykorzystać jako PWM,gdyż mają wbudowaną taką funkcje. Wiadomo że 16bitowy...
Trzeba ustawić tryb phaze correct i nie będzie problemu. Dla dla timer'a 0 ustawiamy: WGM00 i w zalezności od wyjścia COM0A0, COM0A1 albo COM0B0, COM0B1. Odpowiedni pin trzeba ustawić jako wyjście. TCCR0A |= (1 << COM0A1) | (1 << COM0A0); // zeruj gdy równe OCR0A TCCR0A |= (1 << WGM00); // PWM phase correct...
W sumie to napisałem post tylko dlatego że może się to komuś przydac. Teraz jak przeszukałem anglieskojęzyczne fora to oczywiście znalazłem "PWM spike gluitch". Zjawisko to nie zwystępuje podobno w phase correct PWM. Oczywiście slowa o tym nie ma w DS-ie.
Postanowiłem wznowić po dłuższym już czasie ten swój post. Wróciłem do napisania sterowania serwami FS90R. W zasadzie to mam pytanie. Czy te proste serwa FS90R działają tylko w trybie Fast PWM. Napisałem najprościej w programie jak można tylko: Rejestr TCR1A, TCR1B, wartości do OCR1A, B, ICR1 itd. Nic więcej. Przetestowałem wszystkie chyba tryby. Można...
Dlaczego W rejestrze "TCCR1A" ustawiane są bity odpowiedzialne za wyjście OC1B ? Czy generalnie sterwowanie prędkością poprzez zmianę zmiennej OCR1x jest wogóle dobrym rozwiązaniem ? Bardzo proszę o odpowiedzi. Większośc timerów w AVR a szczególnie 16-bitowe posiadają dwa kanały nazwane A i B, które możesz wykorzystac do generowania 'odmiennych' fal...
Panowie, bo trochę się pogubiłem a nie mam też za bardzo możliwości wklepania poprawek do programu (nie to miejsce i nie ta godzina)... wg. tego co pisze kolega tronics i patrząc na tabelkę to też wygląda mi to na ustawienie "phase correct", więc nadal nie wiem do końca w którą stronę iść. Zmyłka.. :D
Czy ktoś z was wykorzystywał Timer1 do generowania fali PWM w trybie PWM Phase Correct oraz w trybie PWM Phase and Frequence Correct. Czytałem w tym zakresie noty katalogowe ale niestety nie bardzo zrozumiałem o co chodzi. Głowny mój problem to moment wpisu do rejestru OCR1A. Byłbym bardzo wdzięczny za kilka słow wyjaśnienia oraz kawałek kodu w asm....
licznik 2 sobie liczy od 0 do 255 ( 8 bitowy), obecna wartość w TCNT2. w OCR2A mogę ustawić wartość do jakiej ma liczyć i co ma zrobić jak do niej doliczy? Jak wybiorę 0 0 to to porównanie jest wyłączone i licznik liczy do przepełniania się ( i ustawi flagę przepełnienia ). Jak ustawie 1 0 czyli Clear OC2A on compare match to na tym bicie pojawi się...
..nie ma to aż tak dużego związku ze sprawą i fajnie że udało się ją rozwiązać, ale ktoś czytający ten watek później mógłby pomyśleć że na ośmiobitowym timerze przy 16MHz zegarze minimalna częstotliwość to 61Hz więc tylko wtrącę że wybierając tryb "Phase correct" otrzymujemy 30Hz bo timer przy TOP się tylko zawija :D
Kurcze co do tego PWm myślałem, że mam Phase Correct PWM Mode a wtedy dzieli się poprzez 510 a nie 256. Co do negatora to oczywiście masz rację :| w "innych" miejscach miałem poprawione (podczas testów #define k1_off PORTB&=~_BV(k1) ) #define ... kiedyś o tym pamiętałem...
Musisz wyregulować na podstawie obrazu kontrolnego ILDA . -Correct scanner speed -Correct damping -Correct Phase -Correct XY Orientation -Correct Gain -Correct Centering Ale pierwsze co to ustaw prędkość skanowania galv w HE Laser. Widzisz trzeba było kupić galva ode mnie przynajmniej byś nie miał takich durnych zabaw na początek...... Powodzenia w...
Specjalnie dla kolegi mirka zapisałem tą linijkę w sposób dla niego czytelny, nie jest to jak widać tryb CTC tylko PWM z phase correct. Bardzo dziękuję, i przepraszam że jestem takim dyslektykiem wzrokowym .... teraz łatwiej mi czytać.... No więc jeśli teraz twój kod wygląda tak?: [syntax=c]#define F_CPU 12000000UL #include <avr\io.h> #include...
Ustawiłem sobie w kodzie W=128 i sygnał wygląda tak: http://obrazki.elektroda.pl/3128156700_1... Nie wiem czy wiesz jak działa Phase Correct. Timer liczy aż napotka wartosć OCR i zmienia stan pinu. Jedzie jednak dalej i jak dojedzie do końca licznika to tego pinu nie wyłącza tylko zawija się i zaczyna liczyć w dół. Kiedy znów napotka...
... zobrazowane poszczególne tryby pracy Timera w tym Fast PWM Mode i Phase Correct PWM Mode. Może tutaj nieco informacji: http://mikrokontrolery.blogspot.com/2011... Zaraz mi się dostanie za terminologie. Poziom słownictwa dostosowany do poziomu pytań :)
W ogóle nie masz pojęcia do czego służą fusebity. Zdania pisze się z dużej litery.
Witam wszystkich! Aktualnie bawię się trybami PWM atmegi32. Na timerze0 robię phase correct pwm, zaś na timerze2 zegar systemowy. PWM jest software'owy i ustawianie poziomu logicznego znajduje się w przerwaniu od OCR0. Czas systemowy to po prostu inkrementowana zmienna globalna w przerwaniu od OCR2, gdzie licznik pracuje w trybie CTC. Mój problem polega...
W tym programie T0 pracuje tak jak powinno a T1 co prawda w trybie 8-bitowym, ale nie fast PWM tylko chyba Phase Correct. Tzn. zlicza najpierw w górę, a potem w dół. Jak to kolega wogóle stwierdza, że licznik pracuje w ten sposób? Jeśli symulacją z AVR Studio to wszystko wyjaśnia.
Nie mam nawet pojęcia czy da się ustawić na atmedze 328P małych częstotliwości PWM, Przecież możesz napisać kod, który ustawi stan pinu na wysoki na czas t, a następnie stan niski na czas T-t. To chyba bez sensu, gdyż potrzebuje PWM w trybie "Phase correct". Dodatkowo muszę zmieniać współczynnik wypełnienia np. potencjometrem. Ale dziękuję za pomysł,...
Może to: Note: 1. A special case occurs when OCR0B equals TOP and COM0B1 is set. In this case, the Compare Match is ignored, but the set or clear is done at TOP. Refer to Phase Correct PWM Mode for details. Sprawdź czy działa Fast PWM.
Generalnie to ja juz nie mam pojecia co jest nie tak i juz mnie to irytuje powoli :( A jest tak: PWM, Phase Correct, 8,9,10-bit dziala dobrze w symulatorze i w rzeczywistosci, dioda mryga mozna zmienic wypelnienie, PWM, Phase and Frequency Correct dziala w symulatorze a w rzeczywistosci nie:( tak jak pisalem dioda albo swieci albo nie, w zaleznosci...
Skoro to timer 16 bitowy to najprościej wygenerować przebieg sprzętowo, bez żadnych przerwań - ustawić timer w tryb PWM albo CTC z OCR1A lub ICR1 jako wartość maks, preskaler 2 , wartość top 41279, wartość rejestru Compare Match (OCR1B lub OCR1A) 39999 albo 1279 w zależności od ustawionej polaryzacji, wyjście oczywiście musi być albo OC1A albo OC1B....
Początkową wartość Timera1 liczymy: Częstotliwość / preskaler i wynik odejmujemy od 65536 (bo timer1 liczy do tylu) czyli 16000000 / 1024 daje 15625 65536 - 15625 = 49911 I tą wartość ładujemy do timera1 A gdzie ty to wynalazles ze Timer1 "liczy do tylu" ? Jedynie w trybie 'Phase Correct PWM' oraz 'Phase and Frequency Correct PWM ' timer liczy w dwu...
Timer w Tiny25-Tiny85 jest trochę inny. Na przykład może być taktowany z szyny peryferii 64MHz. Może też generować "dead time" dla różnego rodzaju aplikacji które przełączają klucze czyli robi drobne przerwy przełączając, by nie było nigdy przypadku kiedy włączone są na raz dwa tranzystory (ten wyłączony musi mieć czas by się zamknąć). Bascoma ulubionym...
Tak, musisz podłączyć wszystkie piny zasilające, nie ważne czy używasz wewnętrznego ADC czy nie. już dodane na schemacie, dzięki. Wypada dać tranzystory gdyż prąd w każdej z gałęzi bedzie wynosił 100mA (przy założeniu, że kazda struktura dostanie 20mA) a tego linia portu procka nie wytrzyma... bałem się właśnie o prądy, dzięki :) Jeżeli mikrokontroler...
(...)Chcę przy moim kwarcu 11,0592 uzyskać przerwanie co 1 sek(...) Zwracam tylko uwagę na fakt, że Timer zlicza w dół od wartości ICR1 do zera włącznie (po czym znów od ICR1). Akurat fakt jest troche inny. Wszystkie timery w AVR jako podstawowy process liczenia jest liczenie (od zera lub wpisanej wartości do timera - tryb Normal) w grórę do przepełnienia...
tak jak w temacie: TCCR1A = (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0) |(1<<COM1B1) | (1<<COM1B0); //8bit PWM, phase correct TCCR1B = (1<<CS11) | (1<<WGM12); //MCU clock / 8 1. czy to jest dobry sposób? 2. jak zmusić atmege do korzystania z zew. kwarcu 8 lub...
Czytałem i niestety nie wiem co wpisać w TCCR0A oraz TCCR0B czy możesz mi podać co wpisać aby ten Timer działał tak samo jak Timer1 ? Timer1 masz skonfigurowany w trybie "Phase Correct PWM" - stąd obliczysz częstotliwośc. Więc sonfiguruj go podobnie jak Timer1 z pewnymi różnicami: Config Timer0 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare...
Chyba jednak coś nie tak jest z PWMem :( Próbuje wpisywać różne wartości do ORC2 ale dioda podłączona do poru ciągle miga tak samo:( A co dokładnie oznacza "miga" :?: Przy preskalerze x 1 , nie masz prawa zaobserwować żadnego migania. Zakładając , że M8 "śmiga" na wew. osc. 1MHz , to okres Phase correct PWM wynosi 1000000/512= 1952.125Hz i Ty to "widzisz"...
Witam ,moglby mi ktos podac roznice miedzy Phase Correct Normal i Fast PWM w atmega16.. bo niestety nie bardzo moge zajarzyc dokumentacje...
Przenieś się na licznik TIMER1 - wtedy masz dwa wyjścia OC1A i OC1B taktowane z jednego licznika. W programie umieść dwie tablice, gdzie w pierwszej będzie tylko górna półówka sinusa, a w drugiej tylko dolnia połówka sinusa. Wysyłaj dane z tablic równocześnie do rejestrów OCR1A i OCR1B. Uzyskasz to czego potrzebujesz. Nie używaj trybu Fast PWM do tego...
Można jeszcze wybrać tryb Phase Correct (jeżeli to jakiś AVR) i wtedy częstotliwość spadnie 2-krotnie. Żeby sprawdzić czy układ podoła można go po prostu przesymulować w LTSpice. Na pewno jednak nie zadziała z tranzystorem IRLZ44N bo on ma pojemność wejściową aż 1.7nF. Trzeba inny tranzystor Logic Level. A najlepiej tak jak mówiłem: scalony driver MOSFETa....
Hmm, obalę Twoje mity dot. przerwań: 1.(częściowo), 2., 3. w tym przypadku PWM jest sprzętowy. Oznacza to nie mniej nie więcej niż to, że timer odpowiedzialny za generowanie PWM nie wygeneruje ŻADNEGO dodatkowego przerwania. 4. Dlatego stosuje się tryb phase correct pwm, ale zapewniam Cię, że w przypadku sterowania jasnością żarówki to w którym momencie...
Ahh... No właśnie a kilka razy czytałem te rejestry w dokumentacji i nie zauważyłem. // Incjalizacja PWM // PWM Phase Correct 8bit (WGM10 -> 1) // Ustawienie OC1A i OC1B (COM1A1,COM1B1 -> 1) TCCR1A = _BV(WGM11)|_BV(COM1A1)|_... // Prescaler Zegara 1/8 (CS11 -> 1) TCCR1B = _BV(WGM13)|_BV(CS11);...
Chyba tryb PWM, Phase Correct nie jest dla tych serv. Zmieniłem poniższy kod i serva przy ICR1 = 4999 zaczynają drgać aż podskakują na biurku, przy waratości 2000 już nie ale w żadnym wypadku nie da się kontrolować kierunku obrotów ani szybkości. Z powyższej informacji wynika, że nie w pełni poprawnie interpretujesz proces (mechanizm) tworzenia fali...
Wszystko pięknie, ładnie, ale żaden z programów nie działa... Program [b]excray[\b]'a, się kompiluje, ale: nie widzę nigdzie wyjścia OCR1A (PB1), na które jest podawany sygnał wyjściowy PWM'a. Na wyjście to podawany jest stan niski (ustawiony bit COM1A1). Dodam tylko, że chodzi o PWM w trybie Phase Correct. W moim programie wszystko jest ok, poza odczytem...
dondu, zahaczając o temat nauki, bardzo fajnie opisany PWM jest na http://aquaticus.info/pwm , to chyba najlepszy opis jaki znalazłem, razem z przykładami, ... Zapoznam się bo właśnie ćwiczę sterowanie silnikami DC przez PWM Phase correct - już działa, właśnie kalibruję software do mini robota ... do tego polecam Ci zapoznać się z polską dokumentacja...
Jest jeszcze w Serwisówce Horizontal Amplitude and Phase • Select HSH (Horizontal Shift) and adjust it for a correct horizontal centring of the picture . Co do wejście w odpowiednie Menu to nie jestem mądrzejszy od serwisówki.
Nie ma znaczenia, w którym miejscu odpalę zegar. W kodzie mogę włączać i wyłączać go w dowolnym miejscu. (zrobiłem Ci jednak przyjemność :D i sprawdziłem - bez znaczenia) Dodam trochę o sprzęcie. Na ADC0 wisi potencjometr wieloobrotowy 5K i na razie kod ma tylko przepisać wartość ADCW do OCR1A. No i PINB1/OC1A ma zap#$(at)#$%, żeby ładny PWMik wylazł....
Hmmm. Policzmy. fpwm = fclk/prescaler/pojemność licznika/2. Przy fclk=16MHz daje to fpwm=16MHz/1/256/2=31,250kHz. Wypełnienie zmienne 0%-100%, oczywiście tryb Phase Correct. fbase = fclk/prescaler/(ocr+1). Przy OCR1A=1 (najszybsze przerwania) próbki mogą być podsyłane do PWM z częstotliwością 16MHz/8/2=1MHz. Czyli do 1 nie warto dojść bo fbase>fpwm,...
Oto i on, zamieszczam sterowanie PWM: #include <avr/io.h> int main (void) { DDRB |= 0xFF; // ustaw wyjscia PORTB |= 0x01;//zapal diode TCCR0A |= (1 << WGM00) ;//PWM Phase correct TCCR0A |= (1 << COM0A1) | (1 << COM0A0) ; //inverted mode OCR0A = 120; //porownuj z 120 TCCR0B |= (1 <<...
Witam, Układ jest jak najbardziej poprawny, dioda 3A spokojnie starczy ważne tylko aby miała możliwie krótki czas przełączania typowo dla układów z sinikami stosuje się diody z czasami poniżej 4ns. Do sterowania użyj trybu Phase Correct i niską częstotliwość PWM uzyskasz wtedy większy moment i zmniejszysz straty związane z przełączaniem MOSFET-a. Jeśli...
To jak skonfigurować PWM na Timer0 lub Timer2?? Może takie coś? : $regfile = "m16def.dat" 'Deklaracja rodzaju procesora Ddrd = B00110000 'Porty pełniące funkcję Timera powinny być skonfigurowane jako wyścia Tccr1a = &HA3 'Phase correct PWM mode ,PWM = 10 bit Tccr1b = &H5 'Prescale 1024 Do Pwm1a = Pwm1a + 1 'Ten program powoduje cykliczną zmianę...
yahuza --> no nie, jak masz próbkowanie 32kHz i PWM też 32kHz to nie ma co się dziwić, że sieczka wychodzi. Toż PWM powinien być co najmniej (próbkowanie*4). Ja wprawdzie tyle nie osiągam PWM'a ale jest na tyle duży, że już bardzo dobrze słychać. Chociaż z uwagi na to że nie x4 to właśnie jest lekki aliasing.... ale komu to przeszkadza ? mnie nie ;)...
Hej, Przyznam że nie mogę do końca zrozumieć metody podanej w linku. ................. (1)Trzeba by zmienić częstotliwość taktowania. (2)wzory na policzenie częstotliwości są w rozdziałach modes of operation poszczególnych timerów. ________________________________________ Ad1. Nie trzeba -wyjaśnienie niżej... (poza tym, jak w Arduino chcesz zmienic...
Jest tak jak napisał kolega tmf , spróbuj użyć zatem innego trybu pracy PWM. Przy Phase Correct PWM ten objaw nie powinien występować. Jeżeli chodzi o tranzystor. To można go bezpośrednio sterować wprost z portu mikrokontrolera, ale dla nie zbyt wysokich częstotliwości przełączania(do kilkuset Hz). W przypadku wyższych częstotliwości, we znaki może...
Hmmmm... Juz dziala.. Ale problem lezal w czym innym.. Natoimast nie wiem, dalczego dioda podlaczona pod PB1 miga, zamiast swiecic swiatlem ciaglym... Dodano po 27 Przejrzalem sobie dokumentacje ATMega8, ale nie moge rozszyfrowac takiego zapisu, jaki znalazlem w jednym z kodow w necie TCCR1A = (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0)...
Witam, mam kilka pytań dotyczących PWM-a w procku atmega8. Próbuję ustawić 8bit fast PWM-a na pinie OC1A takim kodem: ;... ldi r16,(1<<PB1) out DDRB, r16 ldi r16, (1<<WGM10|1<<COM1A1)... 5 (8bit fast pwm) out TCCR1A, r16 ldi r16, (1<<WGM12|1<<CS10) out TCCR1B, r16 ldi r16, 120;wypelnienie...
No to teraz już nie mam pojęcia jak to zrobić. Masz jakiś pomysł? Takie coś chciałem zrobić A najlepiej to chyba mierzyć prąd impulsowy gdzieś w środku impulsu PWMa. I odpowiednim wartościom prądu impulsowego przyporządkować odpowiednie wartości PWMa. To już nie wymaga filtru (nie może go w zasadzie nawet tam być) i charakterystyka regulacji będzie...
http://obrazki.elektroda.net/89_12292705... przerobiony serwomechanizm probuje podlaczyc pod L293D i atmege16 tak jak na rysunku... posluguje sie kodem w mainie: TCCR1B=0x03; TCCR1B|= _BV(WGM12); TCCR1A&=~_BV(WGM11); TCCR1A|= _BV(WGM10); TCCR1A|=_BV(COM1A1);TCCR1A|= _BV(COM1A0); //PWM,Phase Correct Invert...
No to po kolei: Opis moich problemów: - licznik 1 liczy do wartości 255 a następnie zamiast się zerować liczy w dół, wyjścia ustawia Czyli jaki tryb chcesz ustawić? Pytam ponieważ masz ustawiony: PWM, Phase Correct, 8-bit i dlatego się nie zeruje tylko liczy w dół: Clear OC1A/OC1B on Compare Match when upcounting. Set OC1A/OC1B on Compare Match when...
atom1477, spokojnie, przecież to podobno tylko kwestia konfiguracji i wybrania odpowiedniej częstotliwości. :) Wcale nie. Jeżeli PWM jest generowane programowo to nie można wybrać zbyt wysokich wartości częstotliwości. Poza tym nie będzie to za dobrze działało bo programowe USB wymaga pełnego dostępu do procesora. Żadne przerwanie nie może tego blokować...
O K Widzę,że sam muszę sobie odpowiedzieć. Po żmudnych próbach z konfigurowaniem PWM w Bascomie doszedłem do wniosku, że żadna z wersji tego kompilatora nie jest w stanie prawidłowo skonfigurować PWM na procesorze ATMEGA. Trzeba to zrobić przez bezpośrednie oddziaływanie na rejestry. Np.: $regfile = "m16def.dat" 'Deklaracja rodzaju procesora Ddrd =...
Czy nikt nie potrafi rozwiązać tak prostego problemu? Może nikt nie chce ruszac tego bałaganu... Popatrz na twoją konfigurację pinów: Config Pind.1 = Input Config Pind.2 = Input Sa to wejścia z przydzielonymi aliasami S1 i S2 Dalej, sa one podciagane wewnętrznie: Set Portd.1 Set Portd.2 W petli Do..Loop Masz warunek: --------------------- If S1 = 1...
bascom phase correct write correct three phase
renault scenic gaśnie prowadnica piła stołowy z18xe wymiana silnika
telewizor samsung restartuje telewizor samsung restartuje
Naprawa łuszczącego się lakieru bezbarwnego – cieniowanie czy taśma? Spray 1K/2K, technika blendingu Alfa Romeo 156 SW 1.8 TS 2004 – zwarcie instalacji, wariujące wskaźniki, CAN, masa, alternator