Funkcje wait (waitms) w BASCOM nie blokują i nie resetują watchdoga. Wyłączanie watchdoga w czasie odczekania może prowadzić do sytuacji, gdy wchodzące w tym czasie zakłócenie zablokuje nam na stałe procesor. Dlatego lepiej wstawić pętelkę z resetowaniem watchdoga i zostawić watchdog włączony: for i=1 to 3 reset watdog wait 1 next
a czy wywołanie funkcji jest ok? Bo mnie chodzi o to aby funkcja liczyła reszte z dzielenia. Nie wiem czy jest ok, bo nie podałeś tej części kodu :) Sprawdź czy działa tak jak zakładałeś.
...a tak z innej beczki nie działa taki np zapis: if Scanstrsp(tekst, ":") = "dane" then tylko muszę to robić tak: a = Scanstrsp(tekst, ":") if a = "dane" then czyli w warunku nie można tak użyć argumentu funkcji - szkoda (albo znowu czegoś nie wiem). Za to tak działa ;) a="dana"...
Funkcja WAITMS nie jest odporna na przerwania. Jeśli masz jakieś to każde wystąpienie przerwania w trakcie WAITMS rozjedzie go. Niezależnie od stabilności tej funkcji, a nie ma powodu, żeby nie była powtarzalna jeśli nie jest przerywane wykonanie przerwaniami, to i tak lepsza praktyką będzie wykorzystanie timera.
To nie jest żadna składnia Timera tylko lista zmiennych. Dim to skrót od Dimension. Pisząc Dim Zmienna As Byte opisujesz zmienną że będzie jednobajtowa i tak trzeba opisać każdą. Co do chwilowego wyłączania diody D1 to to dopisałem. Zadbałem też o poprawną polaryzację D3 przy naciskaniu. Niedobrze jest tak nie znać wszystkich założeń programu i potem...
A Twój program nie chce działać? Jaki jest problem. To co w programie masz nieprawidłowo to odczyt stanu przycisku. Procedura odczytu przycisku powinna przewidywać takie sytuacje jak drgania styków lub przypadkowe zakłócenia na linii przycisku. Jedną z możliwość odczytu przycisku jest: [syntax=basic4gl]If Wejscie = 0 Then Waitms 100 If Wejscie = 0 Then...
Zainteresuj się funkcja Printbin oraz podziel dane na osobne bajty.
W tym kodzie jest błąd: Load Timer0 = 250 jest niepoprawnie zapisane bascom nie krzyczy błędem ale ta składnia nie działa. Powinno być Load Timer0, 250 Ta funkcja ładuje do timera wartość 256-wartość, czyli w twoim wypadku 6.
Panowie, to Bascom. Musiałbyś dorwać się do kodów biblioteki w ASM i zobaczyć jaka funkcja w ASM jest odpowiedzialna za reset komunikacji z LCD i jego inicjalizację i ja cyklicznie wywoływać. Bez tego w Bascom będzie ciężko, ewentualnie możesz napisać sam prostą procedurę inicjalizacyjną na podstawie DS sterownika wyświetlacza.
Jeśli chodzi o ID to chyba najprościej będzie zrobić funkcje i z głównego programu przekazywać do niej ID czujnika, natomiast funkcja będzie zwracać np bit 1/0 OK/ERROR. Podobnie chyba można zrobić z odczytem temperatury.
Ja też nic o zmiennej Err nie widzę. PS. Ale ogólnie to funkcja może zwrócić dwa parametry (albo i więcej). Procedura też ;)
Funkcja MID. :) [url=http://avrhelp.mcselec.com/index.ht...
Przy zapisie do EEPROMU w Bascomie nie musisz wyłączać przerwań. Funkcja WRITEEEPROM robi to sama, ale READEEPROM już nie wyłącza przerwań :)
Witam, Magistrala 1-wire posiada dość mocne restrykcje czasowe co do trwania poszczególnych stanów na DQ. Przerwanie Timera, a wiec wykonanie podprogramu związanego z obsługa przerwania, powodowało zmianę długości tych czasów, gdyż są one generowane softwaerowo przez Bascom. Czasem może się zdarzyć że kolizja i tak wystąpi pomimo że teraz wszystko jest...
Być może bascom'owe instrukcje obsługi lcd nie patrzą na kierunek w jakim działa port, tzn. w w funkcja "Config Lcdpin" ustawia wybrane porty jako wyjścia a pozostałe instrukcje obsługi lcd nie sprawdzają czy to się nie zmieniło. Spróbuj przed instrukcjami od lcd czyli przed obydwoma "cls" ręcznie przestawić wyprowadzenia uC jako wyjścia. Druga sprawa...
Tak prymitywnie to wyślij to sobie ze spacją i potem podziel otrzymany string szukajac spacji [syntax=vbnet] Print V1 ; " " ; A1 Dim MyArray(2) As String * 5 , M As Byte M = Split(CalyOdebranyString , MyArray(1) , " ") 'podziel szukając spacji Locate 1 , 1 : Lcd MyArray(1) Locate 2 , 1 : Lcd MyArray(2)[/syntax] Radzę też napisać u góry w kodzie : [syntax=vbnet]Config...
Wygląda na to że wszystko działa. Sprawdź czy masz właściwy Baudrate. Na obrazku widać że Adres 1 Funkcja 4 i prosi o dwa rejestry typu Word a potem dwa bajty Checksum. https://obrazki.elektroda.pl/7487360400_...
Nigdy nie używałem funkcji. Więc nie mam pojęcia jak to zrobić. Czas sie dokształcić, do Bascom jest polska pomoc z przykładami. Jaki problem? Ponadto zamiast funkcji można użyc podprogramu, choć funkcje są wygodniejsze. Ta funkcja musi być solidnie rozbudowane aby przesłać jeden znak. Bzdura, wysłanie znaku, to wysłanie bajtu do sterownika. Wyświetlacz...
Witam. Trochę to mętne , ale spróbuję ci jakoś pomóc. Każda zmienna jest przechowywana w pamięci w postaci dziesiętnej. Możesz ją zadeklarować jako kod szesnastkowy np. : zmienna= &HFF00 Ale i tak w pamięci zostanie zapisana jako konkretna wartość. Nie wiem do czego potrzebujesz, ale domyślam się że chcesz to wyświetlić jako wartość szesnastkową. Wartości...
Wszystko powinno wyjaśnić to: Jeśli w buforze nie ma żadnego znaku funkcja zwraca zero. Można najpierw sprawdzić czy w buforze transmisji znajduje się jakikolwiek znak. W tym celu należy skorzystać z funkcji ISCHARWAITING() . Nie sprawdzasz wogóle czy znak jest w buforze, zatem dostajesz głupoty.
Nie znam mozliwości w tym zakresie Bascoma. Jedno jednak jest pewne. Każdy program tego typu może działać sekwencyjnie. Oznacza to, że wywoływanie kolejnych procedur w procedurze działać musi. Jest jednak tzw granica zagnieżdzeń. Może ona wynika z możliwości samego kompilatora (programu tłumaczącego - w tym wypadku Twoim nie sądzę aby tak było), albo...
No to kawa na ławę. Instrukcja Getrc5 w czasie działania używa jest licznika TIMER0 i związanego z nim przerwania. Licznik ten jest służy do generacji wymaganych opóźnień podczas próbkowania sygnału. TIMER0 może być dalej używany przez program, lecz należy się liczyć z wynikłymi opóźnieniami, gdy wykonywana będzie funkcja GETRC5(). Jest tylko jeden...
Zmiennej lokalnej nie dasz do DMA. Znaczy dać by się dało bo jakiś adres ona tam ma. Przynajmniej w BASCOMie który nie optymalizuje kodu a więc wszystkie dane mieli na pamięci RAM. Tym RAMem jest stos. W każdym razie chodzi o to że zmienna lokalna jest tracona po wyjściu z funkcji. Stos nie znika ale jest wykorzystywany przez coś innego. Więc miejsce...
Sprawdź jeszcze jeden "myk" Wszędzie zamiast Chr( ) wpisz ten sam numer tylko w nawiasach klamrowych (bez Chr - tylko sam nawias i trzy cyfry) Przykład: Zamiast Chr(1) wpisz Lcd {001} Zamiast Chr(7) wpisz Lcd {007} Zamiast Chr(32) wpisz Lcd {032} Kod się znacząco zmniejszy co może się czasem przydać przy małych mikrokontrolerach. Chr( ) to funkcja zamieniająca...
Witam, Polecenie SOUND port , il_impulsów , czas_impulsu To mi nie pomoże. Jako argument chcę podać potrzebną częstotliwość (liczba), a nie ilość impulsów i czas impulsu... Jeżeli znasz częstotliwość to nie problem określić ilość impulsów i czas trwania, ale ta funkcja jest mało precyzyjna. Lepiej wykożystać do tego Timera: $crystal = 4000000 Pwm1a...
Do Autora wątku: Proszę. Nie taki diabeł straszny. Nie napisałeś jaki to procesor więc napisałem przykład dla Mega8. Funkcja odczytuje ADC(0-5) z włączony ADLAR czyli tylko osiem bitów. Wynik od 0 do 255. Zapewne działa nawet w symulatorze. To taki podstawowy. Można nie czekać a ustawić przerwanie, ale to pewnie jeszcze nie dla Ciebie :D Wpisz w Google...
Witam i przechodzę do rzeczy.Na 1-szy ogień idzie ten kawałek kodu: 'wpisywanie pewnych wartosci ... G = 272 Liczba = 30 Liczba = Hexval(liczba) G = Hexval(g) Kombinacja = 1 Czas = 1000 ... I jakież to wartości ,zawierają zmienne :?: Ano takie: Liczba=238 :?: G=3793(0x0ED1) :!: Czas=1000(0x03E8) Ok. ... Writeeeprom Czas , Liczba Writeeeprom...
rozne serwa roznie moga dzialac. Nigdzie nie widzialem, zeby ktos okreslil dokladna czestotliwosc z jaka to ma byc robione.. zazwyczaj jest ok. 50Hz. Drobne roznice typu kilka Hz (czyli kilka ms wywolywanie przerwania) nie powinny miec zadnego wplywu na serwo. Problem moze sie zaczac jak bedziesz mial dlugie funkcje wywolywane przerwaniami... ale na...
mod to nie funkcja tylko działanie matematyczne takie jak "+" czy "-" wynikiem mod jest reszta z dzielenie pierwszej liczby prze drógą np x= 10 mod 3 - wynikiem będzie 1 x= 11 mod 3 - wynikiem będzie 2 x= 12 mod 3 - wynikiem będzie 0 x= 13 mod 3 - wynikiem będize 1 mod jest opisane w pomocy w zakładce "Language Fundamentals" pozdrawiam
Akurat takich mam dostatek, jednak nie bardzo rozumiem, jak wykożystac sprzętową obsługę w bascomie W helpie jest opisana funkcja ENCODER(), zatem może warto najpierw te parę zdań przeczytać? W obsłudze przerwania sprawdzasz stan wejść i porównujesz z poprzednim stanem Nie zapominajmy o drganiu styków. Jeszcze nie spotkałem enkodera mechanicznego,...
Pomyśl..Cztery znaki chcesz upchać w trzyznakowym stringu.. Nie wiesz jak to działa. Kiedy deklarujesz String * 10 rezerwujesz 11 bajtów bo każdy string ma znak swojego końca. Nie musisz wykorzystać wszystkich bajtów. String może być krótszy i zaraz po znakach postawiony będzie znak końca..ale zarezerwowałeś 11 bajtów i tam program nigdy nic nie będzie...
Ten przykład działa, ale tylko dla jednego "przełącznika" ale gdy robie np dwa kolejne to już coś jest źle. Buduje urządzonko, które będzie załączać 3 przekaźniki: - 3 przyciski (portd.4, portd.5, portd.6) - 3 przekaźniki (portd.1, portd.2, portd.3) Jak to można zrobić w BASCOMie?? Kod dla w/w konfiguracji: Config Debounce = 30 Config Portd = Output...
Proszę. Jest to przykład zapisu i odczytu zarówno zwykłych bajtów jak też łańcuchów tekstowych inaczej mówiąc napisów w Eeprom. Program i funkcje działają z małymi pamięciami których adresacja mieści się w jednym bajcie. Do tego przykładu użyłem 24C04 Jeśli ktoś chce to może po prostu wpisać sobie jakieś dane do buff(1), Buff(2) itd i tak zapisać. Potem...
http://obrazki.elektroda.net/61_12840708... Przedstawiam mój sterownik awaryjnego zasilania mieszkania, pieca CO i pompy od solarów. Urządzenie w takiej, a nie innej formie powstało w sumie przez przypadek. Początkowo miało to być tylko podtrzymanie pompy solarów gdyby zabrakło napięcia w sieci, a temperatura na dworze była by zbyt wysoka...
Mając trochę wolnego czasu napisałem parę funkcji do obsługi układu PCF8583. Funkcja która ustawia godzinę i datę zapisuje też dane potrzebne do obliczenia pełnego roku, dzień tygodnia jest obliczany automatycznie na podstawie daty. Funkcje Pcf8583_write i Pcf8583_read można wykorzystać do zapisywania/odczytywania danych z wolnej pamięci ram. Dostępne...
Niepotrzebnie otwierasz i zamykasz kanał przy każdym wysyłaniu. Otwórz kanał przed pętlą a w pętli tylko wysyłaj dane (bez zamykania kanału).
Ja to robię tak że pisze sobie procedurę która zwraca (zapisuje do innej zmiennej) wynik dzielenia pierwszego przez 10 (czyli funkcja mod). Następnie zmienna wejściowa jest dzielona przez 10 i tak zostawiana. Programik na początku podstawia "swoją" zmienną do procedury dzielenia. A następnie wywołuję procedurę jeden raz. Wynik jest teraz przepisywany...
http://obrazki.elektroda.net/32_12761638... Witam serdecznie! Ostatnio tworzyłem m. in. zegarek analogowy w BASCOM'ie, co wymagało zastosowania funkcji trygonometrycznych. Początkowo oprogramowanie rysowało jedynie kreski w miejscu wskazówek, jednak gdy chciałem wykonać prawdziwe wskazówki kod uległ mocnemu zabałaganieniu i oczywiście nie...
Witam. Ostatnio postanowiłem napisać NA uC ATMEGA32 w języku BASCOM basic licznik rowerowy. Mam już znaczną część kodu, ale natrafiłem na problem. W zmiennej czas_jazdy_total przechowuję ogólny czas jazdy wyrażony w sekundach. Niestety taka postać nie jest przyjemna dla oka, więc należałoby zamienić ją do formatu godziny - minuty - sekundy. Tylko teraz...
Dosyć odważnie sobie poczynasz na mikrokontrolerze mającym 2kB Flash i 128B SRAM :D ale do odważnych świat należy. Odchudziłem Ci trochę kodzik. Obsługa przerwania timera została stuningowana moim programem NoSave Tool. Teraz mikrokontroler nie odkłada na stos większości rejestrów a tylko te potrzebne - w tym przypadku tylko jeden :D Przekłada się to...
Przy okzaji chialbym dopytać Mundi1970 czy skoro w deklaracji funkcji użyłeś ........ We wszystkich przykładach z katalogu SAMPLES i w helpie, na początku funkcji jest podawany typ danych. Teraz działa nawet i tak :): Zalecił dopisać you need to add : $swstack=16 $framesize=30 I kod zaczął działać...:) Należy też pamiętać że te wartości mogą być większe....
Wprawdzie ... to nie humanitarnie z mojej strony dawać niemalże gotowca ... :D [syntax=basic4gl]$regfile = "m2560def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $include "Config_PCF8583.bas" Declare Sub Displaytime() Declare Sub Settime() Declare Sub Cancel() Declare Sub Plus() Declare Sub Minus() Declare Sub Saveandexit() Declare...
Siemka ugh123 :D Co prawda nie mam tego wyświetlacza (Nokia), lecz o wiele większy. Ale do do tematu. Pliki ".bgc" są zapisywane w 8-bitowym kolorze, Ja pracuję z 16-sto bitowymi kolorami, więc konieczna jest konwersja z 8 na 16 bitów. Informacje na temat wymieniony przez Ciebie znajdziesz w sieci (poszukaj). Nie dam Ci gotowca,i sądzę, iż nikt Ci nie...
http://obrazki.elektroda.net/70_12606334... Chciałem przedstawić konstrukcję zamka do drzwi opartego na module z ALLEGRO na układzie EM4095. Całością steruje ATmega8 z zewnętrznym kwarcem 8MHz. Program sterujący napisany w AVR BASCOM zajmuje w chwili obecnej 34% procesora. Funkcje zamka to: 1 Zapamiętanie max 10 kart RFID 2 Odczyt i po stwierdzeniu...
http://obrazki.elektroda.pl/9223335300_1... Było już na elektrodzie prezentowanych wiele zamków szyfrowych – z pełną klawiaturą, dwoma przyciskami i jednym też. Mój projekt z serii pchełka zrealizowałem na Attiny13 i jednym przycisku. Potrzebne mi było rozwiązanie nieco inne – coś co nie będzie chronić sejfu w banku ale...
ATmega8 ma tez wewnetrzny oscylator 8MHz. Tylko z Bascoma nie udalo mi sie go ustawic. Ale PonyProgiem mozna to zrobic bez problemu recznie modyfikujac CKSEL.
Do Reset Portb.1------- tu ustawiasz na wyjscie niskie Wait 1 ------- tu czekasz sekunde Set Portb.1 ---- tu ustawiasz na wyjsciu wysokie Loop -------A TU ODRAZU WRACASZ DO POCZATKU PETLI I TAM ZNOW USTAWIA SIE NA NISKIE End Rozumiesz gdzie jest bład? $crystal = 16000000 $regfile = "m32def.dat" $baud = 9600 Config Portb.1 = Output Do Reset Portb.1 Wait...
http://obrazki.elektroda.pl/8230612800_1... Przedstawiam dzisiaj prosty gadżet jaki zmajstrowałem jakiś czas temu. Jest to w zasadzie zwykły elektroniczny metronom i nie różniłby się od wielu podobnych tu prezentowanych gdyby nie sposób ustawiania czasu pikania. Założenia: 1.Wykorzystać stare diody led, które leżały w szafce około 15lat......
A nie lepiej zastosować Lookup ? [syntax=basic4gl]Declare Sub Wyslij(byval Zmienna As Byte) Dim A As Byte For A = 0 To 14 Call Wyslij(a) Next A End '---------------------------------------... Sub Wyslij(byval Zmienna As Byte) Local I As Byte I = Lookup(zmienna , To_co_sle_do_scalaka) Print I End Sub To_co_sle_do_scalaka:...
https://obrazki.elektroda.pl/2578145800_... Od dłuższego czasu planowałem wykorzystanie drukarki termicznej razem z terminalem/kolektorem danych Psion Workabout MX. Był pomysł aby taką drukarkę kupić, jednak kiedy dostałem 3 kasy fiskalne do "wypatroszenia" w ramach projektu "rzeźnia kas fiskalnych" to nie mogłem zwyczajnie zostawić...
funkcja funkcja bascom bascom funkcja przerwaniu funkcja funkcji bascom
xplod skrzynia basowa gniazdo wyłącznik światła kondensator mniejszy zasilacz
symbol czujnika ruchu symbol czujnika ruchu
Jak sprawdzić używany port COM w Windows, Linux i macOS – narzędzia Process Explorer, lsof, handle.exe Test klaksonu Bosch, Hella, Denso 12V bez montażu – jak sprawdzić sygnał dźwiękowy na stole