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;)
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?
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.
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.
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ś?
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 =...
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...
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...
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...
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ć...
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...
(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...
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....
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...
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.
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ę...
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...
W ogóle nie masz pojęcia do czego służą fusebity. Zdania pisze się z dużej litery.
"z tym serwem są problemy" - może uszkodzone, ja mam sześć sztuk TowerPro (może nie ten model) i wszystkie działają, tylko trzeba im sygnał podać. Co do sterowania: http://mil.ufl.edu/~achamber/servoPWMfaq... Jeszcze sugestia żeby serwo i układ zasilać osobno ze wspólną masą. Kod, zaznaczam że pisany dawno i NIE PAMIĘTAM CZY DZIAŁA!! (chyba lepsze...
Może taki kodzik - odebranie znaku sygnalizowane mignięciem a nie zapaleniem LED + echo (UART_BAUD do ustawienia na własny):[syntax=C]#include <avr/io.h> #include <avr/wdt.h> #include <avr/interrupt.h> #define PARITY_NONE 0 #define PARITY_EVEN (1<<UPM1) #define PARITY_ODD ((1<<UPM1)|(1<<UPM0)) #define STOP_BITS_1...
OK, no to następne podejście z nadmiarowym kodem testowym odliczającym w kółko na ATmega8515 zamiast ADC - wyświetlanie bez zarzutu. Co do tego dziwnie wyświetlanego zera, to może masz zamienione a z g, b z f itp. W tej wersji łatwiej zapanować nad częstotliwością odświeżania segmentów - zbyt duża skutkuje podświetlaniem sąsiednich cyfr, zbyt mała -...
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_...
Pisałem o tym, ale moze potrzebujesz szczegółowszej instrukcji ;) Znajdź w kodzie "Stop Timer0" i wstaw tam tę jedna linię. Powinno pomóc. [syntax=vbnet]'Podprogram usypiania procesora Spij: Stop Timer0 'wyłącza PWM Tccr0a = 0 ' <<<<<< to dopisz Set Portb.1 'led off Set Portb.0 'led white off Reset Portb.2 'opornik obciążający wyłączony...
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...
Konkretnie to o co chodzi w rodzajach: - Fast PWM - Phase Correct PWM - Phase and Frequency Correct PWM ??
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;...
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...
Udało mi się skompilować kernela w wersji 6.7(https://github.com/maniekx86/linux_m... Trochę zabawy z tym było, bo najpierw próbowałem 6.1 jak z tego filmiku, ale się nie chciał skompilować za pomocą gcc 12.2. Wogóle pierwszy raz coś robiłem z architekturą MIPS. Zawsze dla mnie to był archaizm, którego nigdy nie spotkałem....
Poszło jak z płatka: ** Phase 5 - Check Cylinder Groups CORRECT BAD CG SUMMARIES FOR CG 0? y CORRECTED SUPERBLOCK SUMMARIES FOR CG 0 CORRECTED SUPERBLOCK SUMMARIES FOR CG 1 CORRECTED SUPERBLOCK SUMMARIES FOR CG 2 CORRECT GLOBAL SUMMARY SALVAGE? y Log was discarded, updating cyl groups 42307 files, 585524160 used, 36889838 free (9006 frags, 4610104...
phase correct mode, odpoweni top i masz. Dzielić chyba umiesz/.
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 <<...
No jeżeli jest Phase Correct to ok. To wystarczy zadeklarować przerwanie za pomocą On Timer. A potem je obsługiwać odpowiednio.
A ten Twój timer1 nie liczy może w dwie strony? Mode 11, PWM, phase correct.
AVRy przy zerowym wypełnieniu PWM generują krótką szpilkę W trybie FastPWM. W trybie Phase Correct PWM już nie.
Sprawdź może tryb FAST albo CTC, bo dla Phase Correct są tam jakieś ograniczenia.
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....
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...
Bo PWM0 ustawiłeś na Fast PWM 8 bit a PWM1 na PWM Phase Correct 10 bit.
(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,...
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...
ja testuje PWM na diodach obecnie na zegarze 8Mhz i preskalerze = 1, phase correct 8bit, z tego co licze to mam częstotliwość rzędu 15kHz i jest dobrze :)
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.
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...
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....
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.
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...
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...
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...
Gotowca nie dostaniesz bo zaraz zaczną krzyczeć. Zasada jest prosta PWM to modulacja szerokości impulsów. W Atmega8 szerokość impulsu jest regulowana za pomocą wartości w rejestrze OCRn. Po włączeniu trybu PWM timer zaczyna liczyć gdy wartość rejestru TCNTn (licznika) przekroczy wartość zapisaną w rejestrze wtedy na wyjściu PWM OCn nastąpi zmiana ze...
bascom phase correct firma correct write correct
wyciszy domofon silnik indukcyjny uzwojenie wymiana grzałki
zmywarka whirpool mruga start goodram cx400
Altus 200 – podłączenie głośników do zwrotnicy, polaryzacja plus i minus, GDN, GDM, GDWT Elwro głowica lampowa – odstrajanie na skrajnych częstotliwościach UKF, przyczyny i tuning