No to jeszcze raz (o co Wam chodzi?) ‘TO TRWA 6 CYKLI ZEGAROWYCH Config Timer0 = Timer , Gate = Internal , Mode = 1 On Timer0 Timer0_init Enable Timer0 Enable Interrupts Start Timer0 ‘A TO 51 CYKLI Timer0_init: Counter0 = 4150 Start Timer0
Config Timer0 = Timer , Prescale = 32 Enable Interrupts Enable Int0 On Int0 Przerwanie1 Nosave Cls 'tutaj wysyłasz impuls pierwszy start timer0 Do : Loop Przerwanie1: stop timer0 'tutaj co ci sie podoba lcd "odleglosc:" ; wynik 'co tam jeszcze chcesz 'wysyłasz impuls start timer0 return End
Jeszcze po odblokowaniu przerwań dopisz Start Timer0 .
Chyba najprostszy jaki można napisać. Dim Wynik As Long Config Timer0 = Counter , Edge = Rising Do Timer0 = 0 Start Timer0 Wait 1 Stop Timer0 Wynik = Timer0 * 50 'to przykład może być *50,20,1... Locate 1 , 1 Lcd Wynik Locate 1 , 5 Lcd "rpm" Loop End
$regfile "attiny2313.dat" $crystal = 1000000 Config Portb.4 = Output Dim I As Byte Config Timer0 = Timer , Prescale = 1024 On Timer0 Przerwanie 'Start Timer0' nie potrzebne Enable Timer0' zezwolenie na przerwanie timera Enable Interrupts Do Loop Przerwanie: Incr I If I > 10 Then Toggle Portb.4 I = 0 End If Return
Absolutnie żadne Start Timer0 nie jest tu potrzebne. Wystarczy, że tak będzie skonfigurowane przerwanie: [syntax=basic4gl]Config Timer0 = Timer , Prescale = 256 On Timer0 Sekunda Const Przerwanie = 131 Counter0=Przerwanie Enable Timer0 Enable Interrupts . . . end Sekunda: Counter0=Counter0+131 . . . Return [/syntax] ...i unikaj jak ognia "drukowania"...
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ść...
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...
$regfile = "m32def.dat" $crystal = 1000000 Config Timer0 = Timer , Prescale = 1024 On Timer0 Tim0_wakeup Enable Timer0 Enable Interrupts Do 'Jakiś program . . . Do Start Timer0 Idle Tim0_wakeup: Stop Timer0 Timer0 = 0 Incr Pamiec Loop Until Pamiec = 5 ' Ma się usypiać 5 razy 'Dalsza część programu wykonywana po przebudzeniu . . Loop Niestety...
Witam. Możesz zrobić tak: Config Timer0 = Timer , Prescale = 64 Timer0=6 Enable Interrupts Enable Timer0 Start Timer0 On Timer0 zegar Przy takim ustawieniu przerwanie będzie wywoływane dokładnie co 4ms. Zmienną Js zdeklaruj jako Word. A w podprogramie Zegar zrób tak: Zegar: Timer0 = 6 Incr Js If Js = 15000 Then Js = 0 Toggle Portb.0 Toggle Portb.1...
Jak napisać program w bascomie do pomiaru czasu trwania impulsu wejsciowego ?Prosze o konkretny przyklad listingu takiego programu ponieważ jestem początkującym programistą w bascomie i nie znam wielu możliwości.Domyślam sie ze należałoby wykorzystać któryś z timerów i poprzez start timera za pomocą przerwania i jego zatrzymanie a następnie odczyt...
Witam W sumie bardzo prosto. Trzeba to zrobić na timerze. Przykład. $crystal=4000000 Config Portb.0 = Output : Wy Alias Portb.0 Config Timer0 = Timer, Prescale = 1 Load Timer0, 66 On Timer0 Negacja Enable Timer0 Enable Interrupts Start Timer0 Do Loop Negacja: Load Timer0, 66 Wy= not Wy Return Wartość ładowana (66) do timera 0 decyduje o częstotliwości....
[syntax=basic4gl]$regfile = "m8def.dat" $crystal = 10000000 Config Timer0 = Timer , Prescale = 128 Load Timer0, 5 On Timer0 czas Enable Interrupts Enable Timer0 Do If Pinc.0 = 1 Then Start Timer0 end if If Pinc.0 = 0 Then reset portd.1 end if Loop czas: set portd.1 stop Timer0 return [/syntax] Tak na szybko,... nie testowany. Zrobić możesz wszystko,...
Dawno Bascoma nie używałem ale to będzie coś takiego: On int0 czas 'przerwanie zewnetrze (wejście impulsów) do czestotliwosc=1/czas 'obliczenie czestotliwosci z czasu pomiedzy impulasmi loop czas: stop timer0 'zatrzymaj timer czas=timer0 'odczyt z timera timer0=0 'wyzerowanie timera start timer0 'ponowne uruchomienie timera return Oczywiście...
Witam Pytanie 1: Zrobiłem coś takiego że jeśli odebrano znak to jest wygenerowane przerwanie Urxc następnie przed instrukcją INPUTBIN uruchamiam przerwanie Timer0 jako licznik czasu który chcę wykorzystać do przeterminowania czasu odebranego znaku. bo INPUTBIN B(1), 6 oczekuje na 6 bajtów. Jak wysyłam całe 6bajtów to działa poprawnie, a jeśli bym wysłał...
marcinek.p - to gotowiec dla ciebie, nie mam jak go przetestować ale jestem pewien że zadziała jak trzeba. Masz tu przerwanie, miganie led i zliczanie migniec z incr Mozna to wszystko wkleic do przerwania ale dobra zasada nakazuje w przerwaniach umieszczać jak najmniej kodu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 1000000 $hwstack = 32 $swstack...
Witam, jeżeli używasz rezonatora 11.0592 MHz to możesz przerobić mój program na swoje potrzeby. Mój zegar spóźnia się jakiś 8 sekund na dobę, więc można dodatkowo napisać linijkę: If G1 = 2 And G2 = 3 Then S2 = S2 + 8 End if Cały program zegara: Config Timer0 = Timer , Gate = Internal , Mode = 1 Dim A As Byte Dim G1 As Byte Dim G2 As Byte Dim M1 As...
Ale litości. Wstaw ATTiny2313. Po co aż ATMega32? ATMega8 to by było przegięcie a co dopiero 32. $crystal = 4000000 Config Lcd = 16 * 1a Cursor Off Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Counter Dim Temp As Byte Dim R As Byte Dim Freq_compare As Word Dim Metal_type As Bit Dim Freq As Word Dim Dif As Word Dim Temp2 As Byte Dim Prescale...
nie wiem czy o to chodziło bo nie mam na czym uruchomić tego programu (tzn. mam Bascom ale nie mam zestawu '51), ale wg mnie dopiero ten program zadziała: $crystal = 16000000 '$default Xram $large Dim Cyfra(12) As Byte Dim Jedn_sekund As Byte Dim Tempo As Byte Config Timer0 = Timer , Gate = Internal , Mode = 1 Th0 = &Hd8 ' Tl0 = &Hd7 ' =10025 cykli...
Na przykładzie timera0 ;wektory przerwań .org 0x00 rjmp reset .org 0x09 rjmp przerwanie_timer0 reset: .def acc = r16 .def maska = r17 ;### START TIMER0 in acc, TCCR0 ldi maska, 0b00000111 ; 3 ostatnie bity to ustawienie preskalera or acc, maska out TCCR0, acc in acc, TIMSK ldi maska, 0b01000001 or acc, maska out TIMSK, acc ; odblokowanie przerwania...
witam ! '2 wyświetlacze LED 7segmentów 'fusebity ustawione fabrycznie $regfile = "attiny2313.dat" $crystal = 1000000 Config Portb = Output 'katody segmentów LED Config Portd = Output Anoda1 Alias Portd.0 Anoda2 Alias Portd.1 Dim Nr_wysw As Byte Dim Cyfra2 As Byte Dim Cyfra1 As Byte Dim Temp_liczba_1 As Word Dim Temp_liczba_2 As Word Config...
(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...
$crystal=3000000 '3MHz '---------------------------------------... On Int1 Przerwanie_int1 On Timer0 Przerwanie_timer0 Tmod = &B00010001 'tajmer0: 16 bit i tajmer1: 16 bit Tcon = &B00000101 'zbocza opadajace Ie = &B10000110 'wlacz przerwania i timer0 i int1 '---------------------------------------...
W zasadę działania programu nie wnikałem ale błędy jakie znalazłem to: 1. Masz zadeklarowaną Funkcję Sharp_Odczyt natomiast w programie wywołujesz funkcje Sharp_Odczyt1 i Sharp_Odczyt2 które nie są zadeklarowane. Proponuję funkcję Sharp_Odczyt przerobić tak: Function Sharp_odczyt(byval Kanal As Byte) As Word Stop Timer0 Sharp_odczyt = Getadc(kanal)...
Czy wie ktoś może jak w prosty sposób regulować jasność żarówki pr. stałego (12V 50W) za pomocą atmelka? Może istnieje jakiś programowany generator PWM? Będę wdzięczny za pomoc :) Witam. Tak może być :?: Const Zakres = 31 Dim Wypelnienie As Byte , Licznik As Byte Config Timer0 = Timer , Gate = Internal Mode 2 On Timer0 Ti0_int Load Timer0 , 50 'tę...
Dzinx Zaraz się zabieram za Twojego help'a ;) Już - stestowane : Dodano po 31 $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = Output 'Portb = 0 Config Portd = Input Portd = 0 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 Start Timer1 Config Timer0 = Pwm , Prescale = 8 ,...
Witam. I przystępuję do rzeczy :wink: Config Timer0 = Counter = Internal , Mode = 1 Co to jest za tryb :?: Chcesz zliczać impulsy na P3.4 czy cykle maszynowe :?: Load Timer0 , S Ta instrukcja nie spowoduje przepełnienia sie T0 po 5000 taktach ale po 34696 ,ponieważ załaduje rejestry TL0 i TH0 wartością 120(Hex 78 ) gdyż stosowana jest tylko w trybie...
Lepiej by było jakbyś podzielił prescaler na 256 albo na 1024. I po co pod włączeniem przerwania masz i enable timer0 i start timer0? Wystarczy start timer0.
Nic nie trzeba informować kompilatora - Bascom ładnie przyjmuje wprost rozkazy asemblera ale w zasadzie atom1477 zrobił to nawet bez asemblera - sorki - po prostu "ręcznie" odwołał się do rejestrów i wpisał do nich odpowiednie wartości tzn poustawiał bity tak żeby coś tam działało w tym przypadku co ja ci podałem trza by to było mniej więcej zrobić...
Najprościej to chyba tak: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define TIMERSTART 6 volatile uint8_t FLAGA_50 = 0; volatile uint8_t FLAGA_1000 = 0; // funkcja obslugi przerwania TIMER0_OVF 8MHz / 64 * 250 wychodzi co 2ms // dla innego taktowania nalezy ustawic inny preskaler i/lub inne liczniki stawiania flag ISR(TIMER0_OVF_vect)...
a gdzie start timer0 :D
A może by tak umieścić na początku programu instrukcję Start Timer0?
A gdzie masz polecenie Start Timer0?
Gdzie Start Timer0
Tutaj masz listing który będzie współpracował ze schematem który zamieściłeś. Kiedyś takie coś robiłem i do 100kHz chodziło na pewno. Dopasujesz to tylko do swoich potrzeb, ale na razie to załaduj i zobaczysz co będzie. I to wszystko na jednym liczniku się robi. '********Pomiar czasu trwania impulsu ujemnego przebiegu prostokątnego i częstotliwości*********...
czyli rozumiem że w pętli głównej wystarczy dodać ??? Stop timer0 gosub ds18b20 start timer0
"tylko co sprawdzić ? " Usuń z programu "Start Timer0"
Nie widzę u Ciebie nigdzie polecenia START Timer0, spróbuj to dodać zaraz po Enable Timer0 :D
Spróbuj tego: $regfile "attiny2313.dat" $crystal = 4000000 Config Portd = &B11111100 Portd = &B00000011 Config Lcd = 16 * 2 Config Lcdpin = Pin , E = Portb.1 , Rs = Portb.2 , Db7 = Portb.7 , Db6 = Portb.6 , Db5 = Portb.5 , Db4 = Portb.4 Config Timer0 = Timer , Prescale = 8 Enable Interrupts Enable Timer0 On Timer0 Przerwanie Dim Czas_cyklu...
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...
mam jeszcze jedno pytanie dorwałem program w bascomie wsad do innego sterownika na podstawie jego zaprojektowałem schemat . Moje pytanie jest takie czy nie popełniłem błędu w rozumowaniu i na podstawie tego będzie to chodzić ?. I ostatnie pytanie nie rozumiem co ma w programie robić pinD.2 program się wiesza jak zaremuję to (input ster) to program w...
Hej Czas powinien byc liczony timerami po to one sa. EDIT Oki czyli widzę to tak: Timer 1 mode=1 'liczy swoje Timer0 mode=3 'dwa liczniki 8-bitowe TL0-impulsy,TH0-zegar No dobra i co teraz? Przejrzałem helpa i forum i o mode=3 zbyt wiele nie znalazłem ;) Na mode=1 nie ma problemów. Jak startuje counter, a jak timer pod T0? Jak odczytuje ich wartości?...
Znalazłem w swoim archiwum , taki oto program zegarka.Przerobiłem go troszkę , by pasował do Twojego schematu. $regfile = "89c2051.dat" Const Xtal = 11059200 'z takim kwarcem jest "dość" dokładny ;) $crystal = Xtal Const Sysclock = Xtal / 12 Const Timer0value = 65536 -(sysclock / 200) '200 przerwań od T0 na sekundę Seg...
Nie za wiele swojego programu pokazałeś, więc trudno powiedzieć gdzie masz błąd. Masz przykład jak powinno wyglądać przerwanie.[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Interrupts Enable Timer0 Start Timer0 On Timer0 Timer_przerwanie Do ........ Loop Timer_przerwanie: ............ Return [/syntax]
Timer rusza tylko po odblokowaniu przerwania. Po dodaniu instrukci start timer0 wogole nic sie niedzieje.(dioda nie miga) Spróbuje z timer1.
Co do wyłączenie światła po 30 sek. Dodaj dodatkową zmienną bit która będzie ustawiana np: na 1 po wyłączenia światła przez timer po 30 sekundach a dzięki niej nie będzie ponownie włączane światło przez wciąż otwarte drzwi (stan niski na wejściu uC). Dopiero zamkniecie drzwi ( stan wysoki na wejściu uC) spowoduje zmianę tej zmiennej na 0 dim 30SEK as...
Wydaje mi się że jednak trzeba wpisać "start timer0" w przerwaniu. Chyba że load uruchamia timer- ale chyba nie.
Którą wersję Bascoma używasz? 1.11.8.1 Nic nie poradzę że pod ustawieniami ATMega16, ATMega161, ATMega162 nie działa. Pod ATMega161 licznik ożył ale nie generowały się przerwania. Dziwne - ale prawdziwe. A jak zamiast start TIMER0- wpiszesz do rejestru TCCR0 CS02=1, CS01=1 a CS00=0-to będziesz miał lepiej. Być może by zadziało... albo i nie bo wydaje...
Potrafi obslugiwac przerywania-tak w ramach pelnej odpowiedzi (cyberdar) Z tym, ze napisalbym tak: On Timer0 Obsluga Enable Timer0 Enable Interrupts Load Timer0 , 50 Start Timer0 Pozdrawiam
Cóż, uroki bascoma tak jak skopana instrukcja Start Timer0 dla m. in. m644p i m1280/2560 1.11.9.8)
Budowa obrotomierza jest prosta.Nie ważne jakie impulsy i tak musisz stosować tranzystory. Podejrzewam że jeśli instalacja 12V to impuls do cewki też 12V. A najprostszy obrotomierz to: Timer0 = 0 Timer1 = 0 Start Timer0 Start Timer1 Wait 1 Stop Timer0 Stop Timer1
Czuję się winny ;) spróbuj tak: [syntax=vb]Do Timer0 = 0 Start Timer0 Wait 1 Stop Timer0 If Timer0 >= 2 Then Portb.3 = 1 Else Portb.3 = 0 Loop [/syntax] Teraz powinno ruszyć...
Witam, pozwoliłem sobie na drobną modyfikacje Twojego kodu. Dobrze się przyglądnij, porównaj działanie w symulatorze a zobaczysz gdzie jest błąd. Powodzenia!!! $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config...
A żeby uprościć sprawę, można użyć polecenia PULSEIN? Ma rozdzielczość 10us co wystarczy no i mierzy okres od razu. Lub czy żeby przyspieszyć wyświetlanie wyniku nie mogę po prostu odczekać krótszy czas? np. Timer0 =1 Start Timer0 waitms 100 Stop Timer0 Wynik = Timer0*600
Masz błędny kod. Jak chcesz by program działał jak trzeba to musisz wiedzieć co robi każda linijka. Włączasz przerwanie od przepełnienia timera0, a nie maż funkcji do jego obsługi. Deklarujesz funkcję do obsługi przerwania zewnętrznego, a nie masz funkcji obsługi i nie zezwalasz na to przerwanie. Na moje oko to po uruchomieniu timera procesor się zresetuje...
Mam zdudowany zegar na tym uP i zegar późni się jakieś 10 minut na godzinę nie wiem dla czego. Poniżej zamieszczam kawałek procedury dotyczącej ustawienia timera0. Config Timer0 = Timer , Mode = 1 , Gate = Internal Enable Interrupts Enable Timer0 On Timer0 1ms Counter0 = 64536 Start Timer0 do If Licznik = 1000 Then Incr Sek Licznik = 0 End If loop end...
Witam Problem rozwiązany. $regfile = "M16def.DAT" $crystal = 8000000 $baud = 57600 Dim Czestotliwosc As Long Config Timer0 = Counter , Edge = Rising Tccr0 = 7 Print "Licznik" Ddrb.0 = 0 Print Pinb.0 Enable Interrupts Enable Timer0 Do Start Timer0 Tccr0 = 7 Wait 1 Stop Timer0 Czestotliwosc = Counter0 Print "Freq: " ; Czestotliwosc Print Tccr0 Counter0...
z ta kalibracjo to ciekawy temat ,ale jak podepne czujnik do termometru zrobionego na rs232 to temperature pokazuje idealnie,a ten kwarc to faktycznie 12.902400 ,tylko zmieniłem go na 11,059 oczywiscie tez zmieniając w kompilatorze. Wybacz kolego , ale Cię troszkę "obsztorcuje" :D 1)Twierdzisz , że używasz DS1820 (9-bit) , a temperaturę obliczasz jak...
Zamiast [syntax=basic4gl] If PORTD.0 = 1 Then Start TIMER0 End If[/syntax] Spróbuj [syntax=basic4gl] If PORTD.0 = 1 Then TCCR0B=&B00000101 End If[/syntax] Może to da efekt?
Do licznika nie możesz załadować większej liczby jak 65535, zresztą w tym trybie wogóle chyba Load nie możesz stosować. Według mnie odmierzenie 1 sek powinno tak wyglądać, ale poczekaj aż znawcy się wypowiedzą. ' $crystal = 18432000 Sub 1sekunda Count = 0 Counter0 = 1536 '65536-64000=1536(musi zliczać 64000 imp) Start Timer0 Do If Count = 24...
czesc w zalaczniku masz fajny program do obliczania czsow przerwan dla procesorow AVR w praktyce wyglada to np tak: ustawiasz timer0 tak zeby przerwanie wystepowalo co 2 ms config timer0 = timer, prescale = 64 ... ... counter0 = 6 start timer0 przy kwarcu 8MHz, timerze0 (8 bitow) i preskalerze 64, timer zwiekszany jest co 8 us 256 - 6 = 250 :) 250 *...
Wystarczy uruchomić któryś z timerów procka. Może być w tle, wystarczy np. [Start Timer0] wtedy połówki TL0 i TH0 zaczną liczyć. Dane z TH0 i TL0 możesz wykożystać do swoich potrzeb.
Dziwne, że Bascom nie zgłosił błędu. Moim zdaniem powinno być: Load Timer0, 5 albo Counter0 = 5 Brakuje również Start Timer0, ale może Bascom i tak go uruchamia.
Poskładałem taki programik: ... Timer0 = 0 Start Timer0 Waitms 900 Stop Timer0 Wyn = Timer0 * 1 ... Czy można wyeliminować WAITMS. Można to jakoś inaczej napisać?? A co ten programik ma robić, bo taki sposób użycia timera i waitms to dość niespotykana konstrukcja.
Witam Pisalem kiedys program do sterowania robotem (manipulatorem ) w bascomie. Zliczal on miedzy innymi impulsy z 3 enkoderow. i wszystko ladnie chodzilo: Fragment kody ktory zlicza impulsy z 3 enkoderow: //enkoder 1 Enk1_a Alias Pinb.0 Enk1_b Alias Pinb.1 //enkoder 2 Enk2_a Alias Pinb.2 Enk2_b Alias Pinb.3 //enkoder 3 Enk3_a Alias Pinb.4 Enk3_b Alias...
Napisałem taki program , który steruje pracą licznika za pomocą dwóch przycisków podłączonych do portów z wykorzystaniem przerwania INT0 , 1 . Naciśnięcie przycisku S1 (P3.2) powoduje rozpoczęcie zliczania impulsów , a S2 (P3.3) zatrzymanie i wyświetlenie wyniku.Wszystko działa bezproblemowo , ale jest jedno ale..... . Naciśnięcie przycisku S1 powoduje...
dlaczego nie działa pod bascom avr????? $crystal = 16000000 Config Timer0 = Timer , Prescale = 8 Load Timer0 5 On Ovf0 Przerwa Dim G As Integer Enable Timer0 Enable Interrupts Start Timer0 G = 0 Do Loop Przerwa: Load Timer0 5 Incr G Print "przerwa" Print G Return
Nie wiem czy dobrze kombinuje i trochę mi nie pasuje co zrobiłem. Do tego celu wykorzystuje polecenie Config Serialin które po konfiguracji wygląda tak: [syntax=basic4gl] Config Serialin = Buffered , Size = 20 Config Timer0 = Timer , Prescale = 256 Dim A As String * 10 Dim Odczyt As Bit Dim I As Word On Timer0 Przerwanie Enable Interrupts Enable Ovf0...
Musze zaprogramować w Bascomie AT89C2051 Jak to zrobic ? i czy da rade pod XP tego dokonac ? Config Timer1 = Timer, Gate = Interial, Mode = 1 Config Timer0 = Counter, Gate = External, Mode = 1 On Timer0 Frequency Enable Interrupts Enable Timer0 Enable Timer1 Start Timer0 Start Timer1 pzdr. A.
Jak krótki odcinek czasu można zmierzyć zależy od częstotliwości taktowania uC. Procedura może polegać na ustawieniu Timera procka na tryb czasomierza (parametr TIMER0 = TIMER). Uruchamianiem i zatrzymywaniem zliczania Timera zajmują się: Start i Stop (np.: Start Timer0), które uruchomisz konfigurując przerwania zewnętrzne (np.: Config Int0 = Low Level).
Mam taki kod: Config Timer0 = Timer , Prescale = 256 'Dim Laduj As Word Const Laduj = 312 Enable Interrupts Enable Timer0 On Timer0 Odmierzono Load Timer0 , Laduj Start Timer0 Do 'Print "."; Loop End Odmierzono: Load Timer0 , Laduj Print "sek" ; Return Niestety przerwania się nie generują. Co źle napisałem?
. nie moge sobie poradzic z zegarem czasu rzeczywistego , zegar jest wyswielane ale nie idzie , jak mam go ruszyć , oto fragment programu Config Clock = Soft Config Timer0 = Timer , Prescale = 1024 Start Timer0 Do Home Lcd Time$ Loop Uzywam kwarc 4mhz . Pozdrawiam
Witam! Z tego co zauważyłem, a to: '-------------------------obsługa przerwań--------------------------------... '''''''''''''''''''''''sekunda - przerwanie od zegara'''''''''''''''''''''''''' Calasekunda: Cala_sekunda = 1 Stop Timer0 Impp = Tcnt0 Tcnt0 = 0 Start Timer0 Liczba_taktow = Capture1 Capture1 = 0 Return wg. mnie powinno być: '-------------------------obsługa...
Hej. Nie wiem czy Prześledziłeś poprzednie kody. W tej chwili stanęło na tym kodzie. Dim Licznik As Integer Dim Wart As Single Dim Flaga As Bit Dim A As Bit , B As Bit , C As Bit , D As Bit Led Alias Portb.0 'alias dla wyjścia Portb.0 Licznik = 0 'wyzerowanie zmiennej licznikowej Portc = 0 'wyłącz wyjścia Flaga = 0 Wart = 0 '***********************...
Jaca Twoj kod dziala! Dziekuje. Jesli chodzi o drugi program - dodalem start Timer0, ale nic nie pomoglo. Kod wyglada tak: $regfile = "m8def.dat" $crystal = 1000000 Config Portb.1 = Output Config Timer1 = Timer , Prescale = 64 Config Timer0 = Counter , Edge = Rising Dim Licz As Byte Dim I As Byte I = 0 Licz = 0 Tcnt0 = 0 On Timer1 Odmierz_5s...
Ta linijka w sumie nie ma potrzeby istnieć. Według mnie wystarczy wywołać: Timer0_Init()' i potem Timer0_RegisterCallbackFunction( jakaś funkcja ) i powinno chodzić. Jednak nic się nie dzieje. Samo Timer0_Init wygląda tak: void Timer0_Init(void) { //mt char i; uint8_t i; // Initialize array of callback functions for (i=0; i<TIMER0_NUM_CALLBACKS;...
bardziej zależy mi na przerwaniu, kombinowwałem sam ale jakoś procek niechciał odmierzyć wyliczonego czasu, zadany odcinek czasu był krótszy!!! $crystal = 4000000 $regfile = "2313DEF.DAT" Config Timer0 = Timer , Prescale = 1024 Load Timer0 , 50000 On Timer0 Porow enable Timer0 Enable Interrupts do loop Porow: 'przerwanie powinno być chyba co 12,8s Incr...
Wielkie dzięki za programy, przydały się. Z każdą chwilą coraz więcej rozumiem. Wymodziłem nowy kod, tylko znowu ta niepewność, prosiłbym o uwagi (bo na pewno będą i na pewno coś jest źle) [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $sim Config Timer0 = Timer , Prescale = 256 Config Timer1 = Counter , Edge = Falling On Timer0 Odmierz_1s...
Aż se na płytce złożyłem ten układ i program sprawdziłem. No i faktycznie świeciło na stałe. Do poprawienia były bzdety. Wklejam jeszcze raz, przetestowany i na 100% wszystko działa jak chciałeś [syntax=basic4gl] $crystal = 8000000 'Deklaracja częstotliwości kwarcu $regfile = "attiny2313.dat" Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A...
Witam. A nie łatwiej byłoby zrobić "Pomiar" tak: Pomiar: Czas = 0 Enable Timer0 Load Timer0 = 0 Start Timer0 For I=1 to X Set Portd.1 Waitus 12 Reset Portd.1 Waitus 12 Next I .... Miejsce oszczędzisz:D
witam. mam taki program: void main(void) { TMOD = 0x01; //timer0 - tryb1 16bit timer TH0 = 0xfe; //stan poczatkowy TL0 = 0xB0; //stan poczatkowy TF0 = 0; //kasowanie bitu przepelnienia timer0 ET0 = 1; //wlaczenie przerwania przepelnienia timer0 EA = 1; //wlaczenie przerwan TR0 =1; //start timer0 while(1) { ; } } pozdrawiam a gdzie obsługa przerwania...
Czesc mozcie mi napisac jakas przykladowa procedurke obslugi pwm w bascom AVR? nie moge sobie z tym poradzic, niby wszystko konfiguruje, ale timer nie chce zliczac i nic sie nie dzieje. Jest jakies polecenie do wystartowania pwm? czy wytarczy start timer0 ? pozdrawiam Marcin
Witam Mam problem ze zmuszeniem licznika T0 w bascomie do pracy z częstotliwością większą niż 25kHz. $regfile="m8def.dat" $crystal="8000000" Config portd.0= output Config timer0=timer,prescaler=1 Enable interrupts enable timer0 start timer0 on timer0 nosna do loop end nosna: load timer0,1 toggle portd.0 return Program napisany...
Ciekawe jak to może działać poprawnie , skoro konfigurujesz timer1 , a uruchamiasz timer0 :?: :D Nie chce mi się za bardzo wnikać w szczegóły - to pozostawiam Tobie do przemyślenia ;) Gotowiec: Config Timer0 = Timer , Mode = 2 , Gate = Internal Load Timer0 , 24 On Timer0 Impuls Nosave Enable Interrupts Enable Timer0 start timer0 do loop impuls:...
Config timer0 = timer, prescale = 1 on timer0 Obsluga_T0 enable timer0 enable interrupts Do loop Obsluga_T0: stop timer0 ' tu jakis podprogram timer0 = 200 start timer0 return Ten programik powinien wchodzic do przerwania od timera co 56 taktow zegara czyli na 10MHz co 5.6us zeby przedluzyc odstepy trzeba zastosowac inny timer (16 bitowy) albo ustawic...
a ustawiłeś Fuse Bity?? Bo jeśli nie masz ustawionych to ATmega pracuje z częstotliwością 1MHz. Musisz ustawić Fusy na albo 8MHz na wewnętrznym generatorze albo ustawić Fusy na zewnętrzny kwarc. i mniej więcej kod by tak wyglądał: $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1...
Hej Ludzie mam pewien problem.z tego co sie orientuje ustawione liczniki: Config Timer0 = Timer , Mode = 1 , Gate = Internal Config Timer1 = Timer , Mode = 1 , Gate = Internal Start Timer0 Start Timer1 Do Loop powinny zliczac taka sama wartosc.a w symulacji programowej wychodzi, ze jeden zlicza o polowe szybciej niz drugi np: T0=100 to T1=50,T0=10 to...
... Jak komuś uda się wykalibrować sek to prosze o podanie wartości Witam. W/g symulatora(Avr Studio) inkrementuje sekundy co 8000000 cykli zegara :wink: $crystal = 8000000 $regfile = "2313def.dat" Config Timer0 = Timer , Prescale = 256 On Timer0 Zegar Dim Czas As Byte Dim Godz As Byte Dim Minut As Byte Dim Sek As Byte Enable Timer0 Enable...
Witam potrzebuje zrobic program ktory bedzie w odpowiednich odstepach czasu wywolywal przerwanie i w tym przerwaniu bede sobie mogl wykonywac dalsze funkcje problem w tym ze nie dizala mi taki najbardziej podstawowy program Symuluje to w proteusie i nie chce zapalac pinub.1 chodzi mi o taki test powinna sie pojawic 1 na pb.1 przy wywolaniu przerwania...
moze ktos mi pomoc z ustaleniem wartosci Tiemr i counter tak aby stany 0 i 1 trwaly np 1ms ? $crystal = 6000000 Dim A As Iram String * 21 Dim Z As Iram String * 1 Dim K As Byte Dim Znowu As Bit Config Timer0 = Timer , Gate = Internal , Mode = 1 Counter0 = 30000 On Timer0 _slij Enable Timer0 Enable Interrupts A = "1010101010101010101010*" Z...
Czyli reasumując Kod: $crystal = 8000000 $regfile = "m8def.dat" Config Timer0 = Timer , Prescale = 64 ' 8 us Config Timer1 = Counter , Edge = Rising Dim Wartosc As Word Dim Licznik As Integer Config Portb.1 = Output Reset Portb.1 Config Portb.2 = Output Set Portb.2 On Timer0 Timer0_int Enable Interrupts stop timer0 Timer0 = 131 Licznik...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na http://www.elektroda.pl/rtvforum/topic20... ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył"...
przepraszam, slepy jestem. mam $regfile = "2313def.dat" zamiast $regfile = "attiny2313.dat" teraz sie kompiluje, zaraz będe sprawdzać czy będzie generować. sprawdze jeszcze: Set Tccr0b.cs00 'start timer0 Set Tccr0a.wgm00 'mod pwm prawdłowej częstotliwości Set Tccr0a.com0a1 'wyjście pwm1 enable Set Tccr0a.com0b1 'wyjście pwm2 enable a wersja bascom-avr...
No i coś mi te znaczniki nie działają... Zaraz jakiś moderator mnie tu zlinczuje... :) Więc tak - po zmianie na "start timer0" wywala mi się na linii "config timer0..." z błędem ".EQU not found, probably using functions that are not supported by selected chip [TCCR0]" No to znaczy chyba, że muszę ręcznie wpisywać, kurka wodna... Aha, a tak w ogóle,...
Witam. Chciałbym podczas procedury if.. then iść na początek programu. Set Portd.0.5 Start Timer0 A0: Reset Krok Bitwait Pind.5 , Set A3: If Krok > 256 Then Goto A0 End If Nie mam pojęcia jak to zrobić. Ma ktoś pomysł? please :D
Masz rację ,kod wyglądał tak : Dim Wynik As Long Dim Wynik1 As Long Config Timer0 = Counter , Edge = Rising Config Timer1 = Counter , Edge = Rising Config Portb.1 = Input Config Portb.0 = Input Portb.0 = 1 Portb.1 = 1 Cursor Off Cls Do Timer0 = 0 Timer1 = 0 Start Timer0 Start Timer1 Waitms 500 Stop Timer0 Stop Timer1 Wynik = Timer0 * 30 Wynik1 = Timer1...
Jestem w trakcie wymyślania programu do tego komfortowego kierunkowskazu Jak ktoś chce sobie popróbować to zamieszczam kod w Baskomie. PS Nie mam pewności czy działa bo jeszcze nie miałem okazj przetestować [syntax=basic4gl]$regfile = "attiny13.dat" $crystal = 8000000 $hwstack = 32 $swstack = 8 $framesize = 16 Inprawy Alias Pinb.1 Inlewy Alias Pinb.2...
o mamo! Ależ tego kodu by zrobic taką pierdołę. Heh. Tu masz to, czego pragniesz: :) $crystal = 11059200 'kwarc 11,059MHz config timer0 = timer , gate = internal , mode = 1 on timer0 irq enable interrupts enable timer0 start timer0 dim a as byte dim czas as byte dim ena_tim as bit led_ alias p1.0 'w tym przypadku diode podpinasz do p0.0 sw alias p1.1...
A dlaczego na próbę nie ustawisz tego Timeta0 na wartość np. 128? Czyli mniejszą niż 1023 jak i mniejszą niż 255. Żebyś miał prościej, gotowiec: [syntax=vbnet]Co_jakis_czas: 'definiujemy procedurę odmierzającą mniej więcej 4s 'i wywołującą odpowiednie funkcje Stop Timer0 'Disable Interrupts 'to ma byc zakomentowane bo i tak w tym miejscu nie ma sensu...
dokładnie to o to mi chodzi żeby ten kod zadziałał, analogiczny w asm też nie działa, a właściwie działa tak samo i nie wiem bardzo dlaczego?? 'Timer1 dzia OK, ale timer0 zamiast zliczać p3.4 tylko się tym portem bramkuje??? $sim Config Timer1 = Timer , Gate = Internal , Mode = 0 Config Timer0 = Counter , Gate = Internal , Mode = 1 ' wstawilem też external...
timer0 start policzy timer0 bascom timer0
muzyk pendrive zaczep schowek tranzystor bc337
obrotomierz motocykl obrotomierz motocyklowy
Wężyk paliwowy w traktorze-kosiarce rider - diagnoza i naprawa Kod usterki P14147 w Peugeot 508 - diagnostyka i rozwiązania