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...
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"...
[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...
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
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...
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...
Witam. Można np. tak :) 6 x Pwm Config Timer0 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja Timera Config Timer2 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm...
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...
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ść...
[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....
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...
Ustawiam preskaler na 8 i mam częstotliwość prawie 300 Hz a potrzebuje 2 razy tyle jak to zrobić, bo przecież nie mogę ustawić preskalera na 4? Czyli przynajmniej jedno można stwierdzic, że taktujesz processor 1,2 MHz; a nie jak twierdziłeś i zakładałeś wczwśniej; 9600 000(!)_ Twoja konfiguracja timera0: Phase Correct PWM i otrzymany wynik częstotliwości...
9600000Hz/70000Hz=137 takty 9600000Hz/150000Hz=64 takty Z takimi rozdzielczościami się tam musisz liczyć. Dla 37kHz i innych konfig uzyskasz klikając CTRL+SPACE. Bascom sam podpowiada jakie masz możliwe ustawienia. Nie pamiętam tylko czy jest to FastPWM czy PhaseCorrect który jeszcze spowolni sprawę o połowę. W Tiny85 masz Timer który może być taktowany...
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...
Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up 'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down Start Timer1 Dim I As Integer Config Portb = 8 Do for i = 0 to 1023 pwm1a = i waitms 10 next for i = 1023 to 0 step -1 pwm1a = i waitms 10 next Loop End Pozdrawiam
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...
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,...
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...
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...
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 =...
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...
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:...
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 ,...
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*********...
Config Pinb.3 = Output 'Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Set Tccr0.pwm0 Set Tccr0.com00 Set Tccr0.com01 Set Tccr0.cs00 Ocr0 = 127 'T2 już normalnie ;) Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Ocr2 = 127
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ą...
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...
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:...
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ę...
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 '---------------------------------------...
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ł...
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...
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...
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...
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ł...
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...
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...
Do Config Timer0 = Counter dopisz jeszcze EDGE = RISING | FALLING w zależności czy ma być zliczane zbocze rosnące czy opadające. Trzeba dopisać też Enable Timer0 i Enable Interrupts [...] Config Timer0 = Counter, Edge = Falling Enable Timer0 Enable Interrupts [...]
config timer0 ................ edge=falling ..............
] 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 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
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...
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 ,...
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
Bascom jeszcze nie obsługuje PWM w Timer0 z poziomu CONFIG. Trzeba skonfigurować "ręcznie" przez bezpośrednią modyfikację rejestrów sterujących licznika. :(
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...
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...
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...
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ę...
Poczytaj tematy i uzyj szukaj. Attiny2313 nie posiada adc wiec potencjometrem nie dasz rady tego sterowac. Domyslam sie ze robisz do w bascomie. Tu masz kawalek kodu jak konfigurowac timery zebys mial 4 pwm. '******* procek ******* $regfile = "attiny2313.dat" $crystal = 8000000 $hwstack = 30 $swstack = 30 $framesize = 30 '****** dioda R/G...
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...
config timer0 = timer, prescale = 64 timer1 =55536 Takie coś chodzi bez problemu?
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...
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,ma liczyć litry tak jak dystrybutor . Dodano po 2 Nie wiem w jaki sposób dodawac litry do zmiennej po przekroczeniu okreslonej liczby impulsów z przepływomierza to co znalazłem to liczone wszystkie w czasie a tu chyba chodzi o przepełnienie licznika Czas tu nie ma znaczenia! Użyj dowolny timer w charakterze licznika (Counter), i tak jak sugerowano...
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
Wydaje mi się, że nie uruchomisz PWM na tym procesorku. Oficjalna informacja: 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 Jak widzisz Timer0 nie da się ustawić jako PWM. Ale... Nieoficjalnie może Ci zadziałać jednak taka konfiguracja Timera0: Config Timer0...
Jak użyć timera (tzn. jak wyciągnąć z niego np zmienną dodawaną, lub resetowaną co określony czas?) Boję się jeszcze TIMERów :) Nie ma się czego bać. Oto prosty programik, który na pewno pomoże. 796182 Jednak dziwię się dlaczego nie używasz sprzętowego PWM. Attiny 2313 posiada ich cztery. Na każdym z timerów po dwa. [syntax=vbnet]Dim R As Integer Dim...
Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Down , Pwm = On a i ładujesz do OCR0
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]
Wklepywałem różne kombinacje, więc trudno by było coś z tego wkleić tu na forum. W desperacji nawet skopiowałem żywcem z Helpa linijke Config Timer0 = ... i też nic. To chyba, że mam podać całość kodu.
TAK. To prawda... W helpie napisali, że na timerze0 nie ma opcji PWM Action Configure TIMER0. 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 Ale po podstawieniu zadziałało. Swoją drogą szkoda, że nie dopisali "wyjątków" do helpa Co do ryb, to nie...
T0 to jak dobrze się domyśliłeś to TIMER 0 który liczy impulsy skonfigurowany tak: Config Timer0 = Counter , Gate = Interial , Mode = 2 chętnie przyjmę sugestie co do ustawienia a ma tylko liczyć impulsy zmienna Dim wynik As Word Wynik = Counter0
Jeszcze nie wgrywałem ale działać na pewno nie będzie bo ustawiłeś zewnętrzny zegar timera:D. Czyli mogę zostawić te komendy typu config port czy config timer0?? czy lepiej operować na rejestrach??
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ć
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.
Podejrzewam że jak dałeś "Start Timer0" to Bascom "olał" ustawienie "Config Timer0 = Counter , Edge = Rising " i zaczął liczyć. Ale nie sprawdzałem-sprawdź sam.
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...
Jeżeli sprawdzasz przycisk podłączony do masy, to czemu przerwanie Timer ma być wyzwalane zboczem rosnącym ? Config Timer0 = Counter , Edge = Rising
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...
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...
[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...
... EDIT: Niestety nie bardzo to tak działa, próbuje wszystkiego ale nie moge iruchomić pozostałych kanałów. PWM-a na Timer0 nie skonfigurujesz dyrektywą Config Timer0 = Pwm ,... , bo Bascom nie przewiduje takiego trybu pracy dla Timer0(patrz Help). Natomiast PWM dla Timer2 , jak najbardziej tak ;) Config Pinb.3 = Output 'Config Timer0 = Pwm , Prescale...
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...
[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...
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ść...
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...
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...
Moim zdaniem błąd leży w procedurze Bascoma "Config Timer0 = Pwm" - nie wiadomo jak Bascom ustawia poszczególne rejestry. Można by było poustawiać rejestry ręcznie i sprawdzić co się dzieje.
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]
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...
CONFIG TIMER0 = COUNTER , EDGE = RISING | FALLING W twoim wypadku edge=falling najlepiej ściągnij sobie helpa ze strony mcselec.com jest tam wersja po polsku i jest nieźle opisane jak konfigurować wszystkie peryferia
Proszę bardzo: Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_8ms Enable Interrupts Enable Timer0 Counter0 = 6 .... Odmierz_8ms: Counter0 = counter0 +6 .... instrukcje return
$regfile = "8535def.dat" $crystal = 8000000 $sim Config Pind.4 = Output Config Pind.5 = Output Config Pind.7 = Output Config Timer2 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1 Config Timer0 = Pwm , Pwm =...
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...
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...
hmmm no tak, ale dla mnie największą niewiadomą tego programu jest miejsce, w którym "mówię" które wyjście ma np. świecić na 50% (czyli przyjąć wartość 128). Dowolne miejsce w pętli głównej programu (do...Loop) gdzie przypisujesz zmiennym R, G, B konkretne wartości. R, G, B są zwykłymi zmiennymi, w żaden sposób nie są przypisane do konkretnych pinów,...
Spróbuj dać config Rc5=....,[Timer0]
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?
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.
. 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
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.
config timer0 timer config timer0 counter config timer0 timer prescale
z18xe wymiana silnika pułapka basowa dioda selenowa
omnigena mh1300 omnigena mh1300
Głośnik Manta SPK 220 zacina się po połączeniu Bluetooth Cichy sygnał zakończenia suszenia w suszarce - przyczyny i rozwiązania