Sygnałem wyjściowym hallotrona jest napięcie. Tak więc przez 1/2 LM358 pracująca jako komparator i zasilona napięciem takim jak procesor. Ważna jest biegunowość napięcia wejściowego.
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).
Szybko zajrzałem do noty PCF8583 i tam jest napisane, ze kiedy nie używasz funkcji alarmu to stan na pinie INT zmienia się na przeciwny co 500ms. Tak wiec impuls jest na tyle długi ze spokojnie można go traktować jak zwykły przycisk naciskany co sekundę. [syntax=vbnet]$regfile = "m32def.dat" $Crystal=8000000 $hwstack = 64 $swstack=32 $framesize = 128...
Noise canceller raczej nie pomoże. Można zbudować jakiś prosty filtr RC, albo filtr programowy, ale wtedy i zliczanie musi być programowe. Swoją drogą, po co wewnętrzny pull-up, jeśli masz zewnętrzny pull-down?
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...
W trybie 1 jest 16-bitowy, liczy od zadanej mu wartości do 65536, następuje przerwanie od przepełnienia licznika, coś wtedy może zrobić w obsłudze tego przerwania i ponownie zaczyna zliczać od zadanej mu wartości lub od zera jak mu nie zadasz.
Może być Timer0 inaczej skonfigórowany np: 8000000/256 = 31250Hz Load Timer0, 250 'zapis w Bascom ' TCNT0 = 6 'doliczy 250 31250/250 = 125Hz = 8ms ' występuje przerwanie Timer0 jest ośmio bitowy, więc może zliczyć od 0 do 255 czyli 256 impulsów. W przerwaniu wpisujesz to co ma być wykonane. 256 - prescaler 250 - dodatkowe zliczanie wyprzedził mnie bart-projects
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...
marcinek.p - to gotowiec dla ciebie, nie mam jak go przetestować ale jestem pewien że zadziała jak trzeba. Masz tu przerwanie, miganie led i zliczanie migniec z incr Mozna to wszystko wkleic do przerwania ale dobra zasada nakazuje w przerwaniach umieszczać jak najmniej kodu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 1000000 $hwstack = 32 $swstack...
Jeśli chcesz zrobić wait na liczniku to możesz uzyskać dwa efekty. W obu ustawiasz w przerwaniu flagę. Pierwszy do instrukcja czekaj aż flaga będzie ustawiona wykonuj dalszy ciąg programu loop Generalnie w takim rozwiązaniu nie ma sensku dawać timera. Druga opcja do instrukcja if(flaga ustawiona) reszta kodu loop Oczywiście drugie rozwiązanie...
Witam, potrzebuje prostego programu który zliczy ile razy na sekundę wciskany jest przycisk. Np na jednym z portów pojawi się 0 kiedy przycisk zostanie wciśnięty, program ma zliczyć ilość impulsów przez sekundę i zwrócić daną do zmiennej. Proszę o pomoc lub podpowiedź. Niestety jestem początkujący i niezbyt rozumiem Liczniki-Czasomierze Timer0 i Timer1....
Jeżeli sprawdzasz przycisk podłączony do masy, to czemu przerwanie Timer ma być wyzwalane zboczem rosnącym ? Config Timer0 = Counter , Edge = Rising
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
Hej Ludzie mam pewien problem.z tego co sie orientuje ustawione liczniki: Config Timer0 = Timer , Mode = 1 , Gate = Internal Config Timer1 = Timer , Mode = 1 , Gate = Internal Start Timer0 Start Timer1 Do Loop powinny zliczac taka sama wartosc.a w symulacji programowej wychodzi, ze jeden zlicza o polowe szybciej niz drugi np: T0=100 to T1=50,T0=10 to...
Impulsy pobieram przy liczniku z kabelka który wg "Sam naprawiam ..." pochodzi od czujnika drogi umieszczonego przy skrzyni. Do zliczania impulsów wykorzystałem timer0 (oczywiście znalazłem przykład), który liczył i podbijał mi zmienną. Zrobiłem 10 km i sprawdziłem wynik. Było 5150 więc podzieliłem aby zamienić na m i wyszło 5,15 Nic mi się nie zgadza...
Timer2 jest nieco inny niż Timer1. Timer2 w M8 może pobierać sygnał zegarowy z oscylatora taktującego procesor bądź z kwarcu małej częstotliwości. Spróbuj dodać do Config Timer2 ASYNC = OFF . Skieruje to do Timera 2 sygnał zegarowy generatora uC. P. S. Jak chcesz sprawdź to sobie ustawieniach rejestrów. Mnie się nie chciało. Poczytaj sobie helpa. No...
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...
........ 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...
Modułu nie odczytuje się w kółko. Kiedy wykryje wyładowanie atmosferyczne to da znać na pinie INT. Z kalibracją sprawa wygląda tak że antena wraz z wbudowanym układem mają rezonowac na 500kHz. Żeby to dostroić w czipie jest kilkanaście kondensatorków które można podłączać programowo. Ustawia się moduł w taki tryb by na pinie INT wystawiał częstotliwość...
Może tak: Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up 'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down Start Timer1 Dim I As Integer Config Portb = 8 Do Do Incr Pwm1a If Pwm1a = 1000 Then Exit Do Waitms 10 Loop Do Decr Pwm1a If Pwm1a = 5 Then Exit Do...
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.
Podaje program z komentarzem. ............ Ps. Nie ładowałem do licznika wartości bo potrzebuje dwóch pełnych przeładowań. W programie jest zupenie nie ważne ile tych przepełnień wystpuje; istotne aby rachunek odmierzanych odcinków czasu był zgodny z zamierzonym. Skoro jesteś zmuszony zliczać przepełnienia (co jest rzeczą absolutnie normalną), więc...
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....
No więc mają to być przerwania od timer0. Kończąc podprogram1 kończę zliczanie timer0. Jeśli przejde teraz do podprogramu2 to na nowo uruchamiam timer0 ale wtedy chcę aby generował mi przerwanie do przerwania2 . bascom 8051
Czy ktoś z was zrobił może kiedyś w Bascomie stoper? Zastanawiam się, czy transmisja mikrokontroler <-> wyświetlacz LCD nie będzie "wąskim gardłem"? Jak myślicie? A może komuś udało się to zrobić? Może ma ktoś na zbyciu działające procedurki? Na pewno wyświetlacz LCD nie będzie problemem, tymbardziej, że chodzi raczej o stoper z restrem 0,01s....
Zacznij od tej instrukcji $crystal = xxxxxxx , bo jak chcesz zliczać czas to musisz znać częstotliwość , z jaką pracuje twój procesor. Wartość $crystal = 8000000 oznacza taktowanie częstotliwością 8MHz.
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...
"tylko co sprawdzić ? " Usuń z programu "Start Timer0"
Czy mógłbyś dać przykład z tym Timer0 ? Tzn. pewnej rzeczy nie rozumiem, ktoś na tym forum napisał, że jednym Timerem można "sterować" kilkoma funkcjami ( nie napisał szczegółów ). Zakładam coś takiego. Mam 3 układy DS18B20, każdy w umieszczony w podprogramie. Mam wyświetlacz tylko 16*2, przy czym dolną linię używam do wyświetlania daty i czasu, a na...
Jak krótki odcinek czasu można zmierzyć zależy od częstotliwości taktowania uC. Procedura może polegać na ustawieniu Timera procka na tryb czasomierza (parametr TIMER0 = TIMER). Uruchamianiem i zatrzymywaniem zliczania Timera zajmują się: Start i Stop (np.: Start Timer0), które uruchomisz konfigurując przerwania zewnętrzne (np.: Config Int0 = Low Level).
Koledzy, mam mały problem, gdyż mój pomysł na zliczanie czasu otwarcia wtrysku nie bardzo się sprawdza. W tej chwili robię to tak, że w czasie 0,5s w pętli sprawdzam czy na pinie do którego jest podłączony sygnał wtrysku jest stan wysoki, jeżeli jest, to zwiększam zmienną "wtrysk". Działa to w miarę dobrze, ale jak np. wcisnę przycisk, co wiąże się...
Dzieki wszystkim za zainteresowanie. Poszperałem wczoraj wieczorem i znalazłem że w mode=1 wartość ładuje się instrukcją 'counter [0,1]=wartość lub jak koledzy napisali np. tl0=&h5f th0=&h45, a load działa tylko w mode=2. Mam nowe pytanie przy kofiguracji takiej: Config timer0=counter , gate=internal , mode=1 powinien zliczać impulsy podawane na pin...
Tu masz program pod ATtiny2313, jeśli potrafisz programować, to też potrafisz przerobić program na ATMegę: [syntax=basic4gl]' Bardzo prosty zegar bez możliwości ustawiania Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Migaj As Bit Config Portb = 255 : Portb = &B255...
Sorki za odgrzewanie starego tematu, ale dodam jedno. Miałem problemy w BASCOMie z timerem. Problem dotyczył instrukcji LOAD TIMER0,wartość. Tak jak wiele osób używałem LOAD TIMER0=wartość. Dzięki temu tematowi rozwiązałem kilkugodzinny kłopot. Nie wiem dlaczego kompilator nie sygnalizuje błędu. Jakby ktoś nie zauważył różnicy to napiszę słownie: "nie...
] 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...
ok. Więc mam kolejne pytania, a mianowicie czy uruchomienie zew. kwarcu spowoduje bardziej precyzyjne odliczanie czasu i jak ustawić te fusbity. Wiem że na temat fusbitów jest dużo na forum, ale również jest dużo postów typu " ustawiłem fusbity i nie mogę zaprogramować", więc się trochę boię bo nigdy tego nie robiłem. Druga rzecz: Masz troche nieprawidlowy...
2. Teraz ustawiam np. preskaler na 256 - rozumiem, że wtedy licznik Timera0 mnożę przez wartość preskalera i wychodzi mi jakaś wartość. Zakładam, że nie ładuje to timera żadnej wartości na początku czyli: Np. 255 x 256 = 65280 - pytanie co to za liczba? co ona oznacza? Nic nie oznacza. Zacznij od przeczytania opisu timera w Datasheet. Preskaler dzieli...
Czesc! Mam do was pytanie jak przerobic ten program tak aby jednym przyciskiem np na p1.1 wchodzic do programu ktory bedzie wykonywal zliczanie impulsow jednokrotne a drugim zeby ta liczbe zapamietac i wrocic do glownego programu oczywiscie ta liczbe chcialbym gdzies zapamietac zeby moc z niej korzystac w glownym programie bo ja probuje i mi to nie...
Powiem tak: obsługa przerwania powinna trwać tak krótko, jak to tylko możliwe. Np. ustawianie jakichś flag, zliczanie wartości itp. Komunikacja z użyciem jakiegokolwiek protokołu ciężko podchodzi pod tę zasadę... Niby działa - ale stwarza ogromne problemy. A już użycie "wait"... jak wspomniał kolega - to jest "no no". Tego się nie powinno robić.
Jdno pytanie czy ponizsza konfiguracja bedzie prawidłowa : Chodzi o to aby licznik zliczał impulsy wewnętrzne z kwarcu przez czas jaki na int0 bedzie stan wysoki. w momencie pojawiania sie zbocza opadającego aby program przchodził do obsługi przerwania : Fragmenty w bascom : config timer0 = timer , gate = external , mode =1 set Tcon.0 - reakcja na zbocze...
Wydaje mi się że tutaj chodzi o same cyferki! W końcu dostajecie 9+9+9+9 = 36, moje podejżenie polegało na tym że zamiast reagować na cztery dziewiątki If zareaguje o jeden za późno. Spróbuj zatrzymać timer0 wcześniej, może się okazać że w tym kryje się błąd Właśnie o to mi chodzi, czyli w którum miejscu go najlepiej zatrzymać? Dodano po 10 oto początek...
Mam mały problem - nie potrafię przenieśc kodu z bascoma do avr c (eclipse). Tzn, wiem ze nie przeniosą go 1:1 chodzi mi raczej o ogólne zasady, szkielet: chodzi o zapis do pamięci eeprom stanu licznika - licznik sie zmienia przy pomocy przycisków góra/dół - przy wyłaczeniu zasilania oczywiście jego zawartośc jest kasowana. Oczywiście zapis przy każdej...
Wpisywanie $CRYSTAL bez rzeczywistej zmiany taktowania procesora będzie powodować, że wszelkie opóźnienia i obliczenia kompilatora dotyczące liczników nie będą zgodne ze stanem faktycznym. GETRC5() korzysta aktywnie z licznika TIMER0. Tak manewruje wartością wpisaną do rejestru licznika oraz preskalerem by otrzymać jednakowe odcinki czasu zliczane później...
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...
Dzięki, widze teraz, że jednak troszke namieszałem ustawiając Timer2 ;) Nie wiem tylko dlaczego Bascom przepuścił moją konfiguracje Timer2. W pierwszej wersji programu, która była bez wykorzystania PWM (poprzez Timer2), program odliczał czas (Timer1), zliczał impulsy na Timer0 i migał diodą. W związku z tym pętla w programie głównym była pusta (Do-Loop)....
Ad 1. Nie że chce jednocześnie INT0 i Timer0 wykożystać do liczenia tych samych impulsów. Tylko jak wpisuje: config Timer=counter gate=internal mode=1 enable interrupts enable timer0 a impulsy podaje na P3.4 to timer nie liczy nic. Dla pewności załączałem też dodatkowo przerwanie INT0 (rozumiem że to bez sensu). Chyba że ustawienie na zliczanie zbocza...
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 jest w planie kwarc 8MHz bo odcinki są po kawałku nawet do 12 godzin (pomiędzy odszranianiem) ale tu mi chodziło raczej o krótszy czas około 3 min pozwalający sprężarce na wyrównanie ciśnienia, zrobiłem coś takiego podobnego tyle że na timer0 ale za cholere nie mogę dobrać preskalera i ilości impulsów. Zegar wew atmega8 1MHz poza tym nie zauważyłem...
No więc wymyśliłem coś takiego: $regfile = "attiny13.dat" $crystal = 1000000 Config Pinb.3 = Output Config Pinb.4 = Output Dim A As Byte Dim B As Byte Config Timer0 = Counter , Edge = Rising Do Timer0 = 0 Start Timer0 wait 1 Stop Timer0 Timer0 = A If A > 3 Then For B = 1 To 20 Pulseout Portb , 3 , 250000 Waitms 250 Pulseout Portb , 4 ,...
zumek Właśnie mam przed sobą książkę P. Marcina Wiazania (Programowanie mikrokontrolerów AVR w języku bascom) i cytuję za nią: Counter0 = 206 ' zapisanie licznika Timer0 wartości początkowej 206 To przypisanie jest równoważ następującej instrukcji: Load Timer0, 50 ' zapisanie di licznika Timer0 także wartości początkowej 206 Kurdę aż dziś odwiedziłem...
Wklejam kod. [syntax=basic4gl]'ATtiny2313 mruga dioda ustawienie portów. $regfile = "ATtiny2313.dat" $crystal = 10000000 Config Lcd = 16 * 1a Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , Rs = Portd.4 , E = Portd.5 Config Portd.6 = Output 'podłączenie diody pin nr 11 Config Timer0 = Timer , Prescale = 1024 Dim...
$regfile = "m8def.dat" $crystal = 800000 Config Timer0 = Timer , Prescale = 64 Dim Licz8ms As Byte Enable Interrupts Dim A As Byte 'Enable Timer0 'On Timer0 Procedura Load Timer0 = 250 Reset Portc.5 Reset Portc.4 Reset Portc.3 Set Portc.0 Set Portd.4 Config Watchdog = 2048 Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config...
Chyba rzeczywiście jest to źle. Swoim rozumowanie zrobiłem coś takiego: $crystal = 12000000 Config Timer1 = Timer Gate = Internal Mode = 2 Config Timer0 = Tiemr Gate = Internal Mode = 2 Enable Timer1 Enable Timer0 Enable Interrupts Do Load Timer1 , 100 Load Timer0 , 1 Start Timer1 On Timer1 Gora Gora: P1.4 = 1 Start Timer0 On Timer0 Dol Dol:...
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 ale w momencie użycia procedur waitms lub if timer0 zatrzymuje się. Dzieje się tak podczas sprawdzania na sprzęcie jak i na symulatorze. Program powinien działać poprawnie,...
Super :) Teraz przydała by mi się pomoc jak skonfigurować w bascomie timer1 tak żeby był taktowany kwarcem :) Dla RTC z kwarcem 32768 kHz (podłączonym do TOSC1 i TOSC2) potrzebujesz skonfigurować Timer2, pracujący asynchronicznie w trybie normalnym z prescalerem = 128 ; - co da ci interrupt co 1 sec. W Mega8 tylko Timer2 może pracować asynchronicznie...
Przeorganizowałem twój kod z pierwszego postu bo w tym z dzieleniem i modulo to może działać ślamazarnie. Jeśli ci pasuje oczywiście. Licznik obsługuj w przerwaniu timera. A zmieniaj tylko wartość zmiennej za pomocą przycisków. To musisz sobie dopisać. Gdyby obliczenia w przerwaniu były za długie, przenieść je do głównej pętli, ale tutaj zawsze będzie...
Przyczyny są dwie 1. Błąd w programie 2. Zakłócenia. Jeśli program jest ok to przeanalizuj obwód wejściowy, czy sygnał ma odpowiednio strone zbocze? Jeśli sygnał pochodzi ze styków mechanicznych to bez odpowiedniego układu filtrującego na pewno zliczane fałszywe impulsy. 1. Zliczanie jest sprzętowe na TIMER0/COUNTER0, ewentualnie program może źle czytać/przetwarzać...
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...
Zrobiłem jak radził jacekk232 , ale nadal nie mogę zatrzymać stopera przyciskiem S1. Startt = 0 ' zmienne pomocnicze Licz = 0 On Timer0 Co4ms Do 'to jest główny program - pusta nieskończona pętla Loop End Co4ms: 'procedura obsługi przerwania od Timera T/C0 wykonywana co 4ms Timer0 = 6 'załaduj do Timera0, żeby zliczył 250 (=256-6) impulsów...
Zaraz, zaraz. Czyli jak chcę liczyć impulsy to nie muszę podawać ich na T0? Bo przecież INT0 i T0 to dwa różne piny. Jak podam na INT0 to mogę wtedy użyć tego pinu do zliczania impulsów? To będzie zliczanie programowe tak? Po wielu testach napisałem coś takiego i jest JEDYNY kod w którym cokolwiek się dzieje chociaż po części dobrze. [syntax=vb]$regfile...
Umiem juz zliczac imulsy za pomoca timerow :) Mam jeszcze problem z tym ze TIMER0 ustawiony jako Counter reagujacy na narastajace zbocze zlicza cos (jakies impulsy) w momencie kiedy na wejsciu T0 jest wysoki stan, przy niskim stanie nie zlicza. Przeciez ma reagować na zbocze a nie na ciągły stan? Dlaczego tak jest? Problem filtracji zasilania a moze...
Powertowalem trochę forum i rzucił mi się w oczy taki kodzik: [syntax=vb]$regfile = "m16def.dat" 'informuje kompilator o pliku $crystal = 8000000 'informuje kompilator o częstotliwości oscylatora Config Timer0 = Timer , Prescale = 256 Config Portd.2 = Input Config Int0 = Falling Dim L As Byte Dim L2 As Byte Dim L3 As Byte Dim Wynik As Byte Config Lcd...
W przerwaniu robisz Enable Interrupts zanim włączysz Timer0, co może powodować problemy. Poza tym procka taktujesz 12MHz. A Timer0 z preskalera 1024. Czyli Timer0 dostaje 11718.75Hz. W przerwaniu zliczasz do 15000. I to Ci daje okres jak mówisz około 4 sekundy. Czyli na sekundę jest 3750 przerwań. Co oznacza że pomiędzy przerwaniami Timer0 zlicza do...
fox525 przepraszam bardzo, ale zle przeczytalem. Bylem swiecie przekonany ze nacisniecie ma rozpoczac zliczanie od nowa. Ups. Wielka pmylka. W takim razie w miejscu przerwania powinno byc tylko: P3_2_int: Incr Ilosc_sek Return Co do Load timer to mi sie wydaje ze ma byc 250. Czestotliwosc 12000000Hz dzielona jest sprzetowo na 12 co daje wynik 1000000Hz....
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....
Program ma za zadanie sterować silnikiem krokowym z określoną czestotliwością i jednocześnie zliczać impulsy z enkodera. Do obsługi silnika wykorzystuję Timer0, który odmierza mi równe odcinki czasu pomiędzy kolejnymi krokami silnika. Natomiast do obsługi enkodera wykorzystuję Timer2, który po przepełnieniu zgłasza przerwanie i sprawdza stan na wejściach...
Witam Wiem, że temat przycisku jest mocno nadwyrężony, ale ... Program ma jednym przyciskiem przy dłuższym przytrzymaniu zwiększać i zmniejszać wartość wyjścia PWM ( na zmianę ) lub przy krótszym włączyć/wyłączyć, czyli pwm1a = 0 lub pwm1a = 255. Praktycznie, potrzebujesz uskutecznić cztery a nie dwie funkcje: -włączyć/wyłączyć - to są dwie; -zwiększać...
Mam problem jestem początkujący napisałem program który ma za zadanie regulować włączanie wiatraka i czas z jakim ma dmuchać , jednocześnie mierzy temperaturę i nie działa tak jak powinno : Temperatura pokazuję co jakiś czas błędny pomiar np 124 , 32 , 98 procek się resetuje chińskie znaki raz na jakiś czas w programie można było ręcznie zmieniać czas...
Proponowałbym najpierw sprawdzić oscyloskopowo jak nadaje ta "reszta" pilotów. Niekoniecznie musi to być RC6. Może to być np. SIRC. Na podstawie tego możesz taką procedurkę napisać samemu: http://www.sbprojects.com/knowledge/ir/r... Jak to robi BASCOM przy RC5? Przy odczytywaniu kodów przez GETRC5 robi to po najmniejszej linii oporu. Ustawia licznik...
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 bascomem zacząłem jakiś miesiąc temu, w C zacznę programować jak jeszcze trochę poduczę się bascoma (już zacząłem, to skończę). Napisałem taki program: $regfile = "m8def.dat" $crystal = 1000000 Config Portb = Input Config Portd = Output Config Portb.0 = 1 Config Portb.1 = 1 Config Portb.2 = 1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3...
Witam, jako, że w szkole nie mam programowania nowych uc postanowiłem się tego sam nauczyć. Zainspirował mnie projekt prędkościomierza, więc wybrałem go. Jest to mój pierwszy program i dlatego też chcę zapytać czy ma on szanse na poprawne działanie. Sygnał z czujnika to sygnał z hallotronu, który odbiera sygnał co 1/6 obwodu koła (czyli 0.25m). Reszta...
dawid512 : Ty mi pomogłeś! Tylko teraz napisz jeszcze (jak możesz) jak go przerobić na :!: wew. 8MHz :!: I żeby w pierwszej lini było wyświetlone "Sekunda:" A w drugiej te zliczane sekundy. $regfile = "m8def.dat" 'nagłowek, model uc $crystal = 1000000 'kwarc (generator taktujący) '************************* Config Lcdbus = 4 'konfiguracja...
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...
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...
Dzięki Marcin za odpowiedź. W sobotę kupiłem TowerPro SG-5010, bo tamte, faktycznie za delikatne były, jak mi sprzedawca w sklepie pokazał (prawdziwe mini) ;-) Uruchomiłem serwo bez problemów. Sterowanie sygnałem z regulatora PI zbudowanego na Atmega16. Jedynie problem mam tego typu, że przy korzystaniu z drugiego timera Timer1 (Timer0 wykorzystuje...
16MHz A mam 3 razy bo nie wiem w kt orym miesjcu mam blad Przy 16 MHz i prescaler ustawiony na 1024 nie jestes w stanie odmierzyc czasu 1 sekundy uzywajacTimera0 bez zliczania odpowiedniej ilosci przepelnien nawet bez preload czyli na 'pelny zegar'. Maxymalny czas jaki jestes w stanie odmierzyc to ok 16 ms (dokladnie 16.384 ms). Druga sprawa; to jak...
Witam Od jakiegoś czasu próbuje napisać program(na atmege8) który by mierzył mi obroty wentylatora. Posiadam wentylator od laptopa 5v 4Pin. Wentylator steruje Pwm. Przeszukałem chyba wszystko na forum i nie znalazłem konkretnej odpowiedzi na mój problem. Pisałem już program który wykorzystuje do zliczania wejście Int0, również konfigurowałem timer0...
Stos OK. Mówię Ci. Skasuj flagę przed "Enable INT1". Generalnie kolejność mam w kodzie taką: Config Int0 = Falling 'opadajace zbocze wywoluje przerwanie Config Int1 = Falling 'opadajace zbocze wywoluje przerwanie Config Timer0 = Timer , Prescale = 8 'konfiguracja Timer0 jako timera z preskalerem przez 8 'Przerwanie od przepelnienia Timer0 jest generowane...
Witam! Na podstawie informacji zawartych w książce "Programowanie mikrokontrolerów w języku Bascom" napisałem program: Problem: Problem polega na tym, że program nie działa poprawnie. Po pierwsze procesor zamiast 1 sekundy odmierza ok. 8s. Jest to dla mnie nie zrozumiałe, ponieważ kodu zawierającego instrukcje tyczące się timer0 nie zmieniałem. To samo...
Jestem początkujący, studiuje Oślą Łączkę z EdW, zainstalowałem najnowszą wersie Bascoma Demo. Kupiłem płytkę AVT3500, złożyłem ją i wszystko działa poprawnie aż do tematu liczniki i niebogę załadować programu przykładowego, bo nie chce się wykonać funkcja ON TIMER0, gdy ją skasuje to program się ładuje, ale bez niej nie zadziała, a jeśli ona jest to...
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...
Witam. Chciałbym zrealizować pomiar częstotliwości impulsów podawanych na któryś pin Atmegi (zakres częstotliwość od 1 do max 100Hz). Narazie testuje podawanie impulsów na wejście T0 i zliczam je Timerem0 w trybie counter. Napisałem taki prymitywny programik, ale coś mi się wydaje że można zrobić to lepiej, więc proszę o jakieś sugestie lub poprawki....
Mirekk36 Co do działania samego programu to trafiłeś w sedno:) Na INT0 ma podawaną szpilkę z detektora zera sieci. To przerwanie ustawia wartość w Timer0 i uruchamia go, a po dotarciu do jego przerwania wykonuje się ten kawałek kodu: Triac: 'program przerwania Timer0 Stop Timer0 'zatrzymanie Timer0 Portb.2 = 1 'wystawienie sygnału na moc3022 Waitus...
$regfile = "attiny2313.dat" $crystal = 10000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2 'konfiguracja podłączenia LCD,na płytce testowej Config Lcd = 16 * 2 Config Timer1 = Counter , Edge = Falling , Noise Cancel = 1 , Prescale = 1 Config...
Witam. Nie istotne jest co wpiszę w: Load Timer1 , 250 czy też Load Timer1 , 65000 liczy tak samo. Dodatkowo stosując prescaler nawet 8 uzyskam częstotliwość blisko 20Hz czyli chyba nie bardzo jak pracę diody. P.s proponuje zerknąć do helpa:) Opis: Instrukcja powoduje wpisanie do licznika określonej liczby zliczanych impulsów. Przed załadowaniem wartości...
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...
Wielkie dzięki za odpowiedzi , rozwialiście mój problem całkowicie Więc teraz zrobie tak że timer1 będzie zliczał impulsy timer2 będzie korzystał z kwarcu zegarkowego, a timer0 będzie skonfigurowany przez funkcje Config Servos. Tadam A z moimi liczbami chodziło mi o to że w kodzie jeżeli timer zmierzył więcej niż 256 impulsów to inkrementowałem zmienną...
Witam forumowiczów, Natknąłem się na pewien problem, z którym nie wiem jak sobie poradzić. Sprawa dotyczy nieprawidłowej obsługi przerwania INT0 podczas wykonywania komend sterujących wyświetlaczem LCD. Do Atmega32 podłączone są: - standardowy wyświetlacz LCD, - źródło impulsów (dokładniej jest to liniał cyfrowy), - przyciski. Impulsy wprowadzone na...
OK, myślałem że mnie ktoś wyręczy , ale ... :( Dodaję komentarze: $regfile = "attiny2313.dat" $crystal = 4000000 Config Portd.5 = Output 'musi być ustawiony jako wyjście , by można go podłączyć do przerzutnika OC0B Ocr0b = &H37 'wartość obliczyć tak:$crystal/(36000*2) 'Powyższa wartość nie musi być taka jak wychodzi z wyliczenia...
Witam, Potrzebuje zrobić sterownik tranzystorów do zasilacza impulsowego topologi half-bridge. Tranzystory są tutaj sterowane PWM na przemian. Chciałem zastosować sterowanie PWM które miało by działać w następujący sposób: [syntax=vbnet]Config Portb = &B11111111 : Portb = &B11111111 Config Timer0 = Timer , Prescale = 8 Enable Interrupts Enable...
dzięki Stefan, poprawiłem i program się skompilował jednak po wgraniu do procka nie działa Oczywiście że nie może działac. Procedury warunkowe " If... then... " mają zakończenie " End if ", Natomiast procedury wykonywane w subrutynach lub Labels (etykietach) kończone są przez " Return " a nie na odwrót lub 'przeplatane'. Wtedy wchodzisz z jednej etykiety...
WItam :) Zwracam sie do szanownych doświadczonych kolegów o podpowiedź. Bawię się ostatnio mikrokontrolerkiem atmega8 w sterowanie servem (hitec hs-55). Program piszę w Bascomie i bardzo chciałbym załapać jak sensownie uzywać timera i przerwan (nie chcę uzywać bascomowskiego config servo). Po pierwsze... Czy na 8 mhz kwarcu mogę sterowanie sensownie...
Witam serdecznie! W tym dziale piszę do Was koledzy po raz pierwszy. W programowaniu procków raczej nie siedzę( bawiłem się kiedyś w bascomie kilka razy). Mam teraz do wykonania następujący układ. Podajemy impuls startu na nózkę procka załączając urządzenie (przerzutnik RS) zadajemy x liczbę impulsów podawanych na drugą nózkę (timer0 lub przerwania)...
Odświerzę trochę temat. Ja konkretnie muszę w miarę precyzyjnie zmierzyć prędkość obrotową w możliwie krótkim czasie. prędkość w zakresie 750-6500 obr/min. Dysponuje tarczą 25 nacięć na obrót i fotokomórką szczelinową która daje ttl na wyjściu. Puki co ttl generuje z generatora ne555 by uniknąć błędów pomiarów związanych ze stroną mechaniczną systemu....
mam procesor mega8 na 4MHz do tego 3 wyswietlacze multipleksowane na przerwaniu timer0 (okolo 66Hz na jeden wyswietlacz) i niestety sa bledy w transmisji z dsa i to srednio co 10 odczytow Bez CRC uklad wariuje Dla unikniecia nieszczesnego polecenia wait 1 zliczam w przerwaniu ilosc przerwan i co 200 ustawiam pomocniczy bit ktory powoduje w petli glownej...
WItam Potrzebuję zmienić częstotliwość przebiegu prostokątnego o np 3,3 raza. Czestotliwość wejściowa jest zmiennna w pewnym zakresie maks 500hz. Wymyśliłem sobie żeby to zrealizować tak aby na INT0 podawać sygnał wejściowy i wywołuje przerwanie impulsy a timer0 generuje przerwania co jakiś mniejszy czas probkowania. Zliczam impulsy probowania pomiedzy...
Witam, chciałbym przy użyciu Atmega8 i zewnętrznego kwarcu odmierzać i zliczać setne części sekund, sekundę mogę łatwo wyłapać z timera1 według przykładowych obliczeń 4000000MHz / 256 = 15625 65536 - 15625 = 49911 lub 8000000Mhz / 256 = 31250 65536 - 31250 = 34286 Nie mam jednak pomysłu jak....... Z góry dziękuję za pomocne wypowiedzi. Aby odmierzac...
o.... a czy jak wyskoczy inny timer (co 4ms) od zliczania czasu to nie przerwie działania funkcji Getrc5 ? bo sprawa jest taka, że: timer0 - wykorzystuje getrc5 timer1 - wyskakuje przerwanie co 4ms odswieża 4 segmenty BCD i co 250 wystąpień - 1sek zwiększa czas - sekundy timer2 - wtedy bedzie odpalac getrc5 ale przerwanie z timer1 przerwie dzialanie...
Tak jak piszesz. Przerwanie od Timera przelicz sobie aby się wykonywało odpowiednio szybko (mi zazwyczaj wystarcza ok 10 razy na sekundę) a w przerwaniu sprawdzaj stan przycisków. Jeśli jakiś jest wciśnięty - ustaw flagę a w programie głównym ją obsługuj. W Twoim przypadku, musisz napisać obsługę przerwania: Do tego czy da się zrobić tak żeby temperatura...
bascom timer0 timer0 bascom bascom zliczanie
pocztówki dźwiękowe czujki zewnętrzne prędkość nagrywania magnetofon szpulowy
whirlpool akz447 whirlpool akz447
Klawisze ton, rytm i funkcje w Casio CT-770 Identyfikacja radia Volkswagen Blaupunkt MFD