$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
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...
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...
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
[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...
$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...
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...
[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,...
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...
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...
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...
Jeśli chcesz robić odliczanie w pętli głównej to zrób tak: $regfile = "attiny45.dat" $crystal = 4000000 Config Pinb.0 = Output 'wyjście Config Pinb.1 = Output 'wyjście Config Pinb.2 = Input 'przycisk Portb.0 = 1 Portb.1 = 0 Portb.2 = 1 Config Timer0 = Timer , Prescale = 1024 Enable Interrupts Enable Timer0 Start Timer0 On Timer0 Zegar Dim...
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...
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...
Której? PLL czy tej z dwoma Timerami? Ta z PLL jest bardzo zamotana (albo inaczej - zamotana nie jest ale wymaga dużej ingerencji procesora. A to bardzo spowalnia program główny więc trzeba to napisać a assemblerze i własnie to powoduje zamotanie). Podam więc ten drugi sposób: $regfile = "M8def.dat" $crystal = 8000000 $hwstack = 64 '---------------------------------------...
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...
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...
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ą...
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...
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...
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...
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ę...
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:...
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...
] 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...
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 ,...
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...
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ę...
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...
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...
[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...
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
Ł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]'*************************...
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ść...
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...
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...
Oczywiście, że warto go odratować. Źródła w Basicu w wersji V4 są na Elektrodzie. Po lekkim uporządkowaniu wrzucam poniżej. [syntax=vbnet]$regfile = "m8535.dat" $crystal = 8000000 Config Clock = Soft , Gosub = Sectic Config Sda = Portd.1 Config Scl = Portd.0 Config Timer1 = Timer , Prescale = 64 Config Timer0 = Timer , Prescale = 64 On Timer1 Dcf_start...
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*********...
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 =...
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...
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...
Łap bo jak zaczniesz z tym Multimaster to się nigdy z tego nie wygrzebiesz a odkrywasz tu koło na nowo :D Po pierwsze nie zauważyłem wcześniej, że już skonfigurowałeś Serial in 0. Błędem natomiast jest jest używanie Serial out 0 a potem zamiast to wrzucić do bufora to wycinasz po jednej literce ze stringa i nadajesz pojedynczo... Po prostu napisz Print...
Łap. Napisałem w przerwie między... Zajmuje połowę mniej niż Twój a działa :D [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 8 $swstack = 8 $framesize = 8 Config Portb = &B01110 : Portb = &B10001 Sw Alias Pinb.0 D1 Alias Portb.1 : Set D1 D2 Alias Portb.2 D3 Alias Portb.3 Config Timer0 = Timer , Prescale = 1024 , Clear...
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
jakie głowice termostatyczne zmiana liczba tekst prąd pobierać rozrusznik skuter
Kalibracja wyważarki Hofmann Geodyna 6300 - instrukcja krok po kroku Demontaż wyświetlacza w skuterze Futuri3 - instrukcja krok po kroku