Problemem jest to: [syntax=vbnet]Call Obrot[/syntax] Skoro "Obrot" to wektor przerwania, to nie należy do niego skakać. Procesor sam będzie do niego skakał. Nie należy też tego deklarować jako podprogram (Sub). Albo coś ma być podprogramem, albo wektorem przerwania.
Tak wiem że należy odpalić timer na początku i zatrzymać na końcu i odczytać jego wartość.. no nic. Dziękuję za wypowiedzi tak czy inaczej.. Odp. kol. Draco była troche sarkastyczna, bo na tak prostą procedurę nikt, kto ma choć troche rozeznania w tej dziedzinie chyba (!) nie szuka pomocy. Mopzesz to zrobić na kilka sposobów: 1. mierzyc czas metodą...
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
Witam Musisz skonfigurować Timer i za jego pomocą odliczyć 4 minuty. $Crystal = 11059200 Config Timer1 = Timer, Prescale = 1024 Load Timer1 , 10800 On Timer1 Sekunda Config Pind.1 = Output : Wy Alias Portd.1 Config Pind.2 = Input : We Alias Portd.2 Dim Licznik_1 As Byte Dim Wsk As Bit Enable Timer1 Enable Interrupts Licznik_1=0 Wsk = 0 Do If...
Hmmm, szczerze mówiąc nie bardzo mi się chce analizować program bo troszkę go zamieszałeś i właściwie to już nie bardzo wiem jakie zrobiłeś założenia działania tego progsa. W każdym razie widzę tu badanie krótki/długi przycisk i pomieszanie bezpośredniego czytania pinu z Debounce... jak dla mnie trochę to demotywujące. Rzuć jeszcze raz okiem na moje...
.... W pętli głównej sprawdzam na okrągło bit 0 rejestru 0 układu ( sprawdzam flagę alarmu timera). .... "Additionally, a timer alarm can be programmed by setting the timer alarm enable (bit6 of the alarm control register). When the value of the timer equals a pre-programmed value in the alarm timer register (location0F), the alarm flag is set ( bit1...
Uruchom przerwanie od Countera (najlepiej od porównania wartości zliczonej z ustawioną) i zmień stan portu w podprogramie obsługi przerwania lub prościej, ale mało elegancko zmień [syntax=basic4gl]If Counter1 = 100 Then ...[/syntax] na [syntax=basic4gl]If Counter1 >= 100 Then ...[/syntax] Nie tak jest to, że w chwili zliczenia setki nasz if może się...
.Czy ktoś może wie w czym tkwi problem/spotkał się z taką sytuacją? A zmienna, której wartość kopiujesz do OCR3A/PWM3A nie jest przypadkiem zadeklarowana jako BYTE ? Jeżeli to nie to, to spróbuj zapisywać rejestry OCR3 osobno - OCR3AH, OCR3AL.
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ć....
Wklep na początku przerwania : Enable Interrupts Wywnioskowałem to z pomocy bascoma (polecenie on Interrupt)
A czy aby ten mikrokontroler nie ma wewnętrznego oscylatora ustawionego na 1MHz.
kurcze mi nie wychodzi :| timer chodzi co 1s ale reszta do kitu Dodano po 25 program chodzi :) oczywiscie musisz go przerobic na wlasne potrzeby dodac tyle ile chcesz przekaznikow i zmienic czasy w programie bo tam jest 10s i 40s ten program jest przygotowany pod ATmega8 i kwarc 8MHz $regfile = "m8def.dat" $crystal = 8000000 Config Pind.0...
Tak. Tylko mniej świadomość że procek będzie odrywany od pracy wieloma nieprzydatnymi impulsami. Ewentualnie po pierwszym impulsie na INT, wyłącz przerwania na czas drgań. Jak teraz masz podłączony kontrakton ? INT podciągnięty pod +5V ? Jak INT wyzwalasz ? W docelowym projekcie koniecznie czujnik kontraktonowy zamień na jakiś halotron albo transoptor...
Nie prościej generować przerwanie co np 1s od timera?
Uruchomić timer w trybie CTC. Tryb CTC [syntax=vbnet]CONFIG TIMER1 = ..... CLEAR TIMER = 1[/syntax]
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...
Program wyświetla to co chcesz ale w symulatorze to trwa bardzo bardzo długo. i Teraz ja licznik odlicza 100 impulsów to musisz pozmieniać obliczenia. Podczas symulacji w warunkach wpisz mniejsze wartości to się szybciej doczekasz tego wyświetlenia na lcd albo zwiększ zmienne ręcznie podczas symulacji. sygnał 125khz do generowania PWM 1,25khz. Nie rozumiem?...
Sprobuj jeszcze od timera0 obsluge przerwania w petli glownej, a Krotki kod generujacy tego prostokata, mozesz zorbic: -przeliczajac ile z danym kwarcem wynosi okres danej czestotliwosci wpisac do licznika timera1 polowe tej wartosci, aby co pol okresu zmienial stan wyjscia na przeciwnym, przerwanie od Timera1 oczywsice ze wzgledu na prostote zrob w...
Przeglądając Twój program mam takie małe spostrzeżenie, a mianowicie w pętli głównej masz wywołaną procedurę Gettime - ' Call Gettime' - która działa na I2C. Co się stanie gdy podczas wykonywania procedury Gettime zostanie zgłoszone przerwanie od Timer'a?? Program przerywa wykonywanie procedury Gettime i skacze do obsługi Timera a tam jest wywoływana...
Chodzi o dowolne przerwanie. Ale najlepiej oczywiście wykorzystać przerwanie od jakiegoś Timera.
No przecież prosto. Konfigurujesz timer1 do pracy w normalnym ale nie robisz start timer. robisz przerwanie dzialajace na zbocze np. narastające-> Dalej : robisz zmienną flaga w przerwaniu robisz if flaga=1 then start timer1 flaga=0 else stop timer1 w rej od timera masz czas... kopiujesz gdzie Ci tam pasuje flaga=1 zerujesz licznik endif I tyle, oczywiście...
Tak odpal helpa zajrzyj do config timer i tam będzie przykład;)
Nie napisałeś , że ten pilot nie pracuje w kodzie RC5 , ale też nie napisałeś , że w tym kodzie pracuje :wink: Inna wersja Twojego programu: $regfile = "m32def.dat" $crystal = 8000000 '11059200 Dim Adress As Byte , Command As Byte , X As Byte , Tmpcode As Word Dim Odebrano As Bit , Flaga As Byte Config Pind.2 = Input : Portd.2 = 1 Config...
Więc pozostało zamiast waitów uruchomić następny timer.
Ho ho ho :) ale narozrabiałeś :wink: Dim Timer0_200ms As Word , B_200ms As Bit ' dot. uaktualniania co 200ms Const Timer0_200ms_max = 400 REM to dodaj $asm inc {Timer0_200ms_max+1} $end Asm Dim Timer0_1s As Word , B_1s As Bit ' dot. uaktualniania co 1s Const Timer0_1s_max = 5 Dim Licznik As Word 'pomocniczy licznik do zminy stanu lini w glownej petli...
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...
przerwanie timera wpływa na polecenia z rodziny Wait - powodują one, w zależności od częstości wydłużenie czasu oczekiwania, dlatego trzeba w takim wypadku odmierzać czas używając timera ;-)
Przecież obsługa timera w AVR i '51 jest inna , zobacz jak wygląda konfiguracja dla obu wersji .
Bascom - wersja 1.11.95 Kod, no jest tego sporo: - zegar PCF8563 - Zapis na SD - dwa czujniki DHT11 - odczyt z PCF8574AP ( klawiatura ) - RC5 - ma być DS18B20 - ma być DCF77, ale nie doszedłem do tego momentu ( tzn testowałem na innym procesorze i działało ) Działa - zegar PCF8563 - dwa czujniki DHT11 - odczyt z PCF8574AP w przerwaniu ( klawiatura )...
W tym kodzie jest błąd: Load Timer0 = 250 jest niepoprawnie zapisane bascom nie krzyczy błędem ale ta składnia nie działa. Powinno być Load Timer0, 250 Ta funkcja ładuje do timera wartość 256-wartość, czyli w twoim wypadku 6.
Nie wiem jaki jest twój kod w bascomie ale timer i uart to są sprzętowe zasoby specjalnie wydzielone do swoich celów więc nie powinny się zakłócać. Pytanie co masz w przerwaniu timera?
Witam. Może spróbuj tak po wywołaniu przerwania ( u Ciebie co sekunda) Odczytaj termometr DS. A następnie wydaj rozkaz pomiaru temperatury. W następnym przerwaniu odczytasz go o tak w kółko.
Funkcja WAITMS nie jest odporna na przerwania. Jeśli masz jakieś to każde wystąpienie przerwania w trakcie WAITMS rozjedzie go. Niezależnie od stabilności tej funkcji, a nie ma powodu, żeby nie była powtarzalna jeśli nie jest przerywane wykonanie przerwaniami, to i tak lepsza praktyką będzie wykorzystanie timera.
Koledzy, nie wiem jak to jest w Attiny, ale spotkałem się z dwiema rzeczami w innych uC: 1. Timery mają własne przerwania, czyli nie musisz zajmować żadnego innego przerwania, które może Ci się przydać do czegoś innego. 2. Jest coś takiego jak priorytet przerwań, zatem jeden z timerów będzie ważniejszy, jeśli obydwa naraz wygenerują przerwanie.
bascom
Należało by jeszcze dodać iż nie wszystkie Timery są np 16 bitowe np. ATmega8535 ma 2 8 bitowe i jeden 16 bitowy. O tym ile i jakie Timery wyczytasz z noty katalogowej danego mikrokontrolera.
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...
Witam serdecznie, chcę taktować timer Atmega8 zewnętrznym kwarcem zegarkowym, a sam uC taktować wewnętrznym oscylatorem RC. Tylko nie wiem jak mam skonfigurowac Atmega8 abz to osiagnac, pewnie trzeba cos w fusebitach zmienic, ale nie wiem co.. Prosze o pomoc. Pozdrawiam!
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...
Timer0 jest 8-bitowy czyli pomiesci liczbę z zakresu 0-255, Timer1 jest 16-bitowy czyli pomiesci liczbę z zakresu 0 - 65535. Zapewne autorowi chodziło o to aby zrobić to na timerze 8-bitowym, ale Twoje obliczenia tez są dobre tylko dla Licznika/Timera1
Zacznij od tego: funkcja wait i pokrewne PRZESTAŁY ISTNIEĆ. Do opóźnień i odmierzania czasu użyj timera i ogólnie poczytaj o timerach.
Buforuj otrzymane znaki i przetwarzaj w procedurze pętli głównej programu. Oczywiście wiąże się to z wywaleniem wszelkiej maści form kodu blokującego procesor i oparciem odliczania czasu o Timer.
Z tego co wiem "PIN Change Interrupt" ma np. Atmega168 i Atmega 328. Atmega 32 - jakoś nie widzę takiej możliwości. Proszę o poprawienie mnie, jeśli się mylę. Oczywiście zawsze można skorzystać z tych specjalnych pinów - INT0, 1 czy 2 lub zasymulować taką kontrolę stanu pinu w zwykłym przerwaniu - np. timera.
Nie ma problema. W przypadku kolejnych wątpliwości pytaj, ludzi życzliwych tu nie brakuje. PS Polecam na tym poziomie książkę: Marcin Wiązania "Programowanie mikrokontrolerów AVR w języku BASCOM" - dostępna w korporacji AVT. http://sklep.avt.com.pl/go/_info/?id=346...
Ok, Mam coś takiego $regfile = "attiny2313.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portd.1 , Rs = Portd.0 Config Timer1 = Timer , Prescale = 64 Config Pind.6 = Input Portd.6 = 1 Przycisk Alias Pind.6 On Timer1 Zatrzymaj Cls Do If Przycisk = 0 Then...
Witam. Brak konfiguracji szyny I2C kod: np: Config Sda = Portc.4 Config Scl = Portc.5
Czy kod jest prawidłowy chodzi mi o obsługę impulsatora, bo coś mi nie pasuje zwłaszcza o obsługę przerwania Encoder_isr:. Sam piszę program do sterownika i chciałem skorzystać z impulsatora właśnie w Bascom.
Może to ci pomoże : [url=http://www.elektroda.pl/rtvforum/to... w timerze, problem albo to : [url=http://www.elektroda.pl/rtvforum/to... w bascom czujnika DS1820 na DS18B20 albo ...... Jakieś 780 innych postów pod tym linkiem : [url=http://poszukaj.elektroda.pl/search...
Jakoś nie widzę żebyś tu korzystał z przerwania od Timera... Bo nie musisz ;p mogłbyś pokazać jakiś przykład obsługi przycisku w przerwaniu timera ? Nawet jakiś URL do innego projektu. Więc chyba oczywistym jest że ten fragment kodu należy umieścić w przerwaniu od Timera.
No właśnie podejrzewałem , to że użyjesz Wait, który tak jakby "zawiesza" procesor na 25 sekund. Najlepiej by było użycie timera do ustalania czasu, ale wiem, że dla początkującego to za trudne. Podpowiem więc inne rozwiązanie: Daj w pętli głównej wait1. Następnie zwiększaj zmienną i napisz warunek kiedy osiągnie ona 25 (if then endif) oraz kolejny...
Jak najbardziej tak.
OC 1 A, OC 1 B - timer1 OC 0 - timer0 OC 2 A - timer2
wychodzi na to że nie wiem. Przeglądam właśnie książke Marcina Wiązania, ale nie znalazłem aby do zmiennej były przyporządkowane wartości czasu.
Pokaż chociaż kawałek kodu to zobaczymy jak to zrobiłeś. Do przemyślenia podam kilka przybliżonych wartości. Odczyt 9 bajtów z DS18B20 (razem z CRC) trwa ~7ms Odczyt tylko dwóch bajtów ~3ms Multipleksowanie 4 LED7Segment to najcześciej 200Hz czyli co 5ms Obsługa wyświetlaczy w przerwaniu trwa ~ 5 us przy 8MHz Napisz przerwanie optymalniej a Dallas nawet...
Wartość dla timera0 = 34 , przerwanie co 27,75usek f = 36036 Hz
...jak sobie poradziles z przypadkowymi resetami? jak sie zresetuje to zegar tez sie resetuje? pzdr. A jest coś takiego jak przypadkowy reset? Jeżeli płytaka i soft niezawiera błędów i nikt nie spawa w promieniu 10 cm od urządzenia to nic nie ma prawa sie stać. Ani iskra elekrostatyczna o napięcu 5kV ani krótkofalówka nie zakłuci pracy urządzenia.
I w takim przypadku w ogóle nie wiem czy przy dwóch timerach będzie to działało... Musi działać. sprawdz jak bascom wywołuje timery. wrzuć listning to sie coś wymyśli.
Witam serdecznie. Czy ktoś by mógł mi wytłumaczyć to zadanie?:) Chodzi mi krok po kroku.
Po wielu prubach wróciłem do instrukcji bascoma: "Config servo". Może wie ktoś jak to instrukcja jest napisana żeby można ją było przełożyć na język C lub na Bascom. Bo jeśli mam sterować 5 serwami to nie mogę do każdego używać osobnego serwa. A ta instrukcja może sterować 16 serwami na jednym taimerze mimo że nie jest ona idealna.
Ad2. Tak, tabela 30 strona 70 Datasheeta. Ad4. Generalnie wszystkie nazwy biorą się z datasheeta. Skoro chcesz skorzystać z timer1, to szukasz w DS informacji na jego temat (od strony 108). Tryby pracy, a raczej ich podsumowanie jest na stronie 133 tabela 61. W cały rozdziale, tj 108 do 143 są opisane wszystkie rejestry, do czego służą i jakie ustawienia...
Akurat w C można to zrobić dużo prościej W C może i można ale kolega w Bascomie pisze ;)
W przykładzie AN157 jest Tikers: 'work on timer Timer0 = 253 u Ciebie jest Timer0 = 255
Witam wszystkich znawców tematu oraz zainteresowanych. Ze jestem w sumie początkujący jeżeli chodzi o mikrokontrolery to prosze o nutę wyrozumiałości. Tworzę regulator ładowania akumulatorów z paneli fotowoltaicznych oraz w niedalekiej przyszlości innych źródeł... To w sumie już nie istotne jakiekolwiek bedzie to źródło ale tak czy siak spotykamy się...
Witam. Napisałem prosty programik. Działa on tak że po włączeniu układ generuje impulsy o częstotliwości regulowanej przez ADC2. Teraz nie mam pojęcia jak zrobić aby przycisk podpięty na PD.0 włączał i wyłączał mi ten generator na wyjściu atmegi. [syntax=Basic4GL]$regfile = "m8def.dat" $crystal = 8000000 Config Portd = &B00000000 Config Portb = &B11111111...
Timer 0 w atmedze8 nie ma pwm. Powinieneś użyć Timera 2, czyli rejestrów TCCR2 i OCR2.
Spróbuj tak: 'czestotliwosc uprocesora w Hz $crystal = 11059200 Config Portb = Output Config Timer1 = Timer , Prescale = 256 On Ovf1 Timer1_tick Portb = 254 'ustawienie komparatora timera '65535 - 43200 = 22335 Timer1 = 22335 ' load timer1 nie działa prawidłowo w Bascomie Enable Timer1 Enable Interrupts Do 'program glowny Loop Timer1_tick: stop timer1...
Funkcja RC5Send nie działa na tym mikrokontrolerze , pewnie dlatego że Attiny25 nie posiada 16 bitowego timera :)
No,ale nie podałeś jaki procesor. W Bascomie można ustawić rejestry Timera "ręcznie"- a nie przez config. Zamiast czegoś takiego: "TCCR1A = &H00 'See datasheet for details "TCCR1B = &H0C 'See datasheet for details można ustawić to po "bascomowemu"- patrząc w DS. set TCCR1A.cs12 set TCCR1A.wgm12 Itp. Zamiast config ustawiasz poszczególne bity w rejestrach...
Moze da bascom'owa funkcja uzywa timera
Kwarc to 11.059
Jeśli wyeliminujesz drgania przycisku, to najprościej to zrealizować podając wyjście przycisku na wejście zegarowe jednego timera (bedzie on zliczał ilość wciśnięć), a drugi timer wykorzystać do odmierzania czasów 1s - dokładnie co 1 s należy kasować licznik pierwszego timera. Ot i wszystko.
Kolego patrzę na ten kod ze zgrozą, ale załadowałem do swojego Bascoma i trochę więcej zrozumiałem bo mozna sprawdzać referencje i skakać po kodzie. W przerwaniu co osiem taktów (nierealne) timer ma zliczać te twoje "niby" OCR. (Incr Licz_timera1 : If Licz_timera1 >= Ooo Then) Te OCR jest ładowane z tabeli gdzie najmniejsza wartość to 127 a najwieksza...
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...
Czyli to zatrzymywanie się animacji na około 0.5 sekundy może być spowodowane pętlą programu głównego? .Podam cały program ,może da się jakoś to ominąć.Dodam że dopiero się uczę. [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 16000000 Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Input Config Portc.4...
Użyj Timer2 dla obsługi RC5 zamiast Timera0 Config Rc5 = Pind.2 , timer = 2 i będzie OKejos ;)
Gdy już usuniesz wewnętrzną pętlę do..loop to zwróć uwagę, że stan przycisku będzie sprawdzany raz na 60s. Możesz zrobić sprawdzanie np. tak (co 1 sek.): dim x as byte ... do 'sprawdź przyciski if x=60 then x=0 toggle ... end if wait1 incr x loop end Albo wykorzystać timer lub przerwanie.
Poczytaj o timerach.
(at)stozek - normalnie w Bascom nie jest potrzebna komenda Start Timer0 bo jest on uruchamiany od razu podczas konfiguracji. Używa się tej komendy tylko jeśli poprzednio zatrzymałeś Timer poprzez Stop Timer0. Rozumiem, że zatrzymujesz timer. Tak więc zatrzymywanie timera to zabranie mu źródła taktowania. Bascomowe komendy moża wiec rozumieć tak: Start...
A co z powtówną instrukcją LOAD Timer0, 50000 w procedurze obsługi przerwania?
Instrukcja Wait nie stopuje procesora. Procesor odlicza czas poprzez zmianę wartości rejestrów a więc działa. A skoro działa to powinien także odczytać informację, że nastąpiła sygnalizacja od przepełnienia Timera. Spróbuj zastosować tą instrukcję. Tylko nie wywołuj jej w obsłudze przerwania a w pętli głównej. Bo gdybyś wywołał jej obsługę w przerwaniu...
A czy twój procek ATmega8 posiada tylko jeden timer ?
Czyli zwykły prosty miernik częstotliwości z jej porównaniem przy pewnej wartości - bez problemu się to na jednym timerze realizuje... Zobacz tu: [youtube]http://www.youtube.com/watch?v=... Złapałem tym nawet 40tys. obr/min :) Co prawda to przykład na attiny44, bo obsługa wyświetlacza i takie tam duperele zabierają jednak piny i pamięć...
No a jak myslisz? W przerwaniu od jakiegoś Timera.
Bascomowe komendy konfiguracyjne tylko z pozoru wyglądają na jakieś nieefektywne. Bascom taką konfigurację timera by zrobił dwoma wpisami do dwóch rejestrów i finał a nie rzeźbił tak jak pokazane wyżej czterema wpisami. Jak już ktoś chce ustawiać bity w rejestrach to mozna to zrobić za jednym zamachem poleceniem Bits() Jedynym pretekstem do grzebania...
A co jaki czas w Master uruchamiany jest Timer?
Problem powoduje używanie waitms. Podczas wykonywania waitms procesor pracuje tak jakby w pętli do..loop i nie reaguje na nic. W zasadzie nie powinna być używana. Rodzi więcej problemow, a wcale nic nie ułatwia. Zastosuj timer do sterowania diodą zamiast waitms.
No właśnie nie mogę skumać zasady działania timerów. W programie który napisał "dawid512" odmierzana jest 1s co zrobić żeby odmierzane było 180s a program główny działał normalnie, może counter0=counter0*(jakaś wartość) albo wykorzystać polecenie LOAD?? W moim programie chodzi mi tylko o wygenerowanie na wyświetlaczu napisu co 180Sekund Nic więcej....
Witam Zmowu timery :) Zrobilem sobie timerek, ktory ma odlicza czas do 24h i testuje go. W czasie testow zauwazylwem ze puzni sie kilka (ok.5) sekund na minute. Przejzalem posty na elektrodzie i nie moge nic wymyslic. zaladowana do timera wartosc dotyczy kwarcu 11.0592, ale probowalem wyliczyc dla innych kwarcow i wzzkazania byly jeszcze mniej dokladne....
Przepraszam że odkopuję ten temat ale chciałbym prosić o cały program do timera .
Rozwiązaniem jest śledzenie pełnej transmisji, przy wykorzystaniu Mode=Background, co niestety wymaga mikrokontrolera z timerem 16bit. Takie są wymagania Bascoma, a w przykładowo czystym C można zrobić tylko na timerze 8-bit.
U mnie w BASCOMie Timery w ATTiny2313 działają. Ale w ATMega88 nie działają. To zależy od wersji BASCOMa po prostu.
W jaki języku poszukujesz, bascom czy C?
Skróć czykl zliczania Timera.
Pomysł jest straszny. Poczytaj o timerach.
A stan Timera0 się zmienia? Ja też mam problemy z tym. Ale pod pojęciem "tym" kryje się nie Timer, lecz BASCOM. W BASCOMie niektóre rzeczy nie działają z niektórymi procesorami (np. Timery w ATMEBA88 nie działają, w ATMEGA8 już tak. BASCOM ma źle przypisane adresy rejestrów IO).
Pisałeś że twój programowy PWM pracuje poprawnie na Timer0, napisz może jakich użyłeś ustawień dla tego timera.
Skoro do RS232 używasz timera0 to wróży że korzystasz z programowej implementacji UART'a - i ty się dziwisz że inne przerwania zakłócają ci pracę programowego RS232 ??? Przecież ATmega32 ma piękny sprzętowy UART - zrób to na nim i skończą się problemy.
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
A nie możesz wykorzystać zwykłego timera?
Tylko że problem leży w bascomie a nie w mikrokontrolerze. Gdyż bascom nie widzi timera 3 jako źródła generowania sygnału PWM. Można to chyba zrobić zapisując odpowiednie bity do rejestrów, ale dokładnie co i jak to nie wiem, dlatego proszę o pomoc.
integra timery xmega timery atmega8 timery
zmniejszyć moment obrotowy moduł zasilający bosch siemens micromaster
Jak bezpiecznie wyczyścić zaschnięty tusz w drukarce atramentowej? Jak wyczyścić zaschnięty tusz w drukarce?