Witam. Dzięki za szybką odpowiedź ale.... moja frustracja sięga zenitu. To po prostu nie działa w real.Na domiar tego podobny kod tylko z waitms przed rotate działa poprawnie. Ps.próbowałem zaproponowany kod ale nic(nie wysterowałem portu). Głupia sprawa i banalna ale nigdy nie miałem podobnego przypadku stad moje pytanie.
Weź sobie załaduj do jakiegoś podprogramu fragment w którym sprawdzane są przyciski, jednocześnie w tym podprogramie odliczaj opóźnienie. (np zrób pętle która będzie miała waitms 1 - ilość wykonań pętli ilość opóźnienia ale równocześnie sprawdzany port przycisku) Zamiast rozkaz waitms wywołuj ten podprogram. To tak najprościej i bez przerwań.
Usuń całkowicie Waitms z pętli odbiornika a w nadajniku zwiększ wartość Waitms. Jak nie pomoże to zrób odbiór na przerwaniu od URXC.
Nie musisz czekać. Musisz zacząć trochę inaczej myśleć niż "linijka po linijce" Wykonaj konwersję i wystartuj timer. Pozwól programowi biec dalej. Odczytaj temperaturę, gdy timer odliczy te 800 ms. Pamiętaj, że program główny to zazwyczaj pętla. Niech nawet sobie bezproduktywnie biega w koło do czasu zanim nie będzie można odczytać temperatury. Później...
działa dobrze przyczyna to: If Zmienna < 10 Then Locate 2 , 7 Lcd " " (zamazuje drugi znak i dlatego widać 1 z 10 i 2 z 23 a szczególnie Waitms 250 (czeka i dlatego widać przez chwile) ja bym zrobił tak If Zmienna < 10 Then Locate 2 , 7 Lcd " " End If Locate 2 , 6 (przeniesione z początku pętli Lcd Zmienna Waitms 250
Rozświetlanie natychmiastowe: PWM1A = 0 jeśli aktywny stan zero lub PWM1A=255 jeśli konfiguracja odwrotna (aktywny stan wysoki). Gaszenie płynne: Pętla, Waitms/Wait, PWM1A = PWM1A - 1, Koniec pętli. Konfiguracja: http://zbeegin.republika.pl/bashelp/s_co... Już większej filozofi nie można w tym temacie napisać...
Prawdopodobnie masz za dużo warunków naraz spełnionych, a że wszystko chodzi w jednej pętli to waitms się sumują i dlatego masz nie równe miganie
Może zaraz na początku pętli dodaj waitms 200 lub 300 lub nawet 500 albo pozwiększaj te waitmsy np na 10 albo 20
Ale przy Waitms nie trzeba pętli For bo Waitms przyjmuje parametry w postaci zmiennych.
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ę...
Myślałeś w ogóle jak to zrobić bez tej pętli? Waitms to taka pętla do odliczenia. Jedyny plus jest taki, że Waitms może przerwać każde przerwanie oczywiście przedłużając wykonanie pętli odliczania, ale można to zrobić lepiej.
Jest jakaś procedura do resetu tych diod? W sensie, że po włączeniu zasilania? Raz na któreś włączenie potrafi kilka pierwszych nie reagować. Np przed pętla główną jakiś waitms i costam = 0 Czy trzeba wysłać do wszystkich diod wartości 0?
[syntax=vbnet] ...... Do Debounce S1 , 0 , Pr1 ,Sub Loop End ' koniec pętli Pr1: Waitms 100 Serwo(1) =150 Waitms 150 Serwo(2)=250 Waitms 200 Serwo(2)=50 Waitms 250 Serwo(1)=50 Wait 1 Serwo(1)=150 Waitms 100 Serwo(1)=50 Wait 1 Serwo(1)=150 Waitms 100 Serwo(1)=50 Return [/syntax] Przy takim kodzie serwa działają jak bym chciał tylko procesor wykonuje...
Bardzo dziękuje wszystkim za pomoc, ale już poradziłem sobie sam. A kod na początku powinien wyglądać tak: [syntax=vbnet] ' licznik automatyczny czterocyfrowy 9999 Dim Jednostki As Byte , Dziesiatki As Byte , Setki As Byte , Tysiace As Byte , Ktorywysw As Byte , Odliczam1s As Byte Config Portb = 255 : Portb = &B11111111 'wyjścia wygaszone Config Portd...
Witam Do pętli wsadź instrukcję "waitms 100" Zapomniałem o tym. Napewno będzie działać jak chcesz. -- pozdrawiam
siema.Znalazłem taki kod: $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000 'wszędzie stan spoczynkowy-0 config portd=output 'pprt d jako wyjścia portd=&B0000000 'wszędzie stan spoczynkowy-0 do 'pętla nieskończona waitms...
Ten silnik ma przekładnię i dla operacji pełnych kroków ma ich 2048 na pełen obrót a dla kroków "połówkowych" to już nawet 4096. To jest prosta wielokrotność rozdzielczości ADC (1024) więc nawet przeliczanie tego na volty jest niepotrzebne. Nie wiem jaki zakres potrzebujesz, ale jak wykonasz dwa kroki na każdy punkt ADC to od 0V do 5V to będzie pełen...
Gdzie w funkcji jest Waitms 300 , w pętli głównej programu Do...Loop owszem. Sorry. Faktycznie masz rację, waitms 300 jest w pętli głównej, a nie w funkcji. Z tym Counter to już nie pamiętam jak to było, ale też chyba masz rację.
Diodę gaś tak jak ją zapalasz. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Portb.0 = Input Config Portb.1 = Input Config Portd.5 = Output Przycisk1 Alias Pinb.0 Dioda Alias Portd.5 Przycisk2 Alias Pinb.1 PORTB.0 = 1' to jest podciąganie do Vdd - działaj w tym celu na rejestrze 'PORTX lub PORTX.Y PORTB.1 = 1 Reset Dioda Do If Przycisk1...
Zmień: dim Objetosc_lcd as string*10- a potem jakie x-sprawdź. Bascom jest wolny i gruby- jak wół. Można na nim w pewnym stopniu polegać Ale opanowanie rasowego konia jakim jest C- jest trudniejsze- ma sam na wiele spraw własne zdanie. Brakuje oscyloskopu. Chyba jest-widać sonde. P.S. W głównej pętli wywołujesz menu w którym "siedzisz" przez waitms...
Witam. Mam problem z układem jak na zdjęciu. Nie wiem co robię źle, że silnik się nie rusza. Proszę o pomoc. http://obrazki.elektroda.net/9_127419470... $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował config portb=input 'port b jako wejścia portb=&B00000000...
Jak podłączasz kontrast? Pokaż zakładkę z ustawieniami z mkavrcalculator - może masz tam zaznaczonego ptaszka z podziałem przez 8 <ciach> A może Twoja pętla tak szybko leci, że nic nie widzisz? Zmień waitms 3 na wait 3 [syntax=vbnet] Do Locate 1,1 : Lcd "CZESTOSCIOMIERZ " Locate 2,1 : Lcd " by MARO SP9XUH " Wait 3 Locate 1,1 : Lcd " To działa...
Zdefiniuj zmienną Temp jako Word. Jak ci ma wyświetlić 600 jesli zmiena Byte może przyjąc max wartość 255. Właśnie powyżej tej wartości będą ci sie wyświetlać dziwne rzeczy. No to może wytłumaczę jak to zrobić na zmiennej typu Byte według wyżej wspomnianej ideii. $crystal = 4000000 $regfile "attiny2313.dat" Dim Pomiar As Single Dim Temp As...
Problem powoduje używanie waitms. Podczas wykonywania waitms procesor pracuje tak jakby w pętli do..loop i nie reaguje na nic. W zasadzie nie powinna być używana. Rodzi więcej problemow, a wcale nic nie ułatwia. Zastosuj timer do sterowania diodą zamiast waitms.
napięcie 10V na wyjściu mierzyłem jest 5 V do wyświetlacza sa podleczone rezystory 500 om bezpośredni nie przez uln Wojtek75 jak w pętli głównej wpiszesz waitms to występują problemy ? bo napisałeś ze opóźnienie trzeba osunąć
1. Jakiego typu jest binarna reprezentacja temperatury temp1, temp2 (to pytanie już kiedyś padło). Czy są to zmienne integer. No właśnie tego pytania nie rozumiem ale pokaże jak deklarowałem zmienne Dim Bd(9) As Byte Dim Tmp As Integer Dim Wynik As Single Dim Temp1 As String * 10 Dim Temp2 As String * 10 Wynik to obliczona temperatura z czujnika...
Witam. Według mnie, brakuje Setfont Font8x8.font (np. po Cls) oraz spowolnienia pętli np. Waitms 100, bo wyświetlacz jest zbyt często odświeżany. U mnie w działającym teście wyświetlacza jest użyta biblioteka glcdKS108.lbx, a BASCOM 1.11.9.8. Przy uruchamianiu wyświetlacza korzystałem z https://ep.com.pl/files/4215.pdf
Menu1: Cls DO ' Początek pętli 1wreset : 1wwrite &HCC : 1wwrite &H44 Waitms 200 1wreset : 1wwrite &HCC : 1wwrite &HBE T = 1wread(2) Ttmp = T / 16 Home Lcd " Aktualnie " ; Ttmp ; Chr(3) ; "C " LOOP UNTIL PIND.1=0 ' w kółko dopóki pd1=0 Return Menu2: Return Menu3: Return D_menu: Data...
Ale numer dziś spróbowałem zrobić tak w pętli tylko cls i waitms 200 i też wyświetla krzaki. W wolnej chili "których brak" podmienię te wyświetlacze i zobaczymy.
Wszystko, co piszesz o zajętości µC przez Modbus to są zabobony (prędkości transmisji nie są w tej magistrali zbyt oszałamiające, a przecież sprzętowy RS bufor jest podwójny w AVR) - mam skończony projekt, w którym ATmega164(at)11,0592MHz gada z falownikiem, pisze do LCD co 200ms, po tych samych liniach odczytuje klawiaturę i robi jej debouncing,...
No to przecież program powyżej obsługuje dokładną regulację. W pętli głównej przed LOOP dopisz np WAITMS 100. Wczoraj o tym zapomniałem. Więc procesor zbyt szybko zwiększa/zmniejsza szybkość i wychodzi ci to tak, jakby silnik miał tylko 2 prędkości. Użycie waitms jest prymitywne ale nie wiem co twój program ma jeszcze robić więc idę na łatwiznę i nie...
To jest pętla For...Next gdzie po dojsciu do wartości 255 zmiennej A, program idze dalej a nie tkwi w pętli Do...Loop. Zastosuj to zamiast kodu z Twojego pierwszego postu tak gdzie potrzebujesz ściemnienia żarówki. For A = 0 To 255 Step 1 Pwm0a = A Waitms 20 Next A
Witam, mam zrobiony termometr na Atmega8 i program napisany w Bascom. Co powinienem zmienić aby zamiast kropki przed ujemnymi temperaturami pojawiał się - . Poza tym wszystko jest ok, i świetnie działa. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 'Config Pind.1 = Input 'Config Portb.0 = Output ' cyfra1 'Config Portb.1 = Output ' cyfra2...
pixel7 -> mam ten programik i próbowałem działać wg niego ale hmmm jakieś dziwolągi mi wychodzą. z tym, że muszę się przyznać, że teraz próbuję to zrobić w Bascomie. W sumie te operacje typu załadowanie wartości do timera, w jego przerwaniu włączenie triaka i wyłączenie timera nie powinny zajmować aż tyle czasu w Bascomie żeby takie proste sterowanie...
Nie zrozumieliśmy się. "Ja bym cały termometr przeniósł do przerwania a resztę napisał w pętli." i nie stosował WAITMS. Zastosował bym licznik który liczył by w pętli do X i wyskakiwał do temperatury, poczym wracał bez Wait. Z tego co widzę to nie ma tu żadnego alarmu, więc 1 odczyt nie ma wielkiego znaczenia.
... albo ja coś pokręciłem. Pokręciłeś ;) W pętli Do...Loop masz instrukcję Waitms 100, więc jakim cudem cała pętla może się wykonać w 900nS czy też 900uS :?:
Widzę, że kolega zamierza ostro optymalizować swój kod, skoro dał 1wreset do podprogramu. Z tym, że skoro nie przekazuje do niej żadnego parametru to szkoda go deklarować i lepiej użyć Gosub. Druga spawa to jeśli jest zegar to zamiast używać waitms do wstrzymywania programu na czas konwersji to można by np. w sekundzie nieparzystej rozpoczynać konwersję,...
zarzuciłem do pętli głównej Stop Timer1 Waitms 5 Start Timer1 i przy tym TSOP-y nie reagują. Za długo siedzę przy tym i już głupieje od tego. Udało mi się uzyskać zasięg 50cm ale potrzebuję 100cm. :( cry
Dzięki ale teraz program niezwazywszy na to czy uSwitche są włączone czy nie i tak zawsze startuje odrazu. $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinb.2 , Db7 = Pinb.1 , E = Pinc.1 , Rs = Pinc.0 Dim X As Byte Dim Y As Byte Dim Z As Byte Dim Suma As Byte Dim S...
Witam, Z racji ograniczonej ilości portów, zostałem zmuszony do multipleksowania dwóch wyświetlaczy LED 7 segmentowych poprzez rejestr 74HC595. Na początku dla testów napisałem krótki programik. Program działa, lecz posiada jedno "ale". Mianowicie gdy w pętli głównej nie ma "waitms" wyświetlana liczba jest nieczytelna ponieważ zbyt szybko następuje...
Podawałem już moje rozwiązanie w temacie http://www.elektroda.pl/rtvforum/viewtop... przytoczę jeszcze raz: [syntax=basic4gl]Dim L_d As Byte Sel_p Alias PortX.Y '-------- ' ' ' '-------- If Sel_p = 0 Then 'klawisz Waitms 25 'najlepiej zastąpić przez timer programowy If L_d < 255 Then Incr L_d If L_d = 30 Then 'czekaj około 0,7s...
Witam. Posiadam programator usb-avr mogę nim programować wiele procesorów. Otóż mój kolega programuje attiny2313 bez problemu tylko posiada inny programator na stk. Problem polega na tym iz podłączam programator, płytkę mam dorobioną pod attina2313 wyjścia programatora wchodzą na odpowiednie piny attiny. Włączam program Bascom Avr. Wybrałem typ procka...
Grala1 - Nie wiem czy ta wersja spełni oczekiwania : '$prog &HFF , &HE1 , &HD9 , &H00 ' Fusebity fabryczne !!! $sim ' dyrektywa opuszczania zwłoki (usunąć ten wiersz przy wgrywaniu w chip) $regfile = "m8def.dat" ' dyrektywa kompilatora o rodzaju procka ATMega 8 $crystal = 16000000 ' określenie kwarca 16 MHz Config Pinb.1 = Output...
Juz po części przyśpieszyłem działanie dokładając miedzy dwa odczyty temperatury funkcje odczytu z bufora. teraz to wygląda tak: Odczyt z bufora odczyt temperatury 1 Odczyt z bufora odczyt temperatury 2 Pętla wcześniej było tak: Odczyt z bufora odczyt temperatury 1 odczyt temperatury 2 Pętla jednak nadal jak dla mnie czas reakcji jest za długi 1wreset...
Witam, nie mogę sobie proradzić z obsługą timer0 w przerwaniu. Zamiast wł/wył port po początkowym opóźnieniu co 0,5s ustawia się w stan wysoki i tak sobie świeci w nieskończoność. Co jest nie tak? Kod poniżej: $prog &HFF , &H73 , &HFF , &H00 $regfile = "ATtiny13.DAT" $crystal = 128000 Wyj Alias Pinb.1 'wyjście Config Wyj = Output 'ustawienie...
Przy tak prostym problemie nie ma siły żeby nie znaleźć przyczyny. A co się dzieje gdy np. zamiast wszystkich tych ustawień portx = blebleble,pętli do loop i waitms w petli wpiszesz po prostu jakąś wartość do rejestru port (tego na którym masz te feralne diody) tak żeby się któraś z nich zapaliła. Też się jarzy czy pali normalnie? W ogóle jak patrzę...
Witam. Jak wczytać zamiast wartości I (For I = 0 To 255), elementy tablicy i nimi wysterować wypełnieniem? Tab1: Data 94 , 61 , 115 , 13 , 97 , 127 , 73 , 79 , 127 , 127 , 119 , Data 107 , 127 , 95 , 89 , 64 , 255 , 65 , 0 , 100 , 90 , 65 , 60 , Data 127 , 125 , 60 , 70 , 80 , 0 , 65 , 90 , 65 , 0 , 78 , 63 , 10 , Data 3 , 10 , 28 , 15 , 60 , 127 ,...
To prawda że nie są to procesory wielordzeniowe. Windows może wykonywać kilka zadań "jednocześnie" pracując na procesorze jednordzeniowym ( pamięta ktoś może 386, 486, pentium 166 itp ? ) Zrobiłem kiedys program "wielozadaniowy" na at90s8535 polegało to na odczytaniu stanu interesujących mnie wejść w pętli głównej programu i wywołaniu odpowiednich procedur....
Czy ktoś uruchamiał atmege8 na kwarcu 32kHz a nie na wewnętrznym oscylatorze. Mam taki prosty programik "timer" który o danej godzinie włącza budzik i kolejno odlicza 2 a potem 1 godzinę. Urządzenie ma być zasilane z bateryjki i chcę zmniejszyć pobór prądu. '---------------------------------------... $regfile = "m8def.DAT"...
ATmega jest teraz na napięciu Vbat. Główna pętla programu wygląda tak : Do If Guzik_start = 0 Then Cls Lcd "Guzik down" Wait 1 Polecenie = "AT" Printbin Polecenie Else Cls If Ischarwaiting() = 1 Then Znak = Inkey() Lcd ">" ; Znak Else Lcd "Nic" End If Waitms 100 End If Loop End Niestety na komendę...
Witam, ............ Kiedy wentylator jest wyłączony, klikam szybko 2 razy przycisk, wtedy wentylator załącza się na 20 min. Tylko tyle umiem :) Jeżeli komuś nie chciałoby się mi pomagać to chociaż prosiłbym o wskazówkę jak Wiem że układy czasowe w uC są nie dokładne ale mi nie potrzebna dokładoność co do 1 sek :). Jeżeli zamiast 10 min będzie 9 albo...
Do jakis kodzik Loop until przycisk.0=0 to jest niestety najgorsze z możliwych rozwiązań nawet pod Bascomem. To już prędzej poradziłbym ci skorzystanie z Bascomowej funkcji Debounce, dzięki której będziesz sobie spokojnie obsługiwał klawisze a jednocześnie pętla główna nie będzie blokowana. Pomyśl sobie w tym kodzie powyżej ten "jakiś kodzik" wykonuje...
W takim razie nie trzeba żadnych rezystorów. Jeden koniec przycisku podłączasz do wybranego portu mikrokontrolera, a drugi do masy. W programie musisz dać "0" zamiast "1", ale to chyba wiesz sam. Przykładowo przycisk dołączony do PB1 ma zrobić podniesienie wartości I o jeden: $REGFILE="m8def.dat" $CRYSTAL=8000000 Config Pinb.4 = Output Config...
W pętli DO ... LOOP brakuje zwłoki , pomiędzy odczytem stanu "przycisków" za wyjątkiem przycisku "poz".WAITMS 300 przenieś na koniec pętli ... ... If Star = 0 Then Exit Do Waitms 300 Loop ... i zmień algorytm , bo .... kończy się pamięc programu proca (~2000 B) :D Do odczytu przycisków , spróbuj wykorzystać funkcje do tego przeznaczone. Piotrek
... Config Portd = &B00111111 'TXD i RXD = wyjście ??? Reset Portd.0 'RXD=0 po co ? Reset Portd.1 'TXD=0 na co ? Zastanów się co robisz :D Piotrek ok program po zmianach wygląda tak $regfile = "m16def.dat" $crystal = 14745600 $baud = 9600 Echo Off Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Enable...
Witam. Po pierwsze należy ustawić port tak : Config Portb.2 = Output Led Alias PORTB.2 Następnie w pętli powinno być : Do Led = 0 Waitms 100 Led = 1 Waitms 100 Loop
Witam! Mam problem z programem który podsyłam poniżej: // Dołączenie wymaganego pliku nagłówkowego #include <avr/io.h> // częstotliwość zegara w megahercach #define OSC 4 // definicja funkcji opóĽniaj±cej void waitms(unsigned char x) { unsigned char a, b; // zmnienne licznikowe for( ; x > 0; --x) // ta pętla zostanie...
Każda pętla DO - LOOP wykonuje się ponad 100ms (Waitms 100) czyli, aby We1 > 1000 musi minąć ponad 100 sekund. Jeśli w tym czasie We1 zostanie wyzerowane, to startujemy znów od początku.
Procesor nie może realizować 2 pętli jednocześnie (a szkoda;) ) dim a as bit, b as bit do waitms 20 toggle b if pind.0 = 1 then a =0 else a = 1 end if if a = 1 then portb.0=b else portb.0=0 end if loop Powinno działać ale sprawdz :)
Ja mam inny problem, ale również z tym kodem. Otóż mam podłączone dwa wyświetlacze zamiast czterech. Jak robię pętlę to dzieje się coś dziwnego. Układ działa dobrze tylko wtedy jak dam w pętli Wait 1. Jak dam nawet waitms 1000, to już na ekranie jest 00 Co to może być?
wywal to $sim , jak pakujesz program do procesorka... ;) Przeznaczenie: Instruuje kompilator by nie generował pętli opóźniających dla instrukcji WAIT czy WAITMS. Spowoduje to zwiększenie szybkości symulacji.
Witam ! Czy ten program działa poprawnie ? Jeśli źle działa, wprowadź opuźnienie do każdej pętli If....End if If Command = 1 Then Toggle Porta.0 waitms 500 End If Pozdrawiam. Stefan amator GG6293398
witam. Kol.Seb jeśli stosuje się zestaw podstawowych słów w bascomie, unikając gotowców i tworząc własne procedurki, to można napisać sensowny program i w bascomie tak jak w C i nie będzie robił dziwnych rzeczy. A co do pomocy w temacie to już ją uzyskałeś, tak jak napisano unikaj waitms itp. opóźnień, zrób sobie swoją pętlę opóźniającą w której coś...
Witam Wykonałem dla siebie układ naszego kolegi z forum Manekinena, z tematu: [url=http://www.elektroda.pl/rtvforum/to... Potrzebuję pomocy przy gotowym programie w Bascom, który udostępnił, mianowicie po wrzuceniu na Attinkę program wykonuje wyłącznie pętlę kolorów. Kompletnie nie reaguje na temperaturę, ani nie wygasza się w temperaturze...
Witam wszystkich. W ramach podstaw nauki programowania w bascomie siedzę nad książką"Mikrokontrolery dla początkujących". Jest to doskonały podręcznik. Wykonując poszczególne ćwiczenia postanowiłem utrudnić sobie życie i wprowadzić zmianę do ćw. C011c polegającą na wyprowadzeniu sygnału sterującego tranzystorem i przekaźnikiem załczającym oświetlenie...
Polecenia Wait, Waitms i Waitus nie wstrzymują procesora. "A kto tak mówi?" Na pewno nie cytat który zamieściłem. Przerywanie jest jedynie wykonywanie się TWOJEGO programu. To samo mówi mój cytat oprócz określenia "TWOJEGO". Sądzę, że to powinno sporo wyjaśniać początkującemu, a zwłaszcza początkującemu, dla którego "program" to jest to, co sam napisze....
cls daj przed pętla (przed do) po nim daj waitms 255 i zmień waitms 500 na dwa polecenia waitms 250. Co do uperline to zmień na locate 1,1:lcd"tekst do wyświetlenia" z wsatwionymi spacjami tak aby długość całego tekstu odpowiadała długości wyświetlacza.
Możesz zrobić to tak: Dim Zmienna As Word Do If Pinb.0 = 0 And Pinb.1 = 0 Then Incr Zmienna If Zmienna = 20 Then Portd.0 = 1 End If If Zmienna = 21 Then Portd.0 = 0 End If If Zmienna = 22 Then Zmienna = 0 Else Zmienna = 0 End If Waitms 100 Loop Zmienna jest liczona do 20 czyli ok 2 sekund, ponieważ 20 x Waitms 100 = 2000. A 2000 ms to 2 sec. W pętli...
Jasne, że się da :) np tak: If Pind.1 = 1 And Pind.2 = 1 Then Waitms 500 'oczekiwanie żeby odrazu nie wyjść z pętli Do 'nieskończona pętla Lowerline 'ustawienie kursora Lcd "Histereza:" ; H ; Chr(0) ; "C" 'wyświetlenie histerezy If Pind.1 = 1 Then 'jeśli guzik wciśnięty to zwiększ H = H + 1 Waitms 200 'odczekaj chwile,...
Witam Czyli mignąłem diodą1 i diodą2 na przemian, i chciałbym tak migać przez 10 sekund a następnie migać diodą3 oraz diodą4 w ten sam sposób powiedzmy przez 15 sekund i spowrotem dioda1 i dioda2... Jak to najprościej zapisać? Możesz to osiągnąć na kilka różnych sposobów. Najpierw zrezygnuj z odmierzania czasu processorem ( "Waitms" ! ). W tym układzie...
Znalałem coś takiego. Dim Pom As Single : Dim W As String * 4 'zmienne pomocnicze Const X = 0.004791 'przybliżony współczynnik korekcji - mnożnik Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down Cls Do 'pętla nieskończona Incr Pwm1a : Waitms 5 'zwiększ licznik o poczekaj aż napięcie się ustabilizuje If Acsr.5 = 0 Then...
Waitms jest w pętli po każdym zwiększeniu zmiennej X i zmiana jego wartości ustala maksymalną częstotliwość pracy czyli prędkości obrotowej i przy zapisanej wartości pozwala na max obroty, poniżej 4ms silnik wpada w rezonans...
Witam wszystkich! Mam taki problem.... 'C026a.bas Zmiana jasności diody LED Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down Cls 'czyść ekran Lcd "EdW" 'wyślij napis Lowerline 'kursor do dolnej linii LCD Lcd "Cwiczenie 26a" 'wyślij napis 'czekaj 3 sekundy Do 'pętla nieskończona Incr Pwm1a 'zwiększ zawartość rejestru OCR1 If...
1. Zrób każde zadanie jako oddzielny "wątek" pętli głównej. 2. Kod musi być nie blokujący. Wyczyny typu "waitms" przecz...
Temat zamknięty. Układ działa i nie trzeba podłączać RDY/CLK. Wielokrotna modyfikacja programu jak i zmiana podłączenia czytnika RFID. Ostatecznie podłączony został pod PD3,4,5. Znajdę czas to sprawdzę wcześniejsze piny. Pozdrawiam i dziękuję za wszelką pomoc. :) Dodano po 53 Jedno pytanie mam jeszcze w sprawie programu. po naciśnięciu przycisku zaczyna...
Jest tak dla tego żeby można było dokładnie przeanalizować działanie programu. Cytat z pomocy Bascom'a: Dyrektywa $SIM rzeznaczenie: Instruuje kompilator by nie generował pętli opóźniających dla instrukcji WAIT czy WAITMS. Spowoduje to zwiększenie szybkości symulacji. Składnia: $SIM Opis: Symulacja instrukcji WAIT może trwać dość długo, zwłaszcza gdy...
Po prostu podwójne badanie wciśniętego key... Chyba najbardziej znane rozwiązanie (nie koniecznie najlepsze!): [syntax=basic4gl]If Portb.0 = 0 Then Waitms 25 If Portb.0 = 0 Then 'instrukcje które mają się wykonać po wciśnięciu klawisza ' End If End If[/syntax] Co istotne - wciśnięcie klawisza w takim rozwiązaniu spowolni główną pętlę o 25ms (podobnie...
Chciałbym jeszcze przenieść znaki specjalne do eeprom. Próbowałem takiego kodu; [syntax=basic4gl] Dim X As Byte _temp1 = &H40 Gosub _lcd_control For X = X To 32 Readeeprom _temp1 , X Gosub _write_lcd Next ... $eeprom Data 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 Data 17 , 19 , 17 , 17 , 17 , 16 , 28 , 32 Data 23 , 17 , 23 , 20 , 23 , 16 , 28 , 32 Data...
Witam, zbudowałem duży zegar z pasków Ledowych, sterowany przez Atmega16. Napisałem do niego program sterujący, który niby działa ale ma 2 mankamenty. 1. Zegar wydaje się działać niedokładnie pomimo dodanego zewnętrznego kwarcu 16MHz. 2. Segmenty które w danej chwili powinny być wyłączone (np środkowy przy wyświetlaniu 0) nie wyłączają się do końca,...
W załączniku skompilowany wsad do Attiny 2313. W nowym procku żadnych fusów nie trzeba przestawiać. Schemat jak wspominałem naszkicowany i nie mam zamiaru go przerysowywać. Gdyby jakieś pytania były to odpowiem na bieżąco. Program jest prosty i nie ma tam cudów. Wszystko opisane w komentach gdyby ktoś chciał go nieco przystosować do swoich potrzeb....
Zle kombinujesz. To jest tranzystor bipolarny, a takie wzmacniaja prad, a nie napiecie. Napiecie jest kwestia wtorna. Dlatego potrzebujesz uklad, ktory nie zwiekszy napiecia na bazie, tylko prad bazy. Moze to byc op-amp, ale zamiast tak komplikowac lepiej wstawic bufor, np. w postaci kolejnego tranzystora. Tu tylko pojawi sie problem, bo w ukladzie...
Powodem bylo: waitms 1000 zmienilem na 250 i problem zniknoł :) Pozdrawiam !!
Możesz spróbować jeszcze tak: Saa: Dat = 0 Ena = 0 Clk = 0 Waitms 5 Ena = 1 Waitms 5 Clk = 1 Waitms 5 Clk = 0 Waitms 5 Shiftout Dat , Clk , Wpis , 1 , 16 , 2 Ena = 0 Waitms 5 Clk = 1 Waitms 5 Clk = 0 Waitms 5 Ena = 1 Waitms 5 Dat = 1 Clk = 1 Waitms 100 Return End przesuń pod Loop pętli głównej.
Witam Chcę w swoim projekcie mieć przekaźnik , ale pojawiła się następująca wątpliwość dotycząca ciągłości pracy ze względu na wykonywanie kolejno instrukcji programu. Aby dokładniej zobrazować co mam na myśli poniżej przedstawiam SZKIELET prostego programu, w którym brakuje paru sformowań , ale wystarczy to do tego ,aby zrozumieć co mam na myśli. BLOK...
to inaczej - jak to wpisać żeby to niebyła pusta pętla tylko żeby program czekał poprostu pewną wartość czasu BASCOM
Witam. Mam program, który działa w pętli DO..LOOP typu: DO ... IF warunek THEN procedura ... LOOP przerwanie: ... return sub procedura ... end sub Procedura wywołana w pętli głównej ma opóźnienia na WAITMS. Chciałbym przy pomocy przerwania (przycisk) zrezygnować w dowolnym momencie z wykonywania 'procedury' i wyjść z jej obsługi do pierwszej instrukcji...
Zastanawiam się nad tym, żeby np. zapalić diodę na np. 3 sekundy i wykonywać dalej program. Ale chodzi mi o zapalenie diody, dalsze wykonywanie programu i po 3 sekundach zgaszenie jej. Waitms 1000 - odpada, bo zatrzymuje program. Może jest jakiś inny sposób? Pętle i zliczanie zmiennych? Trochę zabawy. Może jakiś inny sposób. Oczywiste dla mnie jest...
Przerobiłem kod na Atmega8. $regfile = "m8def.dat" $crystal = 1000000 Config Pind.3 = Output Led Alias Portd.3 Led = 0 '///pętla główna Do Toggle Led Waitms 125 Loop End Kod kompiluje się ale nie mogę go wgrać do procesora żadnym programem. Np AVRStudio radzi abym sprawdził połączenia. Dowolny inny program skompilowany z C ładuje się bez problemu....
Witam mam zamiar zrobić termostat na ATMEGA8 + LCD 2x16 (testowo mam 2x24) i DS18B20. Napisałem program, wgrałem go dla sprawdzenia do mojego zegarka z budzikiem i zamiast przekaźnika załącza mi buzzer. Jedyne 2 problemy jakie napotkałem to problem ze zrobieniem histerezy, tak aby nie włączało mi co chwilę przekaźnika. Chcę aby histereza wynosiła 0,5°C....
pobaw sie ze wstawianiem w niektorych miejscach 'cls'. np przed ostatnim Waitms 250 przy wyjsciu z pętli i gdy wyswietlasz lcd "km/h" daj lcd "mk/h . . ." wtedy dodatkowe spacje zasłonią śmieci ktore zostały jeszcze na wyświetlaczu
Ja też miałem takie cyrki z przerwaniem. napisałem więc program w ten sposób: '///////////////////////////////////////... '////////// TERMOSTAT /////////////// '///////////////////////////////////////... $crystal = 4000000 'rezonator 4MHz $regfile "attiny2313.dat" 'attiny 2313...
A spróbuj zamiast "Waitms 200" wstawić "wait 1"
Jeśli DS'y masz podłączone 2 przewodowo to między pomiarami musisz odczekać około sekundy (jak sprawdzałem je w każdej pętli programu to wychodziły mi różne śmieszne rzeczy) , poza tym czas konwersji to około 750ms a ty masz chyba 800 ale us a nie ms (chyba że us to nie są mikrosekundy) ja mam waitms 750. Przy podłączeniu 3 przewodowym mogę sprawdzać...
Konfigurujesz przerwanie zewnętrzne: dim flaga as bit config portd.4 = output 'przykładowo na ten pin reset portd.4 Config Int0 = Rising Potem On Int0 przerwanie Enable Int0 Enable Interrupts gdzies w pętli: If flaga = 1 then set portd.4 = 1 waitms 10 reset portd.4 reset flaga end if Za petlą Przerwanie: set flaga Return To najprostszy prymitywny...
Witam, proponuję przede wszystkim zrobić odbieranie kodów z pilota na przerwaniach: najpierw deklaracja na początku: On Int1 Int1_rc5 ' obsługa odbioru kodów z pilota Getrc5 Config Int1 = Low Level ' wyzwalanie przerwania niskim poziomem Enable Int1 czyli podłączasz odbiornik IR np do nogi INT1 Int1_rc5: If Flaga_rs = 0 Then Disable Int1 Enable...
Czy dobrze tłumaczę warunek "IF", z Bascoma na CC++ ? [syntax=vbnet] if zw=0 then gosub programowanie [/syntax] [syntax=c] if (zw=0){ programowanie(); } [/syntax] I pętla for: [syntax=bash] for r=1 to 200 Toggle ( pin wyjściowy ) waitms 100 [/syntax] [syntax=c] for (int r=1; r=200;){ digitalWrite(6, LOW); delay(100); digitalWrite(6, HIGH); delay(100);...
Witam. Posiadam inkubator i sterownik do niego. Wszystko jest okej gdy program działa na wait'ach. Chcę przepisać go do przerwania na timerze ale program mi się zawiesza po wgraniu. Po uruchomieniu nie zawsze pokaże temperaturę, po wyjściu z "menu" również czysty ekran zamiast pomiarów. Cała konstrukcja składa się z: *czterech przycisków Sw1-Sw4 *dwóch...
Po co ci w procedurze nieskończona pętla? [syntax=basic4gl]Koniecczasu: Disp(1) = 0 Disp(2) = 0 Disp(3) = 0 Disp(4) = 0 Disp(5) = Kod(1) Disp(6) = Kod(2) Disp(7) = Kod(3) Disp(8) = Kod(4) Waitms 200 Do 'Tu masz nieskończoną pętle. Loop Return[/syntax]
Zrób tak: 1. Usuń to: Do Debounce S1 , 0 , Mnu , Sub Debounce S2 , 0 , Cent , Sub Loop 2. To przenieś przed główną pętle programu Cls Lcd "MaxDamage" Waitms 500 Lowerline Lcd "maxdamage17(małpa)interia.... Wait 4 For I = 1 To 20 Shiftlcd Left Waitms 500 Next I Cls Lcd "-=xxxxxxxx=-" Lowerline Lcd "xxxxxxxxxxx"...
Jeśli termometr będzie w przerwaniu np co 1 sec, to możesz usunąć : " Waitms 750 'przeczekaj czas konwersji" To opóźnienie będzie tylko spowalniało powrót do pętli głównej. Konwersja i tak się dokona bo przecież program będzie tam skakał co sekunda. Różnica jest tylko taka, że przy pierwszym włączeniu zasilania do układu termometr pokaże 85 stopni....
pętla diody zamiast waitms timer0 attiny waitms
blaszka zaworowy schemat picasso xsara soundbar onkyo
czujnik zmierzchu podlaczenie pralka gorenje usterki
Jak zdemontować zabierak w sokowirówce Julita? Głośniki Unitra ZGZ-10/1 Tonsil nie działają z Radmor 5102