Potestuj bo tak na szybko przy poobiedniej kawie klapałem jedną ręką :D Może coś przeoczyłem i trzeba prześledzić. Te złożone operacje w jednej linii dla stałych Bascom robi bez problemu. Osobiście bym tego tak nie napisał. Nie wiem po co to ciągle obliczać jak można raz... [syntax=vbnet]$regfile = "m328pdef.dat" $crystal = 16000000 $hwstack = 64 $swstack...
Teoria powiadasz. Ciekawe co czytałeś... Mimo iż wyczuwam lekki roszczeniowy charakter wypowiedzi to postaram Ci się coś jednak wytłumaczyć. Kiedy pisałem o podpisywaniu zmiennych to miałem na myśli takie wysyłane osobno. Od razu uściślijmy, że dla takich wartości dwubajtowych jak Word łatwiej to przesłać jako Hexstring. Długość stringa zawsze będzie...
Albo zmień Local na Dim.
...Czy istnieje jakiś sposób, aby ostateczną zmienną 'Ss' (string) zapisać w zmiennej typu Single (lub innej?) aby umozliwic porównanie jej z tą zapisaną w eepromie? A może ktoś zna inną metodę na rozwiązanie tego problemu? Z Twojej wypowiedzi wynika , że nie wiele masz wspólnego z programowaniem uC - ale mniejsza z tym. Zmienna string jest potrzebna...
Masz dwie możliwości, możesz pobrać nowszą wersje BASCOM'a lub dopisać taką linie: [syntax=basic4gl]$lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014[/syntax]
Zajrzałem do Helpa. Waitus nie przyjmuje parametrów w postaci zmiennych. Muszą być stałe.
Taka niestety jest konstrukcja Bascom'a. Jeśli nie chcesz robić tego krok po kroku to możesz sobie stworzyć funkcję, która to będzie robić. Innej alternatywy nie ma... no chyba że zmiana języka na C.
Wykombinowałem coś takiego :), przykład można uruchomić w symulatorze (dane wejściowe np. porta.1): EDIT: poprawiłem mały błąd w przykładzie, bity można nawet kopiować jeżeli port źródłowy i docelowy jest ten sam [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Dim Src_port_str As...
Można zrobić tak: $hwstack = 32 $swstack = 32 $framesize = 32 Dim Aa As Double Dim B As Double Aa = 5 Aa = Aa / 6 Print Aa B = Sin(0.2) Print B Do Loop End ...i będzie działać ! Pozdrawiam...
Zobacz funkcję FUSING() ze strony 199 pomocy [url=http://www.pe.ifd.uni.wroc.pl/Basco... Bascom PL Pozdrawiam Dawid
Myślę, że jest to naturalne. Zmienna typu Long zajmuje 4 bajty a Integer tylko 2. Nie da się ciężarówki zaparkować w garażu dla malucha. W helpie jest informacja, że można dokonywać konwersji typów. Oto fragment: Dim I As Integer, S As Single S = 100.1 'przypisujemy liczbę zmiennoprzecinkową I = S 'ta instrukcja zmieni liczbę typu single na Integer...
Help BASCOM-a mówi : ERAM Most AVR chips have internal EEPROM on board. This EEPROM can be used to store and retrieve data. In BASCOM, this data space is called ERAM. An important difference is that an ERAM variable can be written for a maximum of 100.000 times. So only assign an ERAM variable when it is needed and not in a loop Co oznacza że raczej...
Jak chcesz wpisywać liczbę z klawiatury to powinieneś uwzględniać wagę poszczególnych składników tej liczby. Pierwsza cyfra z trzech to, waga=100 zatem key*100, przy następnej cyfrze waga=10 zatem key*10, a na koniec samo key bo waga=1 i operacja mnożenia jest zbędna, jak to wszystko zsumujesz to otrzymasz ostateczną liczbę. Np. liczba 467 to 4*100+6*10+7....
Wystarczy poszczególne zmienne podstawić do wzoru: X1 * 65536 + X2 * 256 + X3
Incr - inkrementacja czyli Z=Z +1 Decr - dekrementacja czyli Z=Z - 1 Home - ustawienie kursora na pozycji 0,0. Polecam polskojęzyczny help do Bascoma tam wszystko pięknie pisze :)
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...
Nie ma takiej możliwości w BASCOM-ie. Przynajmniej nie automatycznie. "Coś" musiałoby zmieniać twój kod, za każdym razem, gdy go kompilujesz. Jest możliwe rozwiązanie tego problemu, ale wymaga trochę zachodu, w początkowej fazie. Bascom posiada funkcję "INCLUDE", która pozwala na dołączenie dowolnego pliku BAS, zawierającego dowolny kod. Musisz (można...
Powiem tak: Nie znam się na BASCOMie ale widzę, że END kończy program a dokładnie pustą pętlę w której powinien znajdować się odczyt z przetwornika i wyświetlanie, używając napisanych przez Ciebie funkcji. Przykładowo siała baba mak.../deklaracja zmiennych Do /pętla główna programu wykorzystująca twoje funkcje ODCZYT WYSWIETL Loop END ODCZYT: bla bla...
W Bascom można najpierw uruchomić funkcję Edit -> Proper Indent i to ułoży ładnie kod z wcięciami. Potem w ustawieniach włączyć Configuration -> Environment -> Draw Indention Lines i to połączy pionowymi liniami wszystkie pętle Do-Loop, For-Next etc. Czytasz błędy : Error : 382 Line : 201 variable does not match FOR Patrzysz na kod w linii...
Proszę. Poprawiłem to źródło i sie kompiluje co poznasz po tym, że w paczce masz bin i hex Autor wielokrotnie użył tych samych nazw dla zmiennych i funkcji. Stary kompilator moze na to pozwalał, ale nowsze chcą mieć pewnośc o co programiście chodzi. To się łatwo diagnozuje i naprawia w 2086 z włączonym Code Explorer`em. Inna sprawa co Ty z tym potrafisz...
W przerwniu i programie głównym używasz zmiennych zadeklarowanych jako word. Myślę, ze tu leży pies pogrzebany. W C wystarczy użyc volatile i atomic_block. W Bascim? Był taki na Elektrodzie (niveasoft) co wiedział w jaki tajemniczy sposób Bascom zarządza takimi zmiennymi. Myślę, że nie masz wyjścia, tylko przed odczytej w programie głównym zmiennej...
Nie ma potrzeby ustawiać adresów zmiennych "na sztywno". Ponieważ Bascom dla zmiennych wielobajtowych , stosuje zapis typu Little Endian to kod może wyglądać tak: Dim Zmienna As Word Dim Zmienna_lo As Byte At Zmienna Overlay Dim Zmienna_hi As Byte At Zmienna+1 Overlay I nie obchodzi nas pod jakim adresem znajduje się Zmienna , bo kompilator zadba o...
Witam Z tego co pamietam to by cokolwiek zapisac i odczytac z epromu nalezy podac tez adres komorki pamieci . W BASCOMIE to wyglada chyba tak : Writeeprom Tekst ,adres a potem odczytujemy Readeeprom Tekst ,adres AT90S2313 ma 128 bajtow pamieci EEPROM, wiec jest 128 komorek jedno-bajtowych komorek pamieci. Stad adres : 0-127 Nie wiem jak wyglada sprawa...
R_gora alias PinX.x `wejscie przycisku góra 0 = naciśnięty R_dol alias PinX.x `wejscie przycisku dół 0 = naciśnięty R_stop alias PinX.x `wejscie przycisku stop 0 = naciśnięty Kran_gora alias pinX.x `wejscie krańcówki góra Kran_dol alias pinX.x `wejscie krańcówki dół Roleta alias PortX.x `wyjście Start / Stop 1=Start 0=Stop Kierunek alias portX.x `wyjście...
MUSISZ zmienić na: [syntax=vbnet]Dim R As Byte Dim G As Byte Dim B As Byte[/syntax] Przepraszam bardzo, praktycznie już zapomniałem języka Bascom :(. Lecz jeśli tylko będę mógł udzielić pomocy, postaram się to zrobić.
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...
BASCOM może mieć problemy z odjęciem od liczby 65536 zmiennej Word lub Integer. To po pierwsze. Więc zastosuj zmienne typu Long. W dodatku stosując offset (wartość odniesienia) nawet zoptymalizowanie programu nie pozwoli zastosować zmiennych dwubajtowych, bo niektóre wyniki będą miały wartości większe od 65535 (lub inaczej: dodatnie wartości mogą wyskoczyć...
Witam , kiedyś napisałem w bascomie połączeni esp8266 z atmega... to działało :) aż pewnego dnia przestało działać :( Kolega odkopał temat a ja mam nadzieję znalazłem ciekawe rozwiązanie, jest to wsad do esp8266 który w samym kodzie ma obsługę ntp . Działanie proste po połączeniu esp z siecią wifi polecaniami AT wysyłamy zapytanie do esp8266 np : Print...
Pierwsza sprawa - po Bascomie nie masz się co spodziewać optymalnego programu, to raczej język do zrobienia czegoś na szybko i bez większej znajomości programowania. Niestety, do poważniejszych zadań nadaje się w zasadzie tylko C. Druga sprawa - pewnie jest tak - w C, kiedy tylko zadeklarujesz zmienną, kompilator i tak ją usunie, jeśli jej nie używasz....
Podnieś Bascom do nowszej wersji. Wersję 2078 już spokojnie znajdziesz w sieci. Na 2080 się to kompiluje bez błędów mimo iż program zgłasza kilka ostrzeżeń o dwukrotnej deklaracji tych samych zmiennych itd.. Musisz wiedzieć że AVR-DOS potrzebuje minimum 1500B SRAM i w Mega32 zostaje Ci 500B SRAM. Nie zadeklarowałeś wielkości stosów HW i SW oraz ramki...
uC wykonuje instrukcję po instrukcji. Może w jednej pętli wykonywać różne rzeczy ale nie w tym samym czasie. Napisz program tak jak ma się wykonać po kolei. Twój zakończy się po pierwszym END licząc od góry. Program który napisałeś nie kompiluje się z powodu braku deklaracji zmiennych i niekompletnej pętli Do: Loop. P. S. Dwie niezależne pętle w tym...
Z tą dowlnością w używaniu rejestrów byłbym bardzo ostrożny. Nieodpowiednia zmiana - program się wysypie. Nie wolno używać w trybie zapisu bez wcześniejszego zapamiętania: Y ( soft stack pointer ), R4:R5 ( frame stack pointer ), R6 ( status register ), R8:R9 ( data pointer ), R23 ( translate register ), R12:R13:R14:R15 ( fp calculator ). W sumie można...
Masz zapętlenie wywoływania podprogramów instrukcją GOSUB. każdy podprogram np: Wyswietlanie_alarmu_temp powinien być zakończony instrukcją RETURN. Jeśli tak nie masz to w nieskończoność wywołujesz kolejne podprogramy i po którymś cyklu kończy ci się rozmiar STOSU :( np HW_STACK. Dlatego program zaczyna wariować i gubić wartości zmiennych SOFT_STACK....
Hej! Zobaczcie jak ja to robię, może komuś sie to przyda: 'Powiedzmy ze zmienna Liczba(single) wynosi 22.62555426 Temp = Int(liczba) ' dzieki temu poleceniu odcinam czesc setna czyli ' zmiennej Temp(byte) przypisuje liczbę 22 Liczba = Frac(liczba) ' dzieki temu poleceniu odcinam czesc ' dziesiętną czyli zmiennej Liczba(single) przypisuje ' liczbe 0.62555426...
1. Bascom jest bardzo dobrym językiem, znacznie lepszym niż Arduino. 2. "a:10.0" "a:10.0 " ":10" "10 " Ten temat jest zamknięty, dostałeś 2 przykłady. Pierwszy napisałem do składni ramki jaką podałeś w pierwszym poście, później zmieniłeś konstrukcję rami to napisałem kolejny przykład, można jak dobrze naliczyłem jeszcze 9 innych metod zastosować by...
Co do kwarcu to definiujemy go zawsze, niezależnie od tego czy proc pracuje na zewnętrznym, czy na wewnętrznym, bo to jest informacja dla kompilatora, wg jakiej wartości ma wyliczyć czasy dla różnych instrukcji. Jeżeli to jest "nówka sztuka" to pracuje na wewn. 1MHz. Jak sam zauważyłeś, instrukcja "Loop" powinna znajdować się po ostatnim "Endsub", ale...
Program w tej formie jaką zamieściłeś zaraz po zainicjowaniu zmiennych i sprzętu wchodzi w warunek "If Timer1" nawet bez wywołania przerwaniem. Później zdejmie coś ze stosu, albo przeleci się po pustym flash`u i zacznie od początku. Żeby w ogóle to zaczęło coś robić to powinieneś po Start Timer dodać, jakąś pustą nawet, pętlę "Do : Loop" Wtedy w pętli...
Pomyśl logicznie :) Skoro z głowngo programu wybierasz podprogram 1 i wchodzisz do niego, a jego konstrukcja wyglada tak: Podpgoram_1: Do // jakies instrukjce Loop To jakchcesz teraz przjesc do Podprogramu_2 , skoro jestes w petli nieskonczonej w ktorej nie ma znadego warunku na jej opuszczenie? Musial bys w kazdym z podprogramow sprawdzac stan porzyciskow...
Mógłbym prosić o dokładniejsze wytłumaczenie tego przykładu bo nie bardzo wiem co miałbym tam pozmieniać aby ustawiać zegar w menu. Dodano po 4 Problem rozwikłany. Zapomniałem przeliczyć odczytana wartość hex na dec. Co do kwarca to nie mam pola masy wkoło wyprowadzeń oscylatora Pracujesz na zmiennych Date$ i Time$, to wszystko. Odnośnie kwarcu, nie...
Dzisiaj akurat potrzebowałem rejestru HC595 do rozszerzenia liczby wyjść użytecznych. Poniżej fragment kodu w bascomie. Przypisane nazwy odpowiadają katalogowym. Zmienną Portx traktujemy jak zwykły 8 bitowy port wyjściowy. Kod z pod etykiety 'obsługa rejestru' wstawiamy w pętli głównej programu, aby rejestr był na bieżąco odświeżany. [syntax=basic4gl]...
A tutaj masz pełny Multithreating na AVR. W BASCOMie! Thread_0_label, Thread_1_label i Thread_2_label to 3 kody główne. Na razie jest tam miganie trzema diodami. Oczywiście każda dioda miga w innym tempie. Reszta to obsługa wątków i tego nie nalezy zmieniać jak się nie wie o co tam chodzi. Niestety wszelkie operacje na portach czy zmiennych większych...
Witam Cieszę się, że mój program, który defakto nie jest szczytem programowania, kogoś zainteresował. Ogólnie działa on dość fajnie ale mógł by lepiej hehe. Teraz co do programu, to nie mam czasu na dokładną analizę całości (sesja :/ ), nawet swojego kodu już dobrze nie kojarze, ale zauważyłem jedną rzecz: kolega, w tym co dopisał używa zmiennej wynik_o...
Radziłbym Ci zobic tak: Cały PWM zrób na przerwaniu od jakiegoś Timera; nie uzywaj zmiennych typu single, jeżeli częstotliwośc przerwań bedzie odpowiednio szybka wystarczy zmienna typu byte lub word. Obsługe LCD czy przycisków i innych obliczeń zostaw w pętli główne Przykładowy PWM dla portb.3: Gdzie a to jakas amienna a do b podajesz wartosc PWM (0-255)......
Jeśli liczba sztuk będzie wzrastać to OK, ale przy przejściu ze 100 na 99 wyświetli 199. Może rezultat = FORMAT( zmienna , "maska" ) pomoże!
obsługa guzików w przerwaniu to bardzo dobry pomysł. Zastanawiałbym się również czy by jednak nie przenieść wszystkiego na timer0 (ten jest 8 bitowy) ale taki akurat miałęm projekcik. Do wygaszania zer trzeba by dodać 10 cyfrę (która będzie pusta - 255). Są trzy cyfry więc trzeba zacząc sprawdzanie od lewej (czyli w przykładzie od trzeciej) .... if...
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...
Witaj. Delphi nie znam, wiem że jest to program bardzo podobny do VB. Ma wiećej możliwości oczywiście, myślę że jednak nie o to chodzi. DO RZECZY Chodzi Ci o to by np. po naciśnięciu przycisku program wysłał kod (jaki to teraz nie ma znaczenia) , a BasCom ma go odebrać. Poczym uC ma wykonać określoną czynność. Jeśli chodzi co o to ?? , sprawa jest prosta....
Wydaje mi się że jak byś nie zrobił i będzie działało to tak jest dobrze ;] ilu programistów tyle podejść do tematu... Jeżeli już zadeklarujesz taką dużą tablicę to tak czy siak będzie ona zajmowała jakąś przestrzeń w pamięci więc czemu nie użyć jej i odczytać z eeprom wszystkiego na raz. Kiedyś robiłem podobny sterownik do CO ze sterowaniem temperaturą...
Witam. Na początek napiszę że to ma być mój pierwszy program napisany w tym języku i pierwszy kontakt z mikrokontrolerami. Nie mam pomysłu jak się zabrać za uruchomienie jakiegoś "zegara". Wydaje mi się że wtrącenie w pytaniu „jakiegoś zegara” wprowadza ludzi w błąd. Z dalszej części wynika że raczej potrzebujesz obsługi TIMERA wbudowanego...
Problem może być ... sprzętowy. Otóż Tiny2313 fabrycznie ma ustawiony zegar na 8MHz i preskaler zegara na podział przez 8 czyli pracuje na 1MHz. Jeśli nie manipulowałeś z Tinką to nie będzie zgodna rzeczywista częstotliwość taktowania uC z zadeklarowaną w programie. Magistrala 1Wire jest bardzo wrażliwa na czas poszczególnych impulsów i nie zniesie...
tablice zmiennych bascom bascom definicja zmiennych bascom zakres zmiennych
oporność głośnik solidny laptop laptop śrubki
reset błędu pralki bosch czujnik temperatury sterownika pieca
Wybicie bolca z drzwiczek pieca Amica, Bosch, Electrolux – demontaż zawiasu, usuwanie zapieczonego sworznia Passat B5 1.9 TDI 90KM – funkcja cienkiego przewodu na klemie plusowej akumulatora