E tam, nic strasznego.... Tu masz błąd: Dim U_wy As String * 2 Zwiększ to na: Dim U_wy As String * 3 I leci aż miło. Nie mieścisz się w zmiennej, that's all:) Poza tym skonfiguruj watchdog oraz TIMER. Pewnie jeszcze coś tam siedzi (wyświetlanie bez wymazywania poprzednich, większych o rząd wartości na przykład) ale to tak na szybko. Pozdrawiam, TD
Witam. Mój problem polega na tym że po pomnożeniu ułamka przez 1000, nie mogę pozbyć się kropki i zera po liczbie. V_3 = V_3 * 1000 V_3 = Int(v_3) V_3 = Round(v_3) ...... Lowerline Lcd " " ; V_3 ; "mA " Jak to mozna zrobić inaczej ? please :)
Jak można w Bascom x51 zmieniać (przesuwać) długość liczby wyświetlanej na LCD. Przykładowy program przedstawia problem. Jak przechodzę z liczby 100 na 99 to pozostaje nie potrzebne zero na wyświetlaczu , a jak przechodzi z 10 na 9 to pozostają dwa zera. Kolejny problem którego chcę się pozbyć to kreska za wyświetlaną liczbą „_”. Dim I As...
Witam Potrzebuję zaokrąglić liczbę zmiennoprzecinkową do liczby całkowitej (do późniejszego wyświetlenia na wietlaczu LED (rozbijanie liczby na pojedyncze cyfry działa poprawnie). Do tego celu wykorzystałem funkcję Round. Zgodnie z instrukcją Bascoma należy zrobić to tak: [syntax=vbnet] dim A as Long, B as Long A=Round(B) [/syntax] Rozumiem, że gdyby...
A spróbuj tak: Odczyt=Temp Dim Jednostki As Byte , Dziesiatki As Byte ' cyfry do wyświetlania temperatury Dim Temp As Byte ' temperatura Dim Pompka As Bit ' sterowanie pompką Dim Odczyt As Byte Dim Cyfrybcd As Byte Dim Ktorywysw As Bit Enable Interrupts ' oblokuj przerwania Enable Timer0 'odblokuj timer0 Enable Timer1 'oblokuj timer1 Config Timer0 =...
Tak. Powyższy program będzie działać. W zmiennej A będziesz miał numer naciśniętego klawisza.
Wiec zrobiłem to tak: [syntax=vbnet] Dim Piloty As Byte Dim Old_piloty As Byte Dim Klawisze As Byte Dim Old_klawisze As Byte Dim Licznik_kasuj As Byte Dim Flaga_kasuj As Bit Zeruj_klawisze Alias 250 Zeruj_piloty Alias 0 Klawisze_1 Alias Klawisze.0 Klawisze_2 Alias Klawisze.1 Klawisze_3 Alias Klawisze.2 Klawisze_4 Alias Klawisze.3 Klawisze_5 Alias Klawisze.4...
kolega może mieć racje jeśli chodzi o napiście zasilania. magistrale I2C jest typu otwarty kolektor i musi być zasilana z 5V. co do rezystorów to w różnych żródłach piszą różne żeczy gdzieś czytałem o 4,7k gdzieś nawet o 10k i o 1k też coś było. z tego wynikż że to mam małe znaczenie. ja używam 4,7k i działa ale wcale nie mówie że to poprawna wartość...
Po co ciągle konfigurować tego ESP? Mojego skonfigurowałem raz. Teraz jak podłaczę do niego terminal to po włączeniu/resecie sam loguje sie do mojego routera. Sam pisze, że WIFI CONNECTED i WIFI GOT IP Czyli dokąd nie zmieni się sieci WiFi to nie trzeba konfigurować, ewentualnie po otrzymaniu WIFI GOT IP można zapytać jeszcze o IP - "AT+CIFSR", no...
Witam! siedze i siedze i nie wiem dlaczego karta po inicjalizacji odpowiada inaczej niz powinna : $regfile = "M8def.dat" 'typ mikrokontrolera Dim Temp As Byte 'zmienna pomocnicza $hwstack = 64 'wartosc stosu $swstack = 64 'wartosc stosu $framesize = 64 'wartosc ramki Config Pinc.1 = Output 'konfiguracja linii PC.1 jako wyjsciowej Config Spi...
Możliwe sugerowałem się tym, że niezależnie czy po wpisaniu Reset Pinb.1 lub Reset Portb.1 i wrzucenia do uC działanie było takie same. Nawiązując do mojego problemu, próbowałem zmieniać w poprzednich kodach port na pin tak jak radził "piotrva" jednak nie przynosi to efektu. Nadal mam problem z uruchomieniem tego obrotomierza. EDIT: Jest jakaś poprawa,...
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
Można zerować, ale nie trzeba, bo każda instrukcja, która ją "obsługuje" i tak ją wyzeruje jeśli nie ma błędu lub ustawi po błędzie.
Nie lepiej zerować przez RS'a zmienną która zlicza impulsy ?
Usuń znaczek hash i nazwę zmiennej umieść w nawiasach klamrowych. Będzie odwołanie do pamięci, a nie ładowanie stałej. Oczywiście pisze o tym w pomocy, ale szukać się koledze nie chce. :bad-words: Można uzyskać dostęp do zmiennej umieszczając jej nazwę w nawiasach klamrowych { }. By mieć dostęp do bajtu MSB zmiennych Integer/Word, należy użyć formy:...
Banalne zadanie. A więc włączasz licznik(lepiej TIMER1-większa pojemność), tak, aby odliczał ci te 10sekund. Dajesz zmienną którą zwiększasz np co 1sekunde (zmienna o nazwie sekundy). W czasie odliczania do 10s w pętli głównej zliczasz impulsy przycisku i zwiększasz je w innej zmiennej (np. impulsy). Po 10 sekundach w zmiennej sekundy będzie10s a w...
[syntax=basic4gl]If F1s = 1 Then Ilosc_wcisniec = Zmienna_pom Zmienna_pom = 0 Reset F1s End If[/syntax] Tu jeszcze mały błąd bo brakło zerowania flagi 1s i ma być porównanie z 1 a nie 0.
AVR nie traci zawartości pamięci przy resecie. Więc jeżeli program nie będzie jej zerował, rozwiązanie jest pewne. Inna sprawa, że w tym wypadku sugerowałbym, by watchdog nie robił resetu, tylko wywoływał przerwanie. Co to będzie za układ?
Odczytać musisz cały port B a potem zerować 3 najstarsze bity bo one mogą powodować zamieszanie. Zmienna oczywiście bajtowa. porównujesz potem zmienną z konkretnymi wartościami. Czyli masz 16 warunków sprawdzających jaki klawisz został wciśnięty.
robisz to za każdym razem tak : 1. Zerujesz rejestr/zmienna w której chcesz miec wynik. 2. Przesuwasz rejestr/zmienna o 1 bit w lewo bez rotacji. 3. Jeśli P1.1 = 1 to ustawiasz najmłodszy bit w rejestrze/zmiennej, jeśli nie to zerujesz (poprostu dodajesz zawartość pinu do rejestru/zmiennej) 4. Jesli ni eodebrałes jeszcze 8 bitow to skocz do 2. Pozdrawiam...
Kodu niestety wkleić nie mogę, ale dlaczego ma być źle napisany, skoro potrafi tydzień działać bez zarzutu, a potem nagle zeruje zmienną....???
kiedyś robiłem podobny programik i chciałem powiedzieć że brakuje ci jednej żeczy a mianowicie na początku pętli za każdym razem należy zerować zmienną err . bascom ustawia ją w przypadku błędu ale nie zeruje w przypadku powodzenia.
... co do resetu to : Reset zeruje tylko zmienna globalna a zmienna lokalna pozostaje nie ruszona :) Ze tez tego nie moglem sie nigdzie doczytac... Przestrzeń w pamięci RAM na zmienne lokalne , jest przydzielana dynamicznie i dla tego nie są one zerowane , bo w czasie kompilacji ich położenie(adres w pamięci) nie jest znane. Bascom również nie zeruje...
Ano właśnie - bardzo dziękuję !
Może odpal jakiś Timer żeby generował przerwanie bardzo często. Powiedzmy co 10us. I w przerwaniu sprawdzaj czy pin ma stan 0 czy 1. Jak 1 to inkrementujesz jakaś zmienną. Jak zmieni się na 0 to zwracasz wynik i zerujesz tą zmienną. Oczywiście w tym samym przerwaniu sprawdzaj tak samo drugi pin. Niestety wymaga to kodu obsługi przerwania w assemblerze...
Pewnie niewiele pomogę ale zrób to na zasadzie nadpisywania ekranu. 1. Zrób ekran z opisami 2. wykryj przyciski pilota i przypisz flagi, np. góra, dol, lewo, prawo - zakładając, że przycisk włączony to 1 a wyłączony to 0 3. sprawdź flagi i gdy np. góra=1 to; powtórz punkt 1 ale już z innymi opisami. 4. Nie zerujesz zmiennej góra, zerowana jest dopiero...
Rozwiązanie Twojego problemu jest banalne. Na początek proponuję wykorzystać zmienną, która jest zwiększana przy każdym wciśnięciu przycisku i w zależności od wartości tej zmiennej (tu wystarczy od 0 do 3, przy wartości 4 zmienna jest znowu zerowana) ustawiasz jedynkę na odpowiednim porcie jednocześnie uruchamiając zliczanie. Kiedy licznik dojdzie do...
Dim Empty As Eram Byte At 0 Dim Tzap1 As Eram Single Dim Ua As Eram Byte Dim Ub As Eram Byte Dim Uc As Eram Byte Dim Ud As Eram Byte Czy to jest wszystko co powinienem zrobić.?. Czy powinienem jeszcze używać dyrektyw typu np $eeprom i $data ?. Czy wręcz odresować bezpośrednio tą pamięć zapis/odczyt?. A powinno być takie proste, ale nie jest, więc w...
robiłem tak i nic. Może zmienne string tzrba jakoś inaczej zerować?
Robisz sobie dwie zmienne: blokada i aktywność. Blokada jako prosta wartość 0 lub 1: jeśli blokada jest założona i wykryjesz, że oba przyciski są naciśnięte, to ustawiasz blokadę na 0 (i aktywność na 0, dodatkowo można dać opóźnienie, aby nie uwzględniać naciśniętych przycisków dalej). Jeśli blokada jest zdjęta, to robisz wszystkie testy, dodatkowo...
No na modyfikację nie mam czasu. Zwłaszcza, że już dawno nic nie pisałem. W dodatku ja nie używam wait (i Tobie też odradzam) co wymaga trochę innego podejścia do pisania programu. Mogę jedynie podpowiedzieć, że najlepiej było by skorzystać z przerwań INT0 i INT1 podłączonych pod przyciski. Wtedy przerwanie aktualnego zadania było by możliwe natychmiast....
Chyba dokładniej się nie da skomentować ;) Powinno być już wszystko jasne... [syntax=basic4gl]Do ' pętla główna jakiegoś programu ' ' ' tu jest badany przycisk If P = 0 Then 'czy wciśnięty przycisk (P to pin procesora od guzika) If Lk = 0 Then 'czy licznik programowy doliczył już do zera Lk = 50 'jeśli tak to ustaw znowu na 50ms ' (można też nieco mniej,...
Witam ! Cytat: .....na końcu zerowałem zmienną. Nie ma tego w programie. Pozdrawiam. Stefan
Jeśli chcesz zrobić wait na liczniku to możesz uzyskać dwa efekty. W obu ustawiasz w przerwaniu flagę. Pierwszy do instrukcja czekaj aż flaga będzie ustawiona wykonuj dalszy ciąg programu loop Generalnie w takim rozwiązaniu nie ma sensku dawać timera. Druga opcja do instrukcja if(flaga ustawiona) reszta kodu loop Oczywiście drugie rozwiązanie...
Można sobie ułatwić robote na kilka sposobów.Użyć aliasów zamiast definiować zmienne bitowe: Dim Przekazniki As Byte Pk0 Alias Przekazniki.0 Pk1 Alias Przekazniki.1 Pk2 Alias Przekazniki.2 Pk3 Alias Przekazniki.3 Pk4 Alias Przekazniki.4 Pk5 Alias Przekazniki.5 Pk6 Alias Przekazniki.6 Pk7 Alias Przekazniki.7 Set Pk0 'tak ustawiamy bit Reset Pk5 'tak...
Prosze bardzo: 'Program regulujący prędkość obrotową silnika DC 12 V 'Do sterowania wykorzystano sygnał PWM 'Częstotliwość przebiegu PWM ok. 254 Hz - 8 MHz/510/64 'Przycisk S1 zwiększa prędkość obrotową silnika 'Przycisk S2 zmniejsza prędkość obrotową silnika $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal...
Nie wiem czy dobrze kombinuję: Czego tu jeszcze brakuje? Bo w symulatorze nie działa, tzn nie zwiększa zmiennej scnt. Spróbuj uruchomić Run programu w trybie "Step into Code" (F8) aby przekonać się że zmienna jednak za każdym razem inkrementuje się, ale także się ona zeruje bo zaczynasz program od początku (tam gdzie zostaje wysłany przez Return, zgodnie...
Panowie, przecież BASCOM podczas symulacji podaje czas i ilość cykli maszynowych. Wystarczy posprawdzać i zpisać sobie. Na przykład, standardowy startup (bez LCD) dla Mega8 trwa 6149 cykli maszynowych (zerowanie pamięci, ustawianie stosów, reset zmiennych BASCOM). Z drugiej strony nie po to BASCOM budowano tak jak jest, by wnikać aż tak bardzo w kod....
Coś mi się wydaje, że kol. xPatryk chodzi o to, że układ się resetuje, ale cały czas jest zasilany (chyba, że się mylę). A w takim przypadku dane wystarczy umieścić w pamięci SRAM, która nie jest czyszczona w trakcie resetu, więc dane w niej zapisane nie zmieniają sie po resecie. Jednak, kompilatory wysokiego poziomu (nie wiem jak robi to BASCOM) często...
A po przepełnieniu co się dzieje ze zmienną err? Mam ją ręcznie zresetować? Po przepełnieniu licznika on się zeruje automatycznie?
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...
Zmiennej Napiecie nigdzie nie zeruję i to by mogło być przyczyną? Jak najbardziej.
Przetwonnik zlicza napięcia tylko do 2047, pokazując ujemne napięcie nie ma znaku minus i wartość, tylko np 65320. Czyli przetwornik zwraca wyniki w kodzie U2. Tam nie ma znaku minus. Jest za to przesunięcie poziomu. Najprościej mówiąc, zastosowanie takiej funkcji do konwersji: Napiecie = Zmierz1 * 256 Napiecie = Napiecie + Zmierz2 da Ci złe wyniki....
Przeorganizowałem twój kod z pierwszego postu bo w tym z dzieleniem i modulo to może działać ślamazarnie. Jeśli ci pasuje oczywiście. Licznik obsługuj w przerwaniu timera. A zmieniaj tylko wartość zmiennej za pomocą przycisków. To musisz sobie dopisać. Gdyby obliczenia w przerwaniu były za długie, przenieść je do głównej pętli, ale tutaj zawsze będzie...
Hmm. Nie wiem jak. Bascoma uczę się od dopiero 2 dni. Może kolega podać jakiś przykład? 1. Do rozpoznania naciśniętego przycisku zastosuj "DEBOUNCE" 2. Do pomiaru czasu w multiplexing zastosuj dowolnyTimer (może byc timer1, skoro już zacząłes go używac). Dla ławości rachunków zastosuj podstawowy czas pomiaru 4 mSec. Co 4 mS zrobisz multiplexing cyfr...
Pomysł z tym programikiem jest dobry ale lepiej zrobić tak aby wykorzystać przerwanie od uart'u od danych przychodzacych. W obsłudze tego przerwania robimy taki myk że gdy przyjdzie znak "$" to niech sie zeruje licznik (wskaźnik pozycji) i każda nastepna dana z portu niech będzie zapisywana do nastepnej zmiennej. Potem można z tych zmiennych wyciągnąć...
Stwórz w programie głównym zmienną licznika 'Buzer' zwiększaną co jedną sekundę Po doliczeniu do 10 zeruj itd...
Jeśli chcesz aby np. dwie diody mrugały z różną częstotliwością to w najprostszy sposób możesz to zrobić tak: na początku pętli głównej dajesz małe opóźnienie powiedzmy 5ms. Potem w każdym obiegu pętli (co 5ms) zwiększasz wartość dwóch zmiennych np. Licz1 i Licz2. Kiedy Licz1 osiągnie wartość 50 wtedy zerujesz ją i zmieniasz stan pinu do którego dołączona...
Witam To nie jest skomplikowana sprawa. Deklarujesz zmienne kontrolne które beda zmieniału swoją wartość po wykryciu 0 na pinie. dim kontrolka1 as byte dim kontrolka2 as byte kontolka1 = 0 ' najpierw je zeruje kontrolka2 = 0 ' / Teraz musisz dodać jakies warunki które bedą powodować zmiane ich wartości If pind.0 = 0 then kontrolka1 = 1 then wywołaj...
Kwarc dajesz np. 12 MHz Robisz sobie pętelkę pomiarową wywoływaną z Timera np. co 200 µs sprawdzającą dane wejście pomiarowe. Jeżeli wejście jest =0 to nie zliczasz jeżeli = 1 to zwiększasz zmienną WYNIK o 1 (zmienna 16 bitowa) zakres będzie do jakichś 6.4 sekundy. W pętli sprawdzasz także czy zmienna nie przekroczyła 25000 (5 sekund). Jeżeli...
Rozumiem o co ci chodzi tylko nie potrafię ubrać tego w język BASCOM. Wiem że muszę naliczać zmienną 4 razy następnie ją zerować i wartością zmiennej będą case-y. i tak będzie sobie przełączać. Ale co zrobić ze zliczaniem impulsów częstotliwości pulein ? też w case-ach ją podawać ? znalazłem także super projekt http://mirley.firlej.org/sterownik_tasmy...
Kolego M.S chodzi mi o sam pinB.3, brak procedurt zerowania Kolego bkwrzos potrzebujesz zmienna a nawet dwie zmienne.
zerowanie zmiennej zmiana zmiennej bascom bascom ustawienie zmiennej
przesyłać audio deklaracja zmiennych komputer salonu
diagbox peugeot bateria milwaukee
Procesor czterordzeniowy do Acer Aspire 7730G: kompatybilność i wymiana Optymalizacja pieca Termet Silver Pro bez czujników