No jak za każdym razem do licznika wpisujesz zero to jakim cudem ma być spełniony ten warunek timer1= A?
Witam. W przerwaniu wpisałeś : Timer1 = 131 do zliczenia zostało 65536 - 131 = 65405 Przy wpisaniu do Timer0 tej samej wartości do zliczenia pozostaje : 256 - 131 = 125 impulsów. Myślę, że dobrze zrozumiałem Twój post.
Przerwanie miałbyś z częstotliwością 32000Hz(8000000/250), gdybyś tylko przeładowywał Timer w przerwaniu. [syntax=basic4gl] Prztimer1: Load Timer1, 250 '<----- w tym miejscu na przyklad Incr Licznik If Licznik > 100 Then Licznik = 0 End If[/syntax]
tak, przepraszam za literowke, oczywiscie mam w programie napisane tak: config timer1=counter reszta jak wyzej
odpowiem sobie sam, sprawdzilem w symulatorze bascom i działa
Jak poprawnie skonfigurujesz to zadziała. Oczywiście sam licznik to nie wszystko, trzeba jeszcze ustawić port jako wyjście.
Wystarczy wpisać warunek w dodatku prosty If I = 100 then stop timer1 I=0 timer1= 0 start timer1 end if a tutaj Kasowanie: stop timer1 I=0 Timer1 = 0 start timer1 Return W ogóle nie bierzesz pod uwagę z jaką częstotliwością będzie liczył licznik chyba potrzebujesz jakiś konkretny czas...
W Bascomie nóżki konfiguruje się przez Config Portx = input/output - dla całego portu Config Pinx.y = input/output - dla jednej linii Sugerowałbym zatrzymać licznik przed załadowaniem do niego wartości. W nocie można znalźć info, że mogą pojawić się przypadkowe wartości w rejestrach przy zapisie na pracującym liczniku.
[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
Musisz zaznaczyć cały tekst który chcesz pokazać jako kod, a następnie zaznaczyć napis Code $regfile = "attiny2313.dat" $crystal = 8000000 'kwarc 1MHz $prog &HFC , &HE4 , &H9F , &H00 ' generated. Take care that the chip supports all fuse bytes. Config Timer1 = Timer , Prescale = 64 'timer1 jako licznik 15536 Config Int0 = Rising 'detetor zera...
Witam. Problem leży w obsłudze Timera1. W Bascomie Timer1 jest uważany jako 16 bitowy. Natomiast układ ATiny25 posiada liczniki 8 bitowe. A więc nie możesz użyć Timera1 a jedynie Timera0 ( 8-bitowy ) i odpowiednio zmodyfikować program.
Robisz prosty błąd w składni. Poczytaj w helpie o Load. Nie tak: [syntax=basic4gl]Load Timer1 = jakas_wartosc[/syntax] tylko tak: [syntax=basic4gl]Load Timer1 , jakas_wartosc[/syntax] Z tego co pamiętam można również tak. przykładowo: [syntax=basic4gl]Timer0 = 249[/syntax] co jest równoważne: [syntax=basic4gl]Load Timer0 , 6[/syntax] Ale to sobie musisz...
Oczywiste że tak zawsze będzie. Tym licznikiem możesz liczyć tylko impulsy które są ukształtowane np z enkoderów, natomiast dla styków mechaniczynych musisz albo je ukształtować sprzętowo, albo zrobić debouncing programowy. Chodzi o to, aby z sieczki krótkich impulsów które powstają po wciśnięciu przycisku zrobić jeden impuls wydłużony. Można to zrobić...
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....
........ chce wykorzystać wewnętrzny kwarc 8Mhz po trzecie czytając helpa jesli dobrze rozumiem to timer1 jest 16bitowy a timer0 jest 8 bitowy emarcus - gdybym chciał wykorzystać twój pomysł to gdybym zostawil timer1 jako counter a jako timer wykorzystał timer0 ktory by zliczał czas w jakim sa zbierane impulsy - jeśli o to ci chodziło i jeśli jest...
Cały ten układzik ma posłużyć do kontroli maszyny zmęczeniowej , w której ważna jest właśnie ilość wykonanych cykli i częstotliwość z jaką maszyna jest ustawiona. Jezeli to ma sluzyc jako wyniki konkretnych badan "na endurance", to musisz dolozyc staran aby wyniki byly dokladniejsze a moc processor byla bardziej prawidlowo wykorzystana. Wiec tak na...
Z jaką znowu biblioteką? RC5SEND jest w kompilatorze jako code template a nie w bibliotece i zmienić się jej nie da. RC5SEND korzysta z 16-bitowego licznika TIMER1, którego to ATtiny45 nie posiada . Ma tylko dwa 8 bitowe liczniki. Rozwiązanie jest i to na forum MCS Electronics. Poszukaj!
Witam ATMega8 ma Timer1 16-Bitowy i do odczytu lub wpisu służą dwie dane: "TCNT1L" - odczyt lub zapis "dolnej" 8-Bitowej części i "TCNT1H" - odczyt lub zapis "gónej" 8-Bitowej części n.p. stan licznika "21456" odpowiada : TCNT1H =83 ; TCNT1L=208 bo 21456:256(pojemność TCNT1L=256)=83+208 Aby wszystko było OK to obie wartości (TCNT1H i TCNT1L) muszą być...
Witam serdecznie Potrzebuję zmierzyć zewnętrznym licznikiem ile impulsów z timer1 mieści się w czasie kiedy portd.3=0. Kilka dni na googlach i nic , tak jakby to było niemożliwe. W pomocy bascom pisze 'Możesz odczytywać i zapisywać dane z licznika TIMER1, za pomocą 'specjalnej zmiennej systemowej: W = Timer1 Timer1 = W No i brak info gdzie to wpisać
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
Dokładnie tak samo jak w przypadku TIMER1: CONFIG TIMER3 = PWM , PWM = 8 | 9 | 10 , PRESCALE = 1 | 8 | 64 | 256 | 1024 , COMPARE A PWM NO_OUTPUT ] = CLEAR UP | CLEAR DOWN | DISCONNECT , COMPARE B PWM NO_OUTPUT ] = CLEAR UP | CLEAR DOWN | DISCONNECT Licznik TIMER3 jest dokładną kopią licznika TIMER1 zatem wszystkie opcje jak i nazwy rejestrów są takie...
"Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1" Przy tej konfiguracji to chyba nigdy nie wejdzie w przerwanie od Timer1. Gdy osiągnie Compare1a = 600 to dzięki poleceniu Clear Timer = 1 licznik zostanie wyzerowany. A przerwanie Poz: jest uruchamiane dopiero po przepełnieniu licznika. Ale ja nie mam zaufania do konfiguracji...
I właśnie trzeba użyć licznika TIMER1 bo Timer0 nie wystarczy do tego zadania.
Tryb Capture służy do przechwytywania zawartości licznika a nie do jego przeładowywania.
Program działa i nawet licznik się zatrzymuje tylko jaką mam pewność że jest to 250ms? chodzi mi o to żeby uzyskać jak największą dokładność. Dzięki za ten przykład, spróbuję... Nie wiem dokładnie , do czego Ci to potrzebne ale przykład z przerwaniem , który podałem wcześniej działa z dokładnością do ~2 cykli zegara(500)ns.Czy to niezbyt dokładnie...
Witam, Mam pewien problem dotyczący licznika Timer1 w procesorze TINY45. Programuję w BASCOM. Procesor TINY45 posiada 2 liczniki 8-bitowe: TimerO oraz Timer1. Problem w tym, że nie bardzo mi się udaje zmusić Timer1 do działania... Napisałem taki prosty program na próbę: $regfile = "attiny45.dat" $crystal = 8000000 Config Pinb.3 = Output Led...
a instrukcje start timer1 i stop timer1? to tak najprościej, bo wogóle to to można zrobić na timerze0, przerwaniu i jednym liczniku programowym...
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...
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
Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
Jedno mi się rzuciło w oczy ładujesz licznik zanim go zatrzymasz, rób odwrotnie. Nie zatrzymałeś również licznika po configu
Const odlicz=65436 rem dla zegara 12MHz odliczy tylko 100 impulsow (100us) dim licznik as word dim koniec as bit Config Timer1 = Timer , Mode = 1 , Gate = Internal On Timer1 etykieta Counter1 = odlicz do start timer1 bitwait koniec,set reset koniec rem petla powtarza sie co 100 us loop etykieta: licznik = counter1 rem To ma eliminowac czas od momentu...
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...
odnosnie zegarka to ja bym to zrobil na timer1 - 16 bitowy licznik, i uzaleznil to od przepelnienia tylko nalezy ustawic preskaler na 256 wpisac poczatkowa counter=conter+34286 oczywiscie przy rezonatorze 8 MHz 8000000/256/(65536-34286) = 1 sekunda pozniej tylko zliczanie a i jeszcze jedna sprawa nalezalo by zmienic wartosc dwojkowa na kod BCD :)
Nie używałem "Noise Cancel" więc nie wiem czy ma wpływ - ale usuń Timer1 = 54477 W bascomie single może płatać figle zamień na typ LONG ( profilaktycznie ) Częstotliwość = 1000000/Licznik Dla 1 Hz powinieneś otrzymać wynik 1000 Wprowadź zmienną Policzone typu bit. w pętli głównej Do policzone = 0 wait 2 f= 1000000 / f lcd f loop w przerwaniu Licz: if...
zacznijmy od tego, ze kod umieszczamy w klamrach Dodano po 10 to jest kod na jedna sekunde $regfile = "m8def.dat" $crystal = 8000000 Config Pind.7 = Output Portd.7 = 0 Przekaznik Alias Portd.7 Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Enable Interrupts Enable Timer1 Load Timer1 = 31250 Do Loop End Sekunda: Load Timer1 =...
wynik końcowy faktycznie za każdym razem jest inny. (at) emarcus możesz podpowiedzieć jak powinien wyglądać serwis int1? Popatrzyłem troche bliżej na twoj kod. Z jakiego powodu potrzebujesz otrzymać wynik ("Czas_2") z dokładnocią aż do 9 miejsc decimal? Jeżeli jeden z czynników iloczynu (rozdzielczość timera) jest liczbą wymierną z dokładnościa do...
Witam, Nic nie przeszkadza w tym, że to bascom. Prescaler jest ustawiony na 64 więc zanim licznik zdąży zwiększyć swoją wartość to uC już załaduje do niego odpowiednią wartość. W Twoim programie jest pare błędzików, które może nie wpływają na dokładność pomiaru, ale są głupie :) konfigurując porty, dla pewności możesz napisać: set ddrb.2 set ddrb.3...
Mam takie coś: $crystal = 4000000 $regfile "attiny2313.dat" Config Lcd = 16 * 2 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.4 LCD Db5 = Portb.5 , Db6 = Portb.6 Db7 = Portb.7 , E = Portb.3 Rs = Portb.2 Dim Wynik As Long Config Timer1 = Counter , Edge = Rising Cls : Lcd "Licznik" : Wait 1 Start Timer1 If Pind.1 Then Waitms 25 Timer1 = 0 Do Timer1...
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...
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...
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...
Banalne zadanie. A więc włączasz licznik(lepiej TIMER1-większa pojemność), tak, aby odliczał ci te 10sekund. Dajesz zmienną którą zwiększasz np co 1sekunde (zmienna o nazwie sekundy). W czasie odliczania do 10s w pętli głównej zliczasz impulsy przycisku i zwiększasz je w innej zmiennej (np. impulsy). Po 10 sekundach w zmiennej sekundy będzie10s a w...
Zrobiłem jak mi proponowano, jednak bascom komunikował mi błędy. Dane te wpisałem w opcjach bascoma i nadal nic :/ Może ma ktoś jeszcze jakiś pomysł?
juz dziala cos nagle mu sie odmienilo i zadzialalo na procesorze a w bascomie symulator i tak nie dziala na atmega16.
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
Tu masz program pod ATtiny2313, jeśli potrafisz programować, to też potrafisz przerobić program na ATMegę: [syntax=basic4gl]' Bardzo prosty zegar bez możliwości ustawiania Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Migaj As Bit Config Portb = 255 : Portb = &B255...
Witam, Natknąłem się na problem dotyczący konfiguracji licznika Timer1. Najprawdopodobniej BASCOM zawiera jakiś błąd i używając standardowych instrucji uzyskanie PWM z tego licznika nie jest możliwe. Używając standardowych "Config Timer1..." nie można nawet zmusić Timer1 do zwyczajnego zliczania... Mniejsza o BASCOM, postanowiłem zrobić to samo wpisując...
no wcześniej trzeba zatrzymać licznik :P to znaczy jest taki kłopot, że jak piszę load timer1, 1234 to bascom mi wpisuje do obu rejestrów 255, podobnie przy timer1 = 1234 :lol: więc wolę wpisać do każdego rejestru osobno bo wtedy jest wszystko ok... może tylko u mnie tak jest, moja wersja bascoma 8051 to 2.0.11 :)
Wydaje mi się, że najpierw powinno być „uruchomione” odliczanie tych 0,1 sek, wyzwalane pierwszym pikiem z „paczki”. Potem trzeba odczekać te 0,1 sekundy na zanik „szumów” i zacząć zliczanie w czasie 0,9 sek. Ilość zliczonych pików podzielona przez czas da mi częstotliwość. Wynik ma się utrzymywać na wyświetlaczu...
Witam, potrzebuje prostego programu który zliczy ile razy na sekundę wciskany jest przycisk. Np na jednym z portów pojawi się 0 kiedy przycisk zostanie wciśnięty, program ma zliczyć ilość impulsów przez sekundę i zwrócić daną do zmiennej. Proszę o pomoc lub podpowiedź. Niestety jestem początkujący i niezbyt rozumiem Liczniki-Czasomierze Timer0 i Timer1....
Zdefiniuj zmienną Temp jako Word. Jak ci ma wyświetlić 600 jesli zmiena Byte może przyjąc max wartość 255. Właśnie powyżej tej wartości będą ci sie wyświetlać dziwne rzeczy. No to może wytłumaczę jak to zrobić na zmiennej typu Byte według wyżej wspomnianej ideii. $crystal = 4000000 $regfile "attiny2313.dat" Dim Pomiar As Single Dim Temp As...
Skoro sygnał ma być podawany na INT1 (PD3) to chyba tu jest problem bo podłączony jest tu wyświetlacz No ale jak to? Mówisz tak ja by wyświetlacz podłączył tam się sam. A przecież to Ty go chyba podłączyłeś. Wina więc nie w wyświetlaczu a w tym kto go podłącza :D No i druga sprawa. Nie bardzo rozumiem dlaczego chcesz podłączać sygnał do INT1, skoro...
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...
Musisz zaladowac do licznika w momencie obslugi przerwania wartosc Timer1=Timer1+4150 i wszystko bedzie smigac az milo :) sam nad tym sie glowilem tydzien heheh
Nie znam się na bascomie ale czy zmienna T nie powinna być jakoś powiązana ze zmienną Licznik?
Zgadzam się z kolegą. Używanie polecenia wait to tak jakbyś strzelał z działa przeciwpancernego do muchy... Przykładowe skonfigurowanie licznika 16-bitowego w BASCOM tak żeby zliczał do 1s przy częstotliwości taktowania 16MHz: ( wszystkie ustawienia konfiguracyjne oraz deklaracja zmiennych ) Config Timer1 = Timer , Prescale = 256 ' konfiguracja licznika...
ok ja podpowiem co to jest :D COnfig timer0 = timer 'ustaw timer jako licznik impulsów wewn. zegara procesora Mode=1 ' tryb pracy czujnika, to jest ladnie opisane w datasheet do procesora, 1 w tym przypadku oznacza normalna prace timera czyli zlicza impulsy gate = internal ' najprawdopodobniej chodzi tu o taktowanie licznika ale nie pamietam dokladnie...
Ustawiasz CTC na bardzo szybki, czas pomiędzy przerwaniami to będzie rozdzielczość regulacji. Reszta to wartości w pamięci(zmienne) odliczające programową syntezę częstotliwości. Aha..oki, dzięki, spróbujemy narazie coś wycisnąć z Bascoma ale czarno to widzę nawet w asemblerze, bo zależy mi na bardzo dokładnej częstotliwości, a przecież już przerwanie...
Maksymalna częstotliwość jaka mnie interesuje jest uzyskiwana przy OCR1A = 19. Generalnie wszystko mi działa i to całkiem przyzwoicie, ale muszę zliczać wygenerowane impulsy. Myślałem już nawet o jakimś zewnętrznym liczniku - w postaci układu TTL którego wyjścia będę sobie odczytywał w pętli głównej. To już oczywiście abstrakcja.
No nie bardzo. Nie ma żadnego licznika przerwań nieobsłużobych. Trzeba tylko panować nad tym co się robi i nie pisać proedur obsługi przerwan na 6 hektarów - procedura powinna być jak najktósza i wtedy nie ma problemu.
Udało mi się odpalić program z książki Pana Wiązani, ale tam timet odmierza 1s Jak to przeliczyć? Jest jakiś na to wzór? Rzeczywiście musiało się 'udac odpalić' bo ten program nie jest pozbawiony błędów (!) \ A jak zrobić żeby odmierzał np 10 sekund? Zmiana preskalera wydłużyła max do 2sekund czas. Aby timer1 odmierzył inne/dowolne interwały czasu,...
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?
Przeznaczenie: Zatrzymuje działanie programu lub określone urządzenie. Składnia: STOP STOP urządzenie gdzie: urządzenienazwa symboliczna uruchamianego urządzenia. Opis: Pierwszy format instrukcji powoduje zatrzymanie działania programu. W tym celu jest wykonywana pusta pętla, podobnie jak w instrukcji END. Jednak przy instrukcji STOP nie są wyłączane...
Teraz spłodziłem coś na chacie w bascomie ;-) Może w końcu ta koncepcja ruszy.... uwzględnia drgania styków, działa na innej zasadzie... powinna byc odporna na wszelkiego rodzaju czasy między puszczeniami wciśnięciami itp... w przerwaniu co 10ms sprawdzamy stan przycisku zadziałanie przycisku następuje najwcześniej po 10 jego sprawdzeniach (po 100ms)...
Definiujesz stałą Licznik o wartości znacznie wiekszej niż zakres bajtowy. Następnie w podprogramie przypisujesz tą wartośc do rejestru Timer2, który akceptuje tylko bajty (Timer1 akceptuje słowa). Może to jest ten błąd?
Takie programy to się całe pisze w przerwaniu bez zbędnych kombinacji. Przy okazji można dodać funkcję płynnego przechodzenia pomiędzy jasnościami PWM żeby to jakiś bajer miało. Przycisk sprawdza się dwuetapowo, że został wciśnięty i że został puszczony. ale nie można tego robić za szybko bo zakłócenia wchodzą. Efekty świetlne trzymaj w DATA, tak łatwiej...
Witam, pisze program w którym wykorzystuję 16 bitowy Timer1 z Atmegi 328. Najpierw konfiguruję go tak: [syntax=vbnet]Config Timer1 = Timer , Prescale = 64 'Kwarc 18.43MHz, 1/18430000 * 64 = 3.473us Enable Timer1 On Timer1 Impulsuj 'ISR[/syntax] a potem mam procedurę przerwania której zadaniem testowym jest wygenerować przebieg prostokątny: [syntax=vbnet]'---------------------ISR....
Witam Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
Hmm On Timer1 Nazwa_podprogramu nie muszę wcisnąć do podprogramu tego 4 przycisku? Powiedzmy, że dam $crystal = 1000000 do tego prescale=1024, przez 60 sekund Timer1 powinien doliczyć do 58594 (zakładając, że 1 takt licznika trwa 1,024ms), więc potrzebowałbym 5 przepełnień. Tylko jak zliczyć te przepełnienia?
W twoim programie wg BASCOM-AVR są błędy: Error : 254 Line : 17 Variable expected Przepraszam za pomyłkę. W BASCOM-AVR, do przerwań od timera, powinniśmy użyć 'TIMER1_OVF' zamiast 'TIMER1 OVERFLOW'. Podobna sytuacja jest z przerwaniem od INT0, powinniśmy użyć 'INT0_ISR'. Najpierw musimy skonfigurować Timer1 i INT0, następnie włączyć przerwania. Kiedy...
Niestety ja tu nic nie poradzę bo nie bawiłem sie w bascomie w capture. 1) Sygnał do licznika może pochodzić z nóżki albo z wewnętrznego komparatora. Więc trzeba jakoś wybrać nóżkę i ustawić ja na input. 2) Najpierw skonfiguruj swój timer tak jak niżej, bo to musi być COUNTER a nie TIMER: Config Timer1 = Counter , Edge = Falling , Capture Edge = Falling...
Witam Mój problem to brak kompilacji przy konfiguracji Timer2 w tryb Counter Unknown CONFIG parameter Porblem polega na tym że w helpie BASCOM-AVR można konfigurować Timer 2 w tryb Counter. Wrzucam cały kod :[syntax=basic4gl] $regfile = "m16def.dat" $crystal = 16000000 Dim Freq As Long Const Licznik = 2789 Config Timer1 = Timer , Prescale = 256 Config...
Moj kod wyglada tak: $regfile = "attiny13.dat" 'To tell Bascom which chip we use $crystal = 8000000 Config Pinb.1 = Output Config Pinb.0 = Output 'Generowanie za pomoca licznika timer1 przebiegu pwm o rozdzielczosci 8 bitow na wyjsciu OC1A: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale...
Witam! Program pisany w Bascomie, jest to prosty programik ktory pokazuje temperature w aucie, przejechany dystans itd. Timer0 wykorzystywany jest jako licznik (zlicza impulsy drogi), przy przepelnieniu licznika wywolywane jest przerwanie. Timer1 wykorzystywany jest jako timer, odmierzam nim 1ms, czyli co 1ms wywolywane jest przerwanie. Problem polega...
hmm ultradźwiękowych nie da się poznaczyć dodatnich i ujemnych połówek fali ultradźwiękowych troszeczke nie rozumiem po co okreslac to czy to jest dodatnia czy ujemna mozna to zrobic przez rozroznienie czy to jest narastajaca zbocze czy opadajace czyli tak jakbysmy brali wszystko co sie znajduje nad osia OX i sprawdzali zbocza jesli wybierzemy naraztajace...
jezeli chodzi o czasy zegara to nie sa az tak bardzo tragiczne (od 60 do 100 us) wiec chyba Bascom sobie z tym poradzi, w moim programie mam generator na timer1 ktory dla kwarcu 8MHz (prescaler = 64)i wartosci w rejestrze licznika 65530 daje mi przerwanie co 40us... moze juz ktos napisal taka komunikacje i moze sie podzielic doswiadczeniami ?? Pozdrawiam
Mam prośbę, jeżeli możesz to sprawdź w swoim BascomAVR czy występuje problem z konfiguracją liczników T0,T1 dla tego procesora. Z tego co wyczytałem z noty katalogowej Atmela i helpów do Bascom'a wszystko powinno działać, tymczasem podczas sprawdzania syntax check wywala mi błąd. Jedyne co kompilator przyjmuje to: Timer1 = Timer, Prescale (1,8,64,256,1024)...
Po pierwsze: nie ma różnicy czy napiszę load timer0=250, czy load timer0, 250 (tak jest w książce Pana Marcina Wiązania) Po drugie: co z tego że timer1 jest 16 bitowy, jak wpiszę wartość początkową 250 to tu i tu licznik się przepełni po 250 impulsach jak nie mam racji to proszę mnie poprawić
On Timer1 - tak myślałem ... ale ... W swoim programie już wykorzystuję On timer ale 0 - jako licznik czasu. Czy przed załączeniem PWM mam używać enable time1 i po wyłączeniu disable timer1 Z tego co wyczytałem w necie to przy takiej konfiguracji pwm jak u mnie to standardowo jest ustawiany Phase Correct
a czy dla Ciebie to bez różnicy że Timer0 jest licznikiem 8 bitowym a Timer1 16 bitowym? Dodano po 5 konfigurujesz Timer0 - config timer0 = timer, prescale = 64 a ładujesz timer1 - timer1 =55536 jak to ma ruszyć
Witam, Mam mały problem z pomiarem prędkości za pomocą Timer'a (Bascom). Może napisze krótki opis problemu: Na początku wyznaczyłem sobie ile impulsów na metr daje auto, wyszło 5,15. postanowiłem więc mierzyć w stałym czasie te impulsy i przeliczać na km. Jak się okazało takie podejście jest ok ale skoki prędkości są o kilka km np: 22, 25, 29 km/h ......
Sorry, że wam się wtrące ale też pracuje nad komputerkiem dla Vectry B Silnik na wtrysku paliwa więc wysarczy zmierzyć czas otwarcia wtryskiwacza i tu moje pytanko. Jak najlepiej odmierzyć czas otwarcia wtryskiwacza oraz ilość wtrysków na jednostke czasu? Wtryskiwacz jest sterowany masą wiec spoko można użyć przerwań z końcówki INT1 do wykrycia otwarcia...
emarcus dzięki teraz już gra. ... Mam jeszcze takie pytaniena wejście INT0 podam np sygnał z generatora który podaje przebieg np 4.8KHz to na wyświetlaczu pojawia mi się liczba 11136 zamiast 4800. Co może być nie tak ? Poniżej podaję listing programu. $regfile = "attiny2313.dat" $crystal = 12000000 Portd = &B00100100 Portb = &B00000000 Config...
Rejestry sterujące TCCR0A / TCCR0B , TCCR1A / TCCR1B - ustawianie trybu pracy. Rejestr licznika TCNT0 , TCNT1 (nic nie zmieniasz, ale jest wykorzystywany) - zliczanie. Rejestry porównania OCR0A / OCR0B , OCR1A / OCR1B - sterowanie wypełnieniem. A w liczniku Timer1 także GTCCR (dodatkowe tryby pracy) i OCR1C (dzielnik PWM).
Witam Trzeba do tego podejść tak: 1/4000000(f kwarcu) = 0,00000025s 0,00000025s*64(preskaler) oznacza to, że przerwanie wystąpi co 16us dla 1 sekundy musiałbyś zliczyć 1/0.000016=62500 przerwań Nie będzie tak do końca ponieważ procesor wykonuje skok, który też zajmuje jakiś czas. Trzeba to uwzględnić. Robienie przerwań z wykorzystaniem pętli programowej...
A ja dzisiaj nie byłem w pracy. Wziąłem zaległy urlop z 2007r. I oto co zrobiłem 'program do pomiaru czasu wciśnięcia przycisku podpiętego do PD.2(INT0) i PD.3(INT1) przez układ RC tłumiący drgania przycisku. 'Przy tych ustawieniach Timer1 zwiększa się co 128us a licznik przepełnia się co 8.389s 'Program sprawdzony i działa. 'W celu...
To trzeba zmienić priorytet z 12 bitów stałokodowego pilota na odbiór HCSa lub całkiem usunąć obsługę pilota 12 bitowego. może tak: [syntax=vbnet]'*************************... '========================= przerwanie przy kazdym zboczu ICP, odczyt czasu trwania impulsu...
Jeśli chcesz uzyskać takie szybkie przedziały czasowe to proponuję popędzić licznik TIMER1 bez preskalera i ustawić go w tryb CTC by sam się przeładowywał. W przypadku gdy zliczy 1000 impulsów to przerwania właśnie będą generowane z częstotliwością 16kHz (To daje jakieś 400 instrukcji maszynowych możliwych do wykonania między przerwaniami). Niestety...
Dokładnie, chodzi tylko o pomiar drogi i spalanie. Timer0 skonfigurowany jako licznik - liczy impulsy prędkości. Timer1 - wyskalowany na 0,5s i w tym czasie liczy czas otwarcia wtryskiwacza. Potem przeliczenia. Co do C to już próbowałem i póki jets prostszy sposób (bascom:)) to C w życiu mi się w głowie nie zagnieździ, nie mówiąc już o asm ;]
To, że program i schemat to jedna całość to akurat wiem :), Napisałem dla przykładu "set PORTB.0". Schemat Poprawiłem, w kodzie tylko ustawienia pinów, nie wiem czy dobrze go okroiłem z wyświetlacza. Jam pozbyć się zewnętrznego kwarcu w kodzie? co trzeba pozmieniać? EDIT http://obrazki.elektroda.pl/9407654700_1... [syntax=basic4gl]$regfile...
Dim Licznik As Byte Enable Interrupts 'Przerwania odblokowane '---------------------------------KONFIG... TIMER 0---------------------------------------... Config Timer1 = Timer , Prescale = 1 Counter1 = 59536 'Wywołąnie co 1ms Enable Timer1 'Odblokowane przerwanie TIMER 1 On Timer1 Procedura_w_przerwaniu_timer1 Procedura_w_przerwaniu_timer1:...
Do Pawelj Nie będę wnikał co jest lepsze pomiar prądu czy też inne rozwiązania ale odpowiem Ci wprost na twoje pytanie dotyczące zliczania impulsów. Sygnały z impulsatorów podłącz pod 1 i 2 nogę Atmegi16 są to wejścia zliczające liczników Timer0 i Timer1 Skonfiguruj timery Config TimerX = Counter , Edge = Rising lub Config TimerX = Counter , Edge =...
Witam chce użyć procesora AT90S2313 do sterowania szybkości silnika. I chyba najlepiej do tego będzie nadawał się licznik timer1 skonfigurowany, jako PWM. Czytałem o tym w pomocy, ale jakoś niewiele mi to gada:( z jakiego pinu będą wychodzić te impulsy??? Z T1(PD5) czy OC1(PB3) czy jeśli wpisze te „dosconnet” to wyjściem biedzie T1 a jeśli...
w ten sposób to raczej nie przejdzie chodzi o to że timer1 działa jako przerwanie a gdy wykorzystuje do obliczania impulsów drugiego tajmera czyli timer0 to dzieją się cyrki wyśiwetla mi np co druga sekunde itd wszystko to na atmega8
Witam Wydaje mi się że linijka: Load Timer1 , 60536 Ustawia Timer do zliczania 60536 a nie 5000 ponieważ Load Timer x ładuje do licznika wartość 65536 -x. Prawidłowy wpis to: Load Timer1 , 5000 lub Timer1 = 60536 Ja zawsze używam tej drugiej wersji więc jestem na 99% pewien tego load Timer
Programowanie to nie jest chybił trafił i zgadywanie. Co innego jeśli popełni się błąd nieświadomie. Metoda "a może zadziała" nie wydaje się być dobrą. Pomyśl co się dzieje jeśli na początku granica Compare ustawiona jest na 600. Teraz w pętli głównej która przez to że ma tam jakieś swoje opóźnienia, a timer swój preskaler zmieniasz granicę Compare....
$regfile = "M16def.DAT" $crystal = 8000000 $baud = 57600 Dim Czestotliwosc As Long Config Timer1 = Counter , Edge = Rising Print "Licznik" Enable Interrupts Enable Timer1 Do Start Timer1 Wait 1 Stop Timer1 Czestotliwosc = Counter1 Print "Freq: " ; Czestotliwosc Counter1 = 0 Loop Sygnał podaję na portb.1 i wszystko śmiga. Nie wiem tylko dlaczego nie...
dziękuje za podpowiedzi pisze w bascomie na tiny 2313 proszę o potwierdzenie poprawności kodu i informacje jak sie liczy preskaler i jak obliczyć wartość ładowaną do licznika aby uzyskać przy kwarcu 11059200 Hz czas przerwania 1ms . oto mój kod : =========================== Config Timer1=Timer, Prescale=?? << jaki dzielnik ? Load Timer1, ?? <<...
Proszę postępuj zgodnie ze schematem użytkowym, który załączyłem (post #4 21 Lip 2015 21:39). Tam jest przedstawione gotowe rozwiazanie. Zacisk 21 podłączasz do masy, zaś zacisk 20 do GPIO. Stanem aktywnym jest zwarcie pinu GPIO do masy. Następuje to w momencie pojawienia się impulsu (dokładnie w momencie kiedy na ORNO mrugnie dioda). Dalsza procedura...
timer1 bascom bascom timer1 timer1 licznik
mikrofon komputera wzmacniacz pralka candy zapchana nabłyszczacz zmywarka bosch
C-360: Olej zmieszany z wodą, pęknięta zębatka Zasilacz ATK 30524 - Specyfikacje i Zastosowania