A nie lepiej byłoby wykorzystać PWM? Wtedy można dosyć precyzyjnie ustalać częstotliwość na wyjściu, oczywiście ustawionym w tryb Toggle... Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Toggle , Prescale = 8
Mówisz masz na timerze. $regfile = "m16def.dat" $crystal = 1000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Timer1 = Timer , Prescale = 1024 Enable Interrupts Enable Timer1 Start Timer1 On Timer1 Odmierz_czas Const T = 6942 Config Portb.1 = Output : Portb.1 = 1 : Led Alias Portb.1 Config Portb.2 = Input : Portb.2 = 1 :...
Ten kod to tak dawno napisany że wiele by można w nim poprawić. Jednak działa i też dawno temu dochrapał się wersji przenośnej, bateryjnej, na Mega8 albo coś podobnego (nie pamiętam). Służy dzielnie do różnych zadań. Można symulować czujniki Halla w autach i podobne rzeczy :D http://obrazki.elektroda.pl/2071243700_1... Co do przeróbki...
Zumek -- dzięki za wskazówki ale niestety w moim procesorze nawet po ustawieniu Timer1 na 65492 max. częstotliwość jaką udaje mi się osiągnąć to ~16KhZ. Może tak: (Nadal w Bascomie , choć nie całkiem w Basicu) $crystal = 4000000 Config Portb = Output Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle On Compare1a Introc1a Nosave Timer1 = 0 Compare1a...
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:...
Witam, Polecenie SOUND port , il_impulsów , czas_impulsu To mi nie pomoże. Jako argument chcę podać potrzebną częstotliwość (liczba), a nie ilość impulsów i czas impulsu... Jeżeli znasz częstotliwość to nie problem określić ilość impulsów i czas trwania, ale ta funkcja jest mało precyzyjna. Lepiej wykożystać do tego Timera: $crystal = 4000000 Pwm1a...
zacznijmy od tego, ze kod umieszczamy w klamrach Dodano po 10 to jest kod na jedna sekunde $regfile = "m8def.dat" $crystal = 8000000 Config Pind.7 = Output Portd.7 = 0 Przekaznik Alias Portd.7 Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Enable Interrupts Enable Timer1 Load Timer1 = 31250 Do Loop End Sekunda: Load Timer1 =...
Powiedz mi skąd u ciebie wektor przerwania wynosi 10 ? Czy to jakis Egzotyczny procesor czy jak ? Bo dla przerwania Timera 0 dla normalnego uK jest to inna wartość Patrz np Atmel strona http://www.atmel.com/dyn/products/tools_... C51 Timer1 in Mode 1 with Soft Gated Timer (20 KB, updated 06/04) /** * FUNCTION_PURPOSE: timer1 interrupt...
A nie lepiej tak ? Przykładowa konfiguracja timera1 w trybie CTC i przebiegiem na OC1a [syntax=basic4gl]Config Timer1 = timer, Prescale = 256, CLEAR TIMER = 1, Compare A = toggle, Compare B = disconnect [/syntax] Potem tylko zmieniać wartość rejestru Compare1a jakimiś przyciskami, pilotem, enkoderem etc. ps. Jak nie zadziała to poustawiać bity w rejestrach...
Witam od 2 godzin draże problem i już troszkę jestem bezradny. Sprawa tyczy się procesora jak w temacie czyli ATmegi169 i Timera1 w niej. Chcę wywołać najprostsze przerwanie po przepełnieniu i żadnym sposobem mi się nie udaje. To że wszytko jest poprawnie testuję tak ze po podmienieniu w kodzie 1 na 0 (zmiana z timera1 na timer0) wszytko zaczyna ładnie...
Poniżej mój testowy program w bascomie. Procek m8, wew. zegar 8 mhz. Testowałem na nikon D80 - działa OK. ' PILOT NIKON ML-3 ' ZEGAR 8 MHZ Dim I As Word Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 Config Portd.5 = Output Reset Portd.5 Compare1a = 100 Enable Interrupts Disable Timer1 Reset Tccr1a.com1a0 '***************************************...
Udało mi się! 'Przykład generowania fali prostokątnej niezależnie od CPU 'procesor AT Mega8 'zegar wewnętrzny 1 MHz 'piezo pomiędzy PB.1 a +5V 'UWAGA!!!, ATMEGA8 ma domyślnie załączonego Wachdoga!!!. Trzeba wyłączyć bezpiecznik!!! $regfile = "m8def.dat" $crystal = 1000000 Dim I As Byte Ddrb.1 = 1 'port b.1 wyjściowy '---------------------------------------...
Pracuję nad nietypowym PWM jeśli można użyć takiego zwrotu na Atmedze 16. Problem polega tym że mam do dyspozycji 2 potencjometry. Jednym chcę regulować czas trwania logicznej 1 a drugim potencjometrem czas trwania logicznego 0. Czasy obu sygnałów regulowane w przedziale 0,05ms - 5ms. Poniżej próbny program. Ponieważ są to początki nauki Bascoma to...
Pętla ma być. gdy Timer1 się przepełni następuje skok do podprogramu. Ale czy to dobra częstotliwość?? Enable Interrupts Enable Timer1 Load Timer1 = 276 Set Portd.0 Do Loop End Proced: Load Timer1 = 276 Toggle Portd.0 Return Podprogram ma nazwę [Proced:] - gdzie masz do niego odwołanie ?
Witam :) Źle inkrementujesz "Licznik" ... 'jest ... Skocz: Incr Licznik Toggle Portd.4 'CLK Timer1 = Timer1 + 65535 ... '... powinno być Skocz: Toggle Portd.4 'CLK If Portd.4=0 Incr Licznik End If Timer1 = Timer1 + 65535 Return ... 'Coś zeżarło przecinki Litera_a: Data 1 0 1 0 0 0 1 1 1 'Po wysłaniu 9 bitów trzeba zatrzymać Timer1 , by nie...
Ok rozumiem. Spróbuj tego. Użyte przerwanie. Można też zrobić bez zależnie od potrzeb. $regfile = "m8def.dat" $crystal = 8000000 Dim Zmienna As Word Dim A As Bit Config Pinb.1 = Output Config Pind.2 = Input Set Portd.2 '============ definicje timera ================================ Config Timer1 = Timer , Compare A = Toggle , Compare B = Disconnect...
Oki, ale mam to umieścić w programie w pętli If then zależnej od przycisku ? [syntax=basic4gl]If Portd.0 = 0 Then Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1 If Portd.1 = 0 Then Config Timer1 = Timer , Prescale = 8 , Compare A = Disconnect , Clear Timer = 1 [/syntax]
Witam kupiłem ostatnio nadajnik i odbiornik ultradźwiękowy, dziś się męczyłem próbowałem to uruchomić no ale niestety nic z tego nie wyszło, najprawdopodobniej to wina programu. To chyba coś nie tak z ustawieniem komparatora. Proszę o pomoc. http://obrazki.elektroda.net/27_12249746... Config Portc = &B0000000 Portc = &B0000000 Config Portb...
Napisałbyś po polsku co chcesz osiągnąć...bo ja nie rozumiem od początku. Poniższy kod bez udziału mikrokontrolera będzie togglował na Twoim upragnionym pinie. [syntax=vbnet]$regfile = "m8def.dat" $crystal = 16000000 Config Timer1 = Timer , Prescale = 1 , Compare_a = Toggle , Compare_b = Disconnect , Clear Timer = 1 Compare1a = 1 Do nop Loop End[/syntax]
"Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1" Przy tej konfiguracji to chyba nigdy nie wejdzie w przerwanie od Timer1. Gdy osiągnie Compare1a = 600 to dzięki poleceniu Clear Timer = 1 licznik zostanie wyzerowany. A przerwanie Poz: jest uruchamiane dopiero po przepełnieniu licznika. Ale ja nie mam zaufania do konfiguracji...
Witam. Jestem poczatkujacym dlatego proszę o błachostkę. Buduje ups-a / przetwornice trafo z starego ups-a a generator 50hz ... Niema dlatego wybor padl na atmege 8 i timer1. Czy ktoś co coś jarzy mógłby mi to sprawdzić ? Byłbym wdzięczny . Oto kod : $regfile = "m8def.dat" 'atmega 8 $crystal = 8000000 '8 mhz 'INNE KONFIGURACJE Config Timer1...
np tak : Config Timer1 = Timer , Prescale = 1024 Timer1 = 0 Start Timer1 Enable Interrupts On Timer1 sterowanie_led do ..... loop sterowanie_led : Toggle Led1 return
tak właśnie podejrzewałem że bascom nie lubi operacji z dokładnym czasem.Zmiana polecenia z Toggle na not nic nie zmienia.Pozostanie przy sprzętowej generacji.Mam tylko jeszcze jedno pytanie,bo fala którą generuje to będzie nośna dla pilota SIRC.I teraz przy włączaniu i wyłączaniu T1 raz zostaje stan wysoki ,a raz niski na PB1. Na razie załatwiłem to...
Fajny ten kalkulator...tylko skomplikowany. sie przyda. Teraz może dalej te timer'y ,Czy tak uzyskam PWM na Pinb.0 o częstotliwości zależnej od wyniku ADC? Jak już męczyć tajmery to tak żeby je troche znać... Config Portb = &B11111111 'Portb.0 ma być wyjściem Config Timer1 = Timer , Prescale = 1 Enable Interrupts : Enable Timer1 On Timer1 Gen Dim...
Trochę mi zeszło z próbami, ale jest tak: z przerwaniem dałem sobie radę. Musiałem wyrzucić NOSAVE, PUSHALL i POPALL, bo z tym nie chciało działać. Działa też timer1 i ustawia OC1A na 0. Problem w tym, że potem nie mogę ustawić tej końcówki na 1. Testowałem to poniższym kodem i nic. Jak ustawiłem Tccr1a = 64 wtedy końcówka się przełącza, czyli Timer...
Raz są zgodne raz są w przeciwfazie. A nie zależy to przypadkiem od stanu początkowego pinu? Config Timer1 = Counter , Prescale = 1 , Compare_A = Toggle , Compare_B = Toggle , Clear_Timer = 1 Nie znam baskoma ale toggle o tym mówi.
Działa ;-) Ustaw Breakpoint na linijce (prawy myszy Toggle Breakpoint) [syntax=avrasm]com LED[/syntax] naciśnij F5 (Run) jak zatrzyma się na Breakpoint wykonaj kod przerwania krokowo F11 naciśnij F5 (Run) jak zatrzyma się na Breakpoint wykonaj kod przerwania krokowo F11 itd. Zamiast 15625 ładuj do OCR1A 15624. Wieczorem wrzucę inny sposób migania tym...
Żeby wiedzieć czy przycisk jest przytrzymany musisz testować toggle bit http://obrazki.elektroda.pl/7180962700_1... Ciężko Ci będzie napisać program do rozpoznawania standardów nadawania IR, jest ich naprawdę dużo. Lepszym pomysłem byłoby napisanie programu na uC który przekazywałby do komputera (np. przez UART) czasy trwania bitów przerw,...
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 =...
Witam, Atmega 8, Timer1. Prosty generator: przerwanie od timera1 ze skróconym cyklem, pętla główna pusta, w przerwaniu zmieniam stan portu. Niby proste... Oto kod: http://obrazki.elektroda.pl/8467182600_1... Są to regularne skrócenia cyklu z 1.085ms na 0.6355ms. Proszę o wyjaśnienie co to jest i jak sie tego pozbyć?
Witam , mam problem z uruchomieniem timer1 przez sam rejestr , programowo ok ale potrzebuje jak najwyższą częstotliwość na wyjściu (fusebit omijamy ,ten temat znam) . Jeśli chodzi o tmer0 to ok ale również chodzi o podział większy niż 8 bitów np.16554 , ale również przy najmniejszym podziale jak największa częstotliwość . Korzystałem ze strony [url=http://lx-net.pl/hr/gen1/gen1.html]...
Dzięki za odpowiedz. Doszedłem do tego, że cały procesor wiesza się przy poleceniu PRINT lub nawet RND (polecenie toggle odziwo działa). No, no, tylko proszę bez takich... ;) Nie rozumiem... W bascomie wszystko jest dobrze skonfigurowane, działąją nawet przerwana z Timera Timer1. Oto kod: Config Porta = Output Config Portc = Output Config Timer1 =...
Sprawdz ten kod: $regfile = "m8def.dat" $crystal = 4000000 Pwm1a = 0 Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1 Do Pwm1a = 956 Start Timer1 Waitms 500 Pwm1a = 851 Waitms 500 Pwm1a = 758 Waitms 500 Pwm1a = 716 Waitms 500 Pwm1a = 638 Waitms 500 Pwm1a = 568 Waitms 500 Pwm1a = 506 Waitms 500 Wait 4 Loop End Jakiego...
ta procedura Co1s: Timer1 = 3036 '------------ Incr Sek1 : Toggle Kropka 'cala procedura co1s do zapalania kropki oddzielającej godziny od minut 3036 daje 1sek '----------- Return Obsługuje tylko kropkę która ma odzielać godz od minuty i ona dobrze działa, a gdzie błąd w tym kodzie gdzie kolega napisał to nie wiem ?
Dzięki za kalkulator i wyjaśnienie Napisałem kod z timer1 do odmierzania odcinków czasu po 10 sekund. 10 sekund świeci led i następne 10 sekund nie świeci i tak w kółko. Oto kod: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Pind.0 = Output Const Timer1 Reload = 9765 Config Timer1 = Timer , Prescale = 1024 Load Timer1 , Timer1 Reload...
Witam, Atmega 8, Timer1. Używam instrukcji LOAD która skraca czas między przepełnieniami timera, a nie mogę uzyskać odpowiednio krótkiego czasu gdyż w pewnym momencie skracanie timera juz ic nie daje. Oto kod: [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 'Atmega 8 fusy E1 D9 => 1MHz internal RC $hwstack = 64 $swstack = 32 $framesize = 32...
Napisz może co ty chcesz . W kursie Bascoma z EP. napisano kiedyś że podział przez 1 i 1024 może powodować problemy ale dokładnie nie pamiętam o co chodziło . A poza tym Timer1 jest 16 bitowy czyli liczy do 65 536 może usuń polecenie load timer PRESKALER NA 8 a wstaw takie[syntax=basic4gl] Prztimer1: TIMER1= 15536 Incr Licznik If Licznik = 20 Then Licznik...
$regfile = "M16def.dat" Pwm1a = 55 Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 jak to jest twoj kod pokazany od poczatku to brakuje $crystal
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
Witam ! Mam mały problem mianowicie potrzebuję za pomocą procesora Atmega8 wygenerować dwa przebiegi odwrócone w fazie (na wyjściach OC1A i OC1B) Czy jest to możliwe do realizacji programowej ? Pozdrawiam KOD (dwa generatory): Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Compare B = Toggle , Clear Timer = 1 Compare1A=100 Compare1B=100
Próbowałem na tej zasadzie. Ktoś wspominał jeszcze o watchdogu - można go w sumie wykorzystać, ale chyba timer będzie lepszy. Przepraszam za bałagan w kodzie, ale jak człowiek się wkurza, to i nie myśli dobrze;] Dlaczego czas odmierzasz w tak małych odcinkach (rzędu milisekund), gdy tymczasem obserwowane zdarzenia występują w odstępach sekundowych....
Bez specjalnego ingerowania w program uruchom sobie Timer1 (w końcu zapłaciłeś za niego :D ) i zmuś go do przerwania co określony czas. Dioda będzie sobie migać równiutko, a jak napiszesz krótką obsługę przerwania to multipleksowane wyświetlacze się nawet nie zająkną. Polecam instrukcje: Config Timer1... Start ... Load... On... Enable... a później Toggle...
Witajcie ! Mam taką zamotaną sytuację. Na początek kod, albo raczej jego istotne fragmenty: [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 16000000 $hwstack = 128 $swstack = 128 $framesize = 128 Config Timer1 = Timer , Prescale = 8 , Clear Timer = 1 , Compare A = Toggle Enable Interrupts Start Timer1 On Oc1a Timer1_isr Enable Timer1 Ocr1a = 50...
:) Ten schemat przewałkowałem już z tysiąc razy, podłączając na wszelkie możliwe sposoby, z różnymi wartościami kądziorków i rezystorków - i nic. Ciągle napięcie waha się w granicach 4.7V gdy nie widzi przeszkody i 2.8-4.6 gdy widzi. Mam pytnie, jaki generator zastosowałeś, tzn te 36kHz'ów czym uzyskiwałeś, bo ja zapodaje z Timera1. W Bascomie wygląda...
...Dziękuję za pierwszy konkretny post w sprawie ... No to ja dodam cos konkretnego od siebie. Dla niewierzącego mirekk36 cytat z NE6/2004 "W Bascom nie działa Config Timer1=TIMER, PRESCALE=8, Compare A =TOGGLE, działa natomiast TCCR1a=&B01000000 TCCR1b=&B00001010 Takich przykładów jest po kilka w publikowanych programach. Ten osobnik (może osobniczka)...
Cześć Mam program, ktory w czasie 3 sekund (liczone przez Timer1) powinien liczyc impulsy podawane na licznik Timer0 i odpowiednio do tego tyle razy zaswiecic diode. $regfile = "m8def.dat" $crystal = 1000000 Config Pinb.1 = Output Config Timer1 = Timer , Prescale = 64 Config Timer0 = Counter , Edge = Rising On Timer1 Odmierz_3s Dim Licz As...
Witam Ostatnio chciałem zbudować inteligentny wyłącznik na ATTiny2313 zrobiłem układ podłączyłem procesor do niego sprawdziłem wszystkie obwody wejść i wyjść i gdy upewniłem się że wszystko dział sprawnie zabrałem się za pisanie właściwego programu, jednak już przy pierwszych testach okazało się ze procesor działa ale jakby bardzo wolno, postanowiłem...
Kolego patrzę na ten kod ze zgrozą, ale załadowałem do swojego Bascoma i trochę więcej zrozumiałem bo mozna sprawdzać referencje i skakać po kodzie. W przerwaniu co osiem taktów (nierealne) timer ma zliczać te twoje "niby" OCR. (Incr Licz_timera1 : If Licz_timera1 >= Ooo Then) Te OCR jest ładowane z tabeli gdzie najmniejsza wartość to 127 a najwieksza...
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
hehe w bascomie wszystko jest , dlatego go lubie :) RC5SEND togglebit, address, command Uses: TIMER1 Remarks TogglebitMake the toggle bit 0 or 32 to set the toggle bit AddressThe RC5 address CommandThe RC5 command. używa timera1 a wyjście to OC1A schemat do podłaczenia didoy jest w pomocy bascoma układ testowałem i działa bardzo ładnie.
[syntax=c]int main(void) { // ustawienie końcówki OC1A (PB1) sprzętowy PWM jako WYJŚCIE DDRB |= (1<<PB1) ; // ustawienia TIMER1 OCR1A = 499; //500 TCCR1A = (1<<COM1A0);//toggle TCCR1B = (1<<WGM12) | (1<<CS10); // tryb CTC + zegar 1MHz while(1); } [/syntax] Nie musisz uruchamiać przerwania bo licznik sam będzie machać nogą z częstotliwością...
Mam pytanie odnośnie ATmegi8-16PI . Napisałem prosty programik w BASCOM wykorzystujący TIMER1 z preskalerem=1. W przerwaniu zmieniam stan jednego z pinów 1,0,1.... aby otrzymać przebieg prostokątny. Wszystko co udało mi się wydusić przy kwarcu 14MHz to na wyjściu 10µs czyli 50kHz. W związku z ty mam pytanie czy jest metoda na wyciągnięcie...
... Później wykorzystałem wyjście CompareA , skonfigurowałem charakter na toggle i pięknie sygnał generuje, nic nie przeszkadza sygnał jest ciągły, ale za jasną ch... nie mogę wpisać początkowej wartości i regulować częstotliwość... Świetny pomysł, tylko gorzej z wykonaniem :D Użyj jednego z dwóch trybów CTC timer1 i zmieniaj wartość końcową , czyli...
1. Mam podciągnięte porty wejściowe do masy 2. JTAG jest wyłączony, przy włączonym JTAG dioda świeciła ciągle 3. Bo taką mam płytkę, wcześniejszy błąd przy projektowaniu 4. Myślałem że bezpośrednio nie mogę Poprawiłem wszystko o czym pisałeś i nadal jest ten sam błąd Dodano po 22 Podłączyłem diodę pod PIND.5 i poprawiłem program i nadal to samo. Wydaje...
Z rozmachu zapomniałem o tych dyrektywach ale pomimo dodania nich występuje nadal to samo z wewnętrznym oscylatorem po zmienieniu FUSEBITS na zewnętrzny generator kwarcowy 4Mhz i jest wszystko dobrze sekunda trwa sekundę. Ta wada eliminuje użycie wewnętrznego oscylatora do precyzyjnego odmierzania czasu w moim przypadku jest to sterownik rolety okiennej...
Witam, projektuje urządzenie wykorzystujące pastylki DS1990 i w czasie pisania programu natknąłem się na problem z prawidłowym odczytem numeru klucza po przyłożeniu pastylki do czytnika. Nikiedy na wyswietlaczu otrzymuje calkiem przypadkowe dane. Błąd występuje w przypadku około 5% odczytów. Okrojony do minimum fragment programu: $regfile = "attiny2313.dat"...
"Razem" Spowolnienie nie jest spowodowane przez obsługę lcd. Wywaliłem całkiem lcd, zamiast niego dałem toggle port(na wykonanie tej instrukcji chyba potrzeba mniej niż kilka tysięcy cykli?). Pętlę zmieniłem na taką: [syntax=basic4gl] Do If 1ms = 1000 Then 1ms=0 toggle portc.0 End If loop[/syntax] Stan portu zmienia się co ok 64 sekundy.
Prezentuje poniżej program by przedstawić sedno sprawy. Mianowicie jest to generato tylko jest coś z częstotliwością nie tak: Częstotliwość przebiegu na wyjściu PB.0 powinna być: 8000000/8=1000000 1000000/65536 = 15,2 15,2/2 = 7,6 (no bo 1Hz to przejście z jednego stanu do drugiego) Niestet częstotliwość wyjściowa w żeczywistości wychodzi 1Hz dlaczego?...
hmm... a może samo sterowanie fazowe masz spierniczone i tu jest pies pogrzebany ? Wyłącz też na próbę watchdoga. Wrzucam mój stary, ale działający kod (istotne fragmenty), może się na coś przyda. [syntax=vbnet] Dim Predk_timer(70)as Word For Pomoc = 1 To 70 Predk_timer(pomoc) = Pomoc_w Pomoc_w = Pomoc_w + 13 Next Pomoc Config Aci = On , Trigger = Toggle...
Witam mam pytanie odnośnie wykorzystania Timera1 do sprzętowego generowania sygnału prostokątnego na atmega8L. Tak programuję uC: $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.1 = Output Config Timer1 = Timer , Prescale = 256 , Compare A = Toggle , Clear Timer = 1 Compare1a = 31250 Start Timer1 Do Loop End Do pinu nr 15 (OC1A) podłączony...
Witam. Próbuję zrobić prosty obrotomierz do samochodu na Attiny2313. Do testów z jednego Attiny2313 zrobiłem prosty "generator" 100Hz Kod: $regfile = "attiny2313.dat" $crystal = 4000000 Config Pinb.0 = Output Config Timer1 = Timer , Prescale = 1 Timer1 = 45536 On Timer1 Czas Enable Timer1 Start Timer1 Enable Interrupts Portb.0 = 0 Do Loop...
Liczsekundy: Load Timer1 = 49911 Incr Licz If Licz = 1 Then Licz = 0 Print "licz =" ; Licz Toggle Portb.1 End If Nie bardzo łapię po co ta zmienna Licz. Ona ma liczyć sekundy? Jeżeli tak, to na pewno ich nie policzy, jeżeli ustawiasz jej wartość 0 w każdym cyklu timera. Ja bym zrobił tak: Liczsekundy: Load Timer1 = 49911 Incr Licz Print "licz =" ;...
Moim zdaniem najsensowniejsze rozwiązanie: Licznik-czasomierz TIMER1 posiada także dwa 16-bitowe rejestry – COMPARE1A (para OCR1AL i OCR1AH) i COMPARE1B (para OCR1BL i OCR1BH), służące do porównywania zawartości licznika. Kiedy zawartość licznika zgadza się z zawartością któregoś licznika, wywoływane zostanie przerwanie OC1A lub OC1B a stan odpowiedniej...
Witam Siedzę nad generatorem do przetwornicy Proszę o sprawdzenie moich wyliczeń czy dobrze rozumuje i liczę Chcę uzyskać z procesora częstotliwość ok. 41Khz Kwarc mam 8Mhz Tak ustawiam Timer Compare1a wpisałem 3 więc 125000/3=41666 Na wyjściu spodziewam się takiej częstotliwości 41,666Khz Czy dobrze to wykombinowałem ?
https://www.elektroda.pl/rtvforum/postin... plik zrodlowy prawie kompletnie napisanego od poczatku programu do tego ukladu, ma zaimplementowane cztery tryby(wylacznik czasowy, przerzutnik typu D, przerzutnik wylacajacy po danym czasie i opuzniacz zalaczania. Dzieki wszystkim za pomoc i wsparcie, ten program dziala na...
Chwile sie pobawiłem i zastanawiałem sie czemu mi zle działa dioda podpięta do PORTB.3 a to jest związane z OCR1A dlatego zle działała. Nie dlatego, nie ma tu żadnego związku. OCR1A jest to wpis do rejestru, który służy do określenia górnej granicy (TOP) do jakiej ma liczyc Timer1 co odpowiada upływowi czasu tu akutat 1 sec., zaczym się wyzeruje. Jeżeli...
To trzeba zmienić priorytet z 12 bitów stałokodowego pilota na odbiór HCSa lub całkiem usunąć obsługę pilota 12 bitowego. może tak: [syntax=vbnet]'*************************... '========================= przerwanie przy kazdym zboczu ICP, odczyt czasu trwania impulsu...
Może przeoczyłem istnienie ATTiny, ale morduję się z AT90S2313. Kwarce stosowałem rózne: 4, 3,68. Timer1 mam skonfigurowany Config timer1 = Timer, Prescale = 1, Compare A = Toggle, Clear Timer = 1 Czy ten tyb CTC to nie właśnie to coś powyżej?? To wszystko jest ważne , a o generowaniu stabilnej częstotliwości za pomocą instrukcji "Wait" , zapomnij....
Witam. Mam pewien problem. Próbuję zrobić nadajnik kodu RC5 z użyciem mikrokontrolera AT Tiny26L SMD w Bascomie AVR 1.11.7.0. Niestety, polecenie RC5Send nie działa na tym układzie (Assignment Error Dim Rc5_address As Byte Dim Rc5_command As Byte 'Dim Key As Byte 'Dim Key_prev As Byte Dim Rc5_bit_nr As Byte Dim Toggle_bit As Boolean ' 36kHz carrier...
omnicronNs moglibyśmy pogadać przez 10 min na gg? wpisałem 244 ale program wciąż nie działa. ok teraz chyba zrozumiałem z tym odliczaniem, przynajmniej tak mi się wydaje, wpisałem do programu 6250 jednak program wciąż nie działa poprawnie, tzn dioda tylko się zaświeca niezależnie czy przytrzymam krótko czy długo a ponowne naciśniecie nie wygasza diody....
Programowanie to nie jest chybił trafił i zgadywanie. Co innego jeśli popełni się błąd nieświadomie. Metoda "a może zadziała" nie wydaje się być dobrą. Pomyśl co się dzieje jeśli na początku granica Compare ustawiona jest na 600. Teraz w pętli głównej która przez to że ma tam jakieś swoje opóźnienia, a timer swój preskaler zmieniasz granicę Compare....
kurcze mi nie wychodzi :| timer chodzi co 1s ale reszta do kitu Dodano po 25 program chodzi :) oczywiscie musisz go przerobic na wlasne potrzeby dodac tyle ile chcesz przekaznikow i zmienic czasy w programie bo tam jest 10s i 40s ten program jest przygotowany pod ATmega8 i kwarc 8MHz $regfile = "m8def.dat" $crystal = 8000000 Config Pind.0...
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...
$regfile = "m8def.dat" $crystal = 10000000 Config Pind.1 = Output Config Pind.2 = Input Config Timer1 = Timer , Prescale = 8 On Timer1 Proc Enable Interrupts Enable Timer1 Load Timer1 = 35 Set Portd.2 Do If Pind.2 = 0 Then ' Tu będą instrukcje. Loop End Proc: Load Timer0 = 35 Toggle Portd.1 Return Czy taki kod zadziała do sterowania TSOP1736...
Która z metod otrzymania F=15,625kHz jest lepsza: Tak naprawdę to żadna z powyższych. Jak już chcesz sprzętowo generować przebieg to wykorzystaj licznik w trybie CTC a nie PWM. Config Timer1 = Timer , Prescale = 1 | 8 | 64 | 256 | 1024 , Compare A = Toggle , Compare B No_Ouput = Disconnect , Clear Timer = 1 Oraz dobierz odpowiednią wartość w zmiennej...
Nawiązując do wcześniejszej wypowiedzi chce zbudować generator regulowany za pomocą 2 potencjometrów. Jednym chcę regulować czas trwania logicznej 1 a drugim potencjometrem czas trwania logicznego 0. Czasy obu sygnałów regulowane w przedziale 0,05ms - 5ms. [syntax=basic] $regfile = "m16def.dat" $crystal = 16000000 Config Lcdbus = 4 Config Lcd = 20 *...
Czytam i czytam o tym trybie ctc i wiem tylko tyle że trzeba wpisać do rejestru OCR1A wartość 100 i jeśli licznik doliczy do wartości w OCR1A to ma zrobić toggle czyli zmienić stan wyjścia OC1A na przeciwny. Problem w tym, że nie wiem jak to zapisać w Bascomie. Czy to ma być jakoś tak?? $regfile = "m8def.DAT" $crystal = 8000000 Config Lcdbus...
Podejrzewam że problem jest z odbiorem danych z pilota. BASCOM i GETRC5 nie za bardzo sobie z tym radzi. No i czy masz na pewno pilota RC5? Dodano po 1 Zobacz to: [syntax=basic4gl] $regfile "m8def.dat" 'konfiguracja mikroprocesora $crystal = 4000000 'konfiguracja kwarcu Config Portb = &B11111111 Portb = &B11111111 Config Portc = &B1111101...
Witam, Próbuję wygenerować za pomocą mikrokontrolera Atmega 8 dwa przebiegi prostokątne przesunięte w fazie o 90 stopni. Mam timer1 ustawiony w tryb CTC i wyjścia OC1A oraz OC1B ustawione w tryb toggle. Czy istnieją jakieś bity w rejestrach konfiguracyjnych timera1, które definiowałyby stany początkowe wyjść OC1A i OC1B? Chodzi właśnie o przesunięcie...
Dołączam cały plik. Proszę się nie sugerować programami up1, dn1, up2, dn2 oraz wyłączonym Timer1, nie mogłem znaleźć błędu i powyłączałem dodatkowe funkcje. Oczywiście wiem, że nie używa się Toggle w przypadku wyjść PWM, ale już nie chcę mieszać z przełączaniem kabli i trzymam się w miarę możliwości jednych ustawień. Oczywiście LCD też nie jest obsługiwane,...
Cześć Układ do którego jest napisany program ma za zadanie: 1. sterować prędkością obrotową silnika przy wykorzystaniu PWM i dwóch przycisków regulujących wypełnienie PWM. 2. zliczać impulsy z transoptora i docelowo wyświetlać wartości na LCD, ale narazie (w kodzie który podaje) miga diodą tyle razy ile bylo impulsów. Proszę o sprawdzenie poprawności...
Niestety schemat mi nie pomógł. Ależ pomógł, bo nie znalazłeś w nim żadnych zależności dot. kasowania timera przy jego wyłączaniu poprzez ustawienie preskalera zero. Jest to logiczne, ponieważ gdyby licznik timera był automatycznie kasowany, to zmniejszałoby jego możliwości, bo nie można byłoby go "puścić dalej" Schemat preskalera pokazuje natomiast,...
Byłby ktoś w stanie mi z tym pomóc? Miałoby to wyglądać tak: * sterowanie wentylatorami czasowo * sterowanie poprzez odczyt temeratury 2 osobne funkcje (działa albo jedno albo drugie). Do tego co mam dołożenie wł/wył czasowego (w zupełności wystarczy najprostsze z możliwych) OK, Popatrz na swój program; sterujesz ustawienia trzema przyciskami, z których...
Witam, zaprogramowałem sobie ATmegę8L takim oto kodem: $regfile = "m8def.dat" $crystal = 8000000 'Config Portd = &B00000100 'Portd = &B00110011 Config Portd = Output Config Portb = Output Config Portc = Output '--------------------Ustawienie LCD------------------ Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Pb.2 , Db5 = Pb.3 , Db6 = Pb.4...
Witam. Z pewnych przyczyn musiałem przejść z pisania oprogramowania w Bascom na C. I pojawił się problem. Mianowicie chodzi o konfigurację Timera1 tak aby był generatorem, którego częstotliwość zmienia się wpisem do rejestru pwm1a. Pwm1a = 312 Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1 On Compare1a Impuls Enable Interrupts...
Zrobiłem na trzy liczby ale niestety ta trzecia liczba mryga timer ustawiłem na prescale 1 ale to i tak za mało nie mam zielonego pojęcia jak to zrobić pomóżcie oto kod $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował 'definiujemy z jakim taktowaniem będzie pracował...
W bascomie nie mam aż tak wielkiej wprawy. Chce by działało tak: część Timer0_int: Counter0 = Counter0 + 6 Incr Licznik If Licznik = 50 Then '100ms Toggle Portb.1 Toggle Portb.2 disable timer0 Licznik = 0 End If Return odpowiada za opóźnienie czyli wartość 50 będzie się zmieniała od 1 do 1000 powiedzmy co da nam czas opóźnienia. Natomiast chce by...
wielkie dzięki spróbuje Dodano po 5 mój program program działa tak ze wykonuje zadanie i daje odpowiednią liczbę np.1 i powraca na początek później robi to samo i daje 2 i tak w kółko a multipleksowanie jest na timerze0 jeśli zmienna wyniesie =0 to wyświetlacz z jednostkami jeśli 1 to dziesiątki więc funkcja case chyba ty nie pasuje ale zrobiłem to...
] 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...
Witam serdecznie, mam pytanie odnośnie kwarcu, tworze coś na zasadzie stopera używam wewnętrznego kwarcu 8Mhz i Atmega8, niestety atmega coś spieszy o parę sekund na minutę, zauważyłem że wiele osób do tego typu projektów używa zewnętrznego kwarcu 32Mhz. Czy stosowanie zewnętrznego kwarcu w tego typu projektach jest konieczne? Czy da się w jakiś sposób...
Witam ! Chcę użyć wyjścia OC1A w ATmega32 w Bascom'ie. Wyjście to przyjmuje stan 0 lub 1 w zależności od ustawienia timera, nawet jeśli Compare1A jest nigdy nie osiągane przez Timer1. Do tego nie jestem w stanie zmienić stanu tej końcówki z programu. Dlaczego ? Jedynie jak ustawię Timer tak aby zmieniał stan OC1A - toggle - przy zrównaniu się z Compoare1A...
Pracuje nas sterowaniem małego serwomechanizmu: http://www.rctrax.pl/product/Serwo-HXT50... Programuje w Bascom AVR i do tego celu wykorzystuję jedynie Timer0. Nie mogę wykorzystać dodatkowego timera1 bo ten będzie służył do odliczania czasu. Instrukcji Serwos() także nie chce wykorzystywać...jakoś nie mam do niego zaufania...
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 =...
The Timer_isr function takes too much time. Much more than 12 cycles as you want to perform. Therefore, MCLK is much slower than the required 32 kHz. You should toggle PortB.5 (MCLK) hardwarly, not softwarly. Hapilly PortB.5 is OC1A output od Timer1. Or, you may try to run Atmega on highest frequency. For example 8MHz. Then Timer_isr maybe will be take...
Niestety u mnie te przerwania są "zawalone". Nie było to do tej pory problemem, bo użycie uarta nie było przewidywane do "poważnych celów". Niestety na razie nadal jest źle... Popatrzę, czy jest możliwe przesunięcie "prac" z timera1 - bo to on pewnie jest źródłem nieszczęścia, jako że jest wywoływany 1000 razy na sek. A jest mocno obciążony; Oto jego...
No wiec moj program teraz wyglada tak: '$regfile = "m32def.dat" '$crystal = 8000000 'przyśpieszyłem do 8MHz ;) Config Portb = &B11111111 Portb = &B11101111 Config Portd = &B1111100 Portd = &B1111111 Dim Temp1 As Byte , Temp2 As Byte , Ktory As Bit , Konwersja_trwa As Byte Dim Odczyt(2) As Integer , T As Integer , T1 As Integer Dim Odczyt_zapis...
OK to jeszcze dopytam tak, rozumiem że na początku przerwania zmieniam stan Edge_ na 0, liczy timer i config int0=rising ale co dalej załóżmy że nadejdzie zbocze narastające i co wtedy się dzieje? No tak, zabrakło jeszcze jednej linijki... sory... Powinno być: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End...
Witam! Pierwsze kroki z uC, czyli próba stworzenia zegara matki dla czasomierza podobnego do $regfile = "m8def.dat" $crystal = 2000000 Config Pind.0 = Output Config Pind.1 = Output Config Timer1 = Timer , Prescale = 64 Dim Licz_2s As Byte Dim Parz As Bit Enable Interrupts Enable Timer1 Load Timer1 , 62500 Licz_2s = 0 Parz = 0 Do Loop End Odmierz_1m:...
Ja nie widzę problemu. :D Timer1: CONFIG TIMER1 = COUNTER | TIMER | PWM , EDGE=RISING | FALLING , PRESCALE= 1|8|64|256|1024 , NOISE CANCEL=0 |1, CAPTURE EDGE = RISING | FALLING , CLEAR TIMER = 1|0, COMPARE A = CLEAR | SET | TOGGLE I DISCONNECT , COMPARE B = CLEAR | SET | TOGGLE I DISCONNECT , PWM = 8 | 9 10 , COMPARE A PWM = CLEAR UP| CLEAR DOWN | DISCONNECT...
Witam, Chcę zbudować bardzo prosty zegarek a tak właściwie stoper. Chciałbym żeby mylił się co najwyżej 1min/tydzień. Napisałem program z użyciem timera, ale zegarek po ośmiu godzinach spóźnia 20 sekund. Czy wewnętrzny oscylator działa stabilnie, to znaczy jeżeli ma częstotliwość odbiegającą od 4Mhz to taka będzie czy będzie się wahała i miała różne...
toggle switch bascom toggle toggle button
mozilla instalka astra belka zielony ekran zamiast filmu
pralka indesit cieknie pralka indesit cieknie
Wymiana panelu sterującego w piekarniku parowym Bosch Laptop włączony, diody świecą na niebiesko, ekran czarny