Witam... Można to zrobic na wiele sposobow. Sa bardziej lub mniej prymitywne. W zaleznosci od potrzeb stosuje sie rozne metody "detekcji", "programowych blokad" itp Ja zrobilbym to np tak: ----------------------------------------... 'Blokada zadeklarowana jako zmienna bitowa If P1.1 = 0 Then Goto Instrukcja blokada...
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
(...) ' 5 Data 250 ' 6 Data 131 ' 7 Data 251 ' 8 Data 219 ' 9 Wstępna ocena dostępnych informacji W kodzie widzimy dwa liczniki (Liczba_ok i Liczba_nok) zadeklarowane jako zmienne typu Word, a także tablice na cyfry (Cyfra_ok i Cyfra_nok) jako typ Byte. Z punktu widzenia zakresu wartości samych liczników (od 0 do 999) nie powinno to powodować błędów...
Witam, może nie całkiem na temat, ale próbowałaś napisać to w C, albo w Arduino? W Arduino wychodzi jakieś 10 bajtów RAM na całość plus kilka bajtów stosu. Jeśli masz jeszcze dużo tych attiny13 i planujesz jeszcze na nich budować, to myślę, że warto spróbować w C/C++. Niezależnie od języka sterowanie z punktu widzenia serwa w opcji 2 i 3 będzie takie...
(...) 39: Set Mcp_clk '1 Mcp_wynik1.0 = Mcp_din1 : Mcp_wynik2.0 = Mcp_din2 : Mcp_wynik3.0 = Mcp_din3 : Mcp_wynik4.0 = Mcp_din4 Case 40 : Set Mcp_cs End Select Return Jaki błąd w niej popełniłem? Twoja składnia i podejście do problemu wyglądają na prawidłowe, ale istnieje kilka kwestii, które warto rozważyć i sprawdzić, aby upewnić się, że wszystko...
1Hz to raz na sekundę. 8MHz to osiem milionów razy na sekundę. Sekunda jest tu kluczowa. W ciągu sekundy procesor taktowany 8MHz przetworzy około 8mln instrukcji (pomijam te które wymagają dwóch taktow) no a jak podłączysz do procesora taktowanie 16MHz to odwali dwa razy tyle roboty w ciągu sekundy . Zerknąłem na twoje kody i mam kilka rad. W Bascom...
Jeśli tylko uC ma wbudowany sprzętowy moduł TWI czyli odpowiednik I2C to warto z niego korzystać. Wiele zależy od części kodu których nie zamieściłeś. Sprzetowe TWI jest o tyle lepsze że nie przeszkadzają mu tak bardzo przerwania z innych źródeł. Kiedy korzystasz ze software`owego I2C to niestety, ale chyba każde przerwanie potrafi przerwać te transmisję....
To chyba po to była ta duża zmienna żeby można było na niej działać.. Nie zagłębiałem się w temat i nie wiem jaka jest wartość początkowa ale załóżmy te poprzednią. [syntax=vbnet] Wartosc = 4401250 'powinna miec jakas wartosć poczatkowa Fdown: Czesrx2 = Czesrx2 - 1 If Czesrx2 < 80 Then Czesrx2 = 80 Else 'jesli Czesrx2 jest jeszcze większa lub równa...
Hmm...Bascom działa lepiej kiedy się wie co się robi :D Wiesz co robi instrukcja Config Clock = Soft ? Konfiguruje Timer który w mikrokontrolerze jest przygotowany do pracy asynchronicznej. Dodatkowo potrzebny jest rezonator kwarcowy 32768 Hz dołączany do pinów mikrokontrolera oznaczonych TOSC1 i TOSC2 Nie będę opisywał wszystkich przypadków, ale dla...
Witam. Od kilku dni próbuje napisać prosty,jak mi się wydawało kilka dni temu ,programik. Chodzi o to żeby zmieniać stan portu w odstępach czasowych z możliwością ich regulacji. Proszę o jakąś ,na razie drobną podpowiedż .
Więc aktywować warto bo nie zaszkodzi a może pomóc. Rozumiem, że jak aktywuję BODEN i BODLEVEL dla AT32 to reset zostanie uruchomiony po obniżeniu napięcia poniżej 4V - dobrze wyczytałem? Swoją drogą to chciałbym jeszcze podpytać odnośnie dwóch rzeczy - dotyczy programowania w Bascom. 1. Kwestia wear leveling przy zapisie do eprom w Bascom - zupełnie...
Witam. Tak poradziłem sobie z uruchomieniem. Myślę, że warto opisać tutaj dokładnie co i jak z tym HC-05. A więc jeśli ktoś ma sam układ HC-05 bez dodatkowej płytki z goldpinami, to powinien podłączyć go według tego schematu: http://obrazki.elektroda.pl/7988822600_1... Oczywiście diody LED nie są konieczne. Jednak polecam podłączyć jedną...
Witam, dla Bascoma (przynajmniej w tej wersji jaką podałeś) niewykonalne jest zamienienie tych połówek bajta miejscami za pomocą SWAP (SWAP potrzebuje 2 zmiennych, a dostaje jedną). Sprawdzę w najbliższym czasie, czy nowszy Bascom sobie poradzi. Choć faktycznie, ten stary Bascom Basic AVR kompiluje kod, nie zgłasza błędów, lecz SWAP nic tu nie robi....
Mam pewnien problem. W c jest taka zmienna jak integer (int). Jesto to zmienna 1 bajtowa w procesorach 8 bitowych, moze przyjmowac wartosci od -128 do 127. W bascomie nie ma takiej zmiennej. Wiadomo nie jest trudno napisac odpowiedni program, ktory by mi to przeliczal. Tym bradziej, ze bede i tak musial zastosowac bascomowa zmienne typu integer/long,...
' Funkcja musi być zadeklarowana przed jej pierwszym użyciem ' ponieważ kompilator musi wiedzieć jaki jest rozmiar danych ' przesyłanych do funkcji i jaki jest jej typ wyniku ' Funkcja musi mieć zdefiniowany typ wyniku, tu Integer Declare Function Test(byval Liczba As Integer , Tekst As String) As Integer ' określenie byval przed nazwą oznacza,...
Rozumiem, czyli zmienna String to jakby ciąg zmiennych bajtowych stanowiący całość i w programie instrukcja: IF zmienna_string_1znak(to jakby jedna zmienna bajtowa, tylko inaczej interpretowana, bo nie mogę do stringa w programie wpisać prosto wart. liczbowej, a jedynie literę, która reprezentuje ową wartość liczbową) = "a" then... jest równoważna...
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...
Wartosc kolejnego bitu zmiennej (czyli portu bo jego stan przechowywany jest w rejestrze-zmiennej) mozesz odczytac tak: zmienna.nr_bitu w przypadku portu B bedzie to wygladalo tak jakas_zmienna=Pinb.4 jakas_zmienna=Pinb.5 jakas_zmienna=Pinb.6 jakas_zmienna=Pinb.7
Z elementarnej matematyki wynika ze: U(T) = 0,0139T + 2,5. No więc piszesz sobie (zakłądając ze U to zmienna odpowiadająca napieciu) T=U-2,5 T=T/0,0139 i tyle jeśłi chodzi o konwersje. Oczywiście musisz zadeklarowac odpowiednio zmienne U i T ja bym proponował jako inteagery. Pozdrawiam
Portb = Mem_wiert ustawia na porcie odpowiednią kombinację stanów Mem_wiert = 1 - Końcówka 0 stan wysoki; reszta niski Mem_wiert = 2 - Końcówka 1 stan wysoki; reszta niski Mem_wiert = 4 - Końcówka 2 stan wysoki; reszta niski Mem_wiert = 8 - Końcówka 3 stan wysoki; reszta niski portb=0 wyłącza zasilanie silnika. Łatwiej jest sterować portem za pomocą...
Do autora - przyjrzyj się [syntax=vbnet]Config Portd.5 = Output : Dc_wlacz Alias Portd.5 Config Portd.1 = Input : S12_wolniej Alias Portd.1 Config Portd.2 = Input : S11_szybc Alias Portd.2 Config Pina.0 = Output : Kier_lewo Alias Pina.0 Config Pina.1 = Output : Kier_prawo Alias Pina.1 Config Pina.4 = Input : S10_start Alias Pina.4 Config Pina.5 = Input...
Poniżej fragment: Odczyt = 0 For Krok = 1 To 100 W = Getadc(1) Odczyt = Odczyt + W Next Krok Wyn = Odczyt / 100 Zmienna wyn to uśredniony pomiar ze 100 odczytów. Pozdrawiam.
Użyj po prostu VAL(zmienna typu string). Ale nie jestem teraz przekonany, czy VAL zwróci wartość stringa zawierającego HEX. Możesz napisać prostą procedurę, która zamieni dwa znaki w HEX na wartość dziesiętną, a tą już łatwo wyślesz. EDIT: Jest komenda HEXVAL - opis w helpie.
Do konwersji łańcucha na zmienną numeryczną wykorzystaj funkcje VAL lub HEXVAL . Mając już adres zmiennej, możesz użyć instrukcje INP do pobrania wartości. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 80 $swstack = 80 $framesize = 80 Declare Sub Show_byte(byref Adres As String) Declare Sub Show_word(byref Adres As String) Declare...
To jest tak oczywista informacja że nie ma tego w Helpie. Tak samo jak całego alfabetu czy tabliczki mnożenia ;p Skąd Lookup miał by wiedzieć jaką długość mają kolejne elementy? Owszem mógł by, ale taka tablica musiała by dodatkowo zawierać pola określające długość elementów czyli też była by dłuższa. Po drugie to trafia do pamięci programu a nie do...
Witam Dokonałem tej zmiany i także wyrzuciłem zmienna S na Lcd i dalej program nie działa tak jak bym chciał. ................ Jest ok zmieniłem znak ''<" i działa . Do swojej podstawki programującej mam podłączone 2 przyciski do pin d.0 pierwszy do pind.1 drugi gdybym chciał zmieniać progi załączania pind.7 tymi przyciskami (czyli regulować temperaturę...
If zmienna >7 then zmienna = 14 - zmienna end if Ale robiłeś to bez ELSE ?
Wartość w poleceniu lookup to jest właśnie adres wiec nie kumam w czym problem. przeskaluj adc z 0-1023 na 0-90 i potem wywołuj zmienna=lookup(adc,tablica)
...Chodzi mi o to że chce wyświetlić na Lcd znak którego wartośc mam zapisaną w bajcie np D1 - wartość binarna Np w D1 jest 0111000 i chce aby na wyświetlaczy pokazało sie " p " Jak to zrobić ? :) Piotr Takie "cuda" robi się za pomocą polecenia Chr() :D Jeśli w zmiennej jest zapisany kod ASCII jakiegoś znaku , to by wyświetlić właśnie ten znak na LCD...
Raczej nie może działać prawidłowo, zmienna Z jest typu String. Przed dzieleniem należy przekonwertować String do zmiennej liczbowej: [syntax=basic4gl]Dim Z1 As Byte ' ' Z1 = Val(z) Y = Z1 / 9[/syntax]
Program jest prosty do zrealizowania. Robisz sobie 2 podprogramy. W jednym wyświetlasz sobie jedną zmienna na lcd i inkrementujesz lub dekrementujesz. Podprogram powinien dzialac w petli. Drugi podprogram analogicznie a do przeskakiwania pomiędzy nimi użyj gosub.
Nie rozumiem co się tutaj dzieje. Zmienna Reference nie ma żadnej przypisanej wartości początkowej. Jak np uzyskać 50% świecenia diody? Nie chodzi mi o stopniowe przyciemnianie, po prostu chciałbym mieć możliwość w dowolnym miejscu programu ustalenia jakie napięcie ma być na danym wyjściu. Nie potrzeba żadnej wartości początkowej, jest to zmienna typu...
Policzyłem dla AVCC, to jednak nieważne. Zobacz jak korzystać z symulatora w takich sytuacjach. Zmieniłem trochę Twój kod (miał też błąd w obsłudze przerwania bo zaraz pod Select case miałeś ustawianie portów bez żadnego Case. Przeniosłem więc tę linię powyżej Select Case) Wracając do symulatora to każdy ruch suwaka w symulatorze powoduje teraz printowanie...
Zwiększaj tylko jeśli zmienna <255 z zmniejszaj jeśli >0
Udało mi się zejśc do Iśr= 1mA wyłączając na czas uśpienia przetwornik i zmniejszając częstotliwość oscylatora. Da się jeszcze niżej zejść kod [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Portb = &B111111 Portb = &B111111 Config Portd = &B11111111 Portd = &B01111111 Config Portc = &B100000 Portc = &B011100 P_godz Alias Pinc.2 P_min...
[quote="lukaskay"] a gdybym czas oczekiwania zwiększył do 15 s wtedy dokładność wzrosła by mi do 4 obr/min mogę użyć komendy: Wait 15 ?? ale wtedy chyba dojdzie do przepełnienia licznika?? quote] Przy twoich parametrach silnika el., oczywiscie ze dojdzie do przepelnienia licznika0. Ponadto uwazam ze stosowanie dyrektywy "Wait" w pomiarach nie jest najlepszym...
...Gdy z terminala wysyłam 2 to procek zwraca mi 50 gdy 1 to 49 gdy 3 to 51 itd Pewnie gdyby a była single to by było O.K. "Kłaniają się" typy zmiennych. Kiedy do terminala wpiszesz 2 , to po łączu szeregowym do uC , jest wysyłany kod ASCII cyfry 2 , czyli dziesiętnie 50.Instrukcja print , "przetwarza" owe 50 na ciąg znaków ASCII reprezentujących liczbę...
Czy jest możliwe takie napisanie podprocedury w bascomie aby zwracała wartość zmiennej?? Pokażę na przykładzie o co mi chodzi, chcę powiedzmy napisać sobie uniwersalną procedurę, która będzie zwiększała wartość jakiejś zmiennej, pod warunkiem, że ta nie osiągnęła jeszcze górnej, wyznaczonej granicy... np.: Dim Dana As Byte , Granica_g As Byte , Zmienna...
Nie typ SINGLE a LONG ! Dodatkowo nie definiuj sztywno adresu bo to może być źródłem późniejszych problemów. Tak będzie poprawnie i najbardziej optymalnie ze wszystkich możliwych sposobów: Dim Zmienna As Long Dim Zm1 As Byte At Zmienna Overlay Dim Zm2 As Byte At Zmienna + 1 Overlay Dim Zm3 As Byte At Zmienna + 2 Overlay Który bajt to który i dlaczego...
a po co się upierać przy writeeprom, skoro można zadeklarować sobie zmienną wprost w obszarze pamięci EEPROM i później z niej korzystać prawie tak jak ze zwykłej zmiennej w RAM Dim Zmienna As ERAM Byte a później gdzieś w kodzie: Zmienna = Obroty ' w ten prosty sposób zapamiętujesz w EEPROMIE swoje obroty albo Obroty = Zmienna ' czyli np po starcie odtwarzasz...
Czy jeżeli w Bascomi-e, w przerwaniu, ............ ......... czy zapis będzie trwał, a procesor w tym czasię będzie już wykonywał inne rozkazy? Zapisywana jest zmienna bajtowa. Wpis wartości zmiennej do EEPROM nie odbywa sie samoczynnie, jak powiedzmy przesączanie wody przez lejek(!). Tego wpisu dokonuje processor; nie ma tam pośrednika (chyba jedynie...
na wyświetlaczu miga mi cyfra " 7 " , czyli wnioskuje że zmienna B przyjmuje wartość 7 , ale dlaczego ? oraz zero reakcji klawiatury. Witam Nie 7 tylko 15 :) 15 nie może być wyświetlone 7 segmentach, to 1111 3 ostatnie jedynki to właśnie 7. Daj if-a <15 zobaczymy pozdrawiam
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...
Zadeklarowałeś "Zmianna" a przypisujesz "Zmienna". :) Edit: Wyjście z procedury obsługi przerwania wykonuje się za pomocą Return a nie Goto Glowny ! Resztę błędów znajdziesz sam. :)
W bascomie rzeczywiście prosto gdyż mozna dać cos takiego: zmienna.zmienna_pomoc=p3.2, a w asm gorzej bo taki zapis nie przejdzie. Mało tego polecenie setb tez nie akceptuje adresu jako zmienna (rejestr czy cokolwiek) tylko wartość stała. Myślałem nad tym i chyba tylko rrc lub rlc i "wsówanie" bitów poprzez flagę C. Innego sposobu narazie nie widze.
Można zadeklarować prawidłowo zmienną eeram W ten sposób Dim Adres_er(size_t_mac) As Eram Byte At Adres_p_mac Poprzez komende AT znam adres, po jaki będzie się odwoływać zmienna eeram w pamięci. Niestety, ale z Eepromem ten numer nie przejdzie , ponieważ Bascom ignoruje etykiety w Eepromie. Deklaruje, jakie wartości powinny być zapisane w eeram...
Parę zmian i z 117% zrobiło się 91% :), a można jeszcze niżej zejść. Mam nadzieje że byka nie zrobiłem :): [syntax=basic4gl]$regfile = "attiny2313.dat" $crystal = 8000000 ' dodano wielkości stosów i ramki ----------------- ' jeżeli będzie za mało ramu wartości można zmienić $hwstack = 40 $swstack = 16 $framesize = 32 '---------------------------------------...
Dat Alias Portd.13 Ena Alias Portd.12 Clk Alias Portd.11 Nie wiedziałem, że Mega8 ma trzynaście końcówek na porcie D :) Wpis = &B1100100111000101 ' prekonfig Wpis = 8750 ' częstotliwość początkowa Po co najpierw zmienna Wpis zawiera liczbę 51653 by zaraz wartość zamienić na 8750 ? Ddrc = &B1111_1111 Portc = &B1111_1111 Jak ty chcesz sterować przyciskami...
http://obrazki.elektroda.pl/5724768100_1... Witam, Aktualnie buduję/remontuje niewielką tokarkę, do zastosowań domowych. Jej mechanika jest dość prymitywna, co za tym idzie nie posiada żadnych podziałek, ani automatycznych posuwów. Wobec tego chciał bym zaopatrzyć ją w liniał, który będzie pokazywał pozycję imaka na wyświetlaczu LCD....
A co byś powiedział na operator AND. Port = p3 AND &H0F (bierzemy pod uwagę tylko 4 młodsze bity) Wtedy zmienna Port będzie zwracała stan bitów P3.0-P3.3 w formie liczby z zakresu 0-16. Nie trzeba będzie robić ceregieli z przeliczaniem stanów kolejnych bitów.
Można to zrobić w bardzo prosty sposób: Komenda GETRC Przeznaczenie: Określa wartość zmiany rezystancji lub pojemności. Składnia: zmienna = GETRC( port , numer ) gdzie: zmiennazmienna typu Word w której znajdzie się wynik pomiaru, portnazwa portu procesora, np.: PIND, numernumer końcówki do której podpięty został obwód RC. Schemat: pinx ----[fotorezystor]------|...
zmienna bascom bascom zmienna zmienna warto ujemna
huawei hasło zmiana klawiatura bezprzewodowy nadajnik windows indeks
bateria parkside bateria milwaukee
Zalewanie obwodu wodnego w Saeco PicoBaristo: przyczyny i rozwiązania Zawieszanie się Eksploratora po podłączeniu SSD