.Czy ktoś może wie w czym tkwi problem/spotkał się z taką sytuacją? A zmienna, której wartość kopiujesz do OCR3A/PWM3A nie jest przypadkiem zadeklarowana jako BYTE ? Jeżeli to nie to, to spróbuj zapisywać rejestry OCR3 osobno - OCR3AH, OCR3AL.
No przecież prosto. Konfigurujesz timer1 do pracy w normalnym ale nie robisz start timer. robisz przerwanie dzialajace na zbocze np. narastające-> Dalej : robisz zmienną flaga w przerwaniu robisz if flaga=1 then start timer1 flaga=0 else stop timer1 w rej od timera masz czas... kopiujesz gdzie Ci tam pasuje flaga=1 zerujesz licznik endif I tyle, oczywiście...
Przecież obsługa timera w AVR i '51 jest inna , zobacz jak wygląda konfiguracja dla obu wersji .
Witam. Brak konfiguracji szyny I2C kod: np: Config Sda = Portc.4 Config Scl = Portc.5
.... W pętli głównej sprawdzam na okrągło bit 0 rejestru 0 układu ( sprawdzam flagę alarmu timera). .... "Additionally, a timer alarm can be programmed by setting the timer alarm enable (bit6 of the alarm control register). When the value of the timer equals a pre-programmed value in the alarm timer register (location0F), the alarm flag is set ( bit1...
Timer 0 w atmedze8 nie ma pwm. Powinieneś użyć Timera 2, czyli rejestrów TCCR2 i OCR2.
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...
........, a podpowiedzcie mi jak mogę obsłuzyc Rc5,serwo i pwm? Pozdraiwam Dla obsługi RC5 i kontroli serva użyłeś w sumie 2-ch timerów... ATMega8 posiada wbudowane 3 timery , zastosuj więc ten trzeci do 'produkcji' PWM''. Jeżeli ten ostatni (dotychczas wolny) jest Timer1, to ma on dwa kanały dla PWM, na których możesz generowac praktycznie dwie różne...
Jak używasz jakiejś bardzo starej wersji spolszczonej to możliwe, ale Demo2075 już nawet to potrafi. Możesz użyć Twojej poprzedniej konfiguracji z Load Timer, ale dodaj ustawianie tej flagi 5ms w przerwaniu.
Czesc Tak naprawde to wystarczy, żebyś skonfigurował timer1 jako pwm: Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down W tym momencie masz 2 pwm sterujesz w ten sposób: pwm1a=wartość od 0 do 255 pwm1b=wartość od 0 do 255 Podpinasz np. leda do portu gdzie jest opisane OC1A i drugiego gdzie jest OC1B...
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...
Jest mozliwa taka konfiguracja "Config Rc5 = Pinb.2 , Timer = 2" P.S. przepraszam za moj "Polski jezyk" jestem Czechem :-)
Bascomowe komendy konfiguracyjne tylko z pozoru wyglądają na jakieś nieefektywne. Bascom taką konfigurację timera by zrobił dwoma wpisami do dwóch rejestrów i finał a nie rzeźbił tak jak pokazane wyżej czterema wpisami. Jak już ktoś chce ustawiać bity w rejestrach to mozna to zrobić za jednym zamachem poleceniem Bits() Jedynym pretekstem do grzebania...
Hmm, obalę Twoje mity dot. przerwań: 1.(częściowo), 2., 3. w tym przypadku PWM jest sprzętowy. Oznacza to nie mniej nie więcej niż to, że timer odpowiedzialny za generowanie PWM nie wygeneruje ŻADNEGO dodatkowego przerwania. 4. Dlatego stosuje się tryb phase correct pwm, ale zapewniam Cię, że w przypadku sterowania jasnością żarówki to w którym momencie...
Osobiście wykorzystał bym nóżkę np. INT0. Wtedy wszystko dzieje się w przerwaniu, po za tym w zmiennej Counter1 masz twój wynik. Coś skąpą masz tę konfigurację timera :P
Gate i Mode w konfiguracji timera nie występuje w bascomie na AVR. Prawdopodobnie może to być sposób wyzwalania/ zliczania timera (wewnętrzne lub zewnętrzne) plus jakieś inne tryby pracy.
Program jest bez sensu. Napisałeś to tak jak by rejestr Tccr1a był od kanału A, a Tccr1b od kanału B, a tak nie jest. Zarówno rejestry Tccr1a jak i Tccr1b sterują kanałem A, jak również obydwa rejestry sterują kanałem B. Po prostu jeden jest od czego innego a drugi od czego innego (Tccr1a od sposobu sterowania pinami i o trybu pracy Timera a Tccr1b...
Mógłbyś napisać całą konfiguracje tego timera będe wdzięczny.
Nie wiem czy przy ATtiny25 dobrym rozwiązaniem jest pisanie programu w Bascom w szczególności, że PWM jest tylko jedną z kilku czynności jakie ma wykonywać procesor (RC5). Należałoby się zastanowić czy nie lepszym rozwiązaniem byłoby zastosowanie C która daje lepsze możliwości Panowania nad uK. Na forum pojawiały się już posty na temat problemu uruchomienia...
"SZUKAJ" http://www.elektroda.pl/rtvforum/searcht...
$regfile "m8515.dat" $crystal = 8000000 Enable Timer1 Config Timer1 = Timer , Prescale = 256 On Timer1 Sekunda Timer1 = 34286 dim sek as byte do loop Sekunda: Timer1 = 34286 Incr Sek Return Powinna byc rowna sekunda (wyliczone przez kalkulator avr) Ps. Timer startuje w momencie jego konfiguracji wiec jesli nie chcesz go uzywac odrazu,...
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...
Z tego co porównuję z listingiem źródłowym z książki to masz kilka błędów: sprawdź: [syntax=basic4gl]Config Lcd = 16 * 2[/syntax] oraz umiejscowienie [syntax=basic4gl]Cls[/syntax] w pętli a u ciebie jest poza pętlą oraz wyrzuć konfigurację [syntax=basic4gl]Config Timer2 = Timer , Async = On , Prescale = 128[/syntax] sprawdź także ustawienia Fuse CKSEL3..0...
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...
ten timer włączyłeś? W bascomie uzyles pewnie config clock=soft Więc jesli z punktu widzenia konfiguracji timera i procesora jest wszystko ok, to przyczyna moze byc jedna: kwarc nie oscyluje. Spróbuj podotykać np. pęsetą (trzymając ją mocno w ręku) pinów kwarca. Jesli zaczną przeskakiwać sekundy to błąd jest w kwarcu == wymień kwarc. Ta sytuacja tez...
Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
tak, teraz te 2 przypisania odnoszą się do Timera 1 i wyprowadzeń oc1a i oc1b, więc poprawnie zakładając, że konfiguracja uwzględnia tryb 10-bit, czyli: Config Timer1 = Pwm , Pwm = 10, Compare A Pwm = Clear Up, Compare B Pwm = Clear Up, Prescale = 1
Masz ATmega8, czyli masz ADC i masz timer połączony z pinami I/O, czyli za pomocą timera możesz generować przebiegi na wyjściu. Rzecz wręcz banalna. Za pomocą ADC wykonujesz pomiar napięcia. przeliczasz go na okres, albo odrazu częstotliwość, nie wiem jak to w bascomie wyglada. W każdym razie częsottliwość ustala się przez zapisanie w odpowiednim rejestrze...
Z tym zawsze zdążysz. próbuję zrozumieć intencję użycia Timer4. Napisz może po co ci ten Timer i jaki tryb ma być działania? PWM? CTC? Timer? Jaką funkcję ma realizować?
Na 100% w Prescaler było to R na końcu? Bo w timerach jest Prescale, ale w ADC jest Prescaler ;) Bo skopiowałem dokładnie ten kod, który udostępniłeś, dodałem tylko i wyłącznie to r i normalnie się skompilował na bascom-avr 2.0.7.5
witam czy mógłby mi ktoś napisać krótki listing do atmega64 w bascomie do obsługi rtc mianowicie konfiguracje timera chce to zrobić w ten sposób żeby np. zmienna A typu bit zmieniała się z "1" na "0" i na odwrót co jedną sekunde pozdrawiam i z góry dziękuje Dodano po 1 i jeszcze jedno kwarc 32.768khz jest dołączony do końcówek TOSC1 i TOSC2
Ad1. Proponuje użyć funkcji locate y, x. Jeśli nie pomaga to za pomocą timera i przerwania wyczyść co jakiś czas lcd.
W konfiguracji Timera dodaj Mode=1. Teraz chyba pracuje jako 8 bitowy.
wyświetlanie cyfr na dowolnej liczbie wyświetlaczy podłączonych do procesora jest znacznie łatwiejsze niż obsługa LCD chyba, ze korzystasz z gotowych procedur. Teoretycznie jest tak jak piszesz ale... w Bascom... Obsługa LCD ogranicza sie do zadeklarowania pinów LCD procesora i podania komendy LCD "zmienna" a w przypadku wyświetlaczy LED dochodzi konfiguracja...
Config Timer1 = Counter , Edge = Rising ,Noise Cancel = 1, Prescale = 1 , Compare A = Disconnect,Compare B = Disconnect Nie działa Config Timer1 = Counter , Edge = Rising , Noise Cancel = 1 , Capture Edge = Rising , Compare A = Disconnect , Compare B = Disconnect , Clear Timer = 0 Działa THX
nie rozumiem. To jest w BASCOMie'51, osobiście sprawdzone i stosowane przeze mnie. Jeżeli nie masz takiej opcji, to ściągnij sobie najnowszą wersję BASCOMa, tam na 100% jest. Czy może chodzi ci o całą konfiguracje przerwania pod BASCOMem ?
Jeśli potrzebujesz sekundę to prócz kwarcu 16MHz podłącz kwarc zegarkowy 32768Hz i puść Timer2 asynchronicznie. Timer0 się zwolni. [syntax=basic4gl]Config Timer2 = Timer , Async = 1 , Prescale = 128[/syntax]
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]
Witam Mam atmege 128au -wersja 16Mhz (albo 20?) W bascomie można ustawić max 8MHz, podanie większej wartości nic nie zmienia - sprawdziłem oscyloskopem sygnał generowany przez przerwanie od timera. W jaki sposób ustawić 16 (20) MHz? Przeniosłem z Układy programowalne.
BlueDraco: gratuluję ci, że masz tak wspaniałych studentów. Albo wyrozumiałego Dziekana, który ci pozwoli oblać 90% roku :) Niemniej uwagi słuszne. taramis88: To wszystko co opisałeś robi się sprzętowo. Ponieważ impulsy dla serwa generuje timer, nie ma możliwości, żeby ci coś skakało. Do tego nie trzeba nawet kwarcu. Pozostałe elementy wygenerujesz...
Hej! Masz rację - ztym kontrolerem (lub Bascomem) jest coś nie tak, ponieważ próbowałem zrobić na nim prosty sterownik z użyciem IR "Get RC5", i niestety bascom wywala error, że niemożliwe w tym chipie najpewniej błąd Timera (nie pamiętam 0 czy 1). Tak zechyba nie robisz błędu, tylko w Bascomie w stosunku do tego procka jest coś spaprane.
Z listingu programu nie mozna doszukac sie jaka metode przyjmujesz w pomiarze RPM. Ja jakoś się doszukałem. A nie, sory. Nawet doszukiwać się nie musiałem. Liczy okres pomiędzy impulsami. Ale przerwanie to powinno wyglądać tak: Przerwanie: Zmienna = Timer1 Timer1 = 0 Wynik = 7500000 / Zmienna Return Preskaler Timera ustaw na 64. A: Capture Edge...
W bascomnie ciężko zrobić LED + Ds18b20 wszytko psuje Waitms 750. Zwiększ do 8 a jak możesz do 16MHz kwarc. A od kiedy to musimy czekać 750ms nie robiąc nic innego? Od czego mamy timery? Przepraszam najmocniej Kolegę, ale jeśli Kolega tego zrobić nie potrafi to: 1. Nie oznacza że się tego zrobić nie da - ja nie potrafię zbudować komputera klasy PC...
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ę...
(at)stozek - normalnie w Bascom nie jest potrzebna komenda Start Timer0 bo jest on uruchamiany od razu podczas konfiguracji. Używa się tej komendy tylko jeśli poprzednio zatrzymałeś Timer poprzez Stop Timer0. Rozumiem, że zatrzymujesz timer. Tak więc zatrzymywanie timera to zabranie mu źródła taktowania. Bascomowe komendy moża wiec rozumieć tak: Start...
"Timer" odnosi się do konfiguracji pracy licznika T/C, natomiast INT0 to przerwanie zewnetrzne ! Radzę poczytać HELP'a.
Nie znałem tych trybów czyli wpisuję wartość do porównania i jeśli jest zgodna następuje zmiana stanu Compare. Ale licznik będzie dalej liczył pozostałą wartość i tu będę miał znów przerwę. Czy w konfiguracji timera dopisujęs clear timer1 = 1 spowoduję, że po sukcesie porównania timer zostanie wyzerowany ?
Odkomentuj, czyli zdejmij ten pierwszy apostrof z tej linii : 'Set Tccr0b.0 (W IDE Bascom linia 57) To włącza taktowanie Timera0 z preskalerem 1 czyli z prędkością CPU. Bez tego Timer po prostu stoi w miejscu. Nie wiem tylko czy Timer pozwoli wyłaczyć te LED`y tym poleceniem po "Stop Timer0" bo to tylko zdejmuje taktowanie a konfiguracja do PWM raczej...
No dobrze zatem oto co udało mi się sklecić: Konfiguracja timera: [syntax=c] TCCR0B|=(1<<CS02); TIMSK|=(1<<TOIE0); sei(); [/syntax] Obsługa przerwania: [syntax=c] ISR(TIMER0_OVF_vect) { } [/syntax] I ponawiam prośbę. Czy ktoś mógłby napisać swoją konfigurację timera analogiczną do tego co zostaje zrobione w BASCOMIe. A może jest jakaś możliwość...
jak ustawisz na counter to liczy z wejscia p3.4. a teraz gate=internal/external to jest tylko ustawienie czy timer bedzie wlaczeny programowo czy sprzetowo. jak dasz external to timer liczy gdy na p3.2 jest stan 0
No nieeee, przecież moderoator zumek wywalił mój post do kosza po czym udziela identycznej rady. I żeby nie było kompilator w najnowszej wersji bez problemu przyjmuje fragmentaryczne konfiguracje. To moja porada ze skasowanego posta w tym temacie: [syntax=basic4gl]Config Timer1 = Timer , Compare A = Disconnect 'wyłączenie Config Timer1 = Timer , Compare...
No pewnie że jest w helpie- to jest ta podstawowa zasada getatkbd. Ale jak wejdziesz w przerwania gdzie dasz wait- a oczekiwanie na kod klawisza nie wyłącza przerwań- to będą błędy. Podobnie będzie gdy przerwanie od Timera będzie np. co 100us- a nie wiadomo co ile jest- co ile Autor daje.
A stan Timera0 się zmienia? Ja też mam problemy z tym. Ale pod pojęciem "tym" kryje się nie Timer, lecz BASCOM. W BASCOMie niektóre rzeczy nie działają z niektórymi procesorami (np. Timery w ATMEBA88 nie działają, w ATMEGA8 już tak. BASCOM ma źle przypisane adresy rejestrów IO).
Dzięki za pomoc. Zrobiłem jak radziłeś ale nadal nie działa mi jak należy. :( Dioda mruga co ok 3s co stanowczo jest za duzo. Może powinienem używać zewnętrznego kwarcu a nie jak dotychczas wewnetrznego oscylatora??? Nie mam pojęcia gdzie jest błąd w złej konfiguracji sprzetowej czy poprostu czas jest źle obliczony??? Pozdrawiam
W attiny2313 masz wyjścia b i d a ja potrzebuję generować to na port d bo akuratnie będzie mi łatwiej wszystko podpiąć. Na porcie D masz OC0B (pin PD5) więc konfiguruj odpowiednio Timer0 w CTC z wyjściem "Toggle OC0B" Patrz Datasheet str.79; Tab.40 Mode2 oraz str. 78; Tab 37 Na podstawie tych tabel i potrzeb wyedytuj dwa rejestry: TCCR0A oraz TCCR0B....
Przede wszystkim start timer powinno być po wszelkich konfiguracjach i deklaracjach, np.: config.... Load Timer1 , 50 On Timer1 Obsluga Enable Timer1 Enable Interrupts Start Timer1 Do . . Loop obsluga: . . Return
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz 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 Cls '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
Dzieki Atom1477 miałeś racje chodziło o fusebit divide clock by 8. Teraz waity odliczają sie poprawnie .program tez chodzi ok. tylko te przerwania które miały być co sekundę sa teraz wyzwalane według oscylatora wewnętrznego a chce zeby były jak w 8 z kwarcu 32768 czy Config Timer2 = Timer , Prescale = 256 , Async = On jest nieprawidłowa konfiguracją...
Zrób taką konfiguracje timer2: Config Timer2 = Timer , Async = Off , Prescale = 256 A na początku obsługi przerwanie tego timera: Start Timer2. Daj znać co z tego wyszło.
No więc jeśli stosujesz M8 to masz gotowe rozwiązanie powyżej. A... zapomniałem napisać, że potrzebny dzielnik napięcia. Może być przez 2 i jako napięcie odniesienia podać AVCC (o ile AVCC=5V). $crystal = 4000000 $regfile = "m8def.dat" Config Timer1 = Pwm , Pwm = 10 , Prescale = 8 , Compare A Pwm = Clear Down 'Konfiguracja Timera Config Portd...
...to banalnie proste :D zalaczasz timer gdy pojawi sie na pinie masa...czekasz na wystapienie jedynki...i patrzysz ile timer zdazyl zliczyc...:D lub... timer chodzi caly czas...gdy pojawi sie masa zapisujesz stan timera a gdy sie skonczy takze zapisujesz... odejmujesz to pierwsze i juz masz :D prawda ze bardzo proste ?? :D Nikt nie bedzie pisal kodu...
Jeżeli chodzi o notę atmega64 to wyraźnie jest napisane "6 PWM Channels with Programmable Resolution from 1 to 16 Bits" , chyba że ja tego nie rozumiem. No nie rozumiesz. Więc na zdrowy chłopski rozum to weź. Od 1 do 16 bitów ale dla timerów 16-bitowych natomiast od 1 do 8 bitów dla timerów 8-bitowych Więc teraz zajrzyj szczegółowo do noty i dla każdego...
Nie zadziała to w tak prostej formie w jakim masz kody. 1. W kodzie 1 musisz ustawić PWM z timera 1 na 10bitowy (masz 8bitowy w konfiguracji). 2. W kodzie 2, nie masz ustawionego PORTC na wejście dla przetwornika. 3. W kodzie 2, samo przypisanie W = Getadc(channel) (po skonfigurowaniu timer1 i zmianie rozdzielczości PWM na 10bit) będzie zmieniało prędkość...
"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...
Zajrzyj do helpa BASCOM - wszystko jest tam opisane - konfiguracja timerów i zadawanie wartości PWM.
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
Witam, niestety ale chyba coś jest nie tak? Na wstępie należałoby wyjaśnić że nie ma czegoś takiego jak "automatyczne przeładowanie timera" (reload/load timer1 powiedzmy). Termin ten jest związany z procedurą konfiguracji timerów występującą tylko w trybie "Normal", gdzie każdorazowo początkowa wartość timera musi być wpisana przez processor. Taka...
Myślałem o tym prawdę powiedziawszy ale ostatecznie zdecydowałem się na osobne kwarce. podobne rozwiązanie sprawdza się na zwykłych AVR - tam każdy uc generuje częstotliwości dla jednego kanału midi - 4 kanały bez polifonii. Teraz próbuję zrobić 4 kanały z 4 głosową może nawet 8 głosową polifonią - xmegowe timery się do tego dobrze nadają. Mam jednak...
Witam , czy można prosić o prostą składnie oraz konfiguracje pinu w baskomie do wybudzenia atxmega32a4u . Przygodę z xmegami dopiero zaczynam , na timerach pracowało ale chodzi o wybudzenie pinem z IDLE lub POWERSAVE , dziękuje za pomoc i pozdrawiam
Mam taki problem napisałem mały programik w bascomie i nie wiem dlaczego nie mogę użyć pwm1b oraz jak poprawnie w bascomie skonfigurować ten 3-ci pwm z timera 0 oto mój programik http://obrazki.elektroda.pl/4067233800_1... http://obrazki.elektroda.pl/4067233800_1...
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...
A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. Może tak po kolei jak twój program widnieje: 1. Jeżeli PORTB jest przeznaczony do obsługi LCD to nie konfiguruj go w ogóle w stylu jaki podałeś w pierwszym poście. Config Portb = &B11111111 : Portb = &B11111111 ===> źle!!! Może to powodowac zakłócenia...
Cześć! Zacząłem niedawno eksperymenty z Bascomem Powinieneś zamieścić ten wątek w dziale początkujący. Ten zegarek nie może poprawnie działać z powodu braku wyboru\konfiguracji\uruchomienia zarówno timera, jak i przerwania z nim związanego. Zgadzam się z przedmówca we wszystkich punktach. Poza tym w pętli Do ,,Loop zbędne jest For .. Next, można to...
Oto program który napisałem $regfile = "attiny2313.dat" 'rodzaj mikrokontrolera $crystal = 8000000 '8MHz Dim Pozycja1 As Integer 'zmienna określająca położenie serwa1 Dim Pozycja2 As Integer 'zxmienna określająca położenie serwa2 Dim Czas1 As Integer 'zmienna pomocnicza do odmierzania czasu Dim Czas2 As Integer 'zmienna pomocnicza do odmierzania...
Znalazlem jakis stary programik.... odczyt 2 kanalów ADC z częstościa 100 razy na sekunde... Analize pozostawiam Tobie...(podpowiem że Help wszystko wyjaśni) Pozdrawiam $regfile = "m8def.dat" $crystal = 11059200 $baud = 19200 Config Adc = Single , Prescaler = Auto , Reference = Off Config Timer1 = Timer , Prescale = 256 On Timer1 Pomiar Enable...
ok ja podpowiem co to jest :D COnfig timer0 = timer 'ustaw timer jako licznik impulsów wewn. zegara procesora Mode=1 ' tryb pracy czujnika, to jest ladnie opisane w datasheet do procesora, 1 w tym przypadku oznacza normalna prace timera czyli zlicza impulsy gate = internal ' najprawdopodobniej chodzi tu o taktowanie licznika ale nie pamietam dokladnie...
(...) żdy zasilany z osobnego źródła i odseparowany transoptorami PC817. Ze względu na ich szybkość oraz niską wartość prądów je sterujących 1mA zegar musi być obniżony do 10KHz ma. Chcę zrezygnować z polecenia: waitus 100 w zamian zrealizować to w obsłudze timer0 a w główną pętle przeznaczyć na inne cele. Rozumiem, że chcesz optymalizować swoje oprogramowanie...
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...
Co do dsów tak bym zrobił - przechowywał ich id w eeprom i ładował do ramu przed odczytem. A C polecam - tam nie ma problemów typu karta sd musi korzystać z timera2 - wszystko (nawet biblioteki) możesz sam dostosować do potrzeb. Swoją drogą zaktualizuj BASCOM'a - bo nowa wersja umożliwia korzystanie też z timera1 (w trochę innej konfiguracji sprzętowej)...
Następnym razem napisz jaki mikrokontroler i z jaka prędkością jest taktowany. Problemem może być to że chcesz coś wyświetlać w procedurze obsługi przerwania. Lepiej unikać takich sytuacji. Pewniejszym rozwiązaniem będzie ustawienie tylko flagi w przerwaniu i szybki powrót z niego. Potem w programie zająć się wyświetlaniem kiedy napotkamy flagę. Druga...
Przy kwarcu 12MHz dźwiek minutnika z buzera jest bardzo niskotonowy, parametry polecenia sound też nie regulują częstotliwości, przy 11,59200MHz jest oki. Dodano po 1 Proszę o sugestie/pomoc... Dodano po 4 Konfiguracja timer0: Config Timer0 = Timer , Gate = Internal , Mode = 2 Load Timer0 , 39150 Enable Timer0 Enable Interrupts Reset Odliczanie On Timer0...
No to jest to czego szukałem. Tylko teraz pytanie: Dlaczego zawartość rejestru R0 to zawiera,a nie można odczytać z MCUCSR jak jest opisane w DSie?? edit Aaa już wiem gdzie robiłem błąd. Można odczytać WDRF moim sposobem tylko przed Config Watchdog, bo ta instrukcja czyści rejestr MCU(C)SR. Wszystko pięknie jest wyjaśnione w Helpie od wersji 2.0.1.0...
robisz tak $regfile = "m8def.dat" $crystal = 8000000 Config Timer2 = Timer , Prescale = 256 , Async = On On Timer2 Odmierz_1s Enable Interrupts Enable Timer2 Counter1 = 128 Do Loop End Sub Wysw End Sub Wart_bcd = Makebcd(godziny) Wartosc = Bcd(wart_bcd) Wart_bcd = Makebcd(minuty) Wartosc = Bcd(wart_bcd) Wart_bcd...
Witam zastosowanie timera w konfiguracji licznika w takim wypadku się nie sprawdzi. Naciśnięcie i puszczenie niesie za sobą efekt uboczny czyli drgania styków. Przez to twój licznik przy jednym naciśnięciu przycisku zalicza kilka impulsów. Taka konfiguracja timera jest przystosowana do stabilnych (czyt. nie drgających sygnałów) . Zamiast zaprzęgać do...
Przerwania w tym wydaniu sa tak proste że nie moga nie działać. Sprawdź sobie na spokojnie każdą rzecz po kolei, czyli osobno bramkowanie timera i osobno przerwania od INT0. Bascom jest mi obcy ale wydaję mi się że jest dobrze napisane. Sprawdź wymuszenie przerwania programowo czyli podstaw /INT0 (P3.2) =1 i potem 0. To na pewno jest wina muzyka a nie...
U mnie wywalał kiedyś ten sam błąd, a niby wszystko się zgadzało... Trzeba metodą prób i będów. Proponuje konfigurację timera zrobić tak: Config Timer0 = Timer , Prescale = 1 a resztę pozostawić bez zmian o ile się nie mylę. W bascomie nic dawno nie pisałem, teraz bawię się w C.
Zgoda z atom1477, chociaż wolę przypisywać bezpośrednio rejestrowi. Niestety podstawiając w miejsce pojawiającego się błędu TNCT2 zamiast TIMER2 - też traktuje to jako zmienną = bzdury. Faktycznie chyba ruszę C. Witam. Panowie, każdy Timer jest blokiem funkcjonalnym w mikrokontrolerze i nie można go dodawać do zmiennej. Atom napisał, iż nikt nie dodaje...
Ten mikrokontroler nie jest z rodziny AVR. Musisz mieć Bascom - 8051 pobrać ze strony: www.mcselec.com/
Witam! Udało mi się napisać obsługę pilotów NEC w Bascomie i postanowiłem się tym podzielić. Byłbym również bardzo wdzięczny za wszelkie uwagi, co do implementacji. Poniżej zamieszczam kod, jeśli ktoś ma jakies pytania - śmiało pisać. [syntax=basic4gl] $regfile = "m644pdef.dat" $crystal = 16000000 'KONFIGURACJA LCD Config Lcd = 16 * 2 Config Lcdpin...
Ma to tak działać że zaraz po włączeniu ma się rozjaśniać jedna dioda i taka jest konfiguracja pinów. Kierunek wzrostu jasności ze wzrostem zmiennej X (pwm1a) nie zależy od konfiguracji pinów. Kontroluje to konfiguracja timera. Zmień odpowiednie wpisy dla timera (tak jak doradziłem w poprzednim) : Config Timer1 = Pwm , Prescale = 256 , Pwm = 8 , Compare...
(at)excray On timer1 impulsuj znaczy: wywołaj przerwanie przy przepełnieniu Wpisując do rejestru timera określone wartości SKUTECZNIE steruję przebiegiem wyjściowym. Więc wybór rodzaju przerwania jest OK. Recz w tym że OPRÓCZ oczekiwanych przerwań wskakują mi jakieś obce (at)nowyARM Czytałem, a po Twojej wskazówce przeczytałem jeszcze raz. Pomijając...
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...
Ten timer 0 jest raczej nie potrzebny. Za bardzo komplikujesz sprawę. Zrób tak: $crystal = 12000000 Config Timer1 = Timer Gate = Internal Mode = 2 Config Timer0 = Tiemr Gate = Internal Mode = 2 Enable Timer1 Enable Timer0 Enable Interrupts Dim P1 As Byte Dim P2 As Byte pwm: // to sie robi jak przerwanie z timera przychodzi inc P1 // inkrementacja...
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
Przedstawiam sposób odbierania znaków z nadajnika (bez zastosowania przerwań). Co prawda używam AVR studio z GCC, lecz nie powinno być problemu z zaadaptowaniem poniższego algorytmu do każdego języka. Wykorzystuję hardware'owy moduł szeregowy SPI do komunikacji, ale to w tym przypadku nie ma znaczenia. Nie wklejam bezpośrednio kodu bo całość będzie...
Co do kwarcu to definiujemy go zawsze, niezależnie od tego czy proc pracuje na zewnętrznym, czy na wewnętrznym, bo to jest informacja dla kompilatora, wg jakiej wartości ma wyliczyć czasy dla różnych instrukcji. Jeżeli to jest "nówka sztuka" to pracuje na wewn. 1MHz. Jak sam zauważyłeś, instrukcja "Loop" powinna znajdować się po ostatnim "Endsub", ale...
Jako młody wiedzą i stary wiekiem chciałem potwierdzić formę zapisu konfiguracji portów PWM w Bascomie .W wersji 1.11.7.4 " config timer ...prescale =1" musi być wpisane w jednej linijce inaczej się nie da. ATmega8 bardzo dobrze sobie poradził z tym przebiegiem. Korzystając z okazji znawców tematu zadam pytanie nad którym spędziłem trochę czasu: wjaki...
konfiguracja TIMERA: [syntax=basic4gl]Config Timer0 = Timer , Prescale = 256 'konfiguracja Timer0 jako timer On Timer0 Przerwanie 'wywołanie procedury liczącej przy przerwaniu Enable Timer0 'włączamy Timer0 Enable Interrupts 'włączamy przerwania[/syntax] [syntax=basic4gl] Loop Prztimer: Incr Licznik If Licznik = 100 Then Licznik = 0 If Licznik = X Then...
Witam, Z racji ograniczonej ilości portów, zostałem zmuszony do multipleksowania dwóch wyświetlaczy LED 7 segmentowych poprzez rejestr 74HC595. Na początku dla testów napisałem krótki programik. Program działa, lecz ......... Myślę sobie: poczekam parę milisekund po każdej cyfrze. Wstawiłem w pętli głównej waitms 1 i jakie jest moje zdziwienie że po...
Dzięki za odpowiedź. Miała być Atmega 8 z wewnętrznym RC na 1 MHz, czyli $crystal = 1000000 . Może być inaczej, np tak jak piszesz 4 albo 8 MHz. Co masz na mysli "CTC ustaw 76000"? Poczytałem o Clear Timer on Compare ale nie mam doświaczenia. Czy możesz podać fragment kodu z przykładową konfiguracją? I jak tym kluczować za pomocą Toggle o którym piszesz?
konfiguracja timera obsługa timera bascom bascom konfiguracja
instrukcje kalkulatora sigma instrukcja comport komponent
Naprawa mechanizmu wysuwania tacki Fonica CDF-103R Jak sprawdzić historię połączeń Bluetooth na Androidzie?