Sprobuj dac kondensator na wejsciu countera np 100n.
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 gdzie instrukcja CONFIG TIMER1 = COUNTER?
Z helpa bascoma (nawet nie bolało :)) : ";Średnik – rozdziela argumenty instrukcji wejścia/wyjścia " Zawsze mi działały instrukcje zapisane w ten sposób . Ale zmieniłem bo może jednak jest źle . Dalej nie działa więc to nie w tym problem . Drugi błąd to nie błąd ponieważ jak można znaleźć wyżej końcówki te są ustawiane jako WYJŚCIA więc nie mogą...
A kolega rozumie różnice pomiędzy pracą w trybie timer i counter ??? ;)
Podejrzewam że jak dałeś "Start Timer0" to Bascom "olał" ustawienie "Config Timer0 = Counter , Edge = Rising " i zaczął liczyć. Ale nie sprawdzałem-sprawdź sam.
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...
Po przepełnieniu licznika on się zeruje automatycznie? W większości trybów licznik zeruje się podczas przepełnienia. Wyjątkiem są niektóre tryby PWM, np. Phase Correct PWM Mode: The phase correct PWM mode is based on a dual-slope operation. The counter counts repeatedly from BOTTOM to MAX and then from MAX to BOTTOM.
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".
........ 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...
... to chyba najprostrze rozwiązanie (program pod BASCOM) Config Timer1 = Counter , Edge = Falling Enable Timer1 Do Timer1 = 0 Waitms 100 Print Timer1 ; "0 Hz " ; Chr(13); Loop sygnał TTL podaje sie na 9 noge 90s2313, a z 3 nogi przez tranzystor odwracajacy - na COM do kompa (pin2). moze to urzadzenie nie jest bardzo dokladne ale w przyblizeniu potrafi...
Schematu nie mam najpierw testuje program. Ale nic nadzwyczajnego nie ma, na wejście T0 podawany jest sygnał,T0 skonfigurowane jako Counter co widać w programie.
dlaczego resetuje mi zmienną L do zera po zliczeniu 256 impulsów przez taimer0 L = L + counter0 Chciałbym zliczyć wszystkie impulsy prosze o pomoc jakim kodem zliczyć np 10000 impulsów z timer0 = counter
Jeżeli sprawdzasz przycisk podłączony do masy, to czemu przerwanie Timer ma być wyzwalane zboczem rosnącym ? Config Timer0 = Counter , Edge = Rising
Np. timer1 konfigurujesz tak aby odliczał 1 msek (a nie 1sek ). W czasie pomiędzy jednym int0 a drugim zliczyłeś wystąpienie 1251 razy timer1 1000/1251 = 0,79936 Hz Jednak dla większych częstotliwości musisz użyć poprzedniej metody (timer0 = counter...)
Help > Config serialin The following internal variables will be generated for UART0: _RS_HEAD_PTR0 , a byte counter that stores the head of the buffer _RS_TAIL_PTR0 , a byte counter that stores the tail of the buffer. _RS232INBUF0 , an array of bytes that serves as a ring buffer for the received characters. _RS_BUFCOUNTR0, a byte that holds the number...
odnosnie zegarka to ja bym to zrobil na timer1 - 16 bitowy licznik, i uzaleznil to od przepelnienia tylko nalezy ustawic preskaler na 256 wpisac poczatkowa counter=conter+34286 oczywiscie przy rezonatorze 8 MHz 8000000/256/(65536-34286) = 1 sekunda pozniej tylko zliczanie a i jeszcze jedna sprawa nalezalo by zmienic wartosc dwojkowa na kod BCD :)
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...
Ja to tylko symulowałem w bascomie? do procka nie wgrywałem może ktoś zaproponuje inny counter??
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,...
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
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...
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
Nie wiem jak Wam ale mi nowa wersja AWRStudio nie za specjalnie leży, ładniej wygląda ale straciła na funkcjonalnosci. np nie jest nigdzie wyświetlana liczba cykli procesora. :arrow: View -> Toolbars -> Processor , a tam Cycle counter .
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...
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.
Chciałbym jednak użyć CTC, ale kompletnie nie wiem jak się za to zabrać w Bascomie. Nie znalazłem na forum żadnych przykładów. Jak by ktoś poczęstował przykładem kodu dla z CTC w Bascom to byłbym niezmiernie wdzięczny :) Jakieś kilka dni temu, nie dłużej jednak niż tydzień, ‘gaskoin’ podal dokładną procedurę konfiguracji CTC. Jeżeli przeoczyłeś...
Daj jakiś schemat. Bo już nic z tego nie rozumiem. Co ma wyzwolić opóźnienie? Bo Timer1= counter zlicza impulsy z PD.5. Czy na tę końcówkę podajesz impulsy jakieś?
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)...
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.
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...
Sprawdziłem w symulacji i tak jak pisał kolega zumek działa. (Bascom 1.11.8.7): Dim Bajt As Byte Dim Mbit As Bit Config Portb = Output Do Mbit = Not Mbit Bajt.3 = Mbit Portb = Bajt Loop A w rzeczywistości? Bo jak się okazuje to nie to samo :-( U mnie w symulacji w innym przypadku dziwnie zachowuje się Timer0 jako Counter a w rzeczywistości OK. Jak...
A jak ustawić zliczanie z wejścia T1 (PB1) ? Dla Timer1=Counter itd, zawartość się nie zmienia (mimo Start Timer1) i podanych impulsów na T1.
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...
Program to symulator bomby z Counter-Strike'a Kwarc wraz z kondensatorami podłączony. Czy Pin 1 (RESET) musi być podłączony do czegoś? Tak zdeklarowałem CONFIG LCD.
Mam takie wydaje mi sie proste pytanie. Jesli ustawie timer1 jako counter liczy on stany wysokie (5V). Czy da sie go ustawic tak zeby liczyl stany niskie (0V)?
Niestety ja tu nic nie poradzę bo nie bawiłem sie w bascomie w capture. 1) Sygnał do licznika może pochodzić z nóżki albo z wewnętrznego komparatora. Więc trzeba jakoś wybrać nóżkę i ustawić ja na input. 2) Najpierw skonfiguruj swój timer tak jak niżej, bo to musi być COUNTER a nie TIMER: Config Timer1 = Counter , Edge = Falling , Capture Edge = Falling...
Płytki możesz stosować albo uniwersalne (różne elementy przekładasz z jednej i lutujesz z drugiej strony, nie musisz jej wytrawiać i wygląda dosyć pro ;) ) albo laminat i do tego wytrawiacz no i oczywiście farba mozaikowa (lub pisak) do sporządzenia ścieżek. Poszukaj na allegro fraz "laminat", "wytrawiacz" w dziale z elektroniką -> http://allegro.pl/18_elektronika.html...
Wysyłając polecenie Read Counter (0xA0), tak jak piszą powyżej. Swoją drogą to zamiast kombinować, nie prościej byłoby zastosować czujnik z odpowiednią rozdizelczościa? DS18B20?
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...
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.
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.
] 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 kolegów jest taki problem podaję na wejśie T1 atmega8 przy kwarcu 16Mhz impulsy o okresie 11us co daje około 90kHz i procek zlicza jak należy bo porównuję z oscyloskopem, ale problem rozpoczyna się gdy włączę INT0 na którym też są te same impulsy ,gdzie sprawdzany jest kierunek obrotu enkodera , wtedy licznik zlicza głupoty w zasadzie około dwa...
Trzeba mierzyć czas impulsu i jeśli wynik = ileśtam to wtedy dzieje sie cośtam Może : $regfile = "twój uP" $crystal = twój crystal Config Timer1 = Counter , Edge = Rising Config Portc = Input Do If Portc.1 = 1 Then Start Timer1 If Portc.1 = 0 Then Stop Timer1 End If End If For Timer1 = 100 To 200 Reset Porta.1 Next For Timer1 = 300 To 600...
Zobacz coś takiego: $regfile = "m328pdef.dat" 'definicja mikrokontrolera $crystal = 16000000 'częstotliwość taktowania mikrokontrolera $baud = 9600 'szybkość transmisji szeregowej $hwstack = 40 'rozmiar stosu sprzętowego $swstack = 40 'rozmiar stosu programowego $framesize = 40 'rozmiar ramki stosu 'Inicjalizacja portów wejściowych i wyjściowych...
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...
Po co podłączasz rezonator kwarcowy, skoro działasz na wewnętrznym RC? Proszę skojarzyć z Real Time Counter with Separate Oscillator
Witam Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
Witam! 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ą!!!...
Debugwire - ekstra i tani :) W medze32 na szczęście jest zwykły Jtag, a czemu twierdzisz że w bascomie nie poprogramujesz? Bascom obsługuje mege32 i to chyba z wszystkimi wodotryskami, a RTC to Real Time Counter, licznik czasu rzeczywistego, z którego w praktyce można zrobić zegarek i pewnie taki zamysł mieli twórcy. Dokładnie to licznik z możliwością...
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...
Przeciez tam wystarczy ustawic Timer2 w trybie Counter i kazde jego przepelnienie jest co 1 s wiec wystarczy obsluzyc przerwanko i czesc.Nie znam Bascoma wiec nie wiem jakto bedzie w nim wygladalo.
CONFIG TIMER0 = COUNTER , EDGE = RISING | FALLING W twoim wypadku edge=falling najlepiej ściągnij sobie helpa ze strony mcselec.com jest tam wersja po polsku i jest nieźle opisane jak konfigurować wszystkie peryferia
No nie powiem, za cholerę nie mogłem uruchomić sobie programu dzięki któremu bym sobie na tinny13 liczył impulsy a po przekroczeniu ilości zapalał led. Tylko zmieniłem w timer0 na counter i rising ;] Dziękuje bardzo, szkoda pchać wszystko na mega8, a tak ładnie i schludnie.
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....
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
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?
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...
bardzo beznadziejne te czasy są każdy inny. Spróbuj wyłączyć przerwania chyba liczniki bez tego działają normalnie poza tym czemu nie weźmiesz sobie licznika w modzie 2 z auto przeładowaniem nie będziesz musiał wpisywać nowej wartości Counter. Twój problem leży jeszcze tu czas potrzebny na przeliczenie tego Z = Mid(a , K , 1)
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 =...
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...
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
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...
Cześć Mam pewien problem do rozwiązania potrzebuje zrobić licznik który będzie mi zliczał do 10000 co 1 sek zrobiłem sobie liczniki T0 i T1 zliczają do 255 bo mają 8bit ale T2 ma 16bit nie mogę tego przeskoczyć[syntax=basic4gl] $regfile = "m32def.dat" $crystal = 16000000 Config Porta = &B11111111 : Porta = &B11111111 Config Portb = &B00000000 : Portb...
(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...
Idę w jakimś kierunku czy zacząć od nowa ? $regfile = "attiny13.dat" $crystal = 10000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Config Timer0 = Counter , Edge = Rising Dim A As Byte Enable Timer0 While Pinb.0 = 0 : Wend Timer0 = 0 Start Timer1 While Pinb.0 = 1 : Wend Timer0 = A Stop Timer1 If A < 100 Then Set...
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...
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...
Witam Mam pewien problem.Potrzebuję podczas odliczania Timera0 wykorzystać przerwanie Int0. Sprawa wygląda tak, rozpoczynam odliczanie timera0 do momentu pojawienia się sygnału narastającego na wejściu Int0 i w tym momencie muszę przerwać Timer0 i odczytać jego wartość. No i właśnie tu pojawia się problem. Zamieszczę moje wypociny: Config Timer0 = Timer...
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...
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...
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...
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?...
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...
W czym problem? Dim counter as byte dim I_1_sum as single dim I_2_sum as single w pętli głównej: incr counter i_1_sum=i1_sum+biezaca_wartosc_z_adc i_2_sum=i2_sum+biezaca_wartosc_z_adc if counter=10 then counter=0 i_1_sum=i_1_sum/10 i_2_sum=i_2_sum/10 wyswietl_sobie i1_sum=0 i2_sum=0 end if P.S. Radzę używać więcej niż 10 - np 16 lub 32 *ew 8* -...
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...
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...
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ć.
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
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...
Wy edytowałem takie coś. [syntax=basic4gl]'************* Konfiguracja uC ***************** '***************************************... $regfile = "m8def.dat" $crystal = 16000000 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Dim Wynik As Long Dim Wynik1 As Long...
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...
Masz rację ,kod wyglądał tak : Dim Wynik As Long Dim Wynik1 As Long Config Timer0 = Counter , Edge = Rising Config Timer1 = Counter , Edge = Rising Config Portb.1 = Input Config Portb.0 = Input Portb.0 = 1 Portb.1 = 1 Cursor Off Cls Do Timer0 = 0 Timer1 = 0 Start Timer0 Start Timer1 Waitms 500 Stop Timer0 Stop Timer1 Wynik = Timer0 * 30 Wynik1 = Timer1...
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...
Źle zrozumiałeś ten zapis. Część odpowiedzialna za taktowanie co 10us wygląda tak: ... _pulse_in5: (at)genus(9) ; THIS FOR 10 US UNITS but approx. depends on XTAL ; you can remove the above call and tailor this routine ; when remarked 10 cycles/loop are needed and for 1 Mhz this is 10 uS ; for 4 MHz you need additional 30 cycles and the...
Po kolei: 1. Jak używasz nosave, to musisz sam zadbać o odłożenie odpowiednich rejestrów na stos. Stos musi mieć wymiar ilości odkładanych bajtów +2 na program counter. W załączonym pliku dopisałem ci odpowiednie komendy. Sam musisz sprawdzić (symulator się kłania :D ), czy jeszcze coś powinno być odłożone. Z tego co pamiętam to bascom standardowo używa...
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...
ł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....
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...
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...
Przydał by się jakiś przykład ale pokombinuje . To trochę komplikuje sprawę bo timer1 jest już zajęty ale zobaczymy czy działa lepiej. Docelowo muszę dokonywać pomiaru 2 sygnałów ( sygnałów serw rc). Tylko jeśli ustawię: Config Timer1 = Counter , Edge = Rising , Capture Edge = Rising i po pojawieniu się zbocza zmienię na: Config Timer1 = Counter , Edge...
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...
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!
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...
Nauczcie się wreszcie, że od sterowania licznikiem w trybie COUNTER podczas symulacji jest opcja PULSE. Czytanie instrukcji/helpa przecież chyba nie boli: The pulse generator can be used to supply pulses to the timer when it is used in counter mode. First select the desired pin from the pull down box. Depending on the chip one or more pins are available....
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...
Zdefiniuj zmienną Temp jako Word. Jak ci ma wyświetlić 600 jesli zmiena Byte może przyjąc max wartość 255. Właśnie powyżej tej wartości będą ci sie wyświetlać dziwne rzeczy. No to może wytłumaczę jak to zrobić na zmiennej typu Byte według wyżej wspomnianej ideii. $crystal = 4000000 $regfile "attiny2313.dat" Dim Pomiar As Single Dim Temp As...
Tu jest zarys, jak wysłać dane, niestety z prescalerem zewnętrznym ' ****************************************... ' ** Program name: Testboard - Version : 1.3 21.03.2004 ** ' ** Compiler : BASCOM AVR, ( V1.11.7.4) ** ' ** ATMEGA16 LCD-Board 2x16 ** ' ** PMB2306 & 2312 Prescaler ** ' ** Referenz HF = 12.8...
atmega bascom counter timer counter bascom counter attiny
przedwzmacniacz gramofon phono rodzaje instalacji elektrycznych urwany przewód transformatora
traktorek silnik briggs traktorek silnik briggs
Niepełne wyświetlanie na LCD kotła gazowego Połączenie Viessmann Vitodens 200 z internetem bez kodu QR