Chwile mnie nie było :D Napisałbym to inaczej, ale wracając do pytania z pierwszego postu . Jeśli chcesz by procesor zawsze był tak samo zajęty to każ mu w tych innych Case`ach także nadawać Pulseout tylko na pin Reset. Bascom to przełknie bo ten pin może pracować jako normalny I/O ale jak jest resetem to nic mu się nie stanie jak napiszesz Pulseout...
Przedstawię Ci kolego przykład zastosowania Pulsein żebyś miał jaśniej. Myślę że będzie "rzeczowiej". To przykład dla dekodowania transmisji pilotów podczerwieni. Sygnał podłaczony jest do zewnetrznego przerwania INTx i w momencie zmiany na pinie program skacze do tej procedury. Mierzy impuls i poddaje rozwadze jego długość. [syntax=basic4gl]Int_1isr:...
. 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ś...
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....
Chcę napisac własny program z wykorzystaniem Timerów. Na początek proszę o wytłumaczenie dlaczego w poniższym programie: 1. wykorzystano podzial częstotliwości zegara (po preskalerze 256) 250/125 zamiast wykonac jedno dzialanie? 2. uzyto wartość początkową Timera0 = 250 przed Petlą do Loop End . O ile wyjaśnienie podane przez Tomq jest błędne(!) Load...
hunterhouse W AVR-ach sprzętowo można zatrzasnąć zawartość timera , ale uruchomić zliczanie trzeba programowo.Natomiast w 51-ce można uruchomić i zatrzymać timer sprzętowo.Jeśli na P3.3 jest stan wysoki i flaga GATE timera1 jest ustawiona , to timer zlicza doputy , dopuki stan na P3.3 nie zmieni się na niski.Problem jest tylko z tym , że Charly chce...
No przecież prosto. Konfigurujesz timer1 do pracy w normalnym ale nie robisz start timer. robisz przerwanie dzialajace na zbocze np. narastające-> Dalej : robisz zmienną flaga w przerwaniu robisz if flaga=1 then start timer1 flaga=0 else stop timer1 w rej od timera masz czas... kopiujesz gdzie Ci tam pasuje flaga=1 zerujesz licznik endif I tyle, oczywiście...
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ł"...
http://obrazki.elektroda.pl/7329866000_1... Miernik częstotliwości o całkiem niezłych parametrach, bo potrafiący mierzyć częstotliwości od 1Hz do 10MHz (9,999,999Hz) z rozdzielczością 1Hz w całym zakresie. Idealny do generatorów funkcyjnych lub jako zwykły miernik. Do tego tani i prosty w wykonaniu, z ogólnodostępnych części, a małe wymiary...
W twoim programie wg BASCOM-AVR są błędy: Error : 42 Line : 31 Numeric parameter expected Error : 42 Line : 32 Numeric parameter expected Error : 124 Line : 32 LOOP expected Popraw program. Przepraszam za wcześniejsze błędy. Poniżej prezentuję poprawiony kod: [syntax=text] $regfile = "m8def.dat" $crystal = 16000000 $hwstack = 32 $swstack...
http://obrazki.elektroda.pl/9838687700_1... Trochę z obawą prezentuję kolejny już na elektrodzie sterownik oświetlenia, no bo ileż tego już tutaj było? A jednak nie znalazłem rozwiązania mnie zadowalającego, dlatego też powstał niżej prezentowany układ, powstał ponieważ klasyczne lampy z czujnikami ruchu mają pewną zasadniczą wadę:...
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...
A start timer to nie jest konieczne do uruchomienia licznika?? Zamiast tego Do 'pętla temonstracyjna zmieniająca położenie serw Wait 4 Pozycja1 = 600 Pozycja2 = 600 Wait 4 Pozycja1 = 115 Pozycja2 = 115 Loop End zrobiłbym raczej coś takiego Do 'pętla temonstracyjna zmieniająca położenie serw Wait 4 timer0 = 250 enable timer0 Pozycja1 = 600 timer1 = 250...
r"]Potrzebuje zmierzyć samo wypełnienie impulsów nie wiem jak za to się zabrać. Potrzebuje badać sygnał idący na serwo modelarskie. By wiedzieć na 3 diodach jakie jest jego położenie. Proszę o jaką kolwiek pomoc. Oczywiście nie chodzi mi tu o zrób za mnie... ale nie wiem od czego zacząć. Rozumowanie moje jest takie przychodzi impuls odpala się timer....
Tak. Tylko mniej świadomość że procek będzie odrywany od pracy wieloma nieprzydatnymi impulsami. Ewentualnie po pierwszym impulsie na INT, wyłącz przerwania na czas drgań. Jak teraz masz podłączony kontrakton ? INT podciągnięty pod +5V ? Jak INT wyzwalasz ? W docelowym projekcie koniecznie czujnik kontraktonowy zamień na jakiś halotron albo transoptor...
Witam. Można i tak kolego Kuniarz , ja robię to troszkę inaczej . Korzystam z przerwania od porównania wartości dla timera 1 . Przerwanie INT0 staruje timer od zera natomiast przerwanie Compare A załącza triak a Compare B wyłącza impuls bramkowy. Wartość od zera do wartości Compare A to opóźnienie załączania triaka od przejścia przez zero . Natomiast...
W obu programach masz błąd. W pierwszym: Akurat kod tu nie ma wiele wspólnego zrobiłem to na dwa sposoby i za każdym razem inne wyniki Widać że jednak ma. Chyba to rozgryzłem Proszę mnie poprawić jak się mylę No teraz by było. Przerwanie Int nie dzieli przez 256 więc masz przerwanie co impuls. Tylko po co później to: [syntax=basic4gl]Lj = Li / 250[/syntax]...
Witam. Nie wiem czy dział będzie ok. Mam nadzieje że tak. Chciałbym poprosić kogoś o napisanie krótkiego programiku w Bascomie. Dawno temu bawiłem się w AVR a teraz mam szybki temat i proszę o pomoc. Program miałby wyglądać następująco. (tak bym go napisał w PLC) Impuls (zbocze narastające) na wejściu X1 setuje marker M1 Marker M1 wyzwala Timer T1 Timer...
Tylko dlaczego /128 ? Bo 32768kHz/128=256, co powoduje że impuls będzie generowany 256 razy na sekundę, a co tyle przepełnia się ośmiobitowy timer, więc przerwanie zostanie uruchomione co równą sekundę :) Co do przebiegów - też pewnie wina programu, timer nie został prawidłowo skonfigurowany i nie uruchamia kwarcu Dodano po 3 Jeszcze po "Enable Interrupts"...
Witam Ogólnie rzecz biorąc mierzysz czas fali odbitej Najpierw wysyłasz impuls załączasz timer i czekasz na powrót echa fali odbitej Pozdrawiam PIOTR
Nawiązując do wcześniejszej wypowiedzi chce zbudować generator regulowany za pomocą 2 potencjometrów. Jednym chcę regulować czas trwania logicznej 1 a drugim potencjometrem czas trwania logicznego 0. Czasy obu sygnałów regulowane w przedziale 0,05ms - 5ms. [syntax=basic] $regfile = "m16def.dat" $crystal = 16000000 Config Lcdbus = 4 Config Lcd = 20 *...
Witam. Z pewnych przyczyn musiałem przejść z pisania oprogramowania w Bascom na C. I pojawił się problem. Mianowicie chodzi o konfigurację Timera1 tak aby był generatorem, którego częstotliwość zmienia się wpisem do rejestru pwm1a. Pwm1a = 312 Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1 On Compare1a Impuls Enable Interrupts...
Tak wiem, to tylko test działania, funkcja uzyta bedzie do wystawiania piku co 100ms ( flagi ) ktora bede zliczal w podprogramie :-) Na wyświetlaczu było po prostu łatwiej testować efekty zmian w programie. Pozostaje mi tylko 1 kwestia, mogę ją rozwiązać stopując zegar ale w ramach nauki zapytam: Program obsługuje j.w. timer 100ms. Dodatkowo na przerawniu...
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,...
Nie rozumie twojego postu . W warunkach kempingu nie wezne sieci . Zmodyfikuje aby przelaczalo na zmiane. $regfile = "m8def.dat" 'atmega 8 $crystal = 8000000 '8 mhz 'INNE KONFIGURACJE Config Timer1 = Timer , Prescale = 256 Config Portd = Output On Timer1 Juz '625 Enable Interrupts Enable Timer1 Load Timer1 = 624 ' powinnno byc 625 ale 0 to...
Czy ten kod nadał by się do zliczania impulsów z INT0, ewentualnie co trzeba by zmienić ? Nie. Po pierwsze: Nie możesz liczyć na dokładny pomiar czasu stosując Start/Stop Timer przy użyciu prescalera o wartości różnej od jeden. Wartość timera może zostać incrementowana już po jednym ticku zegara albo nawet po 100; 150; 193 itd. tickach zegara taktującego...
Oto kod... lecz jeszcze nie sprawdziłem czy działa. $crystal = 8000000 $regfile "attiny2313.dat " Config Timer0 = Timer , Prescale = 64 Config Timer1 = Pwm , Pwm = 10 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Int0 = Rising On Int0 Impuls On Ovf0 Przepelnienie Enable Interrupts 'T0 - sumaryczna wartośc timera0 Dim...
Oto kod jednego z programów z którym mam problemy: 'C029f.bas Generator impulsów prostokątnych ' UWAGA! Wejsciem EN(able) modułu LCD steruje końcówka PB.1 ' do wyjscia PB.3 dołączona przez rezystor 1k anoda diody LED (katoda do masy) Dim Impuls As Word , Przerwa As Word , Czas As Single , Zmiana As Bit , Napis As String * 9 Config Timer1...
witam pcf8583 jest rzeczywiście nie potrzebny nie wiem w jakim języku ma być kod, ale podsyłam coś w bascomie, może się przyda ;) $regfile = "2313def.dat" $crystal = 4000000 'będzie dobrze liczył z kwarcem 4MHz Set Ddrb.0 'impulsy będą dostępne na nóżkach portb.0 Set Ddrb.1 '... i portb.1 Config Timer0 = Timer , Prescale = 256 Timer0 = 131...
Tak ale impulsy mają być sygnalizowane i widoczne na diodzie LED , a w ten sposób chyba nie zobaczę . Może by to zrobić przez PULSEOUT tylko między nimi musi być WAIT ? Dodano po 3 Zrobiłem coś takiego ale proszę o sprawdzenie i poprawki , Nie wiem też jak zrobic podprogram Generator aby zrobił 3 razy taki impuls jak w programie Odmierz . Ma to sens...
Tak jak piszesz. Żyroskop podaje sygnał sterujący serwem. Czyli jest to sygnał prostokątny. Gdzie dla neutralnej pozycji serwa co 20 ms występuje impuls o czasie trwania 1,5ms. Dla maksymalnego odchylenia serwa w lewo impuls ten skraca się do 1ms. A dla maksymalnego wychylenia w prawo - wydłuża do 2ms. Po opisie żyroskopu, można wywnioskować iż odchylenie...
Kombinujecie jak koń pod górkę. Jakieś wyliczenia, przeładowywania sprzętowego licznika, jakieś PWMy... ' Copyright by ZbeeGin $crystal = 8000000 ' ========================================... ' STEROWANIE TRIAKIEM Config Int0 = Change On Int0 _sync50hz Triak Alias Portd.6 Licz = 49 Impuls = 0 Regimpuls = 0 ' licznik timer0 - generator...
Ostatnio pracuje w bascomie... Chce napisać prosty program pod atmega8, który będzie sterował 4 wyświetlaczami 7 segmentowymi.. program ma być licznikiem impulsów które mają być wyświetlane na wyświetlaczach... zastosowałem metodę multipleksy na tranzystorach BC327.. Moje pytanie.. co w kodzie poniżej jest źle ze program nie może skompilować: (błąd...
Dziękuje wszystkim za pomoc. Program poprawiłem, działa. No nie do końca tak jak bym chciał:) A mianowicie program obsługi przerwania podaje mi impuls co 2 sek. A powinien co 1 sek. Próbowałem już inaczej przeliczać wartość tak aby uzyskać czasookres impulsu 1 sek Załadowałem do licznika wartość o połowę niższa czyli 125. Teoretycznie powinno pomóc....
Poprawiłem timer. Usunąłem deklaracje zmiennych dla K1-K5. Ale nadal problem leży w warunkach, bynajmniej tak wskazuje kompilator BASCOM a. Wskazuje również że wszystkie 3 błędy leżą w 61 linii kodu. Jak bym nie liczył nie mogę dopatrzyć się tych błędów. Poprawiony kod: $regfile = "ATtiny2313.dat" $crystal = 16000000 'Kwarc w Hz Config Timer1...
Zamiast kombinować z WDT to można zrobić zewnętrzny generator na bramkach NAND dający impuls co np 10sek albo dłużej (zwykły NE555 za dużo prądu żre). Zwiększasz sobie 16-bit timer i np. na int compare_a robisz żeby zaskoczył co godzinę. Odpada wtedy zabawa z pamięcią. Innym sposobem jest wzięcie zegarkowego PCFa i ustawienie mu godziny oraz minuty...
Zrobiłem jakiś czas temu taki układzik na attiny-13 do sterowania dwoma serwami i linijką diodową pokazującą położenie. Niestety do obsługi dwóch serw trzeba po zaprogramowaniu zablokować ISP: '(Program sterownika dwóch serwomechanizmów. Mikrokontroler Attiny 13. Funkcjonalność: Sygnały Ppm 1 - 2 ms: Sygnał Ppm Serwo1 - Port Pb0 - Pin 5...
Witam, Mam problem z programem na Atmege8a, mianowicie: Piszę program sterujący pracą silnika (za pomocą L293D) który dodatkowo będzie zliczał w czasie impuls od przerwań zewnętrznych i tu pojawia się problem: kiedy napisałem program obsługujący tylko pracę silnika, wszystko działa sprawnie, kiedy napisałem program zliczający impulsy w czasie, również...
Niestety znow mam problem z kompilatorem. Pluje sie o prosta skladnie: If Dcf_array(1).index = 1 Then Display_values(1) = &B00000110 Else Display_values(1) = &B00111111 oraz troche bardziej skomplikowana: If((dcf_in = 0) And(dcf_failure = 0) And(synchronized = 1)) Then 'wykryto poczatek...
Napisałem program nadajnika i odbiornika, dla długich czasów trwania impulsu, np 1s wszystko jest w porządku. Odbiornik się synchronizuje, odbiera dane i dekoduje. Natomiast gdy impuls trwa 10ms już jest problem. Albo wyświetla się out of synchro, czyli brak synchronizacji, a jak już ma odebrać dane to błędnie je odbiera i wyświetla wartości dziwne...
Witam zbudowałem w sumie 2 regulatory i bardzo się grzeją już przy silniku 12v i poborze prądu 3A potrzebny jest spory radiator oraz wentylator by obniżyć temperaturę do 50*. Co jest nie tak ? Zamieszczam schemat oraz kod Bascom Nie jestem autorem regulatora . http://obrazki.elektroda.pl/6194843000_1...
Witam Odświeżę wątek. Dodałem układ UDN2981A pomiędzy Atmege a wyświetlacze, wyrzuciłem tranzystory które sterowały anodami oraz ich rezystory z baz. Działa całkiem nieźle. Jest jedno ale... jasność. Steruje to takim kodem: [syntax=basic4gl] '************ Zegar 6 wyswietlaczy LED + PCF8563 $regfile = "m32def.dat" $crystal = 8000000 $hwstack = 64 ' rozmiar...
na wejścia podłączony jest enkoder(pierwszy zrobiłem z myszki komputerowej) w zależności na którym wejsciu pojawi się pierwszy impuls to przerwanie jest obsługiwane jako pierwsze . może cos z tego skorzystasz. obsługa przerwań jest na dole Dodawanie: i Odejmowanie:. Ale Panowie litości w krytyce to jest mój pierwszy program w Bascomie. Tak się złożyło...
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ę...
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).
Nie mam noty przed sobą, ale o ile mnie pamięc nie myli to timery 0 i 2 mają możliwość zrobienia przerwania typu Compare w trybie CTC. Sprawdź to.
Jeśli wyeliminujesz drgania przycisku, to najprościej to zrealizować podając wyjście przycisku na wejście zegarowe jednego timera (bedzie on zliczał ilość wciśnięć), a drugi timer wykorzystać do odmierzania czasów 1s - dokładnie co 1 s należy kasować licznik pierwszego timera. Ot i wszystko.
Na moje oko 4046 to najlepsze rozwiązanie. To ja podpowiem że trzeba tylko minimalnie zmodyfikować mój program. Tak żeby drugi Timer generował tylko tyle impulsów po uruchomieniu ile wynosi mnożnik. A w tym pierwszym Timerze który mierzy okres ma być inicjalizacja tego drugiego Timera i uruchamianie go. Dzięki temu częstotliwość tego drugiego będzie...
64 takty to o połowę krócej. :) W każdym razie, rzeczywiście obsługa tego przerwania w asemblerze powinna się spokojnie zmieścić poniżej 2us. Ewentualnie można jeszcze dodać bramkę AND sterowaną z drugiego timera i załatwić to sprzętowo.
Akurat ważniejszy jest mały spadek napięcia, żeby stan niski pozostawał niskim również za diodą. Zrobiłem szkic pokazujący o co chodzi w tym różniczkowaniu i ANDowaniu: http://obrazki.elektroda.pl/7732349900_1... Przy zwykłym różniczkowaniu widać, że brakuje szpilki wskazującej początek impulsu pierwszego kanału. Można ją odtworzyć...
impuls bascom bascom impuls bascom timer
regulacja cięcia zmiana języka nokii wtyczki winamp
podzielniki ciepła techem systemy grzewcze serwis
Wpływ niskich temperatur na akumulatory żelowe Przycisk ustawień radia Renault Trafic II - gdzie kupić?