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,...
Timer1 jest 16-bitowy. 2^16 = 65536.
Sygnałem wyjściowym hallotrona jest napięcie. Tak więc przez 1/2 LM358 pracująca jako komparator i zasilona napięciem takim jak procesor. Ważna jest biegunowość napięcia wejściowego.
Jak poprawnie skonfigurujesz to zadziała. Oczywiście sam licznik to nie wszystko, trzeba jeszcze ustawić port jako wyjście.
Kod wydaje sie ok, przy czym moje walki z odmierzaniem czasu mowia ze trzeba brac poprawke na Bascoma /i to duuuza/. Sprawdzilem pod symulatorem (Bascom) i program dziala, w realnym procku pewnie czasy sie rozjada.
Nigdy nie miałem do czynienia z Bascomem 5051, możesz mi podpowiedzieć co to za polecenia i jakie są adekwatne polecenia w Bascom AVR?
To co należy zrobić, aby skonfigurować Timer0?
Witam dziękuje za podpowiedz to prawda ściągnąłem wersje Avr Help jest tam dużo ciekawych rzeczy z tym że mam kompilator Bascom 8051 wersje demo kod żródłowy nie daje się z kompilować wersja nie generuje tak dużego kodu wynikowego wyświetla mi błąd Error alows 2048 bytes of code only in file Czy jest większa wersja demo dla procków z serii 8051 czy...
Tak.
W ATmega8 masz 3 timery:TIMER0(8bit bez funkcji PWM),timer1(16bit z 2 kanałami PWM),i timer2 (8 bit z jednym kanałem PWM) i do tego musisz się zastosować. Wyjścia PWM to PORTB.1, PORTB.2 i PORTB.3 Możesz jeszcze zrobić programowy PWM np. na timer0 i będziesz miał PWM na wyjściu na jakim tylko chcesz. [syntax=basic4gl][/syntax] $regfile = "m8def.dat"...
OC 1 A, OC 1 B - timer1 OC 0 - timer0 OC 2 A - timer2
w języku BasCOM piszę
Witam Przyznam szczerze, że właściwie nie miałem problemów z timerami w Bascomie (większych) jednak w zamieszczonym programie nie podoba mi się sposób deklaracji zmiennych. Dlaczego tego nie porozbijać na osobne linijki ? W dodatku pomieszane typy zmiennych... -- pozdrawiam
W Bascomie AVR jest taka ciekawostka: Load timer1 ,100 - działa błędnie Load timer1,zmienna - działa prawidłowo! dla timer0 jest odwrotnie(ze zmienną nie działa) Np. w symulatorze Bascom AVR: Dim X As Word Config Timer1 = Timer , Prescale = 8 Load Timer1 , 100 ' timer1 = 156 X = 100 Load Timer1 , X ' timer1 = 65436 nop nop
wyliczenia zastosowałeś do timer0 a pracujesz na timer1
Można wpisać np coś takiego Config Timer1 = Timer , Prescale = 64 A na początku Zlicz Timer1 = Timer1 + 3044 to daje dość dokładny "obraz" 1s, zależy od kwarcu Przepraszam Ty masz Timer0, ale na Timer1 wygląda to tak
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.
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...
Błąd kompilatora w tej wersji. Timer0 konfiguruje się bezpośrednim zapisem do rejestrów. Timer1 działa normalnie.
Dwa razy włączasz Timer0. A pewnie chodziło Ci o to żeby włączyć Timer0 i potem Timer1.
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...
Taka składnia dotyczy tylko Timer1/Timer3/Timer4/Timer5. Nie zadziała poprawnie dla Timer0 i Timer2. Choć z moich osobistych obseracji to najnowszy BASCOM-AVR i spora grupa procesorów poprawnie obsłuży taką składnię: CONFIG TIMER0 = PWM , PRESCALE = 1 | 8 | 64 | 256 | 1024 , COMPARE A PWM = CLEAR UP | CLEAR DOWN | DISCONNECT , COMPARE B PWM = CLEAR...
Robisz prosty błąd w składni. Poczytaj w helpie o Load. Nie tak: [syntax=basic4gl]Load Timer1 = jakas_wartosc[/syntax] tylko tak: [syntax=basic4gl]Load Timer1 , jakas_wartosc[/syntax] Z tego co pamiętam można również tak. przykładowo: [syntax=basic4gl]Timer0 = 249[/syntax] co jest równoważne: [syntax=basic4gl]Load Timer0 , 6[/syntax] Ale to sobie musisz...
Jeśli pomiędzy przerwaniem od timera a wpisaniem do niego nowej wartości upływa zbyt "długi" czas to może się okazać, że timer zgłosił przerwanie w międzyczasie, które zostanie uwzględnione jeśli zapiszemy Timer1 = Timer1+wartość, a utracone jeśli zastosujemy Timer1 = wartość.
Witam. Wersja 2.0.10.0. Ten kod zachowuje sie tak samo w bardziej rozbudowanym programie jak i w tym co wyzej jest napisany (napisalem sobie to odzielnie bo takze myslalem ze cos napisane jest zle w dalszym programie) Pozdrawiam
........ chce wykorzystać wewnętrzny kwarc 8Mhz po trzecie czytając helpa jesli dobrze rozumiem to timer1 jest 16bitowy a timer0 jest 8 bitowy emarcus - gdybym chciał wykorzystać twój pomysł to gdybym zostawil timer1 jako counter a jako timer wykorzystał timer0 ktory by zliczał czas w jakim sa zbierane impulsy - jeśli o to ci chodziło i jeśli jest...
trzeba 4 postow na elektrodzie, zeby w koncu zabrac sie za datasheeta... niezle. 4\/3!! Takie rzeczy tylko w Bascomie A co ma Bascom do fuse bitów?
w/w procek ma 4 kanaly pwm. z tego co wyczytalem w dokumntacji to ten dwa dodatkowe sa na timer0, tyle ze bascom nie ma takiej opcji :( moze ktos wie jak to zrobic? probowalem podobnie ja pwm na timer1 ale bscom nie chce tego skapilowac. z gory dzieki za pomoc!
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...
Nie do końca wiem dlaczego tak się dzieje ale jeśli bardzo zależy Ci na równych odstępach czasowych między krokami silnika to na czas wykonywania przerwania Timer0 powinieneś wyłączać system przerwań: na początku Disable, zaś na końcu przerwania od Timer'a0: Enable Timer1. Rano posiedzę nad Tym... pozdrawiam
OPIS FUNKCJI LOAD Action Load specified TIMER with a reload value. . . . It will do the calculation. (256-value) So LOAD TIMER0, 10 will load the TIMER0 with a value of 246 so that it will overflow after 10 ticks. TIMER1 is a 16 bit counter so it will be loaded with the value of 65536-value. Czyli u ciebie ładuje 65536 - 65436 = 100 Przepełnienie właśnie...
Ściągnij sobie z tej strony program kalkulator avr http://www.elportal.pl/index.php?module=... [syntax=basic4gl] $crystal = 1000000 $hwstack = 80 Config Timer1 = Timer , Prescale = 64 Dim Sek As Byte 's Enable Timer1 Enable Ovf1 On Ovf1 Czas Stop Timer1 Enable Interrupts Sek = 0 Do If pinc.0 = 0 then Load Timer1 , 49911...
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...
Witam "Podpinam się" pod pytanie. Dotyczy czterech wyjść OCxx w ATTiny2313. ...Tylko tych opisanych jako OCxx ..... Właśnie. OC1A i OC1B "wiszą" na Timer1 . Bez problemu można poprosić Timer1 i oba wyjścia do pracy w PWM. Timer0 w BASCOM nie pozwala się ustawić w Config Timer = PWM , PWM = 8 , .... (co za tym idzie też OC0A oraz OC0B) :( Po Compile...
Timer0 jest 8-bitowy czyli pomiesci liczbę z zakresu 0-255, Timer1 jest 16-bitowy czyli pomiesci liczbę z zakresu 0 - 65535. Zapewne autorowi chodziło o to aby zrobić to na timerze 8-bitowym, ale Twoje obliczenia tez są dobre tylko dla Licznika/Timera1
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
Probowałem timer0 i timer1 ale obliczenia się nie zgadzają z rzeczywistością
Witam ogarnąłem już dużo na temat programowania w bascom, tylko mam kolejny problem, mianowicie chciałbym zaprogramować obsługę serwa pilotem nadającym w RC5 lecz gdy połączę obsługę rc5 i serwa mam takie błędy i nic nie działa: ........ Pojedynczo programy działają ok. ................. Rc5+ servo (nie działa) Pozdrawiam. Zauważ że zarówno 'Config...
a czy dla Ciebie to bez różnicy że Timer0 jest licznikiem 8 bitowym a Timer1 16 bitowym? Dodano po 5 konfigurujesz Timer0 - config timer0 = timer, prescale = 64 a ładujesz timer1 - timer1 =55536 jak to ma ruszyć
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
] 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...
Podłączę się pod temat ponieważ mam podobny problem. W atmega8 mam prawie identyczny program do odmierzania 1s (przepisany z książki).Do uC mam dołączony kwarc 8MHz poprzez 2 x 30 pF, żadnych fusbitów nie ustawiałem, problem polega na tym, że 1s trwa około 10 sekund. Gdzie szukać problemu?? Jezeli nie zmieniales zadnych fuse bitow wiec pracujesz na...
Tu masz rację. Myślałem o Timerach 8 bitowych bo tu było pytanie o Timer0/2 Timer1 jest konfigurowany jako Phase Correct a Timer2 jako Fast PWM https://obrazki.elektroda.pl/8915388600_...
Odświerzę trochę temat. Ja konkretnie muszę w miarę precyzyjnie zmierzyć prędkość obrotową w możliwie krótkim czasie. prędkość w zakresie 750-6500 obr/min. Dysponuje tarczą 25 nacięć na obrót i fotokomórką szczelinową która daje ttl na wyjściu. Puki co ttl generuje z generatora ne555 by uniknąć błędów pomiarów związanych ze stroną mechaniczną systemu....
W ustawieniach bascoma mam 4mhz i kwarc 4mhz dzielone przez 64 w preskalerze i 256 w timer0 dają ok 4ms timer1 ma 65536 co daje ok 1s
O co mi dokładnie chodzi: W helpie Bascom jest napisane, że w przypadku kości 8535 mam do dyspozycji preskalery 1, 8, 32, 64, 128, 256, 1024, a dla kości M103 1, 8, 32, 64, 256, 1024. Ja zaś posiadam kość M32 i w PDF, który dotyczy tego mikrokontrolera jest tabelka na 127 stronie, która zawiera w sobie jakby wykaz dostepnych częstotliwości, ktorymi...
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, potrzebuje prostego programu który zliczy ile razy na sekundę wciskany jest przycisk. Np na jednym z portów pojawi się 0 kiedy przycisk zostanie wciśnięty, program ma zliczyć ilość impulsów przez sekundę i zwrócić daną do zmiennej. Proszę o pomoc lub podpowiedź. Niestety jestem początkujący i niezbyt rozumiem Liczniki-Czasomierze Timer0 i Timer1....
Tylko proszę mi podpowiedzieć, czy dobrze rozumiem nazwy kanałów i ich timerów Timer0 - Pwm0 Timer1 - Pwm1a, Pwm1b Timer2 - Ocr2
Ja mam taki program zrealizowany na Atmedze8. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 40 $framesize = 40 Config Portb.1 = Output 'wyjscie triak Triac Alias Portb.1 Config Rc5 = Pind.7 'rc5 pin timer0 Dim Level As Word 'poziom sciemniania 1 - 20 Dim Timer_val As Word 'wartosc timer1 dla sciemniania Dim Command...
Wydaje mi się, że najpierw powinno być „uruchomione” odliczanie tych 0,1 sek, wyzwalane pierwszym pikiem z „paczki”. Potem trzeba odczekać te 0,1 sekundy na zanik „szumów” i zacząć zliczanie w czasie 0,9 sek. Ilość zliczonych pików podzielona przez czas da mi częstotliwość. Wynik ma się utrzymywać na wyświetlaczu...
Witam, chciałbym przy użyciu Atmega8 i zewnętrznego kwarcu odmierzać i zliczać setne części sekund, sekundę mogę łatwo wyłapać z timera1 według przykładowych obliczeń 4000000MHz / 256 = 15625 65536 - 15625 = 49911 lub 8000000Mhz / 256 = 31250 65536 - 31250 = 34286 Nie mam jednak pomysłu jak....... Z góry dziękuję za pomocne wypowiedzi. Aby odmierzac...
zamiast timer0 użyj timer1, ale pewnie jakby był wolny to byś już to dawno zrobił :D jeśli to bascom avr to możesz spróbować pokombinować z waitus... jak znasz odstępy między impulsami z odbiornika podczerwieni ... :)
Witam, Nic nie przeszkadza w tym, że to bascom. Prescaler jest ustawiony na 64 więc zanim licznik zdąży zwiększyć swoją wartość to uC już załaduje do niego odpowiednią wartość. W Twoim programie jest pare błędzików, które może nie wpływają na dokładność pomiaru, ale są głupie :) konfigurując porty, dla pewności możesz napisać: set ddrb.2 set ddrb.3...
Myślę, że można bez problemów ten program przerobić. Będzie jednak kilka problemów. 1. Maksymalny zegar dla układów serii L to chyba 8MHz, chociaż mogę się mylić. W oryginale uC chodzi na 12MHz. 2. Trzeba zmienić konfigurację TIMER0 i TIMER1 które w AVR Bascom sa "trochę" inne. Ale w ogóle sądzę, że jest to do zrobienia.
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...
Ale Twój poprzedni program był lepszy. Wystarczyło zmienić Timer1 na Timer0. A tak- w przerwaniu na ok. 10 ms blokujesz procesor. P.S. Łopatologicznie- nie. Jakieś 64300
Oczekujesz pomocy a nie dałeś kodu! Już lecę do Wróżbity Macieja! Bascom ma tyle błędów co Windows. Z osobna to wszystko działa, jak chcesz uruchomić kilka rzeczy to już nie. Nie ma się co tym przejmować, bo w Arduino i HAL dla STM32 jest tak samo. Zgaduję (kodu nie ma, a Wróżbita Maciej jest akurat zajęty), że używasz Bascom do konfiguracji PWM. Użyj...
No widzisz, nie czytasz tego helpa. Timer się inaczej ładuje. Chcąc mieć początkową wartość timera0 równe 250 piszemy: Load timer0 , 6 Co do zmiany timera na Timer1 to trzeba wiedzieć, że ten timer jest 16 bitowy
Dokładnie taki miałem zamiar ale coś to nie chciało chodzić. timer0 miał mierzyć okres, a timer1 generował odcinki czasu ale wszystko głupiało i zrezygnowałem. Łatwiej mi było ustabilizować obroty silnika, gdyż jest to silnik z hdd wiec steruje nim przez sterownik
Np. timer1 konfigurujesz tak aby odliczał 1 msek (a nie 1sek ). W czasie pomiędzy jednym int0 a drugim zliczyłeś wystąpienie 1251 razy timer1 1000/1251 = 0,79936 Hz Jednak dla większych częstotliwości musisz użyć poprzedniej metody (timer0 = counter...)
Witam, Nie będę zakładał nowego tematu. Mam podobny problem. Atmega 2560 + 16Mhz. Przy tym ustawieniu timera przerwanie powinno być generowane co 0,5s. Natomiast jest generowane co 1s. 256/16000000= 16us*65536=1,048576s 65536-31250=34286 co daje 0,5s [syntax=basic4gl] $regfile = "m2560def.dat" $crystal = 16000000 Config Portg.5 = Output : Portg.5 =...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Nie ma większego znaczenia w jakim środowisku programujesz (Basic albo C). Istotny jest koncept projektu i sposób rachunkowy, reszta to tylko inna forma zapisu programu. Wybrałeś za narzędzia: Timer1 i jeden z interruptów zewnętrznych. Zatem jest tez bez znaczenia...
Witam Programuję przy użyciu BASCOM AVR układ ATtiny45 i jeżeli chcę użyć Timer1 to pokazuje się błąd "Error: 222 Illegal character [expected (,got" [TCCR2B]]. Jeżeli w programie użyję Timer0, to wszystko jest OK. Również jest OK z Timer1 gdy wpiszę inny typ mikrokontrolera n.p. Attiny44. Temat był już przed laty poruszany na forum ale nie znalazłem...
Aby ten program, który napisałem zadziałał, trzeba urchomić dwa Timery. Timer0 do odliczania 100 milisekund a Timer1 do odliczania 1 sekundy. Czy można użyć Timera1 czy planujesz jego użycie do czegoś innego?
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...
Timer0 ma też tryb CTC i przy ustawieniu prescale 1024 i odpowiednim ustawieniu rejestru OCR0 da się z niego uzyskać 100Hz. Wtedy można użyć Timer1 do liczenia.
Acha rozumiem, czyli ta linijka odpowiadająca za Timer0 jest zbędna wystarczyło dodać "Compare B Pwm" do linijki Timer1. Jeszcze pytanie dla ścisłości : ta komenda jest poprawna w przypadku Timer1? Compare1a = 1000 Compare1b = 400
Witam. W pewnym sofcie dla Atmega16 wykorzystałem już: - Timer1 (16 bit) do odliczania 0,0001s odcinków czasu - Timer2 (8 bit) jest wykorzystywany przez odbiornik podczerwieni (instrukcja getrc5) Timer 0 niby jest wolny, ale nie wiem / nie jestem pewien czy nie jest on wykorzystywany przez jakieś używane przeze mnie instrukcje (np. print dla sprzętowego...
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...
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...
Mam prostokąt (PWM) na timer1. Czy zliczać Timer1 czy Timer0? Timer ma być ustawiony na time czy counter. Wydaje mi się że najlepiej byłoby ustawić na zliczanie impulsów czyli counter i po odliczeniu 59 zatrzymać Timer1 na czas 1 lub 2 impulsów. Wszystko OK ale nie udaje mi się to w praktyce. Albo nie generuje nic, albo nie zatrzymuje po odliczeniu....
rozumiem... (programuje tylko w c# na PC) bo mi się wydaje.. że jak mam getrc5 w głównej pętli programu to przerwanie Timer1 przerywa mi działanie tej funkcji i nie pobiera do konca kodu IR... (czytalem ze getrc5 wykorzystuje timer0)
chcialem zrobic sterowanie dioda rgb, 6 przyciskami po 2 przyciski do jednego koloru lub potencjometrem. narazie widze ze potencjometrem bedzie problem ale mam ksiazke do bascomu rozwiazanie z przyciskami to pare linijek kodu. chcialem zrobic go na atmega8 ale jak sie nie myle to jest tylko timer0 i timer1 i to mi nie wystarczy na sterowanie 3 kolorow...
Przeznaczenie: Zatrzymuje działanie programu lub określone urządzenie. Składnia: STOP STOP urządzenie gdzie: urządzenienazwa symboliczna uruchamianego urządzenia. Opis: Pierwszy format instrukcji powoduje zatrzymanie działania programu. W tym celu jest wykonywana pusta pętla, podobnie jak w instrukcji END. Jednak przy instrukcji STOP nie są wyłączane...
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 Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
Witam, Mam pewien problem dotyczący licznika Timer1 w procesorze TINY45. Programuję w BASCOM. Procesor TINY45 posiada 2 liczniki 8-bitowe: TimerO oraz Timer1. Problem w tym, że nie bardzo mi się udaje zmusić Timer1 do działania... Napisałem taki prosty program na próbę: $regfile = "attiny45.dat" $crystal = 8000000 Config Pinb.3 = Output Led...
A tak to by to zadziałało ?? Config Timer0 = Timer , Prescale = 64 Config Timer1 = Timer , Prescale = 64 Dim W As Byte W = 10 Do If P_gora = 0 Then Incr W End If If P_dol = 0 Then Decr W End If If Ped1 = 1 Then Start Timer0 Start Timer1 Set Silnik1 Set Silnik2 End If If Ped2 = 1 Then Set Silnik2 End If If Sens = 0 Then Reset Silnik1 End If If Kran1...
Idę w jakimś kierunku czy zacząć od nowa ? $regfile = "attiny13.dat" $crystal = 10000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Config Timer0 = Counter , Edge = Rising Dim A As Byte Enable Timer0 While Pinb.0 = 0 : Wend Timer0 = 0 Start Timer1 While Pinb.0 = 1 : Wend Timer0 = A Stop Timer1 If A < 100 Then Set...
Nie piszesz nic o pozostałych parametrach układu więc zakaładam, że uC chodzi na wewnętrznym RC=8MHz... Wygodnie jest wykorzystać timer1 (16-bit)... Mode 14 - fast pwm, wartość top (ICR1=10000), prescal=1... Przy takiej konfiguracji częstotliwość pwm wynosi ~800Hz, co dla żarówki jest aż nadto... Wyjście pwm PB1(OC1A)... Wypełnienie zwiększane o 1 co...
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
Można dać zewnętrzny dzielnik sygnału do silnika krokowego na jakiejś małej zewnętrznej płytce. I wtedy dać sygnał z Timer0 do silnika a Timer1 wykorzystać do generowania 1s. Ale wydaje mi się że jednak można to zrobić na samym procesorze- wszystko zależy od czasu obsługi przerwań.
$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 '-- Wejscia przycisków Config Portd.2 = Input Config Portd.3 = Input ' -- podciągnięcie Set Portd.2 Set Portd.3 ' -- porty sterowania segmentami LED Config Portd = Output Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config Portc.2 = Output ' -- tranzystory Config...
Witam. Na początek napiszę że to ma być mój pierwszy program napisany w tym języku i pierwszy kontakt z mikrokontrolerami. Nie mam pomysłu jak się zabrać za uruchomienie jakiegoś "zegara". Wydaje mi się że wtrącenie w pytaniu „jakiegoś zegara” wprowadza ludzi w błąd. Z dalszej części wynika że raczej potrzebujesz obsługi TIMERA wbudowanego...
Zastanawia mnie czy aby waitms nie używało timer0 do generowania opóźnienia. Na próbę ustaw wyświetlacz na timer1 i napisz czy zadziała tak samo. Ale pewnie to to i tłumaczyło by dlaczego wykonało sie jeden raz.
Ciężko powiedzieć co tam jest nie tak. Spróbuj tego: [syntax=basic4gl]'---PROCESOR-----------... $regfile = "M32Def.dat" Wait 2 $crystal = 16000000 $hwstack = 128 $swstack = 64 $framesize = 64 '---WYŚWIETLACZ-------------------------... $lib "glcdKS108.lib"...
Timera1 nie użyjesz do RC5 ale jak poczytasz HELP Bascomiczny to zobaczysz z łatwością, że można spokojnie podłączyć go do Timera2 Tak więc albo możesz zmienić RC5 na Timer2 ale możesz nie zmieniać tylko swoją procedurę w Timer0 przenieść do Timer2 i po zawodach . Reasumując masz dwa wyjścia a ty szukasz trzeciego z Timerem1 ;)
$regfile = "M16def.DAT" $crystal = 8000000 $baud = 57600 Dim Czestotliwosc As Long Config Timer1 = Counter , Edge = Rising Print "Licznik" Enable Interrupts Enable Timer1 Do Start Timer1 Wait 1 Stop Timer1 Czestotliwosc = Counter1 Print "Freq: " ; Czestotliwosc Counter1 = 0 Loop Sygnał podaję na portb.1 i wszystko śmiga. Nie wiem tylko dlaczego nie...
Nie wiem czy dobrze myślę? po skompilowany i uruchomieniu programu w symulacji w okienku stackdepth : pokazuje wartość E4 czyli 228 . Jeśli dobrze myślę jest to max wartość wykorzystania RAM. W związku z tym pozostaje jeszcze 28 z 256 wolnego RAM. Jeśli się mylę to proszę mnie poprawić. Co pokazuje okienko stackdepth : w BASCOM 8051 ? Jeszcze drugie...
Koledzy, mam mały problem, gdyż mój pomysł na zliczanie czasu otwarcia wtrysku nie bardzo się sprawdza. W tej chwili robię to tak, że w czasie 0,5s w pętli sprawdzam czy na pinie do którego jest podłączony sygnał wtrysku jest stan wysoki, jeżeli jest, to zwiększam zmienną "wtrysk". Działa to w miarę dobrze, ale jak np. wcisnę przycisk, co wiąże się...
Zmieniłem na PORTB.0 ale to nic nie pomogło nawet zmieniałem na timer1 ale również porażka może ktoś ma jakieś inne propozycje a co jest ciekawe kumpel przesłał mi kod w C i tam działało przerwanie od timer0 i było ok na moim uP
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...
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
Czy Timer0 który jest 8 bitowy pozwala na generacje sygnału PWM tylko poprzez napsanie programu zaświeć diodę zaczekaj 1s zgaś diodę ? Częstotliwość możesz mieć inna ale tylko poprzez użycie 2 timerów. Timer0 generuje sygnał o jakiejś częstotliwości a Timer1 o innej. Jeżeli użyjesz jednego z nich to możesz na Kanale A i B zmieniać ale tylko wypełnienie.
Witam! Program pisany w Bascomie, jest to prosty programik ktory pokazuje temperature w aucie, przejechany dystans itd. Timer0 wykorzystywany jest jako licznik (zlicza impulsy drogi), przy przepelnieniu licznika wywolywane jest przerwanie. Timer1 wykorzystywany jest jako timer, odmierzam nim 1ms, czyli co 1ms wywolywane jest przerwanie. Problem polega...
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...
Witam Procesor przechodzi w stan Powerdown po ustalonym czasie kiedy zmienna L=1. Ustawiłem wybudzanie z przycisku (podanie 0 na int0) no i nie działa . Przepatrzyłem już chyba wszystkie tematy na forum i robiłem z milion kombinacji. Już nie mam pojęcia co robić czy to może być wina BASCOM, procesora , prosilbym o konkretne wskazówki jak ustawić aby...
Witam wspólnotę chciałbym zaznaczyć że z wykształcenia jestem mechanikiem, a z programowaniem nie miałem wcześniej styczności. Przeczytałem książeczkę która mowiła o programowaniu w jezyku bascom, i stworzyłem taki o to kod programu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer0 = Timer , Prescale = 256 'licznik do odmierzania...
bascom timer0 timer1 timer0 timer1 atmega bascom timer0
napełnianie kartridży canon płytka stykowa atmega8 czarny ekran instalacja system
zbudować gokarta zbudować gokarta elektycznego
UPS do agregatu Powermate WX 3200 - jak wybrać? Peugeot 307 2.0 HDI 2003 - Brak komunikacji OBD2 z ECU