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
Lecz zrobiłem sobie testy: Że na wyświetlaczu wyświetlam wartość B, i jak się okazało, jeśli zamienię Config Timer0 = Timer , Prescale = 1 na Config Timer0 = Timer , Prescale = 8 to wartość B zmienia się szybciej! Dlaczego tak się dzieje? Może dlatego że jest jest prescale =1 to przerwanie jest wykonywane co 32us czyli w czasie tego waitams 20 trafia...
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"...
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 "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
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
$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...
[syntax=basic4gl]$regfile = "m328pdef.dat" $crystal = 16000000 '*** Timer0 Config for 500Hz Interrupt CTC Mode *** Config Timer0 = Timer , Prescale = 256 , Compare A = Disconnect , Compare B = Disconnect , Clear Timer = 1 Enable Compare0a : On Compare0a Int0_isr : Compare0a = 249[/syntax] Kompiluje się bez problemu. Co do ustawienia na rejestrach. Napisałem...
Z jaką częstotliwością rezonatora pracujesz? Wszystko co dotyczy konfiguracji liczników masz w help'ie (również w b. dobrym polskim tłumaczeniu autorstwa Zbigniewa Gibka) przykład: CONFIG TIMER0=TIMER, PRESCALE=64 'ustaw timer/licznik0 jako timer z podziałem częstotliwości zegara /64 (...) ON TIMER0 wyswietl 'po przepełnieniu licznika skocz...
[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,...
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....
Chodziło tylko o zamianę Timer1 na Timer0, ale ok mogę pokazać który nie działa... a właściwie który już działa... dobrałem wartości prescale i load całkowicie doświadczalnie... miałem nadzieje że ktoś wyjaśni co i jak z tym przy okazji ale ok... Przy taktowaniu 16 MHz; Versja 0 dla Timer1 masz zalozone: const Timer1Reload = 700 config timer1=timer,...
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...
hmmm Przede wszystkim: Enable Interrupts On Timer0 Przerwanie Stop Watchdog Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256 'PWM=250Hz Load Timer0 = 195 To włączenie przerwania jest wstrętne w tym miejscu:P Co do wniosków... może spróbuj zwiększyć stos o...
Jak już pisałem, dawno nic nie robiłem w bascomie, ale poniżej daję ogólny zarys opóźnienia dla przycisku przy użyciu licznika Config Timer0 = Timer , Prescale = 1024 Enable Interrupts On Timer0 , Czas Dim Flaga As Bit Main: Do If Pinx.x = 0 and Flaga = 0 Then Load Timer0 , 25 '0,0256s. dla 1MHz Enable Timer0 End If If Flaga = 1 Then Reset Flaga...
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...
Dla taktowania 8MHz, ale możliwe że trzeba zmodyfikować nazwy Pwm i Compare [syntax=basic4gl]Config Pinb.0 = Output Pwm0a = 70 Config Timer0 = Timer , Prescale = 1 , Compare0A = Toggle , Clear Timer = 1 Do Loop End[/syntax] a na rejestrach timera [syntax=basic4gl]DDRB = 0B00000001 'DDRB.0 = 1 (wyjście) OCR0A = 70 TCCR0A = 0B01000010 'COM0A1 COM0A0 =...
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...
Proszę bardzo, przykładzik jest lekką modyfikacją liczenia czasu w przerwaniu z książki Wiązani. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer0 = Timer , Prescale = 256 On Timer0 Przerwanie Dim Licznik8ms As Word Dim Flaga As Bit '1 juz czas, 0 jeszcze nie Enable Interrupts Enable Timer0 Load Timer0 = 250 Do 'wyslanie komendy...
Może spróbuj w ten sposób : $crystal = 4000000 Config Pind.5 = Output 'ustawienie wyjścia na pinie który standardowo sygnalizuje przepełnienie timer-a Config Timer0 = Timer , Prescale = 1 'ustawienie timer1 dzielnik 1 On Timer0 Przerwanie_timer1 'wywołanie przerwania po przepełnieniu timera Timer0 = 145 'wartość początkowa od której timer bedzie zliczł...
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ł...
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...
Proszę: [syntax=basic4gl] $regfile = "" $crystal = Config Portb = Output Config Timer0 = Timer , Prescale = 1 Enable Interrupts Enable Timer0 On Timer0 Int_pwm Dim Pwm(4) As Byte Dim Pwm_ct As Byte Pwm(1) = 32 Pwm(2) = 64 Pwm(3) = 96 Pwm(4) = 128 Do Loop End Int_pwm: Incr Pwm_ct If Pwm(1) > Pwm_ct Then Set Portb.0 Else Reset Portb.0 If Pwm(2) > Pwm_ct...
Proponuję następujące zmiany: Dla zegara 8MHz Config Timer0 = Timer , Prescale = 8 wtedy jeden cykl = 1us - łatwo się liczy. Następnie w przerwaniu: Przerwanie: Timer0 = Timer0 + 213 If Flaga = 1 Then Toggle Portc.7 Else Portc.7 = 0 End If Return Dalej w podprogramie "Send_transmit" zamiast: Portc.7 = 1 napisz: Flaga = 1 a zamiast: Portc.7 = 0 napisz:...
ale z tego co się już dowiedziałem nie będzie działać na mojej płytce Nie prawda, będzie działał po zmianie kilku linijek kodu. [syntax=basic4gl]$regfile = "8515def.dat" $crystal = 10000000 [/syntax] To zmień na swojego procka i częstotliwość oscylatora, jaki Masz. Na przykład [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 [/syntax] Tą...
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ę...
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...
emarcus:: Czy Ciebie całkiem pogieło? Jak chcesz pomnożyć częstotliwość rozkazem MUL? Ewentualnie jak chcesz tym pomnożyć impulsy? Bez obrazy ale to zupełnie co innego. Dodano po 19 Na mój gust cos takiego: $regfile = "M8def.dat" $crystal = 8000000 $hwstack = 64 '---------------------------------------...
Sprawdziłem to dla sportu bo taki prosty kodzik od czasu do czasu to jak zjedzenie cukierka :D i to nawet działa. Oświetlone słońcem czy tam nawet żarówką LED`ową się nie wzbudza a przy zbliżeniu i owszem. Tiny85 ma juz wbudowany wzmacniacz dla ADC i tam mozna więcej nawet zadzaiałać, ale Tiny13 nie ma więc dla czułości użyłem wewnętrznego napięcia...
Robiłem kiedyś sterownik choinkowy pięciokanałowy. Sprawę rozwiązałem następująco: - przerwania od przepełnienia Timer0 generują skoki do podprogramu (u mnie był kwarc 4MHz, dobierz preskaler) [syntax=basic4gl]Config Timer0 = Timer , Prescale = 1 Enable Timer0 On Timer0 Software_pwm Enable Interrupts Dim Reference As Byte Dim A As Byte Dim B As Byte...
Troszkę zmieniłem, sprawdź czy działa. Troszkę nie rozumiesz co piszesz dlatego oporni Ci to idzie najpierw zwiększa liczbę a potem sam ją zerujesz, więc siłą rzeczy zawsze będzie równa zero. Druga rzecz to zwiększasz "liczbę" tylko od jakiej wartości zaczynasz? Najlepiej zaczynać od zera. itd [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 4000000...
To Ci będzie sterować kolejno czterema diodami na pinach od B0 do B3. Zalecam wnikliwą analizę, zanim zalejesz mnie pytaniami :) Timery zawsze rób na odliczanie w dół do 0, w przeciwnym wypadku po wpisaniu nowej wartości w trakcie odliczania możesz mieć niezły kwas - pomyśl dlaczego :) Pozdrawiam [syntax=basic4gl]$regfile "m8def.dat" $crystal = 8000000...
Pomyliłem się powinno być Config timer0 = timer , gate = internal , mode = 1
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...
Załóżmy że chcesz uzyskać 100Hz. Procesor kreci się na przykład 8MHz. Timer napędzany jest sygnałem takim jak procesor, ale można ten sygnał podzielić tak żeby, na przykład co 1024 takty procesora do Timera trafiał jeden takt. Taki podział uzyskuje się za pomoca preskalera. Teraz wiadomo że Timer jest już taktowany wolniej bo co 1024 takty z 8MHz, ale...
Do drasmen: jeżeli chcesz aby układ zadziałał musisz przestawić fuse bity na wew. generator np. 8MHz a do pinów gdzie podłączasz kwarc musisz wpiąć kwarc zegarkowy 32.768kHz. Program dla autora tematu: 'Program wykorzystujący przerwanie od timera0(8 bitowego) generowane co 8ms 'jeżeli przerwanie zostanie wywołane 125 razy, otrzymamy 1 sekundę...
Config Timer0 = Timer , Gate = Internal , Mod = 2 GATE ??? Syntax CONFIG TIMER0 = COUNTER , PRESCALE= 1|8|64|256|1024 , EDGE=RISING/FALLING , CLEAR TIMER = 1|0 CONFIG TIMER0 = TIMER , PRESCALE= 1|8|64|256|1024 Jednosci = Licznik Mod 10 Jednosci - byte Licznik - word ........ = nie da rady
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...
config timer0 = timer, prescale = 64 timer1 =55536 Takie coś chodzi bez problemu?
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...
Zajrzałem do skompilowanego pliku i widzę że kompilator w ogóle nie używa tu R2 i R3 więc mi je zostawił ;) Od pewnego czasu w Bascom do rejestrów można się odwoływać prosto z kodu. Ciekawe którą wersję Bascom masz. Pewnie znowu schody... U mnie program się kompiluje na 96% [syntax=vbnet] $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack...
Zastosowałem się do instrukcji i dalej nic mi nie wychodzi.Przepraszam ,że zawracam głowe ale ja dopiero się uczę i to moje pierwsze pisanie. Dodano po 7 Teraz wygląda to tak: $regfile = "2313def.dat" $crystal = 800000 Config Pind.0 = Output Config Pind.1 = Output Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_1s Dim Licz_8ms As...
15 może 20s. jeszcze dokładnie muszę zmierzyć Na początku konfiguracja timera [syntax=basic4gl]Config Timer0 = Timer , Prescale = 256 Enable Interrupts Enable Timer0[/syntax]
Dziękuję kol niveasoft !!! Działa świetnie!! Config Timer0 = Timer , Prescale = 1 , Timliłoer = 34 - chyba to mnie zmyliło bo czytałem że trzeba na 26kHz timer do odbiornika IR ustawić
Ewidentnie napisane jest, że counter0 jest licznikiem impulsów !!!! To w programie kol. manekinen . Natomiast ustawienia konfiguracyjne w mojej ostatniej wersji są inne: Config Timer1 = Counter , Edge = Falling : Enable Timer1 Config Timer0 = Timer , Prescale = 8 : Enable Timer0
Autor ma ustawiona za duża częstotliwość multipleksu. Proszę zmniejszyć częstotliwość multipleksowania wyświetlacza. Zwiększyć preskaler i wpisać wartość początkową do timera0 np. Config Timer0 = Timer , Prescale = 256 : Enable Interrupts : Enable Timer0 Load Timer0 ,65 i dalej w obsłudze przerwania Co4ms: Load Timer0 ,65 i sprawdzić czy pomogło.
Witam, Otóż wykorzystuję licznik Timer0, do liczenia (aby wygenerować liczbę pseudolosową NIE wykorzystuję do przerwań!) Więc wydaje mi się, że może być wykorzystywany razem z odbiorem RC5 Jak naciśnie się przycisk na pilocie, to ___rseed = Timer0 Czyli podstawa generatora RDM, jest taka jak licznik,po prostu wygeneruje mi się l za każdym razem (bo...
Nie analizowałem Twojego programu- ale może to Ci się przyda. Może moje stare belferskie umiejętności (teraz to się nazywa- zdolności pedagogiczne) jeszcze całkiem nie zanikły. 'Program poglądowy do unikania wait 'Prescale oczywiście można zmienić 'licznik też i Temp0 też $regfile "m8def.dat" $crystal = 8000000 Config Lcd = 20 * 2 Config Lcdpin...
Mimo że port ma 7 wyprowadzeń to zawsze ustawiaj 8 bitów, bo to wciąż port 8-bitowy tylko że z obciętymi nóżkami. Regulację szybkości robi sie łatwo. Dodajesz jakąś zmienną np LICZ i teraz co każde wejście do przerwania timera to zwiększasz tą zmienną o 1. Teraz porównujesz ją z drugą zmienną np SZYBKOSC. Jeśli LICZ > SZYBKOSC to wykonujesz zawartość...
no raczej działa nawet w następnych cyklach. sprawdz jeszcze to $regfile = "m8def.dat" Config Pinb.1 = Output $crystal = 1000000 Config Timer1 = Timer , Prescale = 64 Config Timer0 = Counter , Edge = Rising On Timer1 Odmierz_1s Dim Licz As Byte , I As Byte Enable Interrupts Enable Timer1 Start Timer1 Timer1 = 65535 - 15625 Do Loop End Odmierz_1s:...
] Gdybym chciał jednak mierzyć załóżmy do 1kHz to wymaga aby zliczać przepełnienia? Dlatego napisałem..."Nie znaczy to jednak..." w złym obliczeniu 1 sek wartość wynosiła 61630, przy prawidłowym obliczeniu wynosi 34 286 uwzględniając czas 1sek, częstotliwość taktowania 8MHz i prescaler 256. Przecież czas (1 sec.) odmierzasz timerem0, który jest 8-bitowy...
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]
Witam joboo proszę podpowiedz mi jak pozmieniać w kodzie żródłowym mam generator kwarcowy 14.3Mhz - czy może być taki ??? Kawałek kodu: $regfile = "m8def.DAT" $crystal = 16000000 / w tym miejscu mam zmienić ?? / Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte , Maxi As Byte Dim Godzjed As Byte , Godzdzies As Byte , Wyswietl...
[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Timer0 : On Timer0 Przerwanie0 Dim Tmp As Word Tmp = 0 Dim Ptimer1 As Word Ptimer1 = 0 Do If Klawisz = 0 Then If Ptimer1 = 0 Then Ptimer1 = 100 End If If Ptimer1 < 95 And Klawisz = 0 Then Tmp = 1 End If End If If Tmp = 1 And Ptimer1 < 85 And Ptimer1 > 70 Then If Klawisz = 1 Then...
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...
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...
Jak już odzyska kolega władzę w krainie ATMega16, to zainteresuj się trybem CTC pracy tego licznika. Jest do tego odpowiedni parametr: CONFIG TIMER0 = TIMER, PRESCALE = 256, CLEAR TIMER = 1 Tylko pamiętaj aby skorzystać z przerwania porównania a nie z przerwania przepełnienia.
Config Timer0 = Timer , Prescale = 1 Jeśli chcesz dokładnie odmierzać czas, to zapomnij o preskalerze 1 Ciekawe, ile czasu trwa zrzucanie rejestrów na stos...
[syntax=basic4gl] $crystal = 4000000 Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111100 Portd = &B1111111 Config Timer0 = Timer , Prescale = 64 Enable Timer0 Enable Interrupts On Timer0 Co1ms Dim Liczba As Single Dim Ktorywysw As Bit Dim Lol As Byte Dim Jednostki As Byte Dim Dziesiatki As Byte Dim Pomoc As Bit Dim Aaa As Word Dim...
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*********...
nie no to jasne ... jak coś komuś nie wychodzi to na bank wina Bascoma ... tylko ze jak ma liczyć impulsy to ma być skonfigurowany jako licznik COUNTER a nie jako czasomierz TIMER czyli nie CONFIG TIMER0 = TIMER , PRESCALE= 1 | 8 | 64 | 256 | 1024 tylko CONFIG TIMER0 = COUNTER , EDGE= RISING | FALLING
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...
Proszę bardzo: Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_8ms Enable Interrupts Enable Timer0 Counter0 = 6 .... Odmierz_8ms: Counter0 = counter0 +6 .... instrukcje return
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...
Witam. Dziękuje bardzo, czy dobrze myślę, że dla preskalera 1 compare ma być równe 100? Znalazłem taki kawałek kodu: Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 Config Timer0 = Timer , Prescale = 1024 Compare1a = 100
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...
int0 i int1 a może jakiś kawałek programu bo sam się raczej nie połapie. coś mam ale oczywiście złe ;/ $regfile = "m8def.dat" $crystal = 1000000 Dim W As Word Config Timer0 = Timer , Prescale = 1 Config Timer1 = Timer , Prescale = 1 W = Timer1 Timer1 = W W = Timer0 Timer0 = W Config Timer1 = Counter , Edge = Falling Config Timer0 = Counter...
a możesz jakiś najprostszy przykład podać odmierzenia za pomocą timera np. 1 sekundy, próbuje odmierzyć 1 sekundę ale nie bardzo umiem posłużyć się timerem ustawiłem timer0 tak: Config Timer0 = Timer , Prescale = 256 ale dalej nic nie wymyśliłem
Co prawda uczę się ale dlaczego taki program nie działa poprawnie, co robię źle? [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 Config Portd.0 = Output Config Timer0 = Timer , Prescale = 8 On Timer0 Przerwanie Load Timer0 , 200 Enable Timer0 Enable Interrupts Do Loop Przerwanie: Toggle Portd.0 Return End[/syntax]
No tak, ale jak zadeklarujemy np: Timer0 jako Timer, w znienawidzonym bascomie będzie to: Config Timer0 = Timer , Prescale = 1024 On Ovf0 Petla2: Enable Timer0 Enable Interrupts Do instrukcje Loop Petla2: instrukcje np: if przycisk1 = 1 then cośtam endif Return to Petla2 bedzie wykonywana cały czas więc można tam wrzucić cały wykonywalny program?
. 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
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...
...Spróbowałem własnymi siłami zmienić ten kod, ale nie dałem rady(błędy kompilacji)... Aby to zrobić bezbłędnie, należy znać oba proce na "tip-top" :D Ja zrobiłbym to tak: 'Termometr Domowy' $regfile = "attiny2313.dat" $crystal = 8000000 'Config Timer0 = Timer , Gate = Internal , Mode = 2 'okres Timera0 250*12*Tosc=250us Config Timer0 =...
Przerobiłem troche kod i teraz powinno być dobrze. Ale do jakiej częstotliwości mierzy dobrze to nie sprawdzałem. Sygnał podpinasz pod PD.5 $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Dim Licz_8ms As Byte Config Timer0 = Timer , Prescale = 256 Config Timer1 = Counter , Edge = Falling Config Lcd = 16 * 2 Config...
A czy mógłbym prosić o jakiś konkretny przykład? Albo poprawić ten: Config Timer0 = Timer , Prescale = 1024 On Timer(15) Gosub procedura 'czekaj 15sec. Timer On Do Loop End Procedura: Cls Lcd "ok" Waitms 500 Return
Tylko czemu ten kod jest taki nieoptymalny... A dałoby się to zrobić prościej z użyciem tablic danych. Np. podobnie jak to zrobiłem tutaj (kod do lampki RGB z programowym PWM): $regfile = "attiny45.dat" $crystal = 8000000 $prog &HFF , &HE2 , &HDF , &HFF Dim Pwmr As Byte , Pwmg As Byte , Pwmb As Byte Dim Count As Byte Dim Pbshadow As Byte Dim...
OK później zaprogramuje ale wyszło to tak: $regfile = "attiny13.dat" Config Portb.4 = Output $hwstack = 32 $swstack = 16 $framesize = 8 Dim A As Byte Config Timer0 = Timer , Prescaler = 64 On Timer0 Przerwanie Enable Interrupts Enable Timer0 Start Timer0 Do Loop end Przerwanie: Timer0 = 106 Toggle Portb.4 Return
teraz musze jescze przerobić układ aby odliczał mi sekundę Config Timer0 = Timer , Prescale = 64 On Timer0 Sekunda Sekunda: Load Timer0 = 250 Incr Jednostki_czasu If Jednostki_czasu = 250 Then 'mam sekunde Jednostki_czasu = 0 End If tak chyba będzie dobrze?
A ja z kolei znalazłem gdzieś taki programik: Enable Interrupts Config Timer0 = Timer , Prescale = 64 On Timer0 Tim Enable Timer0 Dim M As Byte Do Loop End Tim: Timer0 = 6 Incr M Return Jeśli dobrze licze, to przy kwarcu 4MHz przerwanie będzie wywołane co 4ms, zgadza się? Jak to wszystko przeliczać na Hz? Pozdrawiam
Witam Mam takie pytanie.. Czy Bascom potrafi symulować przerwania od Tmerów?? Chodzi mi o to ze gdy napiszę taki program : Config Lcd = 20 * 2 Config Timer0 = Timer , Prescale = 64 Enable Interrupts Enable Timer0 Start Timer0 On Timer0 Etyk Do Loop Etyk: 'tu program obsługi przerwania return To sam nie wchodzi do obsługi przerwania. Zrobi to jedynie...
Witam Potrzebuje aby co 15 minut była wykonana pewna operacja. Wykorzystałem do tego timer0 dim Liczba8ms as integer Config Timer0 = Timer , Prescale = 256 On Timer0 Pomiar_paliwa On Interrupts Enable Timer0 Load Timer0 = 250 '****PROGRAM GŁÓWNY END Pomiar_paliwa: Load Timer0 = 250 incr liczba8ms If Liczba8ms = 112500 Then '*****jakies dzialanie'...
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
Config Portb = 63 : Portb = 63 Config Timer0 = Timer , Prescale = 1 Enable Interrupts : Enable Timer0 : On Timer0 Time Do Loop End Time: Timer0 = Zmienna Toggle Portb.3 Return Zmieniając wartość zmiennej "Zmienna" zmieniać będzie się częstotliwość impulsów.
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...
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...
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:...
Łap. W Tiny13 ma 460 bajtów i nie zajmuje nawet połowy. Zostawiłem Tobie tam jeszcze kilka bajtów RAM a podstawowe funkcje kodujące i repeat masz więc możesz się pokusić o więcej przycisków, albo nawet klawiaturę na ADC ;) To jest takie najkrótsze demo z jedną komendą ON/OFF dla telewizora. [syntax=vbnet]'*************************...
U mnie wywalał kiedyś ten sam błąd, a niby wszystko się zgadzało... Trzeba metodą prób i będów. Proponuje konfigurację timera zrobić tak: Config Timer0 = Timer , Prescale = 1 a resztę pozostawić bez zmian o ile się nie mylę. W bascomie nic dawno nie pisałem, teraz bawię się w C.
Dla osób które chcą wykonać ten zegar od razu podpowiem, że smużenie to normalka. Proszę spojrzeć na program bascom autora. Prescaler 1, taktowanie wewnętrzne procesora 8Mhz. I proszę sobie obliczyć częstotliwość multipleksowania wyświetlacza. Przecież to idzie praktycznie na maksa. Powinno się zwiększyć preskaler i wpisać wartość początkowa do timera....
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...
Nie wiem czy dobrze kombinuję: $regfile = "ATtiny2313.DAT" $crystal = 8000000 Config Timer0 = Timer , Prescale = 256 On Timer0 Sekunda Enable Interrupts Enable Timer0 Dim Scnt As Integer Sekunda: Incr Scnt Return Czego tu jeszcze brakuje? Bo w symulatorze nie działa, tzn nie zwiększa zmiennej scnt.
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?
Pozmieniałem troche program ale nie działa prawidłowo prędkość strasznie skacze od 0 do 240 km/h -bo nie zerujesz co 1 sec. licznika impulsów (Timer0), ponadto ,masz zbyt duży błąd zaniżając zakrses zmienmnej "Licz" - as byte Porównaj: $regfile = "2313def.dat" $crystal = 8000000 Config Lcdbus = 4 Config Lcd = 16 * 2 Config Lcdpin = Pin ,...
Czyli jeśli dla kwarcu 7.3728 Mhz napiszę taki kod to będę miał przerwanie co 1 sekundę - o ile dobrze zrozumiałem: [syntax=basic4gl]'KONFIGURACJA PRZERWAN PROCESORA Config Timer0 = Timer , Prescale = 256 Enable Interrupts On Timer0 Odmierz_1s Enable Timer0 Load Timer0 = 200 Odmierz_1s: Load Timer0 = 200 Incr Licz_8ms If Licz_8ms = 144 Then Licz_8ms...
Witam!! Mam taki prosty programik napisany w bascomie: Config Timer0 = Timer , Prescale = 1 On Timer0 Przerwanie Enable Timer0 Enable Interrupts Do Loop Przerwanie: Return Symuluje jego dzialanie w AVR Studio.Jesli w AStudio ustawie procek 2313 to wszystko dziala ok a jak zmienie na Atmega8 to w ogle nie obsluguje przerwania. Flagi od ogolnego przerwania...
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 *...
A spróbuj tak: Odczyt=Temp Dim Jednostki As Byte , Dziesiatki As Byte ' cyfry do wyświetlania temperatury Dim Temp As Byte ' temperatura Dim Pompka As Bit ' sterowanie pompką Dim Odczyt As Byte Dim Cyfrybcd As Byte Dim Ktorywysw As Bit Enable Interrupts ' oblokuj przerwania Enable Timer0 'odblokuj timer0 Enable Timer1 'oblokuj timer1 Config Timer0 =...
Jak długa ma być ta sekwencja? Mam na myśli ilość tych elementów "_____" czyli przerw. Osobiście proponował bym użycie przerwania z licznika timer0, CONFIG TIMER0 = TIMER , PRESCALE = 64 LOAD TIMER0, 125 (także przed wyjściem zobsługi przerwania) To da przepełnienie licznika timer0 co 1ms przy zegarze 8Mhz. Do zapamiętania sekwencji można użyć zmiennej...
Jeszcze jedno. Ten program większość czasu spędza na wyświetlaniu. Wydłuż czas odświeżania wyświetlacza poprzez usunięcie Load Timer0 , 150 i zmianę w Configu timera0 - Config Timer0 = Timer , Prescale = 64. Spróbuj zmniejszyć czasy w transmisji do SAA i raczej wyłącz wyświetlacz na czas transmisji do SAA - zatrzymaj timer i wygaś wyświetlacz. Pamiętaj...
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...
config timer0 config timer0 timer prescale config timer
przetwornik impulsowy kamera zoneminder sinus kondensator
oscyloskop hantek oscyloskop hantek
Doposażenie Fiat Ducato w funkcję auto hold Korekta wtryskiwacza 1,5 mg na ms - jak przeliczyć?