To jest tak: Config Int0 = P3.2 ' Ustawienie przerwania zewnętrznego na pin P3.2 Reset Tcon.0 ' Przerwanie wywoła stan niski Set Tcon.0 ' Przerwanie wywola opadające zbocze (z H do L) To samo z Int1 To tyle pozdrowienia.
Najpierw dajesz Config INT0=Falling Wprowadzasz zmienną opisującą wybrane zbocze wyzwalające przerwanie (Edge_) i w procedurze obsługi tego przerwania: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End If Niektóre AVR'y umożliwiają konfigurację typu Config INT0= Change Wtedy przerwanie wywoływane będzie po stwierdzeniu...
Oprócz tego co napisał Balu to ustaw sobie INT0 aby było wykonywane za pomocą opadającego zbocza. Przykład: Config Int0 = Falling On Int0 wylacz Enable Interrupts Enable Int0 ...... wylacz: ....... return
W niektórych uC mozna ustawic Config intx = change
Niedokładnie przeczytałeś. W zakładce nawigator: Config Timer- uwaga! po ustawieniu prascale licznik natychmiast zaczyna zliczanie. Można użyć start Timerx i stop Timerx Np. Config timerx, prescale 'timer zaczyna liczyć stop Timerx 'timer stoi- ale już coś zliczył Timerx=y 'timer ma wartość początkową =y - np.0 Start timerx ' Timerx zaczyna liczyć od...
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...
neo_84 ---> no skoro w nocie masz napisane (i to dla każdego praktycznie procka AVR to samo) że tylko poziomem to nie zboczem ;) więc dobrze myślisz - w Bascomie musisz zrobić tak jak napisałeś Config Int0 = Low Level
tak, przepraszam za literowke, oczywiscie mam w programie napisane tak: config timer1=counter reszta jak wyzej
Przerwania PCINTx wykonują się przy każdej zmianie stanu logicznego, niema możliwości konfiguracji np. tylko dla zbocz narastającego lub opadającego. Stan zbocza na poszczególnym pinie sprawdzasz w przerwaniu. Attiny13 ma 6 pinów PB.0-PB.5 (PCINT0 do PCINT5) które mogą wywołać przerwanie. I tu jest jedna myląca rzecz :) dla tych pinów jest tylko jeden...
wynik końcowy faktycznie za każdym razem jest inny. (at) emarcus możesz podpowiedzieć jak powinien wyglądać serwis int1? Popatrzyłem troche bliżej na twoj kod. Z jakiego powodu potrzebujesz otrzymać wynik ("Czas_2") z dokładnocią aż do 9 miejsc decimal? Jeżeli jeden z czynników iloczynu (rozdzielczość timera) jest liczbą wymierną z dokładnościa do...
Ok rozumiem. Spróbuj tego. Użyte przerwanie. Można też zrobić bez zależnie od potrzeb. $regfile = "m8def.dat" $crystal = 8000000 Dim Zmienna As Word Dim A As Bit Config Pinb.1 = Output Config Pind.2 = Input Set Portd.2 '============ definicje timera ================================ Config Timer1 = Timer , Compare A = Toggle , Compare B = Disconnect...
Witam Sprawa prosta. Rozwiązać problem można na kilka sposobów. Ja robiłem tablicę 16-to elementową i w pętli z każdym zboczem sygnału zegarowego wpisywałem wartość do tablicy. Po odczytaniu 16 bitów czytałem te komórki, które mnie interesowały i sumowałem wynik z odpowiednimi wagami bitów. Poglądowy program poniżej. Config Pinx.x : Clk alias Portx.x...
. 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ś...
Jeżeli sprawdzasz przycisk podłączony do masy, to czemu przerwanie Timer ma być wyzwalane zboczem rosnącym ? Config Timer0 = Counter , Edge = Rising
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...
Generalnie, W Bascomie obsługa RC5 pozostawia wiele do życzenia dlatego też Mark w najnowszej wersji ma wprowadzić obsługę RC5 na przerwaniu ICP ("prawdziwie" w tle) według poniższego kodu, który udostępniam i polecam: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1...
Przepraszam ale w pierwszej wypowiedzi popełniłem błąd logiczny - oba przerwania powinny być ustawione na te same zbocze a nie różne. Dlaczego, bo tak jak napisałem wcześniej nie będzie można określić kierunku zmian, zawsze bedzie ta sama kolejność wywoływania przerwań. Obojętnie czy kręcimy w lewo czy w prawo. np. ChA narastanie 0->1 a ChB opadanie...
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...
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...
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 =...
Nie zadeklarowałeś na jakie zbocze reaguje INT, czyli masz domyślne ustawienia procesora (rejestry są ustawione po resecie na domyślne). Jakie dane wystawia Twój odbiornik IR, czy w stanie spoczynku masz stan H czyli +5V? Jeśli tak to przerwanie powinno być tylko na zbocze opadające. Twój odbiornik ma stan wysoki jak nic nie odbiera, każdy wysłany bit...
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...
W sumie z tego co widzę nie potrzebujesz generować sygnału PPM - wystarczy Ci jego detekcja, wyznaczenie neutrum (1,5 ms, ale nie przywiązuj się do dokładnej wartości) oraz po zauważeniu założonego odchylenia od neutrum proste załączenie jakiegoś PINu (ewentualnie danie tam sygnału PWM żeby ładnie migacz migał) Jak pisałem nie znam Bascoma, programuje...
Wracając do tych 1200ms dodanych na końcu procedury Res1, można je zastąpić w części konfiguracyjnej, tam gdzie ustawiamy piny jako wej/wyj, stosując polecenie: [syntax=basic4gl] config debounce =1200 [/syntax] lub też zrobić wykrywanie zbocza i do startu zam. i otw. stosować impuls.
Niebieski przebieg (na pierwszym zdjęciu) pokazuje, że jest to napięcie wyprostowane. Jesteś pewien, że zero będzie rozpoznawane: a) nie więcej niż raz na 10ms? b) za każdym razem, gdy sygnał zbliży się do zera (nie zostanie pominięty)? Z Twojego kodu wynika, że wyzwalasz przerwanie na zboczu opadającym sygnału [syntax=vbnet]Config Int1 = falling[/syntax]...
Napisalem w bascomie program ktory ma mierzyc czas trwania impulsu. Dokladniej jest to pokazane na rysunku w zalaczniku. Ale niestety program niechce dzialac a dokladniej pokazuje mi na lcd caly czas 101 i niewiem co jest grane bo moim zdaniem jezeli zmienia sie czas trwania impulsu to powinna sie zmienic iloscimpulsow zliczonych przez licznik. dodam...
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...
Sygnał podaję na nóżkę PORTD.6, mam go skonfigurowanego tak: [syntax=basic4gl]Config Portd.6 = Input[/syntax] Timer konfiguruje jako timer, ponieważ chcę mierzyć czas trwania zbocza: -konfiguruję za zbocze opadające -przepisuję wartość timer1 do zmiennej A -przełączam na zbocze narastające -przepisuję wartość timer1 do zmiennej B -od zmiennej B odejmuję...
Witam. Borykam się z problemem przerwania INT1 w procesorze Atmega88p. Otóż przerwanie raz działa poprawnie , wykrywa odpowiednie zbocze , a innym razem załącza się praktycznie losowo . Napisałem specjalnie prosty programik aby zobrazować problem . Program jest pisany w bascomie jednak ze sporą ilością wstawek z assemblera . (Na czystym bascomie zachowuje...
Ten kod to zupełnie najprostszy sposób jaki można sobie wyobrazić w Bascomie. Chodziło mi tylko o to aby sprawdzić czy ATMEGA działa: Config Pinb.0 = 1 ' port jako wyjście Do Portb.0 = 0 Waitms 2 Portb.0 = 1 Waitms 2 Loop End Na innym ATMEGA8 z kwarcem 8MHz impulsy 1µs mają wzorowy kształt prostokąta. Więc nie jest to kwestia sondy i oscyloskopu....
Witam. Zbudowałem taką mała etykieciarkę do nakładania kodów kreskowych. Prosty układ w sterowaniu. Silnik krokowy napędza wałek główny, poprzez wyzwolenie sygnałem zewnętrznym (24DCV wchodzi na transoptor i do uC) impulsowany jest sterownik krokowego poprzez PWM z uC. Po wykryciu sygnału z czujnika etykiet (także transoptor 24DCV) zatrzymuje silnik...
witam! Chcialem prosic o pomoc osoby bardziej doswiadczone, mianowicie mam problem w tym, ze nie chce mi uklad wejsc w obsluge przerwania od timera1, ktory ma liczyc. Projekt ma dzilac tak, by po pojawieniu sie zbocza opadajacego ma wejsc w obsluge przerwania, a nei chce tego mi zrobic :( oto wycinki programu...: $lib "glcdks108.lbx" $crystal...
Witam Napisalem sobie program w Bascomie ktory liczy czas stanu niskiego na pinie INT0. Powiedzmy ze wszystko dziala wporzadku ale zastanawia mnie jedna rzecz. Ponizej przedstawiam kod programu. Atmege48 idzie na 8 MHz, czyli jeden takt zegara=125ns ?? Czas licze poprzez Timer1(16 bitowy), W przerwaniu od przepełnienia licznika Timer1 napisalem procedurke...
Naprowadź mnie na dobrą ścieżkę. Step podłączyłeś do wejścia przerywania INT1 (Portd.3). Czyli w Bascomie było by coś takiego: Enable Interrupts 'włącza przerywania globalne Enable Int1 'włącza int1 Config Int1 = Rising 'int1 będzie reagował na zbocze narastające On Int1 Krok 'na przerywanie idź do sub Krok Dir bez większego znaczenia do portu który...
Szkoda że na '51, bo na AVR było by łatwiej. Można to zrobić tak: Procki '51 mają wejścia zewnętrznego przerwania wyzwalanego stanem niskim, lub zboczem opadającym. Ciebie interesuje to drugie (bo zboczemn narastającym się nie da jak w AVR). Nie wiem jak wygląda konfiguracja przerwań w BASCOMie, zobacz w dokumentacji, ale podejrzewam że coś w rodzaju:...
Niestety jeśli INT nie będzie skonfigurowany na aktywowanie stanem (niskim lub wysokim) to niestety aktywowanie zboczem (z tego co pamiętam) nie umożliwi wybudzenia procesora. Powinieneś tak czy inaczej to nadawanie dać do pętli głównej i np. zrobić to tak: (...) Do Enable INT0 Powerdown DISisable INT0 'tu sprawdzamy te przyciski, który wciśnięty...
witam mam mały problem napisałem taki program ma byc on na attiny13 :) $regfile = "attiny13.dat" Config Portb.2 = Output Config Int0 = Falling Enable Interrupts Enable Int0 On Int0 Czekaj Set Portb.2 Do Loop End Czekaj: Reset Portb.2 Waitms 5 Set Portb.2 Return Kiedy na wejscie podamy 0 to na wyjsciu ma sie pojawić 0 przez 5ms i po tych 5ms stan wyjscia...
Dawno w Bascomie AVR nie robiłem - i faktycznie w ustawieniach kompilatora nie ma nic o nozce pod którą podłączasz odbiornik, ale należy ją zadeklarować poleceniem config rc5 - co zresztą pewnie korzystając z pomocy zrobiłeś. Jednak nadal problem jest w tym, że odbiór kodu musi zostać zainicjowany - i właśnie dlatego MUSISZ sprawdzać stan nogi programowo...
Jest możliwość pomiaru czasu wtrysku na przerwaniach w AVR'ach. Trzeba podpiąć sygnał z wtryskiwacza (oczywiście przez układ dopasowujący) jednocześnie na wejście przerwania zewnętrznego (np. INT0) i wejście ICP (input capture). Potem trzeba skonfigurować zewnętrzne przerwanie aby reagowało na zbocze opadające (początek czasu wtrysku), licznik T1 ma...
Robi się to prosto na wejściu ICP Atmegi, mierzysz czas pomiędzy kolejnymi zboczami, raz jest opadające, raz narastające itd.. potem to tylko interpretacja wyników, liczenie bitów i po odliczeniu 64 bitów z transmitowanych 66, bo dwa ostatnie dla uproszczenia procedury pomijasz. wyświetlasz na LCD lub wysyłasz po RS232 do komputera, a tam wyświetlasz...
Witam. Robię sobie komputerek spalania do samochodu. Wszystko ładnie wychodzi poza czasem wtrysku a co za tym idzie - spalaniem. Występują jakieś zakłócenia i nie wiem dlaczego. Może ktoś pomoże....:) Kod: $regfile = "m168def.dat" $crystal = 16000000 ''''''''''''''''''''''''''konfiguracja portów'''''''''''''''''''''''''''''''''' Config Portd...
Chyba w końcu to zrozumiałem... poniżej przykładowy kod zmieniający kilka przykładowych poziomów jasności świecenia - DZIAŁA ! ;-) $regfile = "m16def.dat" $crystal = 16000000 Config Pind.6 = Output Bramka Alias Portd.6 Dim Moc As Byte Dim Wart_timera As Word Config Int0 = Falling 'rising wyzwala zbocze narastające Config Timer1 = Timer , Prescale...
Witam. Chcę zmierzyć obroty, powiedzmy, że będzie to sygnał prostokątny. Po osiągnięciu określonej liczby rpm chcę zapalić diodę LED. Cienko u mnie z programowanie, o ile zapalanie i gaszenie diód było dla mnie proste to jak dochodzą timery,przerwania to wymiękam :/ Poniżej kod w bascomie: [syntax=vb]$regfile = "attiny13.dat" $crystal = 10000000 $hwstack...
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...
$regfile = "M16def.dat" $crystal = 16000000 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111 : Portd = &B11111111 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2 Config Lcd = 16 * 2 Cls Cursor Off Noblink Lcd " HELLO WORLD!!!"...
WItam Mam taki prosty programik, ktory ma reagowac na 1,2,3,4 lub 5 impuls (zbocze opadajace) w zaleznosci od tego co ustawie. Problem polega na tym ze caly program dziala tak jak chce. Reaguje na 1,2,3 itd zbocze ktore ustawie tylko ..za kazdym razem po przerwaniu miga mi dioda led. Wyglada to tak jak by uC sie resetowal i zaczynal start programu od...
Dzieki wielkie, a jeszcze jedno pytanie, bo sklecilem teraz program, ktory bedzie mi zliczal w przyblizeniu ile auto "pożarło" juz paliwa, wiadomo ze dokladnosc tego bedzie niewielka, ale chodzi mi o przyblizenie, czy ten kod bedzie poprawny, najbardziej interesuje mnie to czy dobrze zrobilem obsluge przerwania timer1. Jezeli timer1 dojdzie do 65536,...
Mam kłopot z obsługą przerwania INT0 w ATmega32. Chciałem, żeby były generowane zboczem opadającym. Na nogę ITN0 wchodzi sygnał prostokątny 1Hz z wypełnieniem 50%. Jest rezystor podciągający do +5V. Kod jak niżej. Powinno generować sygnały na beeperzerz podłaczonym do portu D ale nic się nie dzieje. Bascom odmawia skompilowania linijki zawierającej...
A ja dzisiaj nie byłem w pracy. Wziąłem zaległy urlop z 2007r. I oto co zrobiłem 'program do pomiaru czasu wciśnięcia przycisku podpiętego do PD.2(INT0) i PD.3(INT1) przez układ RC tłumiący drgania przycisku. 'Przy tych ustawieniach Timer1 zwiększa się co 128us a licznik przepełnia się co 8.389s 'Program sprawdzony i działa. 'W celu...
Poprawiłem tytuł na bardziej oddający problem i zgodny z regulaminem p. 3.1.15. Ponadto proszę się zapoznać z zasadami korzystania z działu: http://www.elektroda.pl/rtvforum/topic34... LordBlick Witajcie. Oświećcie mnie dlaczego ten program nie działa tak jak powinien. Przełączam przełącznik który pin PB1 zwiera do masy (pojawia się zbocze opadające...
No to sprawdź ten kod [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 $sim Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portd.1 Config Lcd = 16 * 2 Config Portc.5 = Output Config Portc.4 = Output Config Pind.2 = Input Config Portd.2 = 1 ' załaczenie rezystora podciągającego On Int0...
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...
Próbuję zrobić emulator dekodera PT2272 (dekoder pilotów radiowych), transmisja nie jest zbyt skomplikowana i wykonanie kodera było proste. Problem zaczyna sie po stronie odbiorczej. Na przebiegu zaznaczyłem wszystkie 4 stany jakie występują w słowie kodowym. Są to odpowiednio "0" "1" "T" i ostatni synchronizujący. http://obrazki.elektroda.pl/4855744500_1...
Witam Mam problem z utworzeniem programu do at 2313, pracuje na bascomie. Chodzi mi o to by w takt sygnału( o zmiennej częstotliwości) układ generował "1" na czas 10ms. Poniżej załączam screena z oscyloskopu. przebieg na dole to ten z zewnątrz, jak widać układ reaguje na zbocze narastające i w tym czasie powinien wygenerować "1" Czytałem o opcji config...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na http://www.elektroda.pl/rtvforum/topic20... ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył"...
Programik wygląda teraz tak: $crystal = 11059200 Config Pind.6 = Output Dim Czas As Byte Dim Czestotliwosc As Single On Int0 Licz Config Timer1 = Timer , Prescale = 256 Reset Portd.6 Enable Interrupts Enable Int0 Enable Timer1 Config Int1 = Rising Do Czestotliwosc = 1 / Czas //Tutaj chyba trzeba coś dodać// If Czestotliwosc >= 3.5 Then Set Portd.6...
Witam. Próbuję napisać program odpowiedzialny za pomiar odcinków czasowych pomiędzy impulsami sygnału S1 i S2 (zgodnie z załącznikiem). Proszę o prześledzenie kodu, wszelkie uwagi i sugestie mile widziane. Nie mam pewności co do poprawności pobierania wartości licznika TIMER1 za pomocą TCNT1. 'program do pomiaru okresu sygnałów podpiętych do PD.2(INT0)...
Mały przykład dla ciebie: Config Int0 = Falling 'przerwanie po wystapieniu opadajacego zbocza syg. On Int0 Pobor 'Podczas przerwania int0 skok do pobor Do końcówki INT0 podpinasz sobie zwykłego switcha i w momencie wystąpienia opadającego zbocza sygnału (np. 0 ) następuje przerwanie w którym jest wykonywany podprogram "Pobor". Zrób sobie kilka testów...
Rozwiązuj problem modułowo,trzeba napisać najpierw najważniejsza cześć czyli obsługa przerwania zewnętrznego.Pin INT0 należy ściągnąć rezystorem stosownie do ustawionego trybu ,jeśli ma wykrywać zbocze opadające to rezystorem do zasilania,jeśli narastające to rezystorem do masy.Wewnętrzny pullup różnie się zachowuje w tej sytuacji. Robi się to tak:...
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...
Napisałem coś takiego. Czy to ma sens? Po pojawieniu się pierwszego zbocza opadającego na Int1 powinno uruchomić Timer1 i po podaniu drugiego zbocza opadającego na wyświetlaczu powinno pokazać wartość Timer1. W symulacji pokazuje na lcd cały czas zero. Gdzie jest problem? Na razie chcę mierzyć tylko czas między przerwaniami $regfile = "m8def.dat"...
Witam Ten kod: $regfile = "M8def.dat" $crystal = 8000000 $hwstack = 64 '---------------------------------------... Dim A As Byte Dim B As Byte Dim Licznik As Byte '---------------------------------------... On Int0 Int0_handler On Oc2 Oc2_handler '---------------------------------------...
Więc rozumie to tak: Nie wiem czy "Config ACI ..... " powinno być skoro komparator jest włączony i nie będę przechwytywał zawartości timera ani nie wykrywam zboczy. Chce tylko określić stan zrównania bądź większej wartości. p.s wyświetla błąd "Enable IntACI" twierdząc że nie ma takiego czegoś nie czasem tak?? Enable Interrupts Enable Aci On Aci Akcja
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 Próbowałem na zrobić komunikację przez UART (tak i programowy jak i sprzętowy) między mikrokontrolerami Atmega8-16PU (DIP28) i Atmega8A-AU (QFP32). Program jest wzorowany na programie z książki Pawła Borkowskiego AVR&ARM7. W książce interfejs UART jest przedstawiony na przykładzie programu który łączy ze sobą dwa mikrokontrolery. do każdego z...
Witam ! Mam pewien problem z odbiorem kodu w podczerwieni RC5. Do procesora mam wgrany prosty programik wyświetlający adres / komendę: Dodano po 2 Już chyba wiem o co chodzi. Funkcja GETRC5 reaguje na zbocze narastające, więc niemożliwe jest odebranie kodu w przerwaniu, chyba żeby czekać na następny kod. Albo pozostaje zmodyfikować bibliotekę.
Dzieki za pomoc :) Dla potomnych cytat z manuala: CONFIG TIMER0 = COUNTER , EDGE = RISING | FALLING Kiedy TIMER0 jest skonfigurowany do pracy w charakterze licznika (parametr TIMER0 = COUNTER) wtedy należy określić parametr EDGE: Można określić czy licznik będzie zwiększany wraz z pojawieniem się narastającego zbocza sygnału (RISING) lub opadającego...
Linie danych wszystkich kości rozszerzających łączysz do wspólnego (dowolnego) portu, sterowania \OE do masy, linie taktujące CP do kolejnych wolnych linii dowolnego portu. Wysłanie danych na port wymaga: 1. Ustawienia odpowiednich stanów na porcie danych 2. Przepisania danych do przerzutników wybranego układu 74LS374 przez wystawienie przedniego zbocza...
bascom charakteryzuje sie latwoscia programowania o ile w asemblerze musisz dobrze znac budowe procka to w bascomie az taka duza wiedza nie jest potrzebna <co moze jednak nie jest az takim duzym plusem :roll: >chac np uruchomic licznik w asemblerze trzeba wpisac odpowiednie stany w odpowiednie rejestry natomiast w bascomie zalatwiaja to wpisane...
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...
Po dodaniu Użyj polecenia Config do konfiguracji zbocza - to się nasuwa na samym początku. Dodano po 34 I pokaż CAŁY program. Dodano po 2 Scalam tematy - dotyczą tego samego problemu.
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...
Dziekuje za podpowiedz Teraz przerwania dzialaja poprawnie tylko nie moge zinterpretowac zmiennej Capture Jest ustawiony prescaler na 256 Zalozenie bylo takie ze do Rejestru ICR1 w momencie przerwania zostaje wpisane to Co jest w TCNT1 Tylko po zastosowaniu zmiennej capture1 po taktowaniu nozki ICP impulsem ok np 32 ms ,widac jakby ta zmienna sie przepelniala...
Mam maly problem ze zliczaniem czasu stanu niskiego na pinie INT0. Napisalem programik ale nie chce on liczyc czasu. A zmienna Ilecykli czasem zawiera wartosci ujemne, i ogolnie pokazuje jakies nieprawdziwe wartosci. bede wdzieczny za pomoc $regfile = "m48def.dat" $crystal = 8000000 $baud = 4800 Config Timer1 = Timer , Prescale = 1 On Timer1...
Łap. Naciskając przycisk enkodera wybierasz czy ustawiasz sekundy czy minuty. Mikrokontroler przykładowy żeby tylko kompilator błedy sprawdził. Podstaw swój i swoje wyprowadzenia. [syntax=basic4gl]$regfile = "m328pdef.dat" ' config for encoder_switch Config Portd.4 = Input : Przycisk Alias Pind.4 : Portd.4 = 1 ' config for encoder Config Portd.2 = Input...
Witam Zasiadłem do BASCOMa AVR i poczyniłem zawiły ale zadowalajacy (jak na to srodowisko) soft dla atmega8, wszystko byloby ok gdyby nie mały problem z obsługą przerwania... mianowicie, na jedno z wejść tj. INT0 podaje przebieg prostokątny, okres 20ms, w aplikacji wymagane jest aby w chwili gdy wystąpi zbocze opadające owego przebiegu (dopiero od pewnego...
Ok po kolei, wywalam wszystko z programu, zostawiam tylko sterowanie IR i dopisuję obsługę przerwania INT1 wyzwalanego zboczem FALLING, w przerwaniu dodaje lub odejmuje jeden od zmiennej "impulsy" zależnie od zmiennej "ścisk" zmienna impulsy jest zwiększana o kilkanaście a nie tylko o jeden $regfile = "m8def.dat" $crystal = 8000000 Config...
Po pierwsze musisz ustawić piny INT0 oraz INT1 jako wejscia (nie masz tego zrobionego) a samo aktywowanie przerwań nie ustawi tych pinów jako wejść czyli PIND.2 = Input PIND.3 = Input druga sprawa - po co włączasz aktywowanie przerwań poziomem niskim (Low level) ??? - wystarczy w zupełności. w takim przypadku, jeśli wyzwalanie przerwań będzie robione...
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...
Witam Jestem nowy na forum i w temacie mikrokontrolerów. Mam płytkę Evb 4.3 v4 na procesorze Atmega644p (duży sprzęt jak na początkującego, ale lepiej kupić raz a lepiej). Czytałem trochę na temat programowania w BASCOMIE na stronie http://www.dioda.com.pl/forum/topics20/k... (kopiowałem sobie programiki...
Mam w projekcie Atmegę128 + PCF8583 + kilka układów I2C (3xADS1110, AT24c1024), dodatkowo dołaczam dwa moduły z Atmega64 każdy. Chcę, aby każdy z mikrokontrolerów odczytywał czas bezpośrednio z PCF8583. Teoretycznie arbitraż jest możliwy, ale u mnie to nie chce prawidłowo działać - zawiesza się komunikacja i programy "stoją". Do testów zostawiłem w...
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łaśnie mam już cały program gotowy w bascomie , nie umiem w tej chwili na tyle dobrze C żeby napisać obsługę PCF, dwóch DS18B20 plus MPX4115. Także chodzi właśnie mi tylko o rozwiązanie pomiaru ciśnienia co 5-10 minut. Ok doszedłem wkońcu jak to zrobić . [syntax=basic4gl] Config Pinb.1 = Input 'usatwiamy Portb.1 jako wejscie Set Portb.1 'ustawiamy...
Ok niech będzie ze jednyka natomiast ani z jedynką ani z zerem nie chce dziłać... Chciałem się dobrać do tego od innej strony to znaczy programowo wywołać przerwanie zapisując do eifr programowo zero czy jednykę. Poniżej znaczące wycinki kodu: [syntax=basic4gl]Config Int0 = Falling On Int0 Int_0_rfrx Enable Int0 Enable Interrupts Do $asm push R16 ldi...
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....
Rozumiem Twoją ideę, ale nie za bardzo wiem jak ją zaimplementować w Bascomie. Na razie mam coś takiego: http://obrazki.elektroda.pl/7270697700_1... Nie wiem czy coś takiego się sprawdzi przy większej prędkości pracy i transmisji radiowej, czy tam nie będzie zbyt dużych rozbieżności w czasie trwania? Co do Twojego pomysłu spróbuje coś...
Ok, nikt więcej nic nie podpowiedział, więc pomyślałem jeszcze trochę. Wydaje mi się, że sniffowanie transmisji będzie łatwiejsze. Wyświetlacz obsługuje sprzęt audio, więc nie ma tutaj szybkich zmian na wyświetlaczu. Po przeczytaniu datasheetów, doszedłem do wniosku, że w momencie opadania zbocza E wszystkie sygnały muszą być stabilne. Wydaje mi się,...
Witam Wszystkich Chcę wprowadzić atmegę w power down za pomocą Int0, a także wybudzić go ze snu za pomocą Int0. Nigdy wcześniej tego nie robiłem Ogólnie szkielet programy wyglądałby tak: Code: $regfile = "m8def.dat" $crystal = 1000000 ................. ' konfiguracja przerwania: Config Int0 = Falling Enable Int0 On Int0 ' -tu brakuuje kierunku do subrutyny...
Witam Postanowiłem zbudować miernik odległości wykorzystujący ultradźwięki. Zakupiłem 2 czujniki w TME http://www.tme.pl/przetwornik-ultradzwie... http://www.tme.pl/dok/b14/100902_bpu-164... Jednego używam do wysłania fali a 2-go do odebrania. Po przejrzeniu postów na Elektrodzie i innych www...
opracowałem mój program do bramy.. lecz mam jeszcze jeden problem z tym przerwaniem INT0. Gdy np brama się otwiera i po zwarciu zworki portd.2 od INT0 układ prawidłowo zatrzymuje się lecz jak teraz włączę żeby brama się zamykała na zwartej zworce i po chwile od-zewrze przejdzie na stan wysoki zamykanie bramy się zatrzymuje jakby przerwanie działało...
Mam mały problem z programem napisanym w bascomie , mianowicie założenia są takie jest to odbiornik pilota IR na atmega 8 chodzi mi o sam algorytm dekodowania sygnału , który ma dekodować wszystkie rodzaje pilotów obojętnie czy są w standardzie RC5 czy SONY na wyświetlaczu LCD mam mieć wyświetlane umownie wartość jedynek i zer i problem polega na tym...
Tu tez jest mały problem, ponieważ w chwil wystąpienia przerwania, na lcd musi być to zakomunikowane, wiec uznałem ze tam należy to wstawić, wait jest tam po to by mrugał napis " NOT-AUS AKTIV ! “ zobacz jak to można zrobić bez tych dziwacznych wait w procedurach przerwań: '************ konfiguracja ... ... Dim Flaga as Bit Flaga = 0 Config Int0...
Witam. Faktycznie obsługa LCD jest bardzo prosta. 1. zainicjować LCD ( wybór trybu 4 lub 8 bit ) 2. ustawic dane na pinach D4 do D7 lub D0 do D7 3.ustawic zbocze opadajace na E Zanki wysylamy przy RS=1 Komendy wysylamy przy RS=0 W trybie 4 bitowym. Bajt wysylamy na dwa razy 1. starsza czesc bajtu i zbocze opadajace na E 2. mlodsza czesc bajtu i zbocze...
Atmega16, mam juz wykonana plytke, sprzetowe SPI wykorzystuje do programatora. Pytanie brzmi: czy można dodatkowo zaimplementować SPI programowe? jesli tak to na co tzreba zwrócic uwagę? Programujesz bez uruchomionej aplikacji (wymuszony tryb ISP), więc w trakcie działania programu SPI sprzętowe jest wolne. No chyba, że z kaprysu chcesz sobie przez...
Szanowny Panie (at)tadeko9 , przepraszam za mój poprzedni, faktycznie szorstki, ton. Co złego to nie ja :D W pierwszym poście dołączył Pan taki kod: Dlatego dołączam od razu ten dla powyższego kodu. [syntax=avrasm]2: $regfile = "attiny2313.dat" 3: $crystal = 4000000 4: $hwstack = 40 5: $swstack = 16 6: $framesize = 32 7: 8: Config Portd.2 = Input :...
Witam, Jestem początkujący w programowaniu bascom chcę zrobić licznik impulsów podawanych na timer o jako licznik . Zrobiłem licznik ale liczy max 255 a ja potrzebuje licznik z 99999 . Nie bardzo wiem jak mam to zrobić .Proszę o pomoc $regfile = "m8def.dat" 'Info dla kompilatora. $crystal = 16000000 'Informujemy kompilator o kwarcu 16MHz....
Nie wiem czy kod w Bascom na coś Ci się przyda ale właśnie na takiej zasadzie jak w tym programie zrobiony mam pomiar prędkości wiatru w moim pozycjonerze. Troszkę inaczej wykorzystuję tu timery niż założyłeś ale... Zostawiłem Ci tylko fragment odpowiedzialny za liczenie impulsów i dodałem obsługę wyświetlacza. Program jest na tyle prosty, że z interpretacją...
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...
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1 Spróbuj tak: Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1 Może nawet z tymi dzielnikami ruszy, jest to poprawne ustawienie. Polarity (CPOL) =...
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...
bascom zbocze zbocze bascom bascom zbocze opadać
schemat voltcraft zmiana rozdzielczości laptop jakiś włączyć zapłon
elektrotechnika kolos elektrotechnika kolos
Brother DCP-150C: Komunikat "nie moż. czyś." - Rozwiązania Porównanie kotłów Pereko Qmpell Evo 12 kW i Kostrzewa Twin Bio NE 12 kW