Tak, jednak w powyższym przykładzie podmiana Timer2 na nazwę rejestru nic nie zmieni - nadal będzie chciał to potraktować jako zmienną. To akurat dobrze (że będzie chciał tak potraktować). Źle że mimo chęci, nie traktuje. Wpisując jednak TNCT1 zamiast 2 - wszystko jest ok. Wiem już też na pewno, że to kompilator. Dokładnie.
[syntax=basic4gl] Config Timer1 = Timer , Prescale = 8 'Parametr Prescale może być równy:1, 8, 64, 256 lub 1024 [/syntax] Potem w programie możesz sobie odczytywać zawartość tego licznika w następujący sposób (np.): [syntax=basic4gl] Stan = Timer1 'Zmienna Stan typu Word [/syntax] robiw
O co mi dokładnie chodzi: W helpie Bascom jest napisane, że w przypadku kości 8535 mam do dyspozycji preskalery 1, 8, 32, 64, 128, 256, 1024, a dla kości M103 1, 8, 32, 64, 256, 1024. Ja zaś posiadam kość M32 i w PDF, który dotyczy tego mikrokontrolera jest tabelka na 127 stronie, która zawiera w sobie jakby wykaz dostepnych częstotliwości, ktorymi...
Tu nie ma żadnej filozofii. Ja co prawda programuję na ATmega16 i procedura wygląda tak: void generator_PWM(unsigned int wypelnienie) { TCCR2 =0x69; //tryb FAST PWM, bez preskalera, zeruj OC0 gdy porownanie = TRUE; f = 16M/256 = 62,5kHz OCR2 = wypelnienie; //wartosc porownywana 0..255 } Jak zrobiłeś PWM na ATmega32 to z tego co wiem...
Witam! Potrzebuję zmienić TIMER1 do obsługi PWM na TIMER2 ktoś pomoże? ATMEGA32 BASCOM
OC 1 A, OC 1 B - timer1 OC 0 - timer0 OC 2 A - timer2
Musisz zbudować sobie układ w którym atmege zasilasz napięciem stałym 5V. W tym układzie umieść złącze ISP 10 pinowe i podłącz do niego linie MISO, MOSI, RST, SCK oraz masę i zasilanie. Do wspomnianych wcześniej pinów podłączasz programator, dzięki czemu jest on stąd zasilany.
Jeśli nie potrafisz to zrób to prościej. Podłącz zewnętrzny kwarc 32,768kHz (zegarkowy); Config Clock = Soft Procedura zegara używa specjalnych zmiennych: _day , _month, _year , _sec, _hour, _min Wszystkie są typu Byte. Można je modyfikować bezpośrednio: _sec = 1 Sprawdź, o ile się spieszy (opóźnia). Różnicę koryguj warunkiem któregoś dnia np o północy.
Nie avrstudio5! To jest beta- w dodatku schrzaniona. Ściągnij normalne 4.18.
...Dlatego myślałem że mam gdzieś błąd w programie. pozdrawiam Nie zdawaj się nigdy na symulator Bascoma , bo on często fiksuje :) Steruj silnikiem w przerwaniu Timer0 , a problemy z szarpaniem znikną. Również przerwanie Timer2 , jest zbyt częste i zabiera procowi gro czasu. Piotrek
Timer2 jest nieco inny niż Timer1. Timer2 w M8 może pobierać sygnał zegarowy z oscylatora taktującego procesor bądź z kwarcu małej częstotliwości. Spróbuj dodać do Config Timer2 ASYNC = OFF . Skieruje to do Timera 2 sygnał zegarowy generatora uC. P. S. Jak chcesz sprawdź to sobie ustawieniach rejestrów. Mnie się nie chciało. Poczytaj sobie helpa. No...
Nie ejstem pewnien czy pomoze ale wylacz timer 2 podczas obslugi przerwania. przerwanie: disable timer2 timer2=kat enable timer2 return
Nie bardzo mam teraz ochotę zgłębiać kod ponownie, ale pamiętam że w Twojej wersji Timer odmierzał czas 20s i kiedy nadszedł czas to w przerwaniu mierzył temperaturę Dallasem DS18B20 i w dodatku pisał od razu po wyświetlaczu :D Dlatego jedną ze zmian było to, że Timer tylko ustawia flagę by dokonać pomiaru i go wyświetlić. Tak więc dopóki nie jesteś...
Z tego co porównuję z listingiem źródłowym z książki to masz kilka błędów: sprawdź: [syntax=basic4gl]Config Lcd = 16 * 2[/syntax] oraz umiejscowienie [syntax=basic4gl]Cls[/syntax] w pętli a u ciebie jest poza pętlą oraz wyrzuć konfigurację [syntax=basic4gl]Config Timer2 = Timer , Async = On , Prescale = 128[/syntax] sprawdź także ustawienia Fuse CKSEL3..0...
...Co bym nie robił... wynik zawsze jest ten sam... Nic dziwnego, bo Bascom ignoruje polecenie Load Timer2 = 178 Zmień na Load Timer2 , 178 'lub Timer2= 256 - 178 i sprawdź :-P
Czy da się generować przerwania od timer2 przy każdym przepełnieniu w trybie CTC? Próbuję generować częstotliwość w zależności od ustawienia potencjometru, ale timer generuje przerwanie tylko raz, cały program poniżej: OCR2 zostaje wpisana tylko pierwsza odczytana wartość zaraz po starcie programu, dalej już nie generuje przerwań. Po wrzuceniu " OCR2...
Zegarek oprócz funkcji wyświetlania czasu ma pokazywać temperaturę i mieć możliwość sterowania z pilota (RC5). Normalnie (by default) Bascom używa Timer0 dla RC5. Jeżeli Timer0 masz zajęty do inego celu, więc potrzebujesz skonfigurować Timer2 dla RC5. e marcus
Sprawdź jak wygląda rejestr ASSR i czy jest ustawiony bit AS2. Dodatkowo poczytaj o "config timer2" ;)
2 kanaly na timer1 a kolejne 2 na timer2 :]
Całości kodu nie wstawiałem bo chodziło tylko o tą część którą napisałem, po prostu powinno działać zamiennie a nie działało.Problemem okazał się jak zwykle Bascom po aktualizacji do wersji 2.0.7.3 polecenie CONFIG TIMER działa poprawnie Dziękuje wszystkim za chęć pomocy Dodano po 52 Trochę się dokształciłem międzyczasie i sprawdziłem w starym Bascom'ie...
Błąd kompilatora. Po wykonaniu Config Timer0 nie jest zapamiętywana bieżąca zawartość rejestrów TCCR0x wewnątrz kompilatora. Przy wywołaniu Start Timer0 odtwarzana jest wartość 0 w rejestrze TCCR0B, a powinno być wpisane 5. Zgłosić do działu wsparcia i czekać na poprawienie. A tymczasem zamiast START i STOP: skonfigurować licznik, zapamiętać zawartość...
Coś mi się zdaje że przerwanie się nie wykonuje. W symulacji się wykonuje, ale co 65536 cykli. BASCOM coś pierdzieli. Może przejdz na Timer0 albo Timer2 , przynajmniej dla testu.
Przepraszam że odkopuję temat ale miałem identyczny problem który po długich zmaganiach udało mi się rozwiązać, więc chciałem się z nim podzielić. Rozwiązaniem jest ręczne ustawienie rejestrów specjalnych odpowiadających za konfigurację PWM. Tak ja korrus666 napisał Bascom używa pewnie tych samych rejestrów do obsługi LCD i PWM z Timer2. Usuń linijke:...
Takie rozwiązanie istnieje podłącza się wtedy kwarc zegarkowy do nóżek TOSC i ustawia się Timer2 w tryb asynchroniczny. W Bascomie to banalna sprawa, więcej w helpie i datasheecie
Witaj. Zamiast zewnętrznego PCF możesz wykorzystać timer2 z zewnętrznym kwarcem zegarkowym 32,768kHz. Dokładność ta sama, a koszty mniejsze.
Pomiędzy instrukcje: On Timer2 Multipleks Enable Interrupts wstaw instrukcję Start Timer2. Nie na początku przerwania jak napisał daro:"A na początku obsługi przerwanie tego timera: Start Timer2."
Witam Chodzi o to, że jest ATMEGA z wbudowanym zegarem RTC. Po odpowiednej konfiguracji i uruchomie wszystko jest OK, zegar pracuje. Jednak zegar ten ma być wykorzystywany do pomiaru krótkich odcinków czasu. Czyli odmierza ustawiony czas i jest blokowany poprzez STOP TIMER2 (w Bascomie). Po naciśnięciu klawisza start układ wg założeń powinien uruchomić...
Nie ma, timer2 na as i liczysz na piechotkę , oczywiście kwarc musi być podłączony (32768 na osci osco).
OC2 to wyjście wykorzystywane przez Timer2 - nie Timer1. Wystarczy skonfigurować T2 - i po kłopocie... (Przestudiowanie noty katalogowej układu rozwiązałoby problem)
Witam. Nie bardzo rozumiem uzyskania 1sek z kwarcu 32768Hz i prescaler 128. Liczę w ten sposób : 32768Hz / 128 = 256Hz = około 4ms
Użyj Timer2 dla obsługi RC5 zamiast Timera0 Config Rc5 = Pind.2 , timer = 2 i będzie OKejos ;)
Tak po krótce przeanalizowałem wątek TIMER2 tego nowego programu. Po prześledzeniu kilku instrukcji i "śladów skoków" mogę stwierdzić, że nie jest dziwne, że gdy aktywny jest TIMER2 i jego przerwania to wszystko siada. Pojawia się przerwanie TIMER2, program wskakuje do jego obsługi a tam napotyka: GOSUB w inne miejsce, gdzie napotyka GOTO w jeszcze...
Ale wszelkie nastawy chociażby z Timer2 i OCR2a i 2b są błędne A dlaczego są błędne? Pokaż swój kod który nie działa. To Cię naprowadzimy co jest źle.
Do zegara najlepszy jest TIMER2 z zewnętrznym kwarzem 32kHz
Wszystko wyjaśniłem w Post #5. Dodano po 16 Wewnętrzny oscylator nie ma nic wspólnego z kwarcem 32.768 . Oscylator ten napędza sam uC, natomiast kwarc zegarkowy ma napędzać dodatkowo jakiś timer.W przypadku Bascom jest to Timer2, gdzie są dodatkowe instrukcje do ustawienia i pracuje asynchronicznie. Przykład w Bascom. Config Timer2 = Timer , Async =...
Użyj Timer'a 2 i wszystko będzie cacy. Pzdr. A piny to się konfiguruje tak: Config Pinb.1 = 1 a nie Portb.1. Przydaje się też wrzucenie linijki z def'em procka: $regfile = "M8DEF.dat", zresztą: $crystal = 8000000 $regfile = "M8DEF.dat" Config Timer2 = Timer , Prescale = 256 On Timer2 Przerwanie Dim A As Byte , B As Byte Config Lcd = 16 * 2 Cursor Off...
Atmega 8 obsługuje Timer2, używam w trybie asynchronicznym.
Szukając rozwiązania mojego problemu napotkałem na rozwiązanie timera2 w pracy asynchronicznej. Tylko mam pytanie bo nie jestem pewien, przy kwarcu 32.768kHz przepełnienie licznika odbywać się będzie równo co 1s ?? Co zrobić żeby przerwanie z przepełnienia było co 0.25s ??
Witam serdecznie zrobiłem zegar na w/w procesorze i wyświetlaczach 7 segmentowych led. Sekundę odmierzam z wykorzystaniem Timera 2 w trybie asynchronicznym z dodatkowym kwarcem 32,768Khz. Multipleksowanie wyświetlaczy realizowane jest za pomocą timera0. Do tej pory wszystko działa świetnie, Chciałbym jednak dodać jeszcze zliczanie setnych sekundy i...
witam ze specyfikacji wyczytalem ze ten procesor ma dwa wyjscia pwm, jedno pod wyjsciami pd4 (oc1b) i pd5 (oc1a) (timer1), a drugie pod wyjsciem pd7 (oc2) (timer2) .... pierwsze wyjscie dziala bez problemu natomiat drugiego nie moge skonfigurowac (pod bascom-em), wyskakuje mi error86 przy lini w ktorej konfiguruje timer2 ... nawet kiedy wpisuje: config...
No tak wiem o tym, że timer0 jest 8 bitowy, a timer1 16 bitowy. Tak chodzi mi o zegarek czasu rzeczywistego. A pwm da się zrobic na innych timerach timer2 timer3?
Kamyczek: "co napisał autor programu w help-ie ?" Strasznie (niechcący) wpuszczasz nas w "maliny". Autor tego programu nie pisał help-a. Autor tego programu nic nie napisał w help-ie. Napisz zamiast: "Może przed pisaniem bzdur warto zerknąc co napisał autor programu w help-ie ? Napisz: "Może w help-ie warto zerknąc? Przed pisaniem bzdur co napisał autor...
Tylko jak teraz dopisać tą konfiguracje led? Tak jak chcaiłem z rgb zrobić
bascom i dokladnosc nie ida w parze. jesli chcesz dokladnie mirzyc czas to tylko asm. bo nigdy nie wiadomo co bascom wymysli.
Ustawienia z jakiegoś starego projektu: Config Timer2 = Pwm , Async = Off , Compare = Set , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
? nie wiem co to za koslawy kod. Po 1, nie uzywa sie goto. 2, Ja na twoim miejscu bym uzyl timera 2 w trybie asynchronicznym, z zegarkowym oscylatorem. Ustawil przerwanie z timera na 1 sekunde. Pozniej w przerwaniu dodal bym zliczanie do 30 sekund. Gdy nie ma 30 Sekund osiagnietych flaga=0, gdy jest powyzej 30 flaga=1. Przycisk 1 by startowal odliczanie...
W skrócie zajrzałem do noty katalogowej i dowiedziałam się, że do MEGA 16 można podłączyć 2 kwarce. Końcówki to XTAL1 i 2 oraz TOSC1 i 2. Należy pamiętać, że z końcówek TOSC1 i 2, do których można podłączyć kwarc zegarkowy można sterować asynchroniczny timer2, który należy zatrudnić do odmierzania czasu. Do XTAL1 i 2 podłaczysz sobie kwarc o wysokiej...
Pisząc tę odpowiedź zrozumiałem, że popełniam błąd, bo timer2 jest 16 bitowy. No właśnie jesteś w błędzie...Timer2 jest timerem 8-bitowym.
Przecież masz 5 kanałów - wyjścia: OC1A, OC1B, OC2, OC3A, OC3B... Zmienne przedstawiają wartość modulacji w każdym z kanałów z osobna. Wszystkie PWMy są skonfigurowane jak 8 bitowe zatem zakres to 0..255. Ma tak być. Ponieważ nie ma aliasu (jeszcze) PWM2 dla zmiennej COMPARE2 (rejestr sprzętowy OCR2), BASCOM nie rozpoznaje nazwy PWM2. Jak zajrzysz w...
Taka składnia dotyczy tylko Timer1/Timer3/Timer4/Timer5. Nie zadziała poprawnie dla Timer0 i Timer2. Choć z moich osobistych obseracji to najnowszy BASCOM-AVR i spora grupa procesorów poprawnie obsłuży taką składnię: CONFIG TIMER0 = PWM , PRESCALE = 1 | 8 | 64 | 256 | 1024 , COMPARE A PWM = CLEAR UP | CLEAR DOWN | DISCONNECT , COMPARE B PWM = CLEAR...
Poi pierwsze. Do BASCOM-a jest pomoc - także po polsku, której to zresztą jestem autorem. Wersję on-line (beta) znajdziesz na mojej stronie WWW. Jak one działają? Zliczają impusy. Albo z prescalera, albo z zewnątrz. Patrz nota katalogowa. W którą stronę zliczają? Zwykle liczą w górę. W trybach PWM liczą też w obie strony. Patrz nota katalogowa. Jak...
A tak w szczególe to na TIMER0 nie ma PWM w M8 . Jest natomiast na TIMER2
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.
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...
"Servo" na Timer0 "RC5" na Timer2 popatrz do helpa
w nowym kodzie robiłem toglebit na porcie na którym była kiedyś IRDA... a może nie może tylko na porcie np. portc.2 myślałem że o to chodzi. nie dokładnie to określiłem w zdaniu albo pomieszałem nazwy funkcji rzeczywiście.. gdzieś się zapodziało.. musiałem skasować przez pomyłkę.. teraz działa poprawnie wielkie dzięki.. Dodano po 9 za to przyciski od...
Uruchom symulację w BASCOM i włącz opcję podglądu przestrzeni IO (Nie zapomnij włączyć też Refresh Variables). Sprawdź czy w ASSR znajdzie się wartość 08 jak program przeleci przez CONFIG TIMER2. Kompilacja Twojego programu w BASCOM AVR 1.11.9.4 daje poprawne rezultaty w rejestrach. Możesz spróbować też wgrać wersję skompilowaną w najnowszej wersji....
wykorzystać timer2 do Twoich celów, skoro 0 jest zajęty przez instrukcje encoder.
100µA?!! Tosz zwykła ATMega8 pracująca jako RTC (Timer2 i wybudzanie co sekundę dla zinkrementowania daty) pobiera jakieś 8µA (przy 3V).
Dzięki, widze teraz, że jednak troszke namieszałem ustawiając Timer2 ;) Nie wiem tylko dlaczego Bascom przepuścił moją konfiguracje Timer2. W pierwszej wersji programu, która była bez wykorzystania PWM (poprzez Timer2), program odliczał czas (Timer1), zliczał impulsy na Timer0 i migał diodą. W związku z tym pętla w programie głównym była pusta (Do-Loop)....
Nie wiem tylko o co chodzi z tym CTC $regfile = "m8def.dat" $crystal = 1000000 Config PortB = Output Config Timer2 = Timer , Prescale = 8 , Compare = Toggle , Clear Timer = 1 Enable Interrupts Enable Timer2 Do Loop
TIMER2 jest ośmiobitowy więc nie ma rejestrów H i L bo nie ma czego podzielić na dwa. Dla ATmega328 i TIMER2 możesz w Bascom używać takich nazw i zerknij na ich adresy. Jeśli sa takie same to oznacza to że nazwy są zamienne. [syntax=basic4gl]ASSR=$B6 ; - ASYNC TIM(2) - OCR2B=$B4 ; - TIM2 - PWM2B=$B4 ; - TIM2 - COMPARE2B=$B4 ; - TIM2 - OCR2A=$B3 COMPARE2A=$B3...
'$sim $regfile = "m8def.dat" $crystal = 8000000 'Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portb.1 , Db5 = Portb.2 , Db4 = Portb.3 , E = Portb.4 , Rs = Portb.5 'Config Pinb.3 = Output Config Portb = Output 'Config Timer2 = Timer Prescale = 1 , Compare = Toggle , Clear Timer = 1 Enable Interrupts Ocr2 = 102 Tccr2 = 25 'Enable Timer2 'Enable...
ewentualnie PWM i tranzystor ... wtedy mozna procesorem płynnie zmieniać jasność podświetlania CONFIG TIMER1 CONFIG TIMER2 tym sie chyba to w bascomie ostawiało ... poczytaj w manualu
........, a podpowiedzcie mi jak mogę obsłuzyc Rc5,serwo i pwm? Pozdraiwam Dla obsługi RC5 i kontroli serva użyłeś w sumie 2-ch timerów... ATMega8 posiada wbudowane 3 timery , zastosuj więc ten trzeci do 'produkcji' PWM''. Jeżeli ten ostatni (dotychczas wolny) jest Timer1, to ma on dwa kanały dla PWM, na których możesz generowac praktycznie dwie różne...
Tylko proszę mi podpowiedzieć, czy dobrze rozumiem nazwy kanałów i ich timerów Timer0 - Pwm0 Timer1 - Pwm1a, Pwm1b Timer2 - Ocr2
Witam Mam bardzo dziwny problem otóż atmega16 z dodatkowym kwarcem 32,768khz nie chce poprawnie działać. Uruchamiam ten timer2 w bascomie i próbowałem już róźnych ustawień, także zastępowałem komendy bascoma bezpośrednimi wpisami do rejestru i ciągle jest tak samo. Jeżeli przełącze na wewnętrzny kwarc ten timer2 to oczywiście działa, na zewnętrznym...
Mimitron widzę, że nawet nie sprawdziłeś co robi config clock w bascomie, na wyświetlaczu nie będziesz miał cały czas jednej godziny bo bascom tym poleceniem ustawia timer2 do pracy anachronicznej, ustawia odpowiedni preskaler, konfiguruje przerwanie od przepełnienia i tworzy funkcje obsługi przerwania w której automatyczne zwiększa te zmienne. Wystarczyło...
Czy ktoś budował generator na bazie tego procka i napisał program w bascomie? Zastanawiam się czy można to zrobić w raki spsób: CONFIG TIMER2 = TIMER , MODE = 5 , CLOCKOUT = x a potem zmieniać częstotliwość przez incr/decr x?
Jeśli nie wykorzystujesz tych samych pinów co kwarc zegarkowy to nic się nie będzie gryzło... O ile dobrze pamiętam wystarczy podpiąć kwarc 32,768kHz bez kondensatorów pod TOSC1 i TOSC2... Raz po uruchomieniu uC odpalasz timer2 w trybie asynchronicznym i tylko włączasz albo wyłączasz przerwanie od przepełnienia... Ustawiasz preskaler tak żeby przepełnienie...
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...
Zgodnie z wszelką dostępną mi literaturą wszystko powinno działać... a nie działa. Jakieś sugestie czy znów walnąłem pospolitego babola...? Znowu błąd, powinno to wyglądać tak: Config Timer2 = Pwm , Compare A Pwm = Clear Down , Prescale = 1 Timer2 jest 8 bitowy, parametry Pwm=8, Pwm=9 i Pwm=10 określają rozdzielczość PWM w timerach 16 bitowych. Zajrzyj...
Jedyne co da się zrobić to odpowiednio operując bezpośrednio na rejestrach zwolnić piny PC0-PC1 jako normalne piny I/O. Timer2 tak czy inaczej nie nadaje się do użycia...
emarcus:: Czy Ciebie całkiem pogieło? Jak chcesz pomnożyć częstotliwość rozkazem MUL? Ewentualnie jak chcesz tym pomnożyć impulsy? Bez obrazy ale to zupełnie co innego. Dodano po 19 Na mój gust cos takiego: $regfile = "M8def.dat" $crystal = 8000000 $hwstack = 64 '---------------------------------------...
Próbowałem przerobić wartość prescalera na 1024 tak aby timer2 dokładnie obliczał czas.Niestety dalej piosenki są w spowolnionym tempie. Proszę o pomoc :)
Witam. this sample receives RC5 on the background. it will not block your code like getrc5 ' it requires a 16 bit timer with input capture. you can not use the timer yourself. ' some processors have multiple 16 bit timers. Config Rc5 = Pinb.0 , Timer = 1 , Mode = Background ' ^--- background interrupt mode ' ^--- this must be a 16 bit timer ' ^----...
Próbuję uruchomić programowy zegar w Bascom na arduino Mega 2560 Kompiluje się bez problemu ale niestety nie działa. Jakiego 'działania ' się tu spodziewasz? -ma poruszac wskazówki, czy też wskazywac czas na dysplay leżącym w szufladzie? - a może przekładac kartki kalendarza? Nie bardzo będziesz mógł uruchomic 'Bascomowy- softwarowy' zegar na Arduino...
ten timer włączyłeś? W bascomie uzyles pewnie config clock=soft Więc jesli z punktu widzenia konfiguracji timera i procesora jest wszystko ok, to przyczyna moze byc jedna: kwarc nie oscyluje. Spróbuj podotykać np. pęsetą (trzymając ją mocno w ręku) pinów kwarca. Jesli zaczną przeskakiwać sekundy to błąd jest w kwarcu == wymień kwarc. Ta sytuacja tez...
Zapytam głupio: czy po konfiguracji timera1 wrzuciłeś Config Pinb.1 = Output??? tak mam zrobione ,wiec zabieram sie za timer2 ...... dzieki!!!!
Witam Dziękuje za rade szczególnie koledze mirekk36.Udało sie skonfigurować timer2 do obsługi rc5.Wszystko działa OK.
do odliczania jednostek czasu - w zależności od potrzeb średnio jest ich od 3 do 5 Nie twierdzę, że tak nie można. Ale przenieś choć część swoich Sub do przerwania Timer2, lub 1 i zobacz jaka jest różnica w działaniu programu.
GETRC5 używa licznika TIMER0. Albo TIMER2 jeśli go układ posiada i tak go skonfigurujesz w CONFIG RC5. Aby ustrzec się dziwnych błędów (z adresami linii poza programem) nie zapomnij o wpisaniu nazwy pinu w CONFIG RC5. Sam kod bazuje na dokumentach ATMELa: http://www.atmel.com/dyn/resources/prod_... I tam można całą procedurę prześledzić....
Disable Interrupts Call Gettime Enable Interrupts Jeżeli funkcja Gettime trwa zbyt długo to gubisz przerwania od timera. Jak zmieniłeś preskaler, to masz przerwania co 8ms i pewnie już się wyrabia. Co takiego robi w Bascom Gettime, że trzeba wyłączać przerwania?
Witam. W układzie licznik timer2 pracuje asynchronicznie - taktowany jest z kwarca zegarkowego. W Bascomie używam instrukcji RTC programowego. Czy mogę przy używaniu RTC usypiać procesor - uruchamiać tryb Powerdown?
Czytam i sam się pogubiłem hehe . Czy tu chodzi o względne przesunięcie (tmf) czy bezwzględne (satanistik). Parę miesięcy temu robiłem sterowanie PID dla servo Xmega w bascom . [youtube]https://www.youtube.com/watch?v... Nie obyło się bez problemu , który polegał na zliczaniu bezwzględnym więcej niż 65535 impulsów . Mój wpis z innego...
pier- w tym programie który Ci podałem masz wykorzystać zmienną "flaga_dodatkowa" do sterowania wyświetlaczem w sub- a nie w przerwaniu Timer2. Timer2 wyłącz. I daj program po przeróbkach. Żaden kwarc na to nie pomoże- trzeba korzystać z przerwań.
Bo niestety muszę zegarek rozbierać No niestety w tym trybie nie uzyskasz stabilnej sekundy, tym bardziej, ze Bascom w obsłudze przerwania może robić zbędne bzdury i jeszcze nie raz ten zegarek będziesz rozbierał. Do konstrukcji czasomierza najbardziej się nadaje asynchroniczny licznik Timer2 w trybie CTC, taktowany specjalnym rezonatorem kwarcowym...
Myślę że forum jest nie tylko po to by pytać. Kolega zdążył zamknąć wątek i napisał że Bascom nie pozwolił na skonfigurowanie Timera i musiał to zrobić na rejestrach. Nie wiedział jak, a ja chciałbym dla potomnych zostawić instrukcję. Dołączyłem ten post i odblokowałem temat. Tak to wygląda i się kompiluje: [syntax=basic4gl]$regfile = "m128def.dat"...
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...
Witam. W pewnym sofcie dla Atmega16 wykorzystałem już: - Timer1 (16 bit) do odliczania 0,0001s odcinków czasu - Timer2 (8 bit) jest wykorzystywany przez odbiornik podczerwieni (instrukcja getrc5) Timer 0 niby jest wolny, ale nie wiem / nie jestem pewien czy nie jest on wykorzystywany przez jakieś używane przeze mnie instrukcje (np. print dla sprzętowego...
No widzisz tak tego nie ustawiałem (pisze w bascom-avr). Jak pisałem w bascom 8051 to ustawiał i zerował to co trzeba i przyjmuje ze w avr również tak będzie. Sprawdzę to i jutro sie odezwę czy pomogło. pozdrawiam
Proszę. Możesz sobie do testu skonfigurować jakąś diodę LED i sprawdzić czy miga co 0.5s :D W starszych wersjach Bascoma może będziesz musiał w linii konfigurującej Timer zamiast tych podkreślników dać spacje. [syntax=vbnet]Config Timer2 = Timer , Prescale = 1024 , Compare_a = Disconnect , Compare_b = Disconnect , Clear_timer = 1 Compare2a = 155 '10ms...
Nie chce mi się zagłębiać dalej w pisanie. Tych trybów możesz sobie dopisać ile chcesz. I jak Przewijajac menu naciśniesz Set to zmień tryb na, na przykład, "Ustawiam_temp" i w tym trybie znów przyciski Plus i Minus bedą działać dla zmiennej ustawianej. Potem naciskasz ESC i wracasz do trybu jakiego chcesz.. to proste i pewne. [syntax=basic4gl]$regfile...
Lepiej użyj zewnętrznego kwarcu "zegarkowego" 32.768kHz podłączonego pod TOSC1 i TOSC2. Impulsy zliczasz w TIMER2 który jest specjalnie do tego przystosowany. A zyskasz dużą dokładność zegarka.
Możesz też wykorzystać OC1B, ale dla wyjścia OC1A musisz wpisać DISCONNECT. Pozostałe dwa wyjścia (OC2 i OC0) wspólpracują z licznikami Timer2 i Timer0 - jeśli nie musisz koniecznie robić tego na pierwszym liczniku... wykorzystaj Timer0.
Niby wszystko jest w porządku a za żadne skarby nie chce poprawnie działać. Kiedy przy timerze 2 ustawiam wartość prescalera na 256, to wychyla się w prawo, a jak na 1024 to w lewo. Ma to też wpływ na prędkość ruchu i siłę, ale nie rozumiem dlaczego. Poza tym cały czas lekko drży. Na razie używam wewnętrznego oscylatora, bo nie dopatrzyłem i wlutowałem...
Wg. mnie powinno tam być timer1 czyli np. Config Timer1 = Timer , Prescale = 128 Timer1 nie ma podzielnika o wartosci 128. Owszem, jest on dla Timer2, ale ta opcja nie wyglada ze jest wykorzystana w projekcie. e marcus
W AVR można przyjąc że to pewnik że Timer0 i Timer2 to ośmiobitowe.. Timer1..i jeśłi jest kolejny 16 bitowy to będzie się nazywał Timer3.. i tak do szczęśliwego końca :P ..po prostu co drugi jest osmio lub szesnastobitowy :P
Z przerwaniami nie jest tak trudno. Enable Interrupts Config Timer1 = Timer , Prescale = costam Timer1=costam2 Enable Timer1 On Timer2 etykieta Config Timer2 = counter , edge=falling Enable Timer2 On Timer2 etykieta2 coś takiego na przykład dobry zwyczaj to czas realizacji procedury pod daną etykietą był w granicach 10us, a wszystko pakuj do pętli głównej...
Problem już chyba rozwiązany. Wystarczyło wyrzucić z timera fragmenty obliczeń i wstawić je np. do jakiejś deklaracji/podprogramu. Program teraz wygląda tak i jak na razie wszystko działa i poprawnie się wyświetla: [syntax=basic4gl]'---PROCESOR-----------... $regfile = "m128def.dat" $crystal = 16000000...
bascom timer2 bascom timer2 portd bascom timer2 portu
połączenia kostki stacyjki gniazdka angielskie instalacja elektryczna motoroweru
Kod błędu EA/49 w kotle Junkers ZBS22/150 Ariston Genus błąd 504 - przyczyny i rozwiązania