Proszę. Gotowe bo jak widzę kilka If`ów do tej samej zmiennej zamiast Select Case i tym podobne kwiatki... [syntax=vbnet]$regfile = "m32def.dat" $crystal = 11059200 $hwstack = 64 $swstack = 16 $framesize = 64 Const Timeout_time = 8 'x500ms Config Submode = New ' config LCD 2X16 Config Lcdpin = Pin , Rs = Porta.2 , E = Porta.3 , Db4 = Porta.4 , Db5 =...
Witam. Procek tak się zachowuje bo nie określiłeś czy przerwanie ma być generowane przez zbocze opadające, rosnące czy przez stan niski na końcówce INT. Domyślnie wyzwalane jest stanem niskim więc wykonuje się raz za razem. Instrukcja Config INTx. Przeznaczenie: Konfiguruje sposób wyzwalania przerwania INTx. Składnia: CONFIG INTx = LOW LEVEL | RISING...
Możesz użyć Timer0, ale przy zboczu rosnącym, to możesz liczyć tylko zwalnianie przycisku podłączonego do masy a nie jego naciśnięcia. Jeden warunek : Timer0 musi mieć wejście podpięte przez rezystor do zasilania układu, aby jakiekolwiek zbocze rosnące tam wystąpiło.
Proszę postępuj zgodnie ze schematem użytkowym, który załączyłem (post #4 21 Lip 2015 21:39). Tam jest przedstawione gotowe rozwiazanie. Zacisk 21 podłączasz do masy, zaś zacisk 20 do GPIO. Stanem aktywnym jest zwarcie pinu GPIO do masy. Następuje to w momencie pojawienia się impulsu (dokładnie w momencie kiedy na ORNO mrugnie dioda). Dalsza procedura...
Każdy się z tym problemem spotkał, problem tkwi w budowie i przeznaczeniu modułu. Moduły zostały zaprojektowane do przesyłania krótkich "pików" o stałej amplitudzie i dość niedużej prędkości zmian. Ponieważ odbiornik non stop zbiera z eteru śmieci czyli defekto dla rs232 sa to dane, wiec często bywa że początek transmisji jaki inicjuje ramkę w rs232...
Przepraszam za dłuższą nieobecność. Nie mając nic nowego (i mądrego) nie pisałem. Ale w międzyczasie polutowałem zestaw startowy, a ostatnio napisałem inny program, który umożliwia (w zamyśle) liczenie dokładniej częstotliwości dla "paczki" impulsów, tym razem około 500 Hz. Wiem, że to dosyć skomplikowany tok myślenia, pewnie można to zrobić prościej,...
Rzeczywiście, z zaremowaną funkcją bitwait zmienna W przybiera wartości. Nie mam pojęcia dlaczego. Musisz tu zrozumiec mechanizm pomiaru długości trwania impulsu w instrukcji "PULSEIN": patrz 'Bascom help' Pulsein W , Pinc , 0 , 1 W tym konktetnym przypadku pomiar czasu dokonywany jest pomiędzy zboczami, z których pierwsze jest rosnące a drugie opadające....
W bascomie nie mam aż tak wielkiej wprawy. Chce by działało tak: część Timer0_int: Counter0 = Counter0 + 6 Incr Licznik If Licznik = 50 Then '100ms Toggle Portb.1 Toggle Portb.2 disable timer0 Licznik = 0 End If Return odpowiada za opóźnienie czyli wartość 50 będzie się zmieniała od 1 do 1000 powiedzmy co da nam czas opóźnienia. Natomiast chce by...
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
Hej, Dzielnik zmieniłem i jest przed diodą. Dodanie kondensatora C6 za diodą powodowało, że przy rozłączeniu zasilania mega nic nie zapisywała i zliczała od zera. Podobnie jak wpisanie polecenia RISING. Odlutowałem C6 i zmieniłem polecenie na FALLING. Zamieniłem dzielnik tak jak był na początku a więc 100K i 18K tak aby comparator wyzwalał się przy...
W Bascomie jest do tego specjalna instrukcja Zaglądnij do Helpa na polecenie Pulsein Zauważ że zarówno instrukcja pulsein jak i pulseout mierzy tylko czas trwania impulsu a nie całego cyklu; patrz paniżej diagram: http://obrazki.elektroda.pl/1148630500_1... Zmierzysz tylko L1 albo L2 . Autor potrzebuje zmierzyc czas L (czas pomiędzy...
Witam Niestety tamten sposób - program miał wade, przykładowo kiedy jeden z kanałów zmienił swój stan kilkukrotnie stan licznika był zmieniany w jednym kierunku (w zależności od stanu drugiego kanału) prostymi słowy wahający się enkoder generował błędy rozwiązałem ten problem ustawiając wejście by reagowało na zbocze rosnące i opadające. [syntax=bascom]$regfile...
Jak masz ustawione na Low Level i trzymasz nóżkę na poziomie low to przerwanie wykonuje się w kółko, dopóki nie zmieni się stan na wysoki. W przypadku zboczy przerwanie wykonuje się tylko na zboczu - opadającym, rosnącym, lub dowolnym (jest taka opcja też do wyboru). Czyli tak jak napisałeś :)
Ten rejestr przesuwny ma swój bufor do którego wrzuca się dane poprzez DS i SH_CP. Aby nowy, obecny stan w tym buforze pojawił się na zewnątrz trzeba ruszyć ST_CP. Ustawia się stan na DS (cyfrowy sygnał). Aby przekazać ten stan do rejestru przesuwnego , daje się zbocze rosnące na linii zegarowej. Wtedy ten bit jest już w rejestrze. Teraz ustawiając...
Zrobiłem to programowo. Wysyłanie jednego bajtu zajmuje ok 1,2 sek ale do prosztego sterowania zupełnie wystarczy (w zasadzie jeden bit wystarczy bez jakichkolwiek programów). Jak ktoś ma pomysł jak to przyspieszyć to czekam na sugestie :) Nadajnik: $regfile "attiny2313.dat" $crystal = 8000000 Dim Code As Byte Declare Sub Send(dim Code...
Stworzyłem kod który powinien wyświetlać czas trwania stanu niskiego na lcd. Na wyświetlaczu pojawia się 0.0 ms oraz na przemian 1 lub 2 takt(czyli ile zliczył timer). Proszę o naprowadzenie na właściwy kierunek osiągnięcia zamierzonego celu. kod: [syntax=basic4gl]$regfile = "M8def.dat" $crystal = 4000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4...
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...
Witam. Jestem początkujący w programowaniu więc proszę o wyrozumiałość. Potrzebuje program sterowania klapą (otwieranie i zamykanie dwie krańcówki góra dół i silnik lewo prawo). Chce aby jazda w gore lub w dol odbywała się w momencie zmiany stanu pewnej zmiennej zewnętrznej konkretnie zboczem rosnącym. Wyczytałem, że w Bascomie można zrealizować t przerwaniem...
Witam. Mam problem z przerwaniami. Chcę przerwaniem INT0 uruchomić timer0 a przerwaniem INT1 go zatrzymać. Czy jest taka możliwość? 2 czujniki podpięte pod INT0/1, za pomocą których chcę zmierzyć czas przejazdu. Jeden czujnik ma wystartować zegar (bardzo dokładny przepełnienie timer0 co 1us) a drugi ma zatrzymać pomiar. Z góry dziękuję za pomoc i pozdrawiam....
Paavo91 - Takie zabawki robi się na Pic200 lub ATtiny4, w Twoim przypadku w zupełności wystarczy ATtiny13. Gdzie w Twoim programie jest instrukcja zakończenia porównania END IF? .Pobaw się poniższym kodem. [syntax=basic4gl] $regfile = "ATTiny13.dat" $crystal = 9600000 $hwstack = 8 $swstack = 8 $framesize = 8 Config Portb = &B00001000 ' Ustawienia pinów...
Witam A nie lepiej wyzwalać przerwania zboczem, zamiast poziomem? Przykładowo: CONFIG INT1 = RISING 'reakcja na zbocze rosnące CONFIG INT1 = FALLING 'reakcja na zbocze opadające Wtedy procesor obsłuży przerwanie tylko raz po znianie stanu INT1 z wysokiego na niski (jeśli skorzystasz z FALLING oczywiście). Co robisz źle to trudno powiedzieć nie widząc...
Dzięki wielkie za poprawienie mnie, dużo mi to wyjaśniło, nie widziałem jak mogłbym to zrobić bardziej zwięźle, ale teraz już widzę. Linijki kodu określające wyświetlacz mogę ale nie muszę wyrzucać? I jeszcze jedno, zmiany na wyjściu mogą być najszybciej co sekundę? Jeżeli tak to chcąc, aby reakcja na zmiany częstotliwości była szybsza to muszę zmienić...
pomyślałem że wykorzystam 2 przerwania, złączyłęm razem int0 i int1. jedno bedzie wykrywac opadajace zbocze a drugie rosnące. efektem miał być ciąg licz np "345,12,345,32,463,12" gdzie kazda liczba oznaczałą by długość kolejnego impulsu otrzymywanego z czujnika. napisałem kod: $regfile = "m16def.dat" $crystal = 16000000 Config Lcdpin = Pin...
W EDW z sierpnia 2000 prostego pomiaru częstotliwości dokonywano na wejściach T0 / T1 (timery / liczniki). Jako, że na moim PCB detekcja przejścia przez zero realizowana jest na INT1 (a nie na wejściach counterów), pomyślałem, że zamiast counter'a wykorzystam po prostu przerwanie na INT1, po wystąpieniu którego w obsłudze przerwania zmienna zostanie...
Witam, analizator zobaczył tylko ja specjalnie to zwęziłem żeby było widać zarys całego przebiegu,. Teraz tez już wiem, że pomysł stosowania przerzutnika D jest raczej bezcelowy. Bo i tak w programie trzeba sprawdzać stan na pinie kierunku. Oczywiście najlepszym rozwiązaniem jest zastosowanie bramek z histerezą. Jest jednak jeszcze druga kwestia, a...
1) Dokładnie tak chciałem zrobić, czyli przerwaniem INT0 wykrycie zbocza narastającego i uruchomienie TIMER0 do obliczenia „czas” i od razu z automatu stany niskiego „czas” x 7. Czyli 4 bity poskładane w bajt synchronizacji i tym otworzyć „bramę” do odczytu pozostałych które są tworzone w ten sam sposób. Tylko za...
A nie ma ktoś gotowca na pomiar częstotliwości z wykorzystaniem TIMER0 i TIMER2? Już mnie powoli trafia.... ehh Nie,... nie mam ale powiem ci jak to zrobić... W zasadzie wystarczyłby ci tylko jeden dowolny timer do pomiaru częstotliwości, mierząc nim czas pomiędzy dwoma kolejnymi zboczami bądź to rosnącymi lub opadającymi. Procedurę tę możesz uskutecznić...
Ciekawe jest to widać w twoim profilu (Pomógł: 79927) :P ale do rzeczy. Według mnie coś takiego można zrealizować w następujący sposób: - konfigurujesz przerwanie zewnętrzne żeby było wyzwalane przerwanie zboczem opadającym, rosnącym etc. - w tym przerwaniu uruchamiasz timer który zlicza sobie impulsy - jeżeli zliczy określoną ilość impulsów to wykonujesz...
olo_3 -> to jest cały kod? ten który tu pokazałeś????? jeśli tak - to po pierwsze - gdzie masz pętlę główną po części inicjalizacyjnej programu ??? DO ... LOOP - chyba że ślepy jestem czy jak? (jeśli rzeczywiście jej nie masz to nie dziw się, że twój program wariuje bo po z tego co widać po inicjalizacji odrazu program leci do obsługi przrwania i się...
Sorka, jeśli odgrzewam stary temat, ale - patrz na kolejność bitów! Na stronie z linku jest napisane że zaczynasz od LSB, phase = 0 (odczyt na rosnącym zboczu zegara) Mam nadzieję, że komuś to pomoże, sam zamierzam zrobić zegarek na tym zacnym displeju.
Czyli wystarczy zmiana z configu z opadającego zbocza na rosnący ? Ale pamiętasz że przed prockiem jest optoizolacja która zmienia stan ? Czytam tę note z wielką tabelą rejestrów i mam to rozumieć Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 $34 ($54) MCUCSR JTD ISC2 ---- JTRF WDRF BORF EXTRF PORF Adres - to miejsce w pamięci...
Cze! sprawdź czy ten pilot napewno nadaje w standardzie RC5. a co do programu to nie ustawiłeś czy int0 jest wyzwalane zboczem rosnącym, opadającym czy stanem niskim. według mnie powinno być opadającym. po etykiecie odbierz powinno być disable int0 a przed return enable int0 żeby nie wywoływał wielokrotnie przerwania. i jest jeszcze jeden problem -...
Ale to nie jest praca półkrokowa... Proszę poczytać sobie o sposobach sterowania silnikami krokowymi np. tu: http://www.automatykaonline.pl/poradnik/... W moim przypadku nie ma to akurat znaczenia jeśli chodzi o prace silnika ponieważ chodzi bardzo płynnie i jest mocny nie gubi kroków, zależy mi na problemie sterowania prędkością za pomocą...
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...
Myślę że można by użyć przerwania do tego. Np. Sygnał o zmiennym wypełnieniu podać ma na wejscie przerwania INT0 (skonfigurowanego na wywołanie przerwania przy rosnącym zboczu). W obsłudze przerwania należałoby: Włączyć licznik T0 w trybie licznika 16-to bitowego wykonywac pętlę trwającą dopóki INT0 jest wysokie gdy pętla się skończy zatrzymać TIMER0...
Mam takie urządzenie ktore mierzy szczyty sinusoid przesuniętych w fazie z trzech przekładników prądowych. Jako, że jest to też Modbus Slave z baudrate 250kbps to nie chciałem robić ADC na przerwaniu bo te już mają co robić z obsługą komunikacji. Tak więc ADC jest obsługiwane przez pooling flagi ADC. Zamieszczam tylko kawałek kodu. W tym urządzeniu...
Walcze z licznikiem na Atmega 32 inicjacja wyglada tak : DDRB = 0xff; // DDRB jako wyjscie // t0 JAKO LICZNIK PORTB |= _BV(0); // BEZ PODCIAGNIECIA NIE CHCE LICZYC TCCR0 = _BV(CS01)|_BV(CS02); //_BV(CS00)| cs0 rosnace/~opadajace zbocze TCNT0 = 200; TIMSK |= _BV(TOIE0); // T0 wywoluje przerwanie Caly problem polega...
Troche sie zamotałem i nie wiem jak wybrnąć... Jak zliczyc przerwania on timer0, innymi słowy jak policzyc ile 1ms wystąpiła przy podczas przerwania wtrysku... [syntax=basic4gl] $regfile = "m128def.dat" $crystal = 16000000 $hwstack = 32 $swstack = 32 $framesize = 32 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6...
Witam wszystkich. Parę razy już mi pomogliście, to może i tym razem pomożecie. Do nauki programowania uC w C wykorzystuję płytkę AVT3505, i o ile umiem pisać proste programy na niej, to z przerwaniami nie miałem do czynienia. A od pewnego czasu chodzi mi po głowie pomysł zbudowania komputerka do samochodu. Wszystkie projekty jakie znalazłem były pisanie...
Poradziłem sobie z paskiem, ale dalej mam problem z ustawieniem timera. ................ Do If Pind.3 = 0 Then Czas = 0 Load Timer1 , 62500 End If If Czas = T_max Then Portd.7 = 0 End If Loop ............... Będzie to chodzić, czy bit Z był tu potrzebny? Obawiam sie ze nie. Po pierwsze, to zalezy jak dlugo Pind.3 = 0 Dopóki jest on =0, to za kazdym...
Witam wszystkich w moim kiedyśtam załżonym temacie:) Ja ze swoim problemem sobie poradziłem, z bólem, ale jednak:) Robiłem to tak: rozkręcałem silnik w otwartej pętli. Kosmicznych prędkości nie osiągał bo pracował bez sprzężenia. Nie mam oscylogramu, a tamte z góry są złe, ale obejrzałem przebieg na którejkolwiek z cewek. Gdy silnik kręcił się w open...
Właśnie i tego się bałem ze jak wcisnę przycisk i go trzymam to przełanczaja sie kolejne programy Tak to wlasnie jest gdy increamentacja lub decr. zmiennej jest umieszczona w petli 'do...loop' i jest warunkowana poziomem na okreslonym wejsciu. Za kazdym "obrotem' petli zawarte w niej polecenia sa bezblednie wykonywane, przedzielone ustawionymi czasemi...
Witam, Mam problem ze sterowaniem fazowym - konkretnie to winnym jest najprawdopodobniej układ detekcji zera (programowy bądź sprzętowy). Poniżej fragment schematu: http://obrazki.elektroda.net/37_12673017... Testuję na żarówce 25W - jedyne co udało mi się uzyskać to proste włączenie/wyłączenie żarówki, tak więc układ załączający (oparty na...
Witam, Temat dotyczy uP, ale wrzucam go tu bo cały projekt w temacie grupy. Mam działający układ pomiaru odległości wyciągnięty z polaroida. Podłączony pod 8515 działa i mierzy odległość. Jedyny problem, że ciut mało precyzyjnie. Prawdopodobnie to wina softu dlatego proszę o podpowiedź. Która instrukcja bascom (avr) faktycznie uruchamia Timer? Czy samo...
Pisząc program stanąłem przed problemem odbioru kodu RC5 z pilota ale z użyciem przerwania. O ile w BASCOM 8051 GETRC5 w przerwaniu działa doskonale, to w BASCOM AVR jest to kompletna porażka. Wadą Bascomowej funkcji GETRC5 jest: 1) Dziadowskie działanie w przerwaniu (niby działa ale traci pierwszy pakiet z pilota) 2) Zastosowanie jej w programie powoduje...
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...
Otóż zrobiłem sobie na M32 w Bas na Lcd 128x240 prosty oscyloskop, taki jak widziałem na innych stronach , dobrze pokazuje kwadrat do ok 4Khz, co jest normalne dla M32. Uwaga, fragment kodu z zapełnieniem tablicy i oscylogramem jest napisany przez kogoś z elektrody, nie pamiętam kogo, Ja go sobie lekko przerobiłem i dopasowałem. oto kod: If B4 = 1 Then...
Witam, mam taki problem. Procek -Atmega8, chwilowo taktowana wewnetrzym 8mGHz. bascom Ogólnie program działa nastepująca: Korzystam z INT0 ustawiam go na zbocze opadjaące. konfiuguruje timer0 z parametrem Compare A = disconnect ustawiam flage na 0 do loop przerwanie int0: czesc1: sprawdza flage jak 0 to uruchamia tajmer , zmienia sie na zbocze rosnące...
Jak pobrac dane z MAX 110 po ISP. Przetwornik ten jednoczesnie wysyla (wynik) poprzez wyjscie DOUT do wejscia MISO i odbiera dane (slowo kontrolne decyduje o konfiguracji przetwornika) z pinu MOIS uC do DIN przetwornika. Transfer powinien zostać zainicjowany gdy przetwornik zasygnalizuje gotowość do transmisji na wyjciu BUSY (pojawi sie 1) wtedy atmega...
bascom zbocze zbocze bascom bascom zbocze opadać
prądnica silnik zabawka podłączyć kalkulatora wymiana obudowy wałka
kabel brake radio interfejs lexia
Kodowanie płytki klucza z transponderem BMW E46 320d 136KM 2000 – EWS 3, PCF7935, AK90+ Jak ustawić i monitorować ilość skanowanych kopii?