Uruchom przerwanie od Countera (najlepiej od porównania wartości zliczonej z ustawioną) i zmień stan portu w podprogramie obsługi przerwania lub prościej, ale mało elegancko zmień [syntax=basic4gl]If Counter1 = 100 Then ...[/syntax] na [syntax=basic4gl]If Counter1 >= 100 Then ...[/syntax] Nie tak jest to, że w chwili zliczenia setki nasz if może się...
A kolega rozumie różnice pomiędzy pracą w trybie timer i counter ??? ;)
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...
........ 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...
Drogi kolego jest coś takiego jak "Help" w bascom i jest on bardzo przejrzysty. Tak na logikę. Deklarujesz Timer1 jako timer a wpisujesz wartość do countera? Nie dziw się że wywala błąd. Spróbuj "Timer1 = 120".
Timer skonfigurowany jako Counter liczy impulsy z zewnątrz, a nie mierzy czasu.
Udało mi się odpalić program z książki Pana Wiązani, ale tam timet odmierza 1s Jak to przeliczyć? Jest jakiś na to wzór? Rzeczywiście musiało się 'udac odpalić' bo ten program nie jest pozbawiony błędów (!) \ A jak zrobić żeby odmierzał np 10 sekund? Zmiana preskalera wydłużyła max do 2sekund czas. Aby timer1 odmierzył inne/dowolne interwały czasu,...
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...
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 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...
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...
nie no to jasne ... jak coś komuś nie wychodzi to na bank wina Bascoma ... tylko ze jak ma liczyć impulsy to ma być skonfigurowany jako licznik COUNTER a nie jako czasomierz TIMER czyli nie CONFIG TIMER0 = TIMER , PRESCALE= 1 | 8 | 64 | 256 | 1024 tylko CONFIG TIMER0 = COUNTER , EDGE= RISING | FALLING
Nie,ma liczyć litry tak jak dystrybutor . Dodano po 2 Nie wiem w jaki sposób dodawac litry do zmiennej po przekroczeniu okreslonej liczby impulsów z przepływomierza to co znalazłem to liczone wszystkie w czasie a tu chyba chodzi o przepełnienie licznika Czas tu nie ma znaczenia! Użyj dowolny timer w charakterze licznika (Counter), i tak jak sugerowano...
Jeżeli sprawdzasz przycisk podłączony do masy, to czemu przerwanie Timer ma być wyzwalane zboczem rosnącym ? Config Timer0 = Counter , Edge = Rising
A wie Kolega co to jest drganie styków, i jak będzie to wpływało na timer (tam przecież występuje kilkanaście zboczy podczas jednego zwarcia...) i jakie są metody ich eliminacji sprzetowej?
] 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, 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...
W rozdziale 13 pisze: 13. 8-bit Timer/Counter 0 with PWM Wyżej Ci wstawiłem kod do przetestowania.
Użyj do tego celu Timera, przykładowo żeby co 0,5s generował przerwanie w którym będzie sprawdzał czy w tym czasie były jakieś impulsy. Do wykrywania impulsów możesz użyć drugiego timera skonfigurowanego jako counter, chyba to jest najprostsze rozwiązanie w tym przypadku.
to ustawienia timerów: TCCR0B – Timer/Counter Control Register B TCCR0A – Timer/Counter Control Register A poszperaj w dokumentacji tiny 13 i mega 8 za co są odpowiedzialne poszczególne bity, lub konfiguruj timery w bascomie za pomocom Config Timerx
Witam Mój problem to brak kompilacji przy konfiguracji Timer2 w tryb Counter Unknown CONFIG parameter Porblem polega na tym że w helpie BASCOM-AVR można konfigurować Timer 2 w tryb Counter. Wrzucam cały kod :[syntax=basic4gl] $regfile = "m16def.dat" $crystal = 16000000 Dim Freq As Long Const Licznik = 2789 Config Timer1 = Timer , Prescale = 256 Config...
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...
Odkopię temat bo mam problem też z Attiny13. Problem jest następujący: po skonfigurowaniu timera0 jaki licznik zaczyna on zliczać kolejne takty procesora z określonym preskalerem. Jeżeli skonfigurujesz którykolwiek Timer (w dowolnym AVR) jako licznik (COUNTER) to przestaje on zliczać takty processora, a oczekuje na taktowanie zewnętrzne na odpowiedni...
Mam prośbę, jeżeli możesz to sprawdź w swoim BascomAVR czy występuje problem z konfiguracją liczników T0,T1 dla tego procesora. Z tego co wyczytałem z noty katalogowej Atmela i helpów do Bascom'a wszystko powinno działać, tymczasem podczas sprawdzania syntax check wywala mi błąd. Jedyne co kompilator przyjmuje to: Timer1 = Timer, Prescale (1,8,64,256,1024)...
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
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.
(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...
Const odlicz=65436 rem dla zegara 12MHz odliczy tylko 100 impulsow (100us) dim licznik as word dim koniec as bit Config Timer1 = Timer , Mode = 1 , Gate = Internal On Timer1 etykieta Counter1 = odlicz do start timer1 bitwait koniec,set reset koniec rem petla powtarza sie co 100 us loop etykieta: licznik = counter1 rem To ma eliminowac czas od momentu...
Napisałem to w asmie od początku i skompilowałem innym kompilatorem (nie Bascomem) tylko poprostu asemblerem i zadziałało. Mój wniosek jest taki że bascom coś kopie z timerami i tyle. Nie wiem a może ktoś odpali ten kod bascomowy i powie czy u niego chodzi dobrze? Sam ciekaw jestem.
Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 W 8051 nie ma prescale, a przynajmniej kompilator zgłasza w tym miejscu błąd... i zapomniał kolega dodać Start Timer1 po enable... :) Dalej sobie poradzę ... Dzięki!
Na pojedynczym uC robil bym tak: przez sekunde liczyl impulsy - bez przerwan, na wejsciu timer/countera. Po sekundzie prepisywal wynik do zmiennej, wylaczal licznik i wyswietlal zmienna na LCD. Potem wlaczal i resetowal counter i znow mierzyl przez sekunde i tak w kolko...
Witam mam prosty program. Timer zlicza naciśnięcia przycisku. Problem polega na tym że po jednokrotnym naciśnięciu wartość zwiększa się o jakąś ilość (nie zawsze o 1). Jak temu zaradzić? np. żeby zmiana stanu licznika była możliwa tylko co określony odcinek czasu. [syntax=basic4gl]Config Pinb.0 = Input Set Portb.0 Config Timer0 = Counter , Edge = Falling...
Należy: - zadeklarować zmienną globalną np. LICZNIK i nadać jej wartość zera, - włączyć przerwania od przepełnienia Timer0, - w funkcji przerwania należy zwiększać wartość zmiennej LICZNIK o jeden Aby poznać liczbę impulsów wystarczy pomnożyć LICZNIK*256 i dodać do niego aktualną wartość rejestru licznika timera, czyli jak sądzę counter0 (nie znam BASCOM).
Naucz się przerwań. Wykorzystaj Timer0 do generowania przerwania co np. 1s- jeśli ten czas Ci wystarczy. Czyli ustaw Timer0 jako timer. Ustaw Timer1 jako counter i zliczaj impulsy co 1s. W przerwaniu co 1s od Timer0 niech Timer1 zaczyna zliczać impulsy. I co 1s wyświetl liczbę impulsów i wyzeruj Timer1. I od początku. Całą koncepcję powinieneś zmienić.
Jako że jestem wrogiem Bascom'a - daję algorytm w "C". [syntax=c]int counter=0; int state=1 //domyslnie startujemy stan 1 int opoznienie=500; while(1) { if state=1 { //wyswietl dane 1 } else { //wyswietl dane 2 counter++; if (counter > opoznienie) { state=1; counter=0; } } if (wcisniety_przycisk_B) { state=2 counter=0; } }[/syntax] Oczywiście to nie...
na bascomie sie za dobrze nie znam, timery mam juz wykorzystane w programie tak: Config Timer0 = Counter , Edge = Rising Config Timer1 = Timer , Prescale = 64 Config Timer2 = Timer , Prescale = 1 napisales by ustawic timer tak by odliczal sekunde ale nie wiem jak to zrobic(?) i dlatego nadal szukalem prostszego rozwiazania... moze da sie cos wykompinowac...
Nic nie stoi na przeszkodzie. Timer jest skonfigurowany jako Timer a nie Counter czy PWM i w dodatku bez użycia przerwania. Timer daje tylko znać że minęło 10ms ustawiając flagę OC2A w rejestrze TIFR (flagi kasuje się wpisujac do nich 1 a nie 0). Wystarczy dodać jeden Bajt np. Timeout2 i gotowe. Te piny po prostu wykorzystuję najczęściej (2 i 3 pomiędzy...
witam ze specyfikacji wyczytalem ze ten procesor ma dwa wyjscia pwm, jedno pod wyjsciami pd4 (oc1b) i pd5 (oc1a) (timer1), a drugie pod wyjsciem pd7 (oc2) (timer2) .... pierwsze wyjscie dziala bez problemu natomiat drugiego nie moge skonfigurowac (pod bascom-em), wyskakuje mi error86 przy lini w ktorej konfiguruje timer2 ... nawet kiedy wpisuje: config...
bezpośrednio z bascoma się nieda. trzeba by wpisać odpowiednią wartość do rejestru sterującego timerem ale niepamiętam dokładnie jak to sięrobi, trzeba by zajżec do noty katalogowej tam wszystko dokładnie opisane. ale mozna zrobić inna sztuczkę $regfile = "m8def.dat" Config Pinb.1 = Output $crystal = 1000000 Config Timer1 = Timer , Prescale...
jest to dieselek więc zakłócenia raczej mniejsze.. jak to zrobić? jakiś ogólny szkic programu w bascomie? bo licznik chciałem zrobić na timerze jako counter z pomiarem co sekundę, ale skoro nie zrobiłem jeszcze nic poza programem to koncepcję mogę zmienić. pfff. to jak mam to podłączyć w końcu?
Hej Czas powinien byc liczony timerami po to one sa. EDIT Oki czyli widzę to tak: Timer 1 mode=1 'liczy swoje Timer0 mode=3 'dwa liczniki 8-bitowe TL0-impulsy,TH0-zegar No dobra i co teraz? Przejrzałem helpa i forum i o mode=3 zbyt wiele nie znalazłem ;) Na mode=1 nie ma problemów. Jak startuje counter, a jak timer pod T0? Jak odczytuje ich wartości?...
Czemu korzystasz z timer2 jako counter ? Zrób to na CTC na timer 2 a kwarc podłączyć jako zwykły. W takim układzie Wszystko działa na wewnętrznym oscylatorze a do zegara dochodza impulsy z kwarcu zegarkowego. Pozbadz się instrukcji Config timer2 = counter a kwarc podłącz pod xtal Pozdrawiam
Witam! Jeżeli programujesz w 8051 to jest to proste. Konfigurujesz Timer0 w następujący sposób: Config Timer0 = Timer , Gate = Internal , Mode = 1 Jeżeli taktujesz procesor kwarcem 11.059Mhz ładujesz do licznika wartość 4150: Counter0 = 4150 I ustawiasz przerwanie dla Timera Ważne jest aby w przerwaniu za każdym razem ładować licznik tą wartością!!!...
Witam wszystkch. Mam wątpliwości co do odmierzania czasu w Bascom za pomocą Timerów. Sprawa dotyczy procków 51. Proszę o poprawienie mnie jeśli się myle. 1. Timer zlicza w górę od wpisanej wartości do 65535(16bit), Tryb 1. Zadaną wartość ładujemy komendą load timerx, yyyyy 2. Tak więc aby odliczyć 1 sekundę należy np.: 20 razy odliczyć po 50ms więc...
W pseudokodzie: 1. Ustaw timer na częstotliwość powiedzmy ok. 100 kHz, przypisz do niego przerwanie i aktywuj przerwania 2. Stwórz dla każdego kanału zmienną typu PWM_CHn W przerwaniu od timera 1. Zmienna COUNTER = COUNTER + 1 2. dla każdego kanału 0...n: Jeśli COUNTER < PWM_CHn to zapal diodę, w przeciwnym razie zgaś 3. Ewentualnie jeśli chcesz...
Tak nie może być. Timer może pracowac jako timer lub jako counter. Nigdy razem. Skonfigurowałes timer jako timer, a chcesz czytać dane z counter/capture. To ci nigdy nie zadziała. Wpisz konfig countera który ci przesłałem i na tym kombinuj. Ostatecznie uzywaj sobie INT skoro ci działało i masz ta nóżkę jako wolną.
Z przerwaniami nie jest tak trudno. Enable Interrupts Config Timer1 = Timer , Prescale = costam Timer1=costam2 Enable Timer1 On Timer2 etykieta Config Timer2 = counter , edge=falling Enable Timer2 On Timer2 etykieta2 coś takiego na przykład dobry zwyczaj to czas realizacji procedury pod daną etykietą był w granicach 10us, a wszystko pakuj do pętli głównej...
A gdzie instrukcja CONFIG TIMER1 = COUNTER?
Niby niepotrzebny mozesz testować porty ale jesli i mpulsy przychodza czesto to mozesz niektore zgubic jesli przyjdzie w czasie wyswietlania, pozatym musisz wyswietlac to non stop, do tego tez moglbys w przyszlosci wykorzystac timer, ale to w przyslosci. Timer nie zgubi ci zadnego impulsu dlatego licz timerem a wyswietlaj w petli. Dlaczego *256 no bo...
A ja zrobiłem obrotomierz w Bascomie na ATtiny 2313, procesor ten ma wbudowany 8 i 16 - bitowy Timer/counter. Konfigurujemy ten układ peryferyjny jako counter, procedurę zliczania w określonej jednostce czasu umieszczamy w podprogramie wyzwalanym przerwaniem zewnętrznym - czyli impulsem z czujnika halla. w innym podprogramie umieszczamy obsługę wyświetlacza...
Witam. W pewnie działającym u kolegi kodzie, podczas kompilacji wyrzucane są błędy. Oto fragment kodu i błędów:[syntax=vbnet]$regfile = 89c4051.dat $large $crystal = 11059200 'Konfigurujemy Timery: Timer0 jako liczący impulsy WEG a Timer1 jako odmierzający czas 1s Config Timer0 = Counter , Gate = Internal , Mode = 1 Config Timer1 = Timer , Gate = Internal...
Witam Czy da się w 89C2051 uzyskać coś takiego: potrzebuję zliczać impulsy z dwóch wejść i do tego zliczać czas trwania impulsu z trzeciego wejścia, a poza tym wszystko wyświetlać co jakiś czas (powiedzmy co 0,5s) Można jeden timer użyć jako timer wewnętrzny (wyświetlanie co jakiś czas), a drugi jako timer bramkowany zewnętrznie (do liczenia czasu trwania...
łatwiej się już chyba nie da. Sorki, ale ja bym raczej powiedział, że: "JUŻ GORZEJ SIĘ NIE DA :(" Co to za rozwiązanie gdzie w środku siedzi jeszcze obrzydliwy Wait !!! brrr ale żeby nie być gołosłownym, który tylko krytykuje.... Ok, panowie - widzę, że wasze zmagania spełzają na niczym, pokażę wam więc jak się powinno podchodzić do programowania....
Witam Problem następujący... Program ma liczyć imulsy, a dokładnie mierzy częstotliwość. Wszystko chodzi jeśli wybiorę zamiast TIMERA2 - TIMER1, ale ja musze to zrobić na TIMER2. Pozniżej kod: [syntax=basic4gl] $regfile = "m328pdef.dat" $crystal = 11059200 $hwstack = 256 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu $framesize = 128 Dim...
Do Pawelj Nie będę wnikał co jest lepsze pomiar prądu czy też inne rozwiązania ale odpowiem Ci wprost na twoje pytanie dotyczące zliczania impulsów. Sygnały z impulsatorów podłącz pod 1 i 2 nogę Atmegi16 są to wejścia zliczające liczników Timer0 i Timer1 Skonfiguruj timery Config TimerX = Counter , Edge = Rising lub Config TimerX = Counter , Edge =...
O czy mmyslisz piszac sprzetowo? te 15 us jest stosowane w produkowanych przekaznikach czasowych w ktorych sa stosowane uP. probowalem roznych koncepcji. timer1 zglasza przerwanie co 100ms a timer0 co 15us w timerze0 kontroluje countert1 i jesli zbliza sie do przerwania to blokuje timer0 tuz przed przerwaniem t1. dochodzi do przerwania od timera1 i...
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....
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....
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ę...
AVR studio (asembler) to nie Bascom... tu nie ma czegoś takiego jak komendy do obsługi sprzętowych liczników, musisz używać rozkazów uP i konfigurować odpowiednie rejestry i przede wszystkim odpowiednio używać przerwań, bo one są chyba najważniejszym elementem, którego używa się przy pracy z licznikami. Musisz wziąć notkę katalogową tego atmelka i przejrzeć,...
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...
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
Może wkleję cały kod : $regfile "m32def.dat" $crystal = 8000000 Dim Zmianna As Byte Dim Porownanie As Byte Config Portc.1 = Output Config Timer0 = Timer , Prescale = 1 Config Int0 = Rising On Int0 Zero Porownanie = 255 Enable Interrupts Enable Timer0 Counter0 = 255 Glowny: Set Portd.2 Start Timer0 Do Loop End Zero: Stop Timer0 Reset...
Witam, Zacząłem zabawę z AVR-em. Oczywiście trzeba uruchomić pomysł w miarę szybko więc BASCOM. Programy "kroczki" testuję na konfiguracji na wyrost, czyli Atmega16 z taktem 16MHz. Popełniłem program testowy który w założeniu miał zliczać impulsy poprzez timer. Źródłem impulsów jest PCF8593, procek obsługuje to przez PortB.0 (Wejście dla timerka). Konfiguracja...
Config Timer0 = Timer , Gate = Internal , Mod = 2 GATE ??? Syntax CONFIG TIMER0 = COUNTER , PRESCALE= 1|8|64|256|1024 , EDGE=RISING/FALLING , CLEAR TIMER = 1|0 CONFIG TIMER0 = TIMER , PRESCALE= 1|8|64|256|1024 Jednosci = Licznik Mod 10 Jednosci - byte Licznik - word ........ = nie da rady
Hmm... A co ma cena procesora do ceny In-circut debuger-a ? Procesory kupuje się wielokrotnie, a debuger raz, po za tym dla AVR istnieją tańsze, nieoryginalne wersje - sam JTAG, bez obsługi DebugWire, już za trochę więcej niż 100PLN (np. na www.propox.com ) - również na USB. ATmega8 - 7-9PLN, możliwości : • Advanced RISC Architecture – 130...
Ja wolę przerwania: Dim Sekunda as byte Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_1s Enable Interrupts Enable Timer1 do loop end Odmierz_1s: Counter1 = Counter1 + 34286 Incr Sekunda Return Podałem ci "szkielet" programu do odmierzania 1 sekundy za pomocą timera1. Pamiętaj że procek musi go posiadać i musi być taktowany przez oscylator...
Ja uczyłem się na poniższym kodzie: [syntax=basic4gl]'1 second code $regfile = "m8def.dat" ' or "m88def.dat" or "m168def.dat" $crystal = 4000000 $baud = 9600 $hwstack = 32 $swstack = 16 $framesize = 40 Dim Seconds_count As Long ' ========================================... ' Timer1 initialization ' ' Mode: Clear Timer1 on Compare Match (CTC...
Ty to jesteś krejzolka Aldoro wiesz hahahahaha Podłączył byś wyjście transoptora do wejścia INTx albo ustawił Timer jako Counter a wyzwalanie jako, na przykład Falling, Co sekundę sprawdzał byś ile impulsów nabiło przez sekundę. I to wszystko. Bez obsługi przepelnienia Timera osmiobitowego zmieścił byś 255 impulsów na sekunde. Miłego dnia. Mogłeś wcześniej...
KaJakKrzysztof: W katalogu Bascoma w program files masz katalog Samples. Jest tam o ile się nie mylę zegarek, jakiś bardziej skomplikowany zegarek i mnóstwo innych przykładów zastosowań timerów, przerwań itd. Na pytanie - czy coś takiego będzie działać odpowiedz sobie sam, załaduj program do AVR-ka. Timer od countera różni się tym, że służy do ODLICZANIA...
Sprawa jest dosc prosta. Mozesz wykorzystac do tego wejscia licznikow T0 i T1. Wystarczy tylko odpowiednio skonfigurowac rejesrt TMOD. Jezeli konfigurowales rejestry specjalne w Asemblerze to nie bedziesz mial zadnych problemow w Bascomie (trzeba do niego wpisac odpowiednia wartosc binarna TMOD=&BXXXXXXXX) Mozesz tez uzyc polecenia CONFIG TIMER . Musisz...
Jakiej wersji kompilatora używasz? Get RC5 domyślnie używa timera0 a Atmega8 to nie to samo co Atmega88 i timery są inne, inne rejestry sterujace. Zobacz do noty np. Timer/Counter Control Register TCCR0 w ATMega8 steruje preskalerem a w ATMega88 TCCR0B Timer/Counter Control Register B, dwa różne rejestry inne adresy, różne też są flagi zdarzeń timerów...
witam! mam taki problem: chcę zliczać zewnętrzne impulsy, timer mam skonfigurowany w taki sposób: config Timer0 = counter, edge = falling, noice cancel = 1, na portd.4 mam ustawiny wewnętrzny pull-up i dodatkowo zewnętrzny rezystor podciągający 4,7k.do masy kondensatorek 100 nF. Licznik oczywiście mi liczy ale zlicza też przypadkowe impulsy. widać to...
Witam Znalazłem na elektrodzie poniższy kod: $regfile = "m8def.DAT" Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5 Config Portd.0 = Input Config Portd.1 = Input Config Portd.2 = Input Config Portd.3 = Input Config Portd.5 = Input Config Portb.4 = Output Cursor...
Jak napisać program w bascomie do pomiaru czasu trwania impulsu wejsciowego ?Prosze o konkretny przyklad listingu takiego programu ponieważ jestem początkującym programistą w bascomie i nie znam wielu możliwości.Domyślam sie ze należałoby wykorzystać któryś z timerów i poprzez start timera za pomocą przerwania i jego zatrzymanie a następnie odczyt...
Może coś takiego $crystal = 11059200 Dim Czestotliwosc As Long 'w twoim przypadku może być Byte Const Licznik = 22336 ' aby Timer1 przepelniał sie co sekundę Config Timer1 = Timer , Prescale = 256 Config Timer0 = Counter , Edge = Falling On Timer1 Czas 'On Timer0 Zlicz Enable Interrupts Enable Timer1 'Enable Timer0 'Pomiar czasu Counter1 = Licznik Cls...
No to coś napisałem na AVRStudio 4.05.0.181 (na kolanie) :) . Co prawda na ATmega8 , ale przeportowanie to pestka(niektóre wektory przerwań do skasowania/zmiany nazwy i "2313def.inc" zamiast "m8def.inc" , prędkość kwarcu Xtal też do poprawki...), raczej tu chyba nie ma rozkazów niezaimplementowanych w AT90S2313 . ;included in next file - line ".device...
Witam Napisałem taki program do regulacji prędkości silnika. [syntax=vbnet] $regfile = "m32def.dat" Enable Interrupts $crystal = 16000000 $baud = 9600 Config Portb = Input Set Portb.1 Config Pind.4 = Output Config Porta = Input Dim Freq As Long Dim Pomoc As Byte Dim A As Integer Dim P As Integer P = 0 Config Timer1 = Counter , Edge = Falling Enable...
Z noty katalogowej ATmega8515 (pierwsza strona): • Peripheral Features – One 8-bit Timer/Counter with Separate Prescaler and Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode – Three PWM Channels – Programmable Serial USART – Master/Slave SPI Serial Interface – Programmable...
Dobra. Wziąłem pierwszego lepszego pdf-a ze strony producenta. Są tam dwie końcówki ( T0,T1) . To są timery??? Dodano po 5 Doczytałem się też, że są tam dwa timery - jeden 16 bit ( counter 1) i jeden 8 bit ( counter 2). Czyli, że do 16-bitowego mam odwoływać się timer1 ??? do ilu zlicza 16-bitowy a do ilu 8-bitowy??? czy wiedząc,że jeden ma 8 bitów...
psooya a powedz jak w twoj program wplesc timer i counter ... ja jednak nie wiem jak bym sie staral nadal stany wysokie i niskie nie sa ;/ prwidlowe dla mnie ... che dosc do momentu kiedy np stan 0 lub jedn bedzie trwal zawsze np 0.4 0.3 ms
Clear Timer on Compare Match (CTC) Mode In Clear Timer on Compare or CTC mode (WGM02:0 = 2), the OCR0A Register is used to manipulate the counter resolution. In CTC mode the counter is cleared to zero when the counter value (TCNT0) matches the OCR0A. The OCR0A defines the top value for the counter, hence also its resolution. This mode allows greater...
A czy mógłbym prosić o jakiś konkretny przykład? Albo poprawić ten: Config Timer0 = Timer , Prescale = 1024 On Timer(15) Gosub procedura 'czekaj 15sec. Timer On Do Loop End Procedura: Cls Lcd "ok" Waitms 500 Return Nie wiele tu mozna poprawic bo od poczatku do konca masz bledny koncept pracy z timerami. Po pierwsze: w konfiguracji wartosc 'Prescale'...
Widzisz pier - pomyśl w przyszłości nad językiem C (namawiam cię gorąco), tam zrobienie nośnej w oparciu o sprzętowy CTC to pikuś i zobacz jak jasno - sam chyba zrozumiesz tu o co chodzi tu masz CTC i wypełnienie 50% // TIMER0 TCCR0 |= (1<<WGM01);// Tryb CTC (Mode 2) TCCR0 |= (1<<COM00)// Toggle OC0 on compare match...
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...
TAK. To prawda... W helpie napisali, że na timerze0 nie ma opcji PWM Action Configure TIMER0. Syntax CONFIG TIMER0 = COUNTER , PRESCALE= 1|8|64|256|1024 , EDGE=RISING/FALLING , CLEAR TIMER = 1|0 CONFIG TIMER0 = TIMER , PRESCALE= 1|8|64|256|1024 Ale po podstawieniu zadziałało. Swoją drogą szkoda, że nie dopisali "wyjątków" do helpa Co do ryb, to nie...
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...
POWERSAVE (ATMEGA88) This mode is identical to Power-down, with one exception: If Timer/Counter2 is enabled, it will keep running during sleep. The device can wake up from either Timer Overflow or Output Compare event from Timer/Counter2 if the corresponding Timer/Counter2 interrupt enable bits are set in TIMSK2, and the Global Interrupt Enable bit...
ja za dobry nie jestem w tym ale cos podpowiem ustaw sobie timer zeby mial przerwanie co 1 s a pozniej kazda czesc obslugi przekaznika niech liczy sobie do 900s(15min) i po tym czasie niech zmieni stan wyjscia (toggle) a jak policzy do 14400s(4h) to wylaczy calkiem wedlug mnie powinno dzialac Dodano po 20 tak ustaw timer 16 bitowy tak: Config timer?...
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...
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
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. Zgadza się. chodzi o Timer 1 oraz Timer3. Zobacz schemat takiego timera: Figure 46. 16-bit Timer/Counter Block Diagram Jeżeli chodzi o przyklad konfiguracji PWM w atmega64 to bardzo prosze o podanie...
Poszukałem trochę dodatkowych materiałów do wchłonięcia przez moje szare komóreczki :) 13 Liczniki Słowo licznik to próba przetłumaczenia słowa timer. Ja używam tego słowa jako odpowiednika, ale nie wszyscy się z tym zgadzają i twierdzą, że należy używać słowa timer, gdyż nie można dokładnie przetłumaczyć znaczenia. Licznik to układ liczący o rozdzielczości...
Moje spotrzeżenie: Jeśli konfigurujemy timer[0,1] i korzystamy z trybu np. 2 (najczęściej) to wartość ładujemy instrukcją load ,a w trybie np. 1 wartość wpisujemy instrukcją counter= wartość z tym że licznik zlicza w góre np. wartość=65535-1000 wartość=64535 czyli po 1000 cyklach nastąpi przepełnienie... Pozdrawiam
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...
a moze wykorzystac timer/counter do zliczania impulsow zewnetrznych? chyba po to jest. dla 2313: do TCCR0 zaladuj 0b00000110 dla opadajacego zbocza a 0b00000111 dla narastajacego zbocza. wtedy licznik bedzie zliczal impulsy z wejscia T0 czyli PD4 czyli pin 8. licznik T0 jest 8-bit czyli 256 zliczen, wiec jak potrzebujesz pojemnosc 65536 (16-bit) musisz...
Wiec podaje gotowca - może się przyda Na LCD wyświetla - obroty na /sek /min [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 16000000 Config Porta = &B11111111 : Porta = &B11111111 Config Portb = &B00000000 : Portb = &B11111111 Config Portc = &B11111111 : Portc = &B11111111 Config Portd = &B11111111 : Portd = &B11111111 Config Lcdpin = Pin , Db4...
Poprawiłem na 9,6MHz. Czy w kodzie powinno być Start Counter0 zamiast Start Timer0? Skoro zadekarowałem w configu że to licznik to muszę napisać mimo tego counter? Nie ma potrzeby dawać 'Start Timer0' jeżeli uprzednio nie był zatrzymanyu przez 'Stop Timer0'. Timer w AVR uruchamia sie natychmiast po "Config Timer(x) = cokolwiek" pod warunkiem że preskaler...
o kurde... przegladalem wszystko ale jakos mi sie wymknelo :/ dzieki :) bardzo fajny programik :) mam jeszcze takie pytanie: (BASCOM AVR i atmega8) czy jest mozliwe wpisywanie wartosci z tabeli (DATA) ale nie do calego portu tylko do 7 jego pinow? np port D ma 8 bitow ale potrzebuje jego wejscie nr5 jako wejscie timera pracujacego jako counter a na...
w końcu zrozumiałem co miał na myśli tmf , jeśli dobrze rozumiem to miałbym podać te 6 sygnałów na wejścia i nie korzystać z timera jako countera tylko zrobić przerwania min połowę od najkrótszego impulsu, stany zapisywać w zmiennych, zrobić porównanie poprzedniego i jeśli zaszła zmiana np z 0 na 1 to wtedy tak jakby robię timer na zbocze narastające,...
bascom counter atmega timer counter timer counter assembler
impedancja przesunięcie fazowe akumulator skuter elektryczny przekaźnik grzałki pralki whirlpool
traktorek silnik briggs traktorek silnik briggs
Świeca zapłonowa Demon RQ 580 a Oleo-Mac 937 Schemat elektryczny przepustnicy Iveco Daily 2009 3.0D