Witam. 1./ konfiguracja Timera1 musi być w jednej linii jako całość np. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect Po za tym masz nie pozamykane prawidłowo warunki IF. Poniżej przykład całości: $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.4 = Input Config Pinb.2 = Input Config Pinb.1...
Oto prosty przykład: $regfile = "m8def.dat" $crystal = 4000000 Config Timer1 = Pwm , Prescale = 1 , Compare A = Disconnect Compare1a = 32768 On Compare1a Oc1a_int Enable Compare1a Enable Interrupts Do nop nop nop nop Loop Oc1a_int: nop nop nop Return Reszta opisana w Helpie :wink: Piotrek
Nie mam noty przed sobą, ale o ile mnie pamięc nie myli to timery 0 i 2 mają możliwość zrobienia przerwania typu Compare w trybie CTC. Sprawdź to.
Witam, według mnie dodaj jeszcze Compare B Pwm = Clear Down
Witam... Ja bym nie bawil sie w komparator i ... tylko wzioł cfrowy termometr 1-wire np DS1822, DS1821(swoją drogą da sie go zaprogramować jako termostat) no ale można zrobić to w rózny sposób, wracam do tematu postu... Przerwanie od komparatora w BASCOM Config Aci = On , Compare = Off , Trigger = Toggle On Aci Przerw Enable Interrupts Enable Aci coś...
A nie lepiej byłoby wykorzystać PWM? Wtedy można dosyć precyzyjnie ustalać częstotliwość na wyjściu, oczywiście ustawionym w tryb Toggle... Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Toggle , Prescale = 8
tak, teraz te 2 przypisania odnoszą się do Timera 1 i wyprowadzeń oc1a i oc1b, więc poprawnie zakładając, że konfiguracja uwzględnia tryb 10-bit, czyli: Config Timer1 = Pwm , Pwm = 10, Compare A Pwm = Clear Up, Compare B Pwm = Clear Up, Prescale = 1
Witam. Można np. tak :) 6 x Pwm Config Timer0 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja Timera Config Timer2 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm...
Zapalasz: „Set Led” Gasisz: „Reset Led” Cała linia odnośnie przerywania i PWM też jest nie potrzebna (Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down). Złap jakąś książkę z BASCOM-em naprawdę się przydaje, albo przynajmniej jakiś porządny kurs będziesz łykał co do czego ;)...
Wszystkie Timery układu Mega32 mogą generować sygnały PWM: Timer0 - jeden kanał: OC0 - PB.3 Timer1 - dwa kanały: OC1A, OC1B - PD.5, PD.4 Timer2 - jeden kanał OC2 - PD.7 Na wejściach T0 i T1 liczniki nie generują sygnałów PWM. Co do samej konfiguracji to problem jest prawie żaden. W przypadku Timer1 sprawa jest prosta, gdyż CONFIG TIMER1 posiada wszelkie...
Eeeee tam.... Jak to się nie da!? Przykład konfiguracji dla atmega8: Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer2 = Pwm , Async = on , Prescale = 1 , Pwm = On , Compare Pwm = Clear Up Pwm1a = 255 Pwm1b = 255 Ocr2 = 255 Pozdrawiam.
A nie lepiej tak ? Przykładowa konfiguracja timera1 w trybie CTC i przebiegiem na OC1a [syntax=basic4gl]Config Timer1 = timer, Prescale = 256, CLEAR TIMER = 1, Compare A = toggle, Compare B = disconnect [/syntax] Potem tylko zmieniać wartość rejestru Compare1a jakimiś przyciskami, pilotem, enkoderem etc. ps. Jak nie zadziała to poustawiać bity w rejestrach...
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...
Załóżmy że chcesz uzyskać 100Hz. Procesor kreci się na przykład 8MHz. Timer napędzany jest sygnałem takim jak procesor, ale można ten sygnał podzielić tak żeby, na przykład co 1024 takty procesora do Timera trafiał jeden takt. Taki podział uzyskuje się za pomoca preskalera. Teraz wiadomo że Timer jest już taktowany wolniej bo co 1024 takty z 8MHz, ale...
Możesz zamieścić ten fragment kodu, który działa z Timerem1? I dlaczego stosujesz tryb Timer4 Compare Match A?
hmmm Przede wszystkim: Enable Interrupts On Timer0 Przerwanie Stop Watchdog Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256 'PWM=250Hz Load Timer0 = 195 To włączenie przerwania jest wstrętne w tym miejscu:P Co do wniosków... może spróbuj zwiększyć stos o...
No to użyj obsługę przerwania od niego (Timer/Counter1 Compare Match A) i ustawiaj wyjście programowo. Light'I
[syntax=basic4gl]$regfile = "m328pdef.dat" $crystal = 16000000 '*** Timer0 Config for 500Hz Interrupt CTC Mode *** Config Timer0 = Timer , Prescale = 256 , Compare A = Disconnect , Compare B = Disconnect , Clear Timer = 1 Enable Compare0a : On Compare0a Int0_isr : Compare0a = 249[/syntax] Kompiluje się bez problemu. Co do ustawienia na rejestrach. Napisałem...
Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up 'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down Start Timer1 Dim I As Integer Config Portb = 8 Do for i = 0 to 1023 pwm1a = i waitms 10 next for i = 1023 to 0 step -1 pwm1a = i waitms 10 next Loop End Pozdrawiam
W uproszczeniu częstotliwość sprzętowego generatora PWM to następująca zależność: F oscylatora / Prescaler / X, i tak: dla rozdzielczości Pwm=8 bitów X=510, dla rozdzielczości Pwm=9 bitów X=1022, dla rozdzielczości Pwm=10 bitów X=2046. Przykład dla rozjaśnienia: F kwarcu = 8MHz, rozdzielczość generatora PWM=9 bitów (możliwe 8,9 i 10), Prescaler=8 (możliwe...
"a to być dołożone do większego programu i przydało by się żeby nie było WAIT i przesuwania całego LCD tylko te 5 punktów." A w tym większym programie masz wolne timery? Albo chociaż wolne rejestry COMPARE?
Jak sama nazwa wskazuje przy konfiguracji Timer1 masz compareA i compareB. Czyli masz dwa rejestry porowniania które zmieniaja odpowiednie nogi procesora czyli pwm dla tego tajmera są dwa A i B. Noga procka OC1a pierwszy PWM (kanał) i OC1B drugi. Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'regulacja...
Nie znam się zbyt na Bascom, musisz sobie doczytać w Helpie, jakimi słowami się ustawia tryb CTC (Clear on Timer Compare) w tym liczniku, Przerwanie nazywać się chyba będzie "On Compare3" or sth.
Te procesory się aż tak nie różnią. Dodatkowe funkcjonalności pinów nie przeszkadzają w niczym dopóki ich nie uruchomisz. (PCINT - Pin Change Interrupt trzeba wiedzieć jak włączyć). Jest duża różnica jeśli chodzi o Timery właśnie. Mega8 ma na przykład tylko jeden rejestr Compare dla Timer2 dlatego inaczej się nazywają. Opisałem to u siebie na stronie...
Zumek -- dzięki za wskazówki ale niestety w moim procesorze nawet po ustawieniu Timer1 na 65492 max. częstotliwość jaką udaje mi się osiągnąć to ~16KhZ. Może tak: (Nadal w Bascomie , choć nie całkiem w Basicu) $crystal = 4000000 Config Portb = Output Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle On Compare1a Introc1a Nosave Timer1 = 0 Compare1a...
(at)maximus22_kr Niezależnie od użytego języka programowania zapomnij o instrukcjach wait. Tego nie będzie się dało połączyć z żadnym sensownym programem. Należy to zrobić tak jak pisałem: - przerwanie OVF - zmiana wyświetlanej cyfry - przerwanie compare - wygaszanie bieżącego wyświetlacza. Wtedy czas pomiędzy OVF a compare to czas, w którym dany wyświetlacz...
Config Pinb.3 = Output 'Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Set Tccr0.pwm0 Set Tccr0.com00 Set Tccr0.com01 Set Tccr0.cs00 Ocr0 = 127 'T2 już normalnie ;) Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Ocr2 = 127
A masz gotowca: Set Tccr1a.7 // Set OC1A on Compare Match (Set output to high level). Set Tccr1a.6 Set Tccr1a.5 //Set OC1B on Compare Match (Set output to high level). Set Tccr1a.4 Set Tccr1a.0 //WGM10 Fast PWM 8-bit Set Tccr1b.3 //WGM12 Pwm1a = 0 Pwm1b = 0 Set Tccr1b.cs00 //Prescale = 1
Do autora - przyjrzyj się [syntax=vbnet]Config Portd.5 = Output : Dc_wlacz Alias Portd.5 Config Portd.1 = Input : S12_wolniej Alias Portd.1 Config Portd.2 = Input : S11_szybc Alias Portd.2 Config Pina.0 = Output : Kier_lewo Alias Pina.0 Config Pina.1 = Output : Kier_prawo Alias Pina.1 Config Pina.4 = Input : S10_start Alias Pina.4 Config Pina.5 = Input...
Do tego najlepiej użyć PWMa. Na medze ósmej musisz uruchomić timer1. [syntax=basic4gl] config timer1 = PWM , pwm = 10 , compare a pwm = clear up , compare b pwm = disconnect , prescale = 1 Dim opu as word do for opu = 0 to 1023 pwm1a = opu waitms 3 next opu for opu = 1023 to 0 step -1 pwm1a = opu waitms 3 next opu loop end [/syntax] To tak na szybko....
W załączniku skompilowany kod wraz z obsługą LCD z tego Twojego kodu i pinem podświetlania. Sprawdź też prywatną wiadomość ;) Nawiasem pisząc to Submode New i Compare nie mają tylko najstarsze wersje Bascom..pewnie te spolszczone :D Przetestuj załącznik. Do wyboru BIN lub HEX
spróbuj skorzystać z timera , ustaw jako wejście i porównuj (compare) z zadanymi liczbami w pętli
Na 100% działa: Dim I As Byte I = 0 Do If PINB.1 = 0 Then If I < 255 Then Incr I Else If I > 0 Then Decr I endif Pwm1a = I Pwm1b = I Waitms 100 Loop Dodano po 2 $crystal = 8000000 Config Pinb.3 = Output Config Pinb.4 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1 Dodano po 3 I oczywiście...
Dioda płynnie się zapala,kiedy uzyka maksymalną jasność gaśnie i program sie powtarza.100% dobry program wersja dla wewnętrzengo rezonatora RC 1MHZ $regfile = "m8def.dat" $crystal = 1000000 Config Pinb.1 = Output Config Pinb.2 = Output Dim I As Byte Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale...
Już działa prawidłowo. Problemem była zła konfiguracja Pwm-a. Zamiast: Compare A Pwm = Clear Up dałem: Compare A Pwm = Clear Down
Ustawienia z jakiegoś starego projektu: Config Timer2 = Pwm , Async = Off , Compare = Set , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
Oczywiście, że się da. Po 1. Z preskalerem =1 nie uzyskasz czasu dłuższego jak ok. 30us. Zmień preskaler. Po 2. Do generowania częstotliwości służy tryb COMPARE timera - i właśnie tak to zrób. Poszukaj na forum, było wielokrotnie. Dodano po 1 Dawno temu pisałem o tym: http://www.elektroda.pl/rtvforum/viewtop...
Chciałbym jednak użyć CTC, ale kompletnie nie wiem jak się za to zabrać w Bascomie. Nie znalazłem na forum żadnych przykładów. Jak by ktoś poczęstował przykładem kodu dla z CTC w Bascom to byłbym niezmiernie wdzięczny :) Jakieś kilka dni temu, nie dłużej jednak niż tydzień, ‘gaskoin’ podal dokładną procedurę konfiguracji CTC. Jeżeli przeoczyłeś...
Dzinx Zaraz się zabieram za Twojego help'a ;) Już - stestowane : Dodano po 31 $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = Output 'Portb = 0 Config Portd = Input Portd = 0 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 Start Timer1 Config Timer0 = Pwm , Prescale = 8 ,...
Jak użyć timera (tzn. jak wyciągnąć z niego np zmienną dodawaną, lub resetowaną co określony czas?) Boję się jeszcze TIMERów :) Nie ma się czego bać. Oto prosty programik, który na pewno pomoże. 796182 Jednak dziwię się dlaczego nie używasz sprzętowego PWM. Attiny 2313 posiada ich cztery. Na każdym z timerów po dwa. [syntax=vbnet]Dim R As Integer Dim...
tak, o to chodziło. Zależność miedzy częstotliwością a OCR2 powinna być liniowa? Bo układ steruje obrotomierzem i niestety wskazania jego nie są liniowo zależne od „f” a powinny. W samochodzie są liniowo zależne od częstotliwości impulsów z cewki. Podejrzewam, że wypełnienie 50% wprowadza nieliniowość w obrotomierzu. Jak mogę zmniejszyć...
Wojtek - wchodzisz tutaj: [url=http://www.frank-zhao.com/cache/avr... z kalkulatorem 16MHZ z preskalerem 1024 oznacza że: - 1 sekunda nastąpi po 15625 cyknięciach timera - przerwanie następuje przy przepełnieniu jeśli wybierzesz OVERFLOW, ale może tez nastąpić przy COMPARE, od tego zależy jaką wartość wpiszesz do timera (czy odejmiesz...
dzięki za podpowiedz Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down , i wszystko gra :)
Może ten zapis Compare A = toggle wstaw w innym miejscu np w pętli głównej i sprawdź (tylko czy bascom łyknie coś takiego).
Najprosciej mowiac PWM to wyjscie na pinach PB1 i PB2 Do tych wyjsc mozemy zapisywac wartosc PWM ktora bedzie sie zawierac miedzy 0 a 254 , Dzieki temu mozna regolowac predkosc silnika DC w prosty sposob, np za pomoca tranystora NPN bez wiekszej komplikacji ukladu moze to byc np TIP122 co do progamowania ten kawelk kodu pokazuje jak zaprgoramowac PWM...
Nie mogę się doszukać w helpie jak skonfigurować i używać PWM dla Tiny2313 w Bascom AVR a wyszukiwarka na forum nie działa, ktoś może mi pomóc? Ponieważ nie za bardzo ufam Bascomowi przy konfiguracji automatycznej( Config Timerx) , to wolę poustawiać rejestry ręcznie , korzystając z dokumentacji :D $regfile = "attiny2313.dat" $crystal = 1000000...
Witam, Polecenie SOUND port , il_impulsów , czas_impulsu To mi nie pomoże. Jako argument chcę podać potrzebną częstotliwość (liczba), a nie ilość impulsów i czas impulsu... Jeżeli znasz częstotliwość to nie problem określić ilość impulsów i czas trwania, ale ta funkcja jest mało precyzyjna. Lepiej wykożystać do tego Timera: $crystal = 4000000 Pwm1a...
Takie "na kolanie" ale powinno działać [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 Config Pinb.3 = Input : Set Portb.3 : S1 Alias Pinb.3 Config Pinb.2 = Input : Set Portb.2 : S2 Alias Pinb.2 Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64 Dim I As Byte I =...
Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer2 = Pwm , Pwm = On , Prescale = 1 , Compare Pwm = Clear Up
Witam. Można i tak kolego Kuniarz , ja robię to troszkę inaczej . Korzystam z przerwania od porównania wartości dla timera 1 . Przerwanie INT0 staruje timer od zera natomiast przerwanie Compare A załącza triak a Compare B wyłącza impuls bramkowy. Wartość od zera do wartości Compare A to opóźnienie załączania triaka od przejścia przez zero . Natomiast...
Sposobów znalazłoby się kilka, ale ja proponuję: Włączenie "generatora" [syntax=basic4gl]Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1[/syntax] Wyłączenie "generatora", przez "odłączenie" wyjścia OC1A, od portu(pinu). [syntax=basic4gl]Config Timer1 = Timer , Prescale = 8 , Compare A = Disconnect , Clear Timer = 1 [/syntax]
Config Timer1 = Timer , Prescale = 8 On Icp1 C1 On Compare1a C2 Enable Compare1a Enable Icp1 Enable Interrupts ......... c1: Stop Timer1 X = Capture1 X = x / 360 campare1a = x timer1 = 0 start timer1 return c2: ----> to przerwanie będzie się wykonywać 360 razy na obrót campare1a = campare1a + x incr "zmienna" return masz podział...
Poczytaj tematy i uzyj szukaj. Attiny2313 nie posiada adc wiec potencjometrem nie dasz rady tego sterowac. Domyslam sie ze robisz do w bascomie. Tu masz kawalek kodu jak konfigurowac timery zebys mial 4 pwm. '******* procek ******* $regfile = "attiny2313.dat" $crystal = 8000000 $hwstack = 30 $swstack = 30 $framesize = 30 '****** dioda R/G...
Zacznijmy od tego, że w Tiny2313 nie ma ADC więc tu pytanie jest bezprzedmiotowe :D W Tiny261 timery są ciut nowsze niż w przypadku Mega8 i Tiny13. Wystepują tam już podwójne rejestry dla Timera0. Są to odpowiednio A i B czyli COMPARE 0 A i COMPARE 0 B. Zero odbosi się właśnie do Timera 0 Ogólnie dla nowszych prockow AVR jest to normą że tych rejestrów...
Hej, Dzielnik zmieniłem i jest przed diodą. Dodanie kondensatora C6 za diodą powodowało, że przy rozłączeniu zasilania mega nic nie zapisywała i zliczała od zera. Podobnie jak wpisanie polecenia RISING. Odlutowałem C6 i zmieniłem polecenie na FALLING. Zamieniłem dzielnik tak jak był na początku a więc 100K i 18K tak aby comparator wyzwalał się przy...
Jedyna możliwość to modyfikacja biblioteki MCS.lib . Należy zmodyfikować procedurę przerwania _GOTCHAR X ( X - nr usart). Wartość bytematch jest zapamiętywana jako stała _CHECHCHAR X _char ( X - nr usart). Tą linie musisz zastąpić swoim kodem: * Cpi r25,_CHECHCHAR0_char ;check with char to compare
Fundamentalną sprawą jest to, że w trybie Clear Timer after Compare match, Timer jest zerowany i jeśli Compare B jest większe od Compare A to nigdy nie wystąpi bo Timer tam nigdy nie dojedzie ;)
Mam pytanie czy jest możliwość sterowania PWM1a i PWM1b osobno tzn nadać dla PWM1a Prescale 64 a dla PWM1b Prescale 8 ? Mam taki kod [syntax=basic4gl]Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 64 Config Timer2 = Pwm , Async = Off , Pwm = On , Compare Pwm = Clear Up , Prescale = 1[/syntax][/code]
Poniżej mój testowy program w bascomie. Procek m8, wew. zegar 8 mhz. Testowałem na nikon D80 - działa OK. ' PILOT NIKON ML-3 ' ZEGAR 8 MHZ Dim I As Word Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 Config Portd.5 = Output Reset Portd.5 Compare1a = 100 Enable Interrupts Disable Timer1 Reset Tccr1a.com1a0 '***************************************...
Witam Mam AtMegę32 i chciałbym wykorzystać wszystkie 4 kanały PWM. Programuję w Bascomie. Na razie rozgryzłem tylko 2 kanały. [syntax=basic] Config Timer1 = Pwm , Pwm = 8, Prescale = 1, Compare A Pwm = Clear Up, Compare B = Clear Down Pwm1a = 127 'example - half voltage Pwm1b = 255 'example - full voltage [/syntax] Czy muszę do 4 kanałów wykorzystać...
Cześć. Męcze się już jakiś czas ze zwiększeniem częstotliwości. aktualnie mam tak. $crystal = 8000000 Config Timer1 = Pwm , Pwm = 10 , Prescale = 1, Compare A Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale = 1, Compare A Pwm = Clear Down Ile można wyciągnąć najwięcej pod bascomem bo to co jest ma nieprzyjemny dzwięk podczas pracy silnika...
Jeśli masz sterownik do silnika i potrzebujesz tylko dir i enable to raczej nie steruj go przez PWM. Potrzebujesz generatora o zmiennej częstotliwości zrobionego na procesorze. A nie o zmiennym wypełnieniu impulsów. To się nazywa rampa. Powinna być używana zarówno przy starcie jak i hamowaniu silnika. Wypełnienie powinno być stałe albo dawać krótkie...
Po ciężkich zmaganiach z metodą losową dla kolorów postanowiłem porzucić ten pomysł i zastosować przewidywalny sposób który będzie się powtarzał co jakiś czas. Może i nie jest to rozwiązanie pierwsza klasa, ale działa. Nie stosowałem jednak korekcji gamma, bo przy rozdzielczości PWM 8 bitów i zastosowaniu płynnego rozjaśniania było widać przeskoki (mruganie)...
Sprawdź coś takiego: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Przełączniki dołączone do pind.0/1 są na stałe podłączone do Vcc. Po naciśnięciu na ten port jest podawane "0". Jeszcze jakbys mi mógł wytłumaczyć o co chodzi z Compare A i compare B. Clear up/down mniej więcej kojarzę o co chodzi.
...Dziękuję za pierwszy konkretny post w sprawie ... No to ja dodam cos konkretnego od siebie. Dla niewierzącego mirekk36 cytat z NE6/2004 "W Bascom nie działa Config Timer1=TIMER, PRESCALE=8, Compare A =TOGGLE, działa natomiast TCCR1a=&B01000000 TCCR1b=&B00001010 Takich przykładów jest po kilka w publikowanych programach. Ten osobnik (może osobniczka)...
Musisz to tylko dopasować Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1
POWERSAVE (ATMEGA88) This mode is identical to Power-down, with one exception: If Timer/Counter2 is enabled, it will keep running during sleep. The device can wake up from either Timer Overflow or Output Compare event from Timer/Counter2 if the corresponding Timer/Counter2 interrupt enable bits are set in TIMSK2, and the Global Interrupt Enable bit...
Chwile sie pobawiłem i zastanawiałem sie czemu mi zle działa dioda podpięta do PORTB.3 a to jest związane z OCR1A dlatego zle działała. Nie dlatego, nie ma tu żadnego związku. OCR1A jest to wpis do rejestru, który służy do określenia górnej granicy (TOP) do jakiej ma liczyc Timer1 co odpowiada upływowi czasu tu akutat 1 sec., zaczym się wyzeruje. Jeżeli...
[syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 Config Pinb.5 = Input Config Pinb.4 = Input Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64 Dim I As Byte Centr1 Alias Pinb.5 Centr Alias Pinb.4 Set Portb.4 Set Portb.5 Pwm1a = 0 Do If pwm1a = 0 then 'dodatkowy warunek...
Niby się to kompiluje, ale wyświetla ostrzeżenia. Poprawna deklaracja według MCS Wiki Config Timer1 = Pwm , Pwm = 8 , Compare_A_Pwm = Clear_Up , Compare_B_Pwm = Clear_Down , Prescale = 1 Brakuje Ci łączników w parametrach. Nie wiadomo jak Bascom to traktuje w kodzie maszynowym. Brakuje deklaracji rozdzielczości PWM, ale tu pewnie zostaną wartości domyślne...
czy tak trudno zerknąć do helpa PWM1A = wartość zmienna = PWM1Aalias rejestru Compare 1A licznika TIMER1 (Word) używany gdy licznik pracuje w trybie PWM PWM1B = wartość zmienna = PWM1Balias rejestru Compare 1B licznika TIMER1 (Word) używany gdy licznik pracuje w trybie PWM PWM2 = wartość zmienna = PWM2rejestr Compare 2 licznika TIMER2...
Spróbuj wpisać bezpośrednio do rejestru TCNT1 jeżeli ma to działać to trzeba oczywiście przeładować w każdym przerwaniu wartość w tym rejestrze. Zdecydowanie lepiej wykorzystać tryb CTC i rejestr compare OCR1C. Timer1 w tiny26 jest dość specyficzny polecam przejrzeć notę.
ElKuba, a czy atmega8 i AtMega16 masz fabrycznie nowe, czy od kogoś ? Może ktoś wpisał fuse Dodano po 5 nie zauważyłeś w w ATMega16 pd7 ma też drugą funkcję OC2 (Timer/Counter2 Output Compare Match Output)
Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Down , Pwm = On a i ładujesz do OCR0
Racja. Napisałem sobie kod, ale nie mogę go nawet symulować w Bascomie, bo Bascom nie symuluje Timera2. Teraz właśnie ściągam AVR Studio 5 by móc w nim symulować. Kto wie kiedy zacznę w nim coś pisać. Chociaż doszedłem do tego jak ustawić to po bascomowemu: [syntax=basic4gl]Config Timer2 = Timer , Prescale = 256 , Async = Off , Compare B = Toggle ,...
wyskakuje mi błąd podzczas kompilacji dlaczego chodzi o AT 90s2313 oto listing: $crystal = 4000000 Dim W1 As Word Dim W2 As Word Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1 W1 = 100 W2 = 200 Pwm1a = W1 pwm1b = W2 End
Udało mi się! 'Przykład generowania fali prostokątnej niezależnie od CPU 'procesor AT Mega8 'zegar wewnętrzny 1 MHz 'piezo pomiędzy PB.1 a +5V 'UWAGA!!!, ATMEGA8 ma domyślnie załączonego Wachdoga!!!. Trzeba wyłączyć bezpiecznik!!! $regfile = "m8def.dat" $crystal = 1000000 Dim I As Byte Ddrb.1 = 1 'port b.1 wyjściowy '---------------------------------------...
Jeżeli przycisk miałby podciąganie to zawsze byłby w trybie gaszenia a po wciśnięciu i zwarciu do masy 0 czyli tryb rozjaśniania tu mi już coś nie pasuje! Dodano po 20 [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 16000000 Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale =...
Miałem skasować poprzedni post lecz coś się nie udało. Zasugerowałem się tym PWM'em ale tą konfiguracją się melodyjki nie zagra, bo PWM zmienia wypełnienie a nie częstotliwość. Tak więc trop kolegi jest dobry. Trzeba by może puścić timer w trybie CTC. Polega to na zerowaniu licznika po wykryciu zgodności TCNTx z OCRx. Nie próbowałem tego jeszcze i nie...
To jest przykład dla Atmega8, nie wiem czy pomoże: $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portd.0 , E = Portc.2 , Rs = Portc.1 Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output Cursor Off Cls Rem konfiguracja portów Dim R As...
Tak sobie przypomniałem trochę i stan rejestru nie powinien być pobierany. Tylko od razu zapis bo SBR robi And że zmienna. Nie sprawdzałem co bascom tłumaczy pod komenda set Ale po mojemu to... Set trrc1b.7 Równa się asm SBR tccr1b , 0b10000000
zumek a mogbys podzucic kawalek programu Skoro tak ładnie prosisz :D '*********** 4 x PWM ********* $regfile = "attiny2313.dat" Ddrb = &B00011100 'Oc0a,Oc1a,Oc1b = Output Ddrd = &B00100000 'Oc0b = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up Tccr0a = &B11110001 'Timer0=Pwm ,Compare A Pwm = Clear...
Proszę, może to Cię zachęci do przeczytania reszty we własnym zakresie. Program "miga" nośną 38kHz co 1ms ;) http://obrazki.elektroda.pl/5631733100_1... [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 64 $swstack = 32 $framesize = 32 Config Timer2 = Timer , Prescale = 1 , Compare = Toggle , Clear Timer = 1 Compare2...
zobacz to: $regfile = "attiny25.dat" $crystal=8000000 Config Portb = Output Portb = &B00001110 Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Disconnect , Prescale = 1 Pwm0a = 125 'zamienić jeśli nie dziala na Ocr0a Do Loop End
Może ten Twój jakiś dziki jest :P więc spróbuj jeszcze przenieść Sub pod pętlę główną jak ja poniżej. U mnie kompilują się wszystkie wersje wiec w załączniku masz skompilowane Hex i Bin do wyboru. Sprawdź też prywatną wiadomość ;) [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '********* TUTAJ SOBIE...
Witam Mam problem z działaniem/uruchomieniem generatora PWM na ATmega8535. Kod w BASCOM'ie: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down Dim A As Byte 'Config Pind.4 = Output 'Config Pind.5 = Output Do For A = 0 To 255 Waitms 10 Compare1a = A Compare1b = A Next A For A = 255 To 0 Step -1 Waitms 10 Compare1a =...
Witam ! To jest jedna linia, a nie czyery linie. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
Proszę was o szybkie sprawdzenie czy ta konfiguracja pwm będzie działała poprawnie. $regfile = "m8def.dat" $crystal = 12000000 Baud = 19200 Config Portb = Output Portb = &B00000000 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up Pwm1a = 100 Pwm1b = 200 Ps.Z jaka częstotliwością działa pwm w atmega8?
"Jak ustawisz minimalną dla 2 stanów to wykresem jest linia prosta" Oczywiście, jak sama nazwa wskazuje PWM to Pulse-width modulation.(modulacja szerokości impulsu) Jeśli zasilisz układ napięciem 24V to przy wypełnieniu PWM=255 będziesz miał 24V. Jeśli ustawisz wypełnienie 50% czyli PWM= 127 to teoretycznie powinieneś otrzymać 12V. Dlatego proponowałem,...
Na forum pomagamy osobom które wykazują chęć nauki lub maja konkretny problem. Jak uruchomić zegarek z pełnym kalendarzem itd. jest opisane w Helpie przy instrukcji "Config Clock" Jeśli Ci się nie chce czytać lub nie masz czasu to zleć napisanie tego programu. Osoba z doświadczeniem napisze Ci go w jeden dzień z wszystkimi wodotryskami. Pisze to bo...
Ok rozumiem. Spróbuj tego. Użyte przerwanie. Można też zrobić bez zależnie od potrzeb. $regfile = "m8def.dat" $crystal = 8000000 Dim Zmienna As Word Dim A As Bit Config Pinb.1 = Output Config Pind.2 = Input Set Portd.2 '============ definicje timera ================================ Config Timer1 = Timer , Compare A = Toggle , Compare B = Disconnect...
Witam :) Mam problem, zegarek na Timer0 nie chodzi poprawnie natomiast na Timer 1 pracuje poprawnie. Pwm działa tylko na Timer1. Co zrobić aby zegarek pracował na Timer1 a Pwm na Timer0? Config Timer1 = Timer , Prescale = 64 Enable Interrupts Enable Timer1 On Timer1 Mierzymy Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down ,...
Następnym razem napisz jaki mikrokontroler i z jaka prędkością jest taktowany. Problemem może być to że chcesz coś wyświetlać w procedurze obsługi przerwania. Lepiej unikać takich sytuacji. Pewniejszym rozwiązaniem będzie ustawienie tylko flagi w przerwaniu i szybki powrót z niego. Potem w programie zająć się wyświetlaniem kiedy napotkamy flagę. Druga...
Miałem chwilę więc chciałem napisać szybko program na Aduino Mega2560, ale potem sobie przypomniałem, że tam mikroskopijny kwarc a błąd przy 16MHz dla 115200 jest za duży. Wziąłem więc Mega128 bo była wolna i pod ręką. Napisałem program w którym przez Charmatch odbieram string "1234567890" po odebraniu Entera. Żeby było uczciwie to jeszcze odpaliłem...
Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Up Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Pwm = 8 Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Up , Pwm = 8 Ocr2 = wart Ocr0 = wart Pwm1a = wart Pwm1b = wart
Ten kod musisz okrzesać :D Czym to programujesz? Pytam bo umieściłeś dyrektywy dla programatora. Może i nie byłoby w tym nic dziwnego, ale w kodzie masz napisane 8MHz a tymi dyrektywami mikrokontroler zostałby ustawiony na fabryczne 1MHz... Inna sprawa to ten pomiar na ADC i zapisywanie jego wyniku po obliczeniach do PWM. Nie wszystkie tryby PWM mają...
Wszystko pięknie owszem opisane w "datasheet" ale niestety tylko dla tych co znają angielski, ja niestety nie znam (za moich czasów jedyny słuszny język był rosyjski). Nie mogę znależć w danych co wpisać dla ustawienia "Pwm" : Pwm = 10 ; Compare A Pwm = Clear Down. Pozdrawiam Jacek
Ludziska. Skoro dodatkowy licznik programowy Wam się nie podoba, to trzeba kopiować wartość licznika sprzętowego do zmiennej i porównywać (mniejsze, większe) z tablicą wypełnień. Cały "PWM" wtedy należy przenieść do pętli głównej. Oczywiście Prescaler = 1 nie jest najlepszym rozwiązaniem w takim wypadku. Jeśli nie jest potrzebna dokładna synchronizacja...
Program mam napisany w ten sposób: $regfile = "m128def.dat" $crystal = 16000000 Config Pine.3 = Output Config Pine.4 = Output Config Pine.5 = Output Config Timer3 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Compare C Pwm = Clear Down Do Ocr3ah = &B10 Ocr3bh = &B10 Ocr3ch = &B10 Ocr3al = &B00000000 Ocr3bl...
atmega bascom compare compare timer0 capture compare
bosch zmywarka hałas toyota radio zasilać pokrywa pompy odpływowej
traktorek silnik briggs traktorek silnik briggs
Yamaha RX-V440 RDS: Konfiguracja subwoofera i kolumn Ładowanie baterii w hulajnodze Joyor S5 - niestabilne wskazania