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...
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.
Wklep na początku przerwania : Enable Interrupts Wywnioskowałem to z pomocy bascoma (polecenie on Interrupt)
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...
Tak co jeden cykl. Prescale jest 64 wiec nie tu chyba problem. Nic sie nie dzieje na wyswietlaczu a w symulatorze tez nie pokazuje zmian zmiennych. To nie jest jeden cykl, ani też 64 jakby wynikało z podziału prescalera. Wszystko można odczytac w symulatorze, tylko musisz potrafic posługiwac się jego ustawieniami i funkcjami. Poniżej masz przykład...
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...
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.
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.
Nie wiem jakiej wersji używasz. Poniższy kompiluje się na pewno w 2075 - specjalnie sprawdziłem :D [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '********* TUTAJ SOBIE USTAW JAK CI PASUJE ********** Pin_wyjsciowy Alias Portc.5 Przycisk Alias Pind.2 : Set Portd.2 Const 1_ilosc_minut_do_odliczenia...
Timer0 w Atmega8 może pracować tylko w trybie OVERFLOW (przepełnienia).
Timer 0 w atmedze8 nie ma pwm. Powinieneś użyć Timera 2, czyli rejestrów TCCR2 i OCR2.
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.
W zasadzie co ten program robi? Bascom jest wolny- ale procesor wykonuje instrukcje co 0.125us przy tym zegarze. Załóżmy 1000 cykli w pętli- zajmie mu 125us policzenie stanów 0 na wejściu i co dalej? Od wykrycia 0 powinien zblokować na jakiś czas zmianę stanu, odliczyć czas w ms a nie w us i zmienić stan wyjścia. Timer i ewentualnie przerwanie.
nic we fusebitach nie zmieniasz. Mozesz jedynie ustawic na wew. 8mhz. Moim zdaniem temat sie powtarza, wiec powinien wyladowac w koszu. Poszukaj w helpie config clock, albo jak chcesz sam ustaswiac timer to poczytaj o timerze 2 i jego trybie asynchronicznym (tez w helpie)
Pomysł jest straszny. Poczytaj o timerach.
A nie możesz wykorzystać zwykłego timera?
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.
Ja wiem ze nie kazdy musi sie uczyc angielskiego ale moze by tak kolega przeczytal chociaz jaka jest poprwana pisownia komend w jezyku Bascom zamiast narzekac na brak pomocy ja rozumiem ze w obecnych czasach ludziom sie niechce czytac wola sie pytac od razu na forum ale zeby nie bylo ze nikt nie pomaga to ci napisze NIE MA TAKIEJ KOMENDY JAK WEIT JEST...
A może na zakończenie przerwania załadować wartość do timera???
Zrobiłem tak zumek nic się nie dzieje. Generator działa cały czas.
Tyle że jak z bascoma jestem noga bo programuję pół roku i nie umiem skalibrować timera
64 takty to o połowę krócej. :) W każdym razie, rzeczywiście obsługa tego przerwania w asemblerze powinna się spokojnie zmieścić poniżej 2us. Ewentualnie można jeszcze dodać bramkę AND sterowaną z drugiego timera i załatwić to sprzętowo.
Doszedłem, że funkcja Getrtctime() resetuje mi układ. Wcześniej działała. Jaki może mieć związek z deklaracją timera?
Ten sposób już kiedyś sprawdzałem i działał. Pamiętam, że kod zwiększający/zmniejszający musiał być w podprogramach. Liczyłem, że da się to zrobić na flagach od Timer.
bascom
Stosując polecenie Waitms nie moge uzyskać czasu opóźnienia mniejszego niz ok 10ms Więc go nie stosuj. Do tego są Timery.
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ę...
Mnie tak dokładniej chodzi o obsługę wartości wziętej z timera i odczytanie.
A czy twój procek ATmega8 posiada tylko jeden timer ?
Tak po pierwsze to przerwanie masz domyślnie wzbudzane stanem niskim, czyli przerwanie wywołuje się W KÓŁKO dopóki na pinie panuje stan niski. Musisz je ustawić tak, by reagowało na zbocze (w Twoim przypadku opadające). Poza tym jak pisał (at)emarcus - cały program jest pisany bez zastosowania się do jakichkolwiek dobrych nawyków, a i jak widzę wiedza...
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...
Po co to ? Config Rc5 = Pind.2 , Timer = 2
Przykładów w necie jest od groma. Z częstotliwością co najmniej 50Hz musisz przełączać wyświetlacz i wartość podawana na niego. Najlepiej wykorzystać do tego przerwanie timera.
Wystarczy jedno wejście I NTx , które będzie wykrywało ten impuls. Ale jeśli to będzie impuls "z ręki" jakiś klawisz to bez sensu - ze względu na drgania styków a potrzebny minimalny czas np 1ms. Jeśli to będzie impuls z jakiegoś wyjścia cyfrowego to ok. Założenia: - wykorzystamy tylko jedno wejście INTx - wykorzystamy tylko jeden Timer sprzętowy Przygotować...
Przepraszam że odkopuję ten temat ale chciałbym prosić o cały program do timera .
Config Timer0 = Timer , Prescale = 64 On Timer0 Odmierz_1s 'podprogram wykonywany podczas wystapienia przerwania Dim Licz_8ms As Byte 'deklaracja zmiennej Enable Interrupts 'aktywacja globalnego systemu przerwan Enable Timer0 'aktywacja timera0 Counter0 = 131 'wpisanie wartosci początkowej do timera0 Dim Sek As Byte 'deklaracja zmienna zawierajaca...
1) Portc.1 to jest wejście czy wyjście? Zdecyduj się w programie. 2) Gdzie w programie jest drugi pin wejściowy? 3) To co próbujesz zrobić z timerem nigdy nie zadziała prawidłowo. Nigdy IFem nie trafisz na odpowiednią wartośc timera
albo wykorzystaj timer uC zamiast przerw
Co jest nie tak ? Delikatnie mówiąc wszystko. 1 Timer nie wiem co liczy, cały jest źle napisany i nie powinien działać, bo np: przerwanie od timera powinno być zadeklarowane przed pętlą główną i nie w warunku. Zmienna Reload nie jest zerowana i zwiększa się do maximum typu Word Zmienna M (w zamierzeniu chyba od minut) też się zwiększa do 255 Zmienna...
Sprawdź na symulatorze w którym momencie się rozjeżdżają wartości badanej zmiennej i timera1 Możliwe, że ta pętla się wykonuje więcej razy, bo warunek stopu przeskakuje. Timer jest zwiększany asynchronicznie w stosunku do programu i program może przeoczyć moment gdy Timer=konkretna wartość, bo sprawdza Timer1 w przypadkowych momentach a nie po każdej...
Uruchomiłeś Timer, zapisałeś do TCNT2 i OCR2 jakieś wartości i tyle. Timer i tak zmieni wartość TCNT2. A wartość OCR2 jest mu obojętna. Nic dziwnego że nie widać żadnych zmian po modyfikacji tych wartości. Zrób tak jak radzi kolega wyżej.
delay w przerwaniu?! Nie przesadzasz? Dlaczego 2 razy ustawiasz TOIE2? Po co zerujesz TCNT2? Po co ustawiasz TOV2? Spróbuj najpierw sprawdzić ten kod z taktowaniem timera z podstawowego zegara, nie z kwarcu zegarkowego. Wtedy będziesz wiedział, czy problem leży w oprogramowaniu, czy w braku oscylacji.
Osobiście wykorzystał bym nóżkę np. INT0. Wtedy wszystko dzieje się w przerwaniu, po za tym w zmiennej Counter1 masz twój wynik. Coś skąpą masz tę konfigurację timera :P
W jaki języku poszukujesz, bascom czy C?
Nie przez 65536 tylko przez rozdzielczość timera np Pwm=10 wtedy f.procka/1024(rozdzielczosc pwm)/prescaler=f.PWM Przez 65536 dzielisz gdy obluiczas timer=timer a nie timer=pwm
Nie musisz czekać. Musisz zacząć trochę inaczej myśleć niż "linijka po linijce" Wykonaj konwersję i wystartuj timer. Pozwól programowi biec dalej. Odczytaj temperaturę, gdy timer odliczy te 800 ms. Pamiętaj, że program główny to zazwyczaj pętla. Niech nawet sobie bezproduktywnie biega w koło do czasu zanim nie będzie można odczytać temperatury. Później...
Zakładam, że będzie tylko wewnętrzny oscylator czyli 1MHz. Nie mieszam z fusami i zmianą częstotliwości bo nie mam o tym pojęcia. Powiedz mi jeszcze jak się liczy ten timer żeby liczył np. 5 sekund od jakiegoś zdarzenia np. pojawienia się stanu niskiego na pinie i po odliczeniu tych 5 sekund żeby wywołał jakieś inne zdarzenie np. włączenie led. Nie...
Widzę że muszę trochę sprostować. 1. Nawet kosmicznie często wywoływane przerwanie zdąży się wykonać choć by nie wiem jak długo ono trwało, bo przerwania po wejściu w obsługę jakiegoś przerwania są blokowane i odblokowywane są dopiero po zakończeniu się obsługi tego przerwania. Więc twierdzenie że przerwanie nie zdąży się wykonać w ciągu 128us bo samo...
Timer w przerwaniu obsługuje wyświetlacz LED i inkrementuje zmienną byte, która w pętli głównej w instrukcji Case wybiera konkretne funkcjonalne fragmenty programu do wykonania, których wykonanie czasowo mieści się pomiędzy przerwaniami od timera. W przerwaniu od timera ustawia się także flaga przerwania, która uruchamia za pomocą If Then instrukcję...
Witam, przez 0.7 sekundy program nie widzi stanu pinów, wiec na nie nie reaguje. Proponuję dwa wyjścia 1) wstrzymanie również umieścić w warunku if pind.0=0 then portb.0=0 waitms 200 portb.0=1 endif 2) chyba lepsze: zastosować timer
Jeszcze raz od nowa. Tym razem postaraj się bardziej. Ustaw wreszcie te przerwania INTx na jakieś zbocze, a nie poziom. Co z tego, że ustawiłeś Timer1 jako licznik jak nie ma to związku z resztą kodu. Timer sobie działa,a ja się pytam - i co z tego ? gdzie obsługa tego timera?
uaktywnij przerwania i rozpocznij zliczanie timera i wyślij impuls na nadajnik, rozpocznij pętle i... koniec pętli. W obsłudze przerwania które wyzwoli powrót fali zrób takie coś, że ma zatrzymac timer sprawdzic jego stan, cos tam z tym stanem zrobic i wyzerowac timer. wysyłasz znowu impuls i rozpoczynasz timer i RETURN do loopa DO : LOOP i zmniejszyłbym...
........, 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...
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...
Szukałem tak jak mówiłeś ale timery ciężko jest zrozumieć, nie mam żadnej książki a kurs internetowy z którego się uczyłem programować był krótki i nie zawierał timerów :( . Może znasz jakiś artykuł o timerach dobry dla początkującego.
Ok to jak ustawić mam ten Timer?
czyli jak w programie zmienie multipleks na timer 1 to bedzie działało?
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).
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...
Ale która konkretnie, czy Enable interrupts, czy Enable Timer0, czy oba na raz? Moim zdaniem to kolejny bug bascoma, znów może jakieś pokręcone rejestry, itp. Dokładnie problemu zidentyfikować nie mogę, bo takich procesorków nie mam, ani czasu tez zabardzo na takie badania. Jedyne co mogę doradzić to: a) zrobienie własnoręcznie przejściówki m8515/m32...
Ten kod nie wykonuje modulacji. Żeby ją wykonać musisz zatrzymać timer/odłączyć jego wyjście do pinu.
Zrób to tak: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 4000000 Config Timer0 = Timer , Prescale = 256 'onfiguracja timera, przescaler 256 On Timer0 Odmierz_1s 'włączamy timer0 Dim Licz_8ms As Byte 'definiujemy zmienną pomocniczą Dim Sekundy As Byte Enable Interrupts 'włączamy zezwolenie na przerwanie Enable Timer0 Load Timer0 = 125 'ładujemy...
Jeśli chcesz to zrobić, tak jak mówisz, to musisz czas odliczać za pomocą Timera, ponieważ "Wait" blokuje Ci procesor.
Zmień doświadczalnie wartość wpisywaną do timera. Zobacz czy poprawnie wyświetla ci to co chcesz. Ważne jest także żeby przerwanie nie było za długie bo wtedy może grozić to resetem uc.
Brzęczące serwo świadczy o 2 rzeczach: -albo jest kiepski i najzwyklej w świecie drży, -albo zrób to ręcznie na timerach, bo bascom i servo to tandeta
Ja wolę przerwania: Dim Sekunda as byte Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_1s Enable Interrupts Enable Timer1 do loop end Odmierz_1s: Counter1 = Counter1 + 34286 Incr Sekunda Return Podałem ci "szkielet" programu do odmierzania 1 sekundy za pomocą timera1. Pamiętaj że procek musi go posiadać i musi być taktowany przez oscylator...
Wg. mnie powinno tam być timer1 czyli np. Config Timer1 = Timer , Prescale = 128
Niestety nic się nie da zrobić (poza extrzemalnym skróceniu czasu wykonywania się przerwania od Timera1 albo zrobieniem generowania dźwięku na Timerze).
A czy aby ten mikrokontroler nie ma wewnętrznego oscylatora ustawionego na 1MHz.
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...
Tak, jest wyzerowany Dodano po 3 Zmiana Timera też nie pomogła
No tak, nie sprecyzowalem. Na razie efekt miał być taki że switch (PD.0) miał włączać timer. Docelowo będą dwa switche, jeden włącza (PD.0) a drugi wyłącza (PD. 1) timer.
Witam, chciałbym przy użyciu Atmega8 i zewnętrznego kwarcu odmierzać i zliczać setne części sekund, sekundę mogę łatwo wyłapać z timera1 według przykładowych obliczeń 4000000MHz / 256 = 15625 65536 - 15625 = 49911 lub 8000000Mhz / 256 = 31250 65536 - 31250 = 34286 Nie mam jednak pomysłu jak....... Z góry dziękuję za pomocne wypowiedzi. Aby odmierzac...
Po Config Timer0 wpisz dodatkowo TCCR0 = 4 Config Timer0 = Timer , Prescale = 256 Tccr0 = 4 Tylko musisz coś zrobić z START TIMER0 i STOP TIMER0 bo one przywrócą wartość po CONFIGu i program dalej nie będzie działał. Najprościej będzie usunąć te instrukcje. dodano 20 Sie 2008 08:05 Mail z opisem błędu poszedł już do MCS Electronics. Zbaczymy jaka będzie...
Gate i Mode w konfiguracji timera nie występuje w bascomie na AVR. Prawdopodobnie może to być sposób wyzwalania/ zliczania timera (wewnętrzne lub zewnętrzne) plus jakieś inne tryby pracy.
Ten sam kod, który zaprezentowałem w pierwszym poście , natomiast przerwanie wywołane już na nodze portb.0 i działa zmienna nie jest nadpisywana. Cała reszta kodu bez zmian poza zmianą przerwania. Przerwania skonfigurowane prawidłowo. Moze przerwania masz skonfigurowane prawidlowo... ale..... Czy mozesz wyjasnic w jakim celu, w obsludze przerwania...
Czy to może być wina częstotliwości kwarcu ?. A gdzież tam kwarcu? :( ... tylko i wyłącznie programu. To może działać zupełnie swobodnie nawet bez kwarcu tylko na wewn. oscylatorze np 8MHz. Zobacz tutaj: http://mirekk36.blogspot.com/2011/09/fak... wprawdzie w nieco innym języku ale widać, że odczyt temperatury 1wire...
to zatrzymanie timera przed załadowaniem wartości jakby pomogło (przynajmniej nie zachowuje się dziwnie) teraz miga w równych odstępach ... Home Lcd "P=" ; P ; "us" Lowerline Lcd "I=" ; I ; "us " ; Licznik If Licznik = P Then Portd.2 = 0 End If If Licznik >= C Then Portd.2 = 1 Licznik = 0 End If ... Dobra odczepiam się od portów :) I już mówię dlaczego...
Z tego co widze problem jest chyba w tym ze w przypadku 8 kompilator sam mi ustawial rejestr assr i bity exclk i as2 a w tym 168 tego nie robi. tylko jak na razie z racji mojej niklej wiedzy musze dojść jak to zrobić ręcznie. Widzę że problem już rozwiązany, ale dodam że dokładnie tak jest. U mnie w BASCOMie nie działa konfiguracja Timerów, Przerwań...
CONFIG RC5 = pin [,TIMER=2]
Co zrealizować? Programowe zliczanie impulsów? Ustawiasz timer tak, żeby generował przerwanie co 100 us, sprawdzasz stan portu, robisz xor z poprzednim stanem i testujesz, które bity są ustawione - ustawiony, znaczy zaszła zmiana stanu, czyli inkrementujesz odpowiednią zmienną.
Kolega emarcus ma rację, przesadziłem ze skrótem myślowym i wyszła mi nieprawda. W zależności od częstotliwości kwarcu pojemność Timera 1 starcza na kilka do kilkudziesięciu sekund.
Chcę napisac własny program z wykorzystaniem Timerów. Na początek proszę o wytłumaczenie dlaczego w poniższym programie: 1. wykorzystano podzial częstotliwości zegara (po preskalerze 256) 250/125 zamiast wykonac jedno dzialanie? 2. uzyto wartość początkową Timera0 = 250 przed Petlą do Loop End . O ile wyjaśnienie podane przez Tomq jest błędne(!) Load...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Nie ma większego znaczenia w jakim środowisku programujesz (Basic albo C). Istotny jest koncept projektu i sposób rachunkowy, reszta to tylko inna forma zapisu programu. Wybrałeś za narzędzia: Timer1 i jeden z interruptów zewnętrznych. Zatem jest tez bez znaczenia...
No, tak dobrze to nie jest. AVR-y (a w nich timery) nie mogą poprawnie zliczać impulsów o częstotliwości większej niż połowa częstotliwości zegara zakladając na wejsciu wypełnienie przebiegu 50%. Niezbędne będzie zatem zastosowanie preskalera. Proponowałbym ATMEGA8 z kwarcem 16MHz i z prescalerem /4 zbudowanym np z cyfrówki 74F74. Mamy zatem poniżej...
Tyle dowaliłeś programu w przerwaniu , że chyba będzie ślimaczył i timera w takim układzie się raczej nie wyłącza .
z tego co wiem to delay to komenda to odliczania czasu w mikrosekundach, a do dokładnego odliczania czasu należy używać funkcji Timer.
Było by super, ale jak to zrobić żeby się nie rozjechało? Jak zrobić aby ten trzeci PWM chodził zgodnie z pierwszym? To jest inny TIMER jest jakiś fixpatent żeby to chodziło "synchronicznie"?
W konfiguracji Timera dodaj Mode=1. Teraz chyba pracuje jako 8 bitowy.
Witam. Najpierw wysyłasz rozkaz pomiaru temperatury, później z pomocą timera lub nawet zmiennej zwiększanej w pętli odliczasz czas pomiaru lub większy (mikroprocesor w międzyczasie normalnie wykonuje program). Po tym odczytujesz wynik pomiaru z DS1820, co nie trwa zbyt długo. Pozdrawiam. EDIT: Uzupełniłem posta
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
ATMega8 Chodzi na fabrycznie ustawionej czestotliwosci 1MHz
Oj kolego jak Ty chcesz mierzyć coś używając Waitms w programie ?. W obsłudze przerwania od cewki startuj timer, a w drugim przerwaniu go zatrzymuj.
Skąd te obliczenia? Poniżej masz kalkulator do timerów. Policz i się nie dziw. Load timer = ... nie jest równy Timer = ... http://www.elektroda.pl/rtvforum/viewtop...
W helpie BASCOMA jest wyraźnie napisane, że funkcja GETRC5 korzysta z TIMERA 0, wiec odliczanie czasu zrealizuj na innym timerze, tak najprościej i najszybciej.
Człowieku - Jesteś wielki... Ja tych kaw musiała bym wypić litry i zjeść kilogram cukierków, a d*psko rośnie :) Mam jeszcze jedno pytanie: Jeśli by to przerabiać na Tiny261, 2313, albo Atmega8, to jak konfigurować timer i ADC? Np dla Tiny261 doczepił mi się bascom do tych parametrów: Unknown CONFIG parametr (internal) i unknown variable dim COMPARE0:...
Musisz jeszcze ustawić drugi timer.
Czy wszystko będzie ok. trudno wyczuć. Zależy jaki zastosowałeś układ wykrywania przejścia przez zero. Jeżeli stan niski utrzymuje się przez większą część przebiegu i tylko w okolicach zera jest wysoki to dopóki jest stan niski to jest zgłaszane przerwanie. Jeżeli dodać do tego że przerwanie int0 ma najwyższy priorytet poza reset to przerwanie od timera...
Kolego, bez timera się nie obędzie. Musisz nauczyć się ich używać zamiast poleceń typu Wait.
Czas wciśnięcia nie jest istotny bo załatwia się to programowo tzn. jak załatwić to programowo poprzez zastosowanie opóźnienia? A ten Timer to mam wykorzystać jako licznik wchodzących osób na schody czy do odmierzenia czasu jako timer?
atmega8 bascom timer timer atmega8 bascom timer atmega8
przełożenie przekładni pasowej bezpiecznik różnicowoprądowy zamek drzwi skoda octavia
canon ir2520 matryca telewizor dziwne kolory
Zamrażarka Bosch Siemens alarm, gorąca górna część – przyczyny i działania Plazma Panasonic, LG, Pioneer – jest dźwięk, brak obrazu – typowe usterki i koszt naprawy