Zdefiniuj wszystkie zmienne na jakich robisz operacje dzielenia i modulo jako INT. Zmienna jednobajtowa się przekręca do zera po osiągnięciu wartości 256.
Moze zmien algorytm tych obliczen. Wydaje mi ze ze jak po "Do" zrobisz od razu: [syntax=basic4gl]For Cykl = 1 To Y Z = ( Cykl * X ) \ Y Prc = ( 100* Cykl ) \ Y Call Oblicz Next Cykl[/syntax] to bedziesz mial co potrzebujesz i to bez uzywania single Nie znam dobrze Bascom, wiec jak nie mozna robic tylu operacji w jednej linii to dodaj zmienna pomocnicza...
nie ja piszę z pamięci więc może tam i niema nawiasów. Przypisuje jej pusty ciąg po każdej operacji ale to nic niedaje
Siemka! Musisz wziąść pod uwagę fakt, iż zmienna single przechowuje wartości zmiennoprzecinkowe ze skończoną dokładnością i to może być zauważalne przy niektórych operacjach na tego typu zmiennych. Poszukaj w helpie od Bascoma i poczytaj o kodowaniu liczb zmiennoprzecinkowych i wszystko Ci się wyjaśni:) Pozdrawiam!! Widzę że dałeś kod.:) Mi się wydaje...
Mam problem z jedną zmienną, a mianowicie : Dim Licznik As Byte Licznik = 0 Do Incr Licznik Wart_adc = Getadc(0) V = Wart_adc * 0.011730206 U_wy = Fusing(v , "#.&") Locate 1 , 5 : Lcd Licznik Loop Dlaczego po wykonaniu operacji Wart_adc = Getadc(0) V = Wart_adc * 0.011730206 ' U_wy = Fusing(v , "#.&") Zmienna licznik jest automatycznie zerowana i jak...
Zmienna w postaci zerojedynkowej? Tzn Dim A as Byte A=00001111 i A.7=1 zmieni mi siódmy bit?
To jest dosyć niewygodny sposób na przesyłanie zmiennych w postaci znaków ASCII i sam się nieco ograniczasz, bo pierwsza zmienna musi mieć zawsze dwa znaki, druga trzy itp... Jeśli chcesz troszkę bardziej uniwersalnie podejść do tematu to przesyłaj wartości zmiennych w ten sposób: PRINT XX,YYY,Z,KKKK czyli każda wartość oddzielona np przecinkiem. Później...
działa :) dzieki tak wogole to co to za roznica miedzy pinx.x a portx.x jak robie jakies operacje na pinach to uzywam set / reset portx.x i wszystko dziala poprawnie.
I jeżeli np. zmienna_tekstowa , z której będę pobierał poszczególne znaki może mieć max 5 znaków, a zapiszę do niej np. tylko 3 - tj. "ABC" . I jak jako pierwszy znak do zwrócenia(tj " początek ") podam pozycję np. 1, a ilość znaków 1 - to mi zwróci ze " zmienna_tekstowa " do zmiennej " zmienna " literkę A. Tak. -> A co będzie, jak podam jako pierwszy...
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...
Wpisanie nowej wartości do SP powoduje przesunięcie tylko jego wskaźnika. Wykonanie tego w nieodpowiednim momencie kończy się źle - jak kolega się przekonał. Dlatego najpierw w raporcie kompilacji trzeba sprawdzić gdzie znajduje się najdalej położona zmienna (użytkownika lub wewnętrzna) i sprawdzić ile ona zajmuje. Uzyskasz wtedy adres od, którego BASCOM...
Coś enigmatycznie i mało przejrzyście to tłumaczysz napisz jakio rozmiar ma zmienna i co ma zrobić . Jeśli chcesz żeby robiła operacje na porcie możesz to osiągnąć przez wybór typu"case" lub zmienna tablicową czyli w zależności od pobranej zmiennej wybierasz wartość z tablicy i wysyłasz ją na port
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...
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...
dzieki kolego, chyba masz raje :) widze ze znasz sie na bascomie, to moze bedziesz potrafil odpowiedziec mi na jeszcze 2 pytania :) 1) czy w bascomie jest mozliwe takie dzialanie: dim droga as long dim droga1 as long droga1 = droga/12.54 bo z moich prob wynika ze nie, i doje pory robilem tak, ze zmnienna droga mnozylem razy 100, i potem dzielilem przez...
Co zrobić żeby ustawić czas np 300s ? Różnego rodzaju działania matematyczne nie wchodzą w grę, ma być prosto i płynnie. skoro przeszkadza ci wprowadzenie dodatkowej zmiennej typu byte i jej inkrementacja - bo to przecież już jakby nie patrzeć działania matematyczne (choć może się nie orientujesz ale samo polecenie wait także wykorzytuje operacje matematyczne)...
robiłem to tak jak wczesniej opisywałeś. mamy te 4 bity po przecinku B3 B2 B1 B0 i teraz tak jeli B3 = 1 to do temperatury po przecinku dodawane jest 50 jesli B2 to dodawane jest 25 jesli B1 to 12 jesli B0 to 6 później dziele to przez 10 i powinna mi wyjsc liczba w zakresie 0-9 . dla temperatur dodatnich jest ok, a dla ujemnych czesto sie to rypie....
Kod wydaje się sprawować prawidłowo. Przecinek jest względny. Operacje na zmiennych z przecinkiem są męczące dla mikrokontrolera. Jesli nie jest to konieczne to należy ich unikać. Zauważ że sam DS nie wysyła Single tylko Integer. Każda zmienna z jednym miejscem po przecinku pomnożona przez dziesięć da liczbę całkowitą. Tutaj przecinek jest "wirtualny"...
cóż chylę czoło przed bascomem i odmiennością od C, jednak jakby nie patrzeć jeśli zacząć np. cykliczne powiększanie od najmniejszej wartości do największej wyjdzie na to samo czyli 65535 kolejnych operacji zwiększania :)
Cześć. Jest sobie program, w którym jest 6 następujących po sobie case. Kiedy warunki w jednym się wykonają, przeskakujemy do kolejnego i tak w kółko. W 4 z nich migają diody, dodatkowo w dwóch z nich uruchamianie na chwilę jest serwo i tu jest pies pogrzebany... Diody migają elegancko, aż wskakujemy w case z obsługą serwa - pulseout. Wtedy program...
tak odczytujesz dane z tabeli: Port = Lookup(x , nazwatabeli) port to zmienna do której je wpisujesz, x to indeks, oznacza numer kolejnej danej z tabeli, nazwatabeli jak sama nazwa mówi. a tak wyglądać ma tabela: nazwatabeli: data dane, dane, dane, 'itd każda tabela musi mieć swoją nazwę. A to jak te sekwencje się mają wyświetlać, zależy...
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...
Tak, "operacja.cośtam" (dokładnie "zmienna.nr bitu") (podobno) oznacza dostęp do bitu w zmiennej typu Byte, jeżeli jestem w błędzie to proszę mnie poprawić. Ale wg. datasheeta bit nr 7 jest bitem nieużywanym, mimo to trzeba go maskować? Postaram się to wszystko przetestować w poniedziałek to opiszę co i jak.
A może podeszłaby instrukcja zmienna1 = MAKEBCD( zmienna2 ) gdzie: zmienna1zmienna, do której zapisana będzie liczba w formacie bcd, zmienna2zmienna zawierająca liczbę dziesiętną. Format BCD to coś takiego, że w 4 najstarszych bitach zakodowana jest binarnie liczba dziesiątek a w 4 młodszych liczba jedności. Normalny zakres liczby 8 bitowej to 0-255...
Nie możesz "przekierować" pinu. Przypisanie przerwania zewnętrznego jest hardwareowe. Generalnie wszystko zależeć będzie od tego jak masz skonstruowaną główną funkcję. Jeżeli stosujesz w niej co rusz jakieś opóźnienia to będzie lipa, ale jeżeli cała główna funkcja wykonuje się szybko, bez zbędnych opóźnień to wtedy bez problemu w głównej pętli analizujesz...
Procedura podana przez Konrada działa bardzo ładnie ale ma jedną wadę odbiera dana jako znak ASCII a ja chce odczytać zwykłą daną byte w ten sam sposób. Zamiast Inkey() możesz dać Waitkey() (waitkey wstrzymuje działanie programu do czasu, aż pojawi sie jakiś znak, ale w tym przykładzie to nie ma znaczenia). Zmienna Znak jest zadeklarowana jako bajt...
Koncepcja liczenia się zmieniła. Coś źle robię. Chce zapisać pomiar czasu jako jedna zmienna, Pomiar = Sekundy_d + " " + Sekundy_j "" + Setne_d "" + Setne_j Jak i : Pomiar= pomiar + str (sekundy_d) pomiar = pomiar + str (sekundy_j) wtedy to już kosmiczne wyniki mam. Jak to zapisać poprawnie ? Po pierwsze: Bascom akceptuje tylko jedną operacje arytmetyczną...
Jesli chodzi Ci o rozkladanie na setki, dziesiatki i jednosci to sprobuj tego: Dim Liczba As Integer Dim Pomocnicza As Integer Dim Setki As Byte Dim Dziesiatki As Byte Dim Jednosci As Byte Liczba = 852 Setki = Liczba / 100 Pomocnicza = Setki * 100 Liczba = Liczba - Pomocnicza Dziesiatki = Liczba / 10 Pomocnicza = Dziesiatki * 10 Liczba = Liczba - Pomocnicza...
Podłączę się pod temat Ja w bascomie, aby odczytać dany bit w bascomie stosuje Zmienna =1 Dim pomoc as byte Pomoc = zmienna and bx00000001 If pomoc =1 then ‘Jest bit else ‘Nie ma bitu end if Po pierwsze dlaczego nie mogę odczytać wyniku z operacji and bezpośrednio w if Czy tamto nowe podejście w bascomie będzie bardziej optymalne?
(at)JmL tzn co chcesz zrobić? Pomaskować bajty? Tak samo jak w c:> Tyle, że max 1 operacja na linię (główną porażka bascoma). Dodano po 5 (czyli : zmienna=source and &hff00 shift zmienna, right, 8 source=source and &h00ff U mnie bascup też leży jak miś bez nogi:P (Smutne, ale coraz częściej muszę do helpa zerkać bo nie pamiętam rozkazów;) )... (at)ZBeeGin...
Jeśli zmienna wyświetl jest typu Word, czyli ma być to liczba całkowita. Od razu ci podpowiem, że nie potrzebujesz używac liczb zmiennoprzecinkowych, które "kosztuja" bardzo dużo. Zrób operacje na liczbie *10, a przy wyświetlaniu przesuń tylko przecinek w lewo o jedną pozycję.
Wbrew pozorom czas można sobie wypracować :D Gdybyś już go miał to zauważyłbyś, że funkcja obliczania CRC/PEC opiera się na tym, że zmienna CRC przechowuje wyniki kolejnych obliczeń...ale przed nową sekwencją obliczeń musi być wyzerowana . Jeśli jej nie wyzerujesz to do obliczeń dołączasz wynik ostatniej operacji ;)
mam przerwanie w którym wykonuję operacje na zmiennych "globalnych" niestety po powrocie z przerwania moja zmienna odtwarza sobie wartość z przed przerwania. Czy jest jakaś możliwośc przekazania wartości z przerwania do programu głownego, oprócz on interrupt nosave? Zdanie rozpoczynamy wielką literą - proszę poprawić. Proszę stosować tagi w tytule -...
A czy zauważyłeś , że 2-ga linia Twojego źródła (tam gdzie wstawiłem znaki zapytania) "nic nie robi" :?: Zamiast: zmienna_long |= (zmienna_byte <<2) & 3; mógłbyś napisać: zmienna_long |= 0; lub tę linię pominąć , bez żadnego wpływu na wartość "zmienna_long", bez względu na wartość "zmienna_byte" :wink: Wynikiem operacji ... (zmienna...
operacje na single zajmują więcej pamięci ( tracisz cenne miejsce na kod ) . Jeśli w pętli 100 razy wykonasz operacje na zmiennej SINGLE to na pewno będzie to wykonywane znacznie dłużej niż na zmiennej WORD . Dlatego do uśrednienia weź dane w postaci WORD lub LONG ( zmienna Wo czyli wartość odczytana ) , również porównania wartości rób na tych typach...
Witam Mam pytanie dotyczące obsługi encodera... ................. Przy zmianie kierunku pierwsza cyfra na wyświetlaczu zostaje "zamrożona" a zmianie podlega druga cyfra, znów w pętli. i tak dalej. Każda zmiana kierunku powoduje przeskok na kolejną pozycje wyświetlacza Jest to w zasadzie prosta operacja, lecz brakuje tu zasadniczego warunku –...
Problem rozwiazany - to wina bascoma - kompilator zaklada zawsze ze zmienna counter ma wartosc Word a w attiny26 tak jak ktos to opisal wyzej moze byc tylko Byte. Operacje nop sa tylko poto aby wklejajac program cos bylo w petli niewazne co bo i tak problem lezy gdzie indziej
To akurat nieprawda. Tutaj to taka histereza bo nie porównujemy czy jest mniejsze czy nie, tylko do dwóch różnych wartości . (W Zajete oblicza Prog_gorny a w Wolne na odwrót) Niestety ten zapis jest jednak nieefektywny bo za każdym IF`em zmienna musi być ponownie załadowana do rejestrów celem porównania. Jeśli jest to ta sama zmienna to efektywniej...
No niestety BASCOM tak ma. Zdaje mi się że takie obliczenia kiedyś działały (operacje na integer a zwracanie wyniku do Byte). Widocznie od którejś nowej wersji już nie działają. No to będziesz musiał zrobić tak: [syntax=basic4gl]Dim Stopnie As Integer 'Stopnie musi być typu Integer Do Ds_i1 = 305 '************ Obliczenia temperatury Stopnie = Ds_i1...
Aby obliczyć prawidłowe wartości stosów wystarczy znać swój program, zwłaszcza to co ze stosów korzysta najwięcej. - Ile jest przerwań i jak mogą się wywoływać wzajemnie. Każde przerwanie może odłożyć na stos prawie 40 bajtów w prologu. - Ile mamy wywołań podprogramów przez GOSUB. Ile mamy wywołań wbudowanych funkcji i czy korzystają z operacji na zmiennych...
m.bartczak : Zauważ, że jak by nie patrzeć zmienna A posiada pewną wartość, oba dodawania powinny dać ten sam wynik, problem polega na tym, że wygląda to tak, jak by dodawanie powodowało zmianę jednego z argumentów - tak jak by funkcja realizująca dodawanie nie robiła kopii zmiennej A tylko na niej robiła operacje. Dodatkowo zaokrąglenie 0.0001669...
Sugeruję zapoznać się z instrukcją "SHIFT zmienna, kierunek, ile bitów przesunąć"... 8-) Wystarczy zapoznanie się z podstawową instrukcją "IF ... End If", SHIFT zostawiłbym na późniejsze udoskonalanie programu, jak autor tematu opanuje podstawowe instrukcje bascoma. Jednak nie zgadzam się z takim stwierdzeniem. SHIFT jest instrukcją jak każda inna...
Część po przecinku to sobie normalnie matematycznie wyodrębniasz. Nie wiem dokladnie o co chodzi:( mozesz troszke jasniej? moze na jakims przykladzie? Kolega snow ma rację , ale nie koniecznie musi to być "matematycznie" :) Załóżmy , że po pomiarze i obliczeniu napięcia w zmiennej SINGLE , użyjesz instrukcji FUSING , do konwersji SINGLE na STRING.Po...
Nic nie jest wcześniej robione automatycznie a także ty nie musisz robić żadnych takich sztuczek cyrkowych jak to podałeś w ostatnim przykładzie. W obydwu przypadkach albo za każdym razem bez żadnych dodatkowych czynności odbędzie się ta sama prosta operacja. Zarówno do zmienna_byte jak zmienna_typu_string trafi dokładnie ta sama wartość czyli 97 czyli...
Nie wiem czy dobrze zrozumialem, ale chodzi o to, ze w obsludze przerwania mam ustawiac jakas zmienna np. na 1, a w petli glownej wykonywac reszte programu? Nie sadze ze w pelni zrozumiales swoj problem; Zwroc uwage na procedury wykonywane chocby tylko w przerwaniu Timera1, ktore powtarza sie co 1 ms czyli masz tylko 125 cykli zegarowych pomiedzy kolejnymi...
(...) 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...
Pytanko z cyklu "jak to robicie?" :-) Załóżmy, że w projektowanym układzie mam port A skonfigurowany następująco: PA.0...PA.4 - skonfigurowane jako wejścia PA.5...PA.7 - skonfigurowane jako wyjścia. Chciałbym jednym poleceniem odczytać pierwsze pięć bitów. Oczywiście mógłbym odczytać cały port: zmienna = portA i wykonać stosowne operacje bitowe na zmiennej,...
Panowie - w bascomie jest wszystko czego potrzeba. Jeżeli np. dim czestotliwosc as word dim pomoc as byte czestotliwosc=1567 pomoc=low(czestotliwosc) do loop end Jak wyobrażacie sobie kompilator bez możliwości takich operacji? a w ogóle wiadomo że zmienne sa zapisywane - wystarczy wiedziec gdzie się zaczyna zmienna i jaką ma długośc i mozna...
Witam. Wiem, wiem powiecie wrzuć w wyszukiwarkę, a nie zawracaj nam głowy. Jednak wyszukiwarka dzisiaj ciągle wywala mi pustą stronę dlatego piszę tutaj bezpośrednio. A oto co mnie gnębi. Mam odczyty z DS18B20 temperatury zapisanej w zmiennej typu SINGLE. Dla utrzymania zadanej temperatury stworzyłem stałą liczbową instrukcją CONST i to mi działa. Nadszedł...
hmmm a ja muszę jeszcze coś dodać :) dane odczytujemy ze scratchpad'u (RAM) "słowo jest przesyłane w odwrotnej kolejności"... w funkcję makeint() też wpisujemy z odwrotnej kolejności (najpierw LSB) więc idealnie sięona do tego nadaje zmienna stypu single zabiera aż 4 cenne bajty ramu i potem trzeba jeszcze dodawać fusin co znacznie zwiększa ilość generowanego...
No więc zacznijmy. W Twoim programie zmienna typu Single ma wartość początkową zero . Niezależnie od tego czy naciśnięty jest jakiś przycisk to zmienna ta dzielona jest przez 16. Tak więc nawet gdyby przyciskiem została zwiększona o jeden to i tak zostanie podzielona przez 16. Czyli cały czas będzie mniejsza od jeden. Będzie to 0.xxx coś tam Takie 0.1...
Te deklaracje (gdyby Kolega otworzył choćby na moment manuala) to deklaracje łańcuchów znakowych (tekstów) a liczby po gwiazdce oznaczają maksymalną długość napisu + 1 (znak zerowy zakończenia tekstu), czyli np. w zmiennej Tekst1 można zapisać maksymalnie 9 znaków. Oczywiście na tekstach NIE MOŻNA dokonywać operacji matematycznych. Jedyne co można robić...
Mam taki problem z napisaniem kodu w BASCOMIE. Nie chodzi o to abyście mi podali na tacy fragment kodu źródłowego tylko ogólnie podsunęli koncepcje jakby to można zrobić a ja sobie już poradzę. Otóż dajmy na to mam 8 zmiennych (np. a,b,c,d,e,f,g,h). Problem polega na tym ,że uC ma "wylosować" na początku pracy programu wartości tym zmiennym w przedziale...
Witam Ja Odczyt temperatury zrobił bym tak: .... 1wwrite &HCC 1wwrite &HBE Lsb = 1wread(): Msb = 1wread(): Minus = Msb.7 Tempa = Msb * 256 Tempa = Tempa + Lsb If Minus = 1 Then Tempa = Not Tempa Tempa = Tempa + 1 End If Tempa = Tempa * 10 'temperatura *10 Tempa = Tempa / 16 Jest to fragment kodu pozwalający na odczyt ujemnych...
(...) ' 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...
postaram sie to napisac, bo mnie to interesuje, a mam lekkie problemy jak chodzi o takie operacje na bytach i bitach. dim x as byte do x.0=pinb.1 shift x, left, 3 x.0=pinb.2 shift x.0 , left, 2 x.0=pind.6 shift x.0 , left, 1 x.0=pind.7 loop end tak powinna teraz wygladac zmienna x : 0, 0, 0, 0, (pb.1), (pb.2), (pd.6), (pd.7)
Spróbuj użyć tego sposobu obsługi parametrów zapisywanych w EEPROM (traktujesz je jak zwykłe zmienne): Dim Reserved As Eram String * 8 'Przyzwyczajenie ze starych AVRów - zapobiega(ło) utracie danych z początku obszaru EEPROM :) Dim Zmienna1 As Eram Byte Dim Zmienna2 As Eram String * 8 Dim Zmienna3 As Eram Long Dim Temp as Byte [...]...
Nie używam i nie znam BASCOMA. Próbuje swoich sił w Arduino IDE (ATMega328(at)16MHz). Po pomocy ze strony przyjaznych niewiedzącym: BlueDraco , nsvinc , tmf mogę stwierdzić że: Ten uC ma na pewno możliwości, aby obsłużyć te przerwania (zakładam ok. 33kHz). Problem nie polega na wywołaniu zaprogramowanego przez Ciebie przerwania (ale to już zauważyłeś),...
Witam Procek to ATmega16. Kurcze nie mam teraz możliwości sprawdzenia czy zadziała, ale jutro z rana może później napiszę czy zadziałało. Teraz doczytałem dokładnie, że rezultat to zmienna tekstowa a nie typu single, może jak ją deklaruje jako single to się sypie w tym momencie ? A drugie pytanie jeszcze mam takie, że chcę zrobić np. termostat, czyli...
Witam, Ważna uwaga: typ long jest całkowity, nie ma części ułamkowej, trzeba użyć single lub double. Mała wskazówka z helpów (polski ubogi pełny po angielsku w programie) Pamięć ERAM. Większość procesorów serii AVR posiada wbudowaną pamięć EEPROM. Pamięć ta może przechowywać dane nawet po wyłączeniu zasilania. Jak podaje producent nawet do 10 lat. Pamięć...
dla każdej liczby robisz konstrukcję typu Portc=Portc and 0B1111xxxx gdzie x to odpowiednie kombinacje do uzyskania. W miejscu X jak dasz 1 to ustawisz a jak dasz 0 to skasujesz. No niestety ale to się nie zgadza :( Portc=Portc and 0B1111xxxx Jeśli tu zamiast x-ów dasz ZERA to wyzerujesz bity Ale NA PEWNO jeśli dasz zamiast x-ów JEDYNKI to ich nie...
PRZEPRASZAM, POPEŁNIŁEM BŁĄD !!! WZÓR JEST "Vref/1023", a nie, jak pisałem odwrotnie Atmega8 żeby mierzyć napięcie musi mieć jakieś odniesienie - napięcie odniesienia czy też inaczej referencyjne. Są trzy możliwości - napięcie referencyjne to: - napięcie zasilania AVCC (około 5V) - napięcie odniesienia wewnętrzne 2,65V - napięcie referencyjne z zewnątrz,...
Przy wykonywaniu operacji arytmetycznych w Bascomie wszystkie zmienne powinny być tego samego typu (u mnie np. Long) jednak zajmuje to trochę RAMu, jedna zmienna to aż 4 bajty. Przedstawiam tutaj moje rozwiązanie podziału zmiennej na wyświetlacz 6 cyfrowy LED. 'globalne zmienne dla wyświetlacza 7seg Dim Cyfra1 As Long 'cyfra jednosci Dim Cyfra2 As Long...
Witam! Mam takowy problem. Pisze sobie program zegarka polaczonego z termometrem oraz wspolpracujacym z komputerkiem (uklad posiada RS oraz kilka wejsc wyjsc). Same zczytywanie z DS'a nie jest dla mnie problemem - jezeli program jest wielka petla typu: Do Gosub 1wire Gosub I2c_read Gosub Lcd_wys Loop to wszystko dziala. Jednak chciałem zrobić to na...
przeanalizuj sobie dobrze ten kdzik poniżej bo on jest dobrze napisany - naprawdę ;) ja wprawdzie kiedyś przy okazju swojej wytrawiarki też zrobiłem sterowanie w Bascomie 2 odbiorników przy 75 krokach ale dałoby radę więcej kroków i jeszcze kilka odbiorników. Z tym, że już nie pamiętam dokładnie zagadnienia więc trudno mi się teraz znowu w to wgryzać....
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...
Panowie, cały problem tkwi w konwersji zmiennych. Pewnie nikt nie wie co się stanie jak BASCOM zrzutuje integer (16) i to pewnie ze znakiem (signed) na bajt albo lepiej char (bajt ze znakiem). Trzeba się dowiedzieć jak on to robi albo po prostu zacząć pisać w poważnym języku na poważny kompilator (bez obrazy oczywiście) :) Pozdrawiam (M.) Nie wiedzą...
Witam, W moim programie umieściłem dane typu LONG w pamięci EEPROM $eeprom 'dane do zapisania w EEPROMie Data 0 ' nie uzywany bajt Tab_czas1: Data 0& , 1& , 2& , 60& , 61& , 75& , 1275& , 1455& , 1456& , 1457& , 2000& , 2001& , 2002& , 2060& , 2061& , 2075& Data 3275& , 3455& , 3456& , 3457& , 4000& , 4001& , 4002& , 4060& , 4061& , 4075& , 5275&...
Czy program poniżej nie ma już żadnych błędów? Czy trzeba zmieniać fuse bit? $regfile = "m8def.dat" $crystal = 8000000 Dim A As Byte 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 Lcd "Hello world." Wait 1 End Czy ten potencjometr trzeba dawać? Tak, trzeba zmienic...
Pomijając literówkę w słowie "eeprom" to deklarując zmienną jako eram byte to siłą rzeczy zostaje ona automatycznie zapisywana do eepromu pod adres 0. Masz dwie opcje: pierwsza to deklaracja zmiennej jako eram byte i odczytywanie jej z eepromu z adresu 0 lub zapisanie zmiennej jako byte i wcześniejszy jej zapis do eepromu pod dowolny adres i następnie...
...Ps. Tak, już dla ścisłości to skoro do tej pory nie używałem tej pamięci to czas to zrobić. A przy okazji to czy zmienną typu STRING też tak samo łatwo tam zapiszę...? To działa ze zmienną dowolnego typu :D Ijeszcze jedno podejście do tematu.. Napisałem kod z uwzględnieniem Twoich uwag Piotrek tzn: Dim x As Eram Single Kod się skompilował i jest...
Może nie umie wstawiać? $regfile = "m88def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 Config Portd = &B00001111 'portd 0 1 2 3 jako wyjscia portd 4 jako 1wire 5 6 7 jako wejscia Portd.5 = 1 Portd.6 = 1 Portd.7 = 1 Portd.3 =...
Wgraj ten plik i powiedz jak działa menu i sterowanie ręczne i auto.. Zmień operacje na temperaturze na pozbawioną części ułamkowej (po przecinku), łatwiej będzie operować na warunkach bo maja rozdzielczość jednego stopnia więc to co wyświetlasz na LCD z przecinkiem nie jest potrzebne Tobie. Można to zrobić np tak. [syntax=basic4gl]'**********************...
Zmienna _a1 to pomost pomiędzy biblioteką a programem użytkownika. Tak, to zawartość tej zmiennej odczyta lub zapisze układ Master. Procedura I2C_master_needs_data wykona się, jeśli kod z biblioteki wykryje operację odczytu z magistrali (zostanie zaadresowany Twój Mega8). Jeśli zatem w treści tej procedury zapiszesz cokolwiek do zmiennej _a1 to ta wartość...
Typowo taka zmienna ma 32 bity, stąd można przechowywać 2^32 różnych liczb, jako, że single ma pewnie coś koło +/-10^38 to dostrzegasz problem? Dostrzegam problem, bo operacje na tych "niedokładnych" wartościach np. trzykrotne podzielenie przez 10, albo co gorsza przez same siebie powoduje czasem totalną "kaszanę". Ostatecznie jednak doszedłem do w...
Witam wszystkich, Mam układ, który po I2C zapisuje mi do pamięci 24c256 16 bajtów jeden po drugim. Robi tak co 3 minuty, procedura wygląda w ten sposób, że odczytuje adres zapisany w 4 i 5 komórce, zwiększa go o 1 po każdym zapisie a potem zapisuje do komórki 4 i 5." W komórce 1 i 2 zapisana jest ilość pozycji, pod koniec procedury zapiszdane wartość...
nouki --> czemu z uporem godnym podziwu pytasz czemu zmienna nie działa w waitus skoro działa ci z waitms ??? przecież przytoczyłem ci fragment helpa na żywca i masz tam napisaną notkę, którą przetłumaczyłem o tym, że dla waitus nie można stosować zmiennej tylko stałą. Inaczej jest w przypadku waitms - wystarczy zajrzeć także do helpa - tam nie masz...
Witam, Forum wybrałem po przeczytaniu: "Mikroprocesorowe sterowniki, czujniki, mikromechanika, pneumatyka, mechanika precyzyjna." do większości pasuje, stąd temat się znalazł tutaj. Do rzeczy: Sprzęt, który posiadam: Zestaw AVT 3500 w którym siedzi sobie AVR 90S2313 Enkoder optyczny HEDS-9140 500 CPR Silnik DC 24 V Prowadnica zamieszczona na śrubie...
Cytuję: "Ustawia się to w zależności od skomplikowania programu. (...)" O co tutaj chodzi i o jakie wartości tutaj chodzi? Dokładnie chodzi o ilość bajtów jaką początkowo zajmie każdy ze stosów. Stos jest elementem rozrastającym i kurczącym się dynamicznie. Może dojść do sytuacji gdzie jeden zajdzie na drugi - stack overleap - i kłopot gotowy. Dlatego...
Witam. To tej pory nie stosowałem zbyt często timerów do generowania przerwań celem generowania odcinków czasu. Być może dlatego żyłem w słodkiej nieświadomości pewnych komplikacji będących nie bez wpływu na dokładność odmierzanych odcinków czasu. Do tej pory wydawało mi się, że dla danego rezonatora kwarcowego wystarczy: 1. Obliczyć czas trwania pojedynczego...
Jakby co to całość programu znajduje się $regfile = "2313DEF.dat" $crystal = 10000000 Dim Eaddress As Eram Byte At 2 'adres pilota Rc5, zosatał umieszczony pod adresem 2 gdyż z doswiadczenia wiem, że komórki 0 i 1(szczególnie 0) pamięci EEPROM potrafią się skasować przy nagłych skokach napięcia zasilania Dim Epamiec(16) As...
Tzn. wiem, że zmienna typu bajt nie może być większa niż 255, ale zapomniałem, że nie robi się operacji na różnych typach zmiennych razem [syntax=vbnet] Solar_mid_mod_temp = Solar_mid_mod_temp \ 2 ' srednia z dwoch czujnikow = 283 [/syntax] co prawda przekracza 255, ale wynik z dzielenia przez 10 i Modulo 10 już nie, czyli 28 i 3 [syntax=vbnet] Solar_mid_dec...
Próbuję przeanalizować kod samplowy: $crystal - częstotliwość rezonatora $baud - prędkość transmisji po UART $regfile - deklaracja typu procesora b). konfiguracja automatyczna na podstawie wybranego uP: Loaderchip - stała - deklaracja, jaki uP będzie wykorzystany W zależności od tego ustawione zostaną zmienne: $loader - adres pod jakim znajduje się...
Jeżeli między znakami masz jedną kolumnę odstępu, to na pierwszej stronie będą dwie, a nie jedna kolumna z drugiego znaku, no ale to szczegół ;) Nie wiem, jak masz zapisaną "czcionkę". Jak na moje oko, to może być po bajcie na każdą linię i takich linii 7, jedna po drugiej, potem następny znak itd. Nieużywane bity (te z prawej, znaki wyrównane sa do...
Nie wiem jakiej używasz "strategii" pomiaru ale na filmie widzę, że odczyt masz niezbyt stabilny. Sam przymierzam się do budowy takiego licznika i wymyśliłem taki algorytm: LICZNIK - sprzętowy licznik impulsów z lampy w uK TIMER - sprzętowy timer w uK wywołujący przerwanie co 5s (lub w/g RKSB-104 co 7s) Pseudokod: [syntax=c]byte Tab[8] = {0, 0, 0, 0,...
Raczej najpierw musisz sie nauczyć C No właśnie próbuję. Przez ostatnie kilka dni przewertowałem więcej PDF od kontrolerów, niż przez ostatnie 3 lata :D Na razie największy problem dla mnie to operacje bitowe - wiadomo w Bascom łatwiej. Kupiłem nawet Attiny4313, coby nie brakło pamięci. Problem był jednak w momencie polecenia włączenia przerwań, były...
Witam serdecznie Jest to pojekt z tego linku: http://www.elektroda.pl/rtvforum/topic11... I stamtąd też pochodzi kod, zmodyfikowałem jedynie maksymalną temperaturę zadaną z 30 do 99. [syntax=vbnet] '***************************************... '#######################################... '# # '# Autor: klops_mops...
O matko! nie wiedziełem że ty w Bascomie piszesz. Hmmm a może Bascomowi przeszkadza ten nawias (95) ? zresztą po co go w ogóle dałeś ? Poza tym taka operacja jest i powinna być w pełni możliwa przecież zarówno zmienna1 jak i zmienna1e są typu Word. No chyba, że to jakiś babol Bascoma albo może coś ty źle na błąd patrzysz.
Myślę że Ci którzy piszą swoje programy bo są dociekliwi i potrafią rozwiązywać problemy nie piszą postów na Elektrodzie. Tutaj jak pokażesz ranę to Ci ją jeszcze posolą Ahahahahaha. Posty z prostymi problemami najczęściej piszą osoby które chcą osiągnąć jakąś funkcjonalność a nie jest ich celem życiowym zostanie programistą. Kiedy wiec akurat mam czas...
Dzięki za podpowiedź. Będę mógł sprawdzić dopiero pod koniec tygodnia. Niestety dopiero teraz, jak "mam mokro w gaciach" wczytałem się w datasheet i wyględa na to, że zupełnie niepotrzebnie kombinowałem, bo miałem ustawione wszystko jak należy. Mam jeszcze jedno pytanie, ale dotyczy ono raczej assemblera i 1wire. Każdy, kto dłubie w asm, zostaje zmuszony...
http://obrazki.elektroda.net/7_123635472... Prawie rok temu, zainspirowany konstrukcją pana Kamila Przychodzenia http://obrazki.elektroda.net/18_12363549... http://obrazki.elektroda.net/82_12363551... Płytka sterownika oraz płytka organizacji połączeń http://obrazki.elektroda.net/62_12363543... http://obrazki.elektroda.net/80_12363591...
Zmieniłem troszkę podłączenia wyświetlacza LED do atmegi. Teraz z mam tak: PORTD.4 = segment A PORTD.5 = segment B PORTD.6 = segment C PORTD.7 = segment D PORTC.2 = segment E PORTC.3 = segment F PORTC.4 = segment G PORTC.5 = segment DP Do portów XTAL1 i XTAL2 mam podłączony rezonator 32kHZ. Układ prawidłowo wyświetla temperaturę i przekazuje na UART...
kwarc mam 4Mhz. To niemusi chodzić bardzo szybko bo i tak będzie zapewne filtr uśredniający, bo to ma sterować ledami, oczywiście przez tranzystory bo ledów ma być sporo :) A więc to będą 3 grupy ledów w kolorach RGB, i chce żeby każdy kolor był regulowany a oprócz tego ogolna jasność dlatego są mi potrzebne 4 PWM'y 8) ewentualnie te programowo można...
http://obrazki.elektroda.pl/9303655200_1... Witam, Tu: http://www.elektroda.pl/rtvforum/topic33... znajduje się opis powielacza czasu automatu schodowego. Obiecałem tam, że na bazie tamtego układu opracuję „inteligentny” automat schodowy, i oto jest :). Jego „inteligentność” jest zawarta w założeniach...
Walczę i walczę z tym programem ale nie daje rady.... :cry: Wrzucam cały kod, jest on zrobiony na bazie jak wspomniałem wcześniej: Projekt powiadomienia o alarmie by Xury wersja 2.0 [syntax=basic4gl] '***************************************... 'Projekt powiadomienia o alarmie by Xury wersja 2.0 'Działanie na przerwaniach...
Witam. Dzięki za wskazówki. Można wrzucić operacje do podprogramu i przypuszczam że trochę program przyspieszy, lecz przede wszystkim pomagitie wy mnie w skróceniu tego co załączam poniżej. Muszę korzystać z nieulotnej pamięci gdyż są to informacje z których korzystam przy następnym uruchomieniu urządzenia. Oj długi ci on. Dim Aa1 As Eram Byte 'rodzaj...
Witam ,właśnie zaczynam wzmagania z operacjami matematycznymi w BASCOM (jak dotąd nie były mi potrzebne) ;) Zauważyłem pewne zjawisko ,że po przekroczeniu 90% Flash przy kompilacji zaczynają się dziać dziwne rzeczy ,jakby stos czy ram niszczył zmienne i pojawiają się dziwne wyniki ,stąd z ATTINY2313 ,przeskoczyłem na Atmegę8. Ten sam program bez jakichkolwiek...
zmienna bascom bascom zmienna bascom zakres zmienna
kupić pralkę miele dobrać tranzystory sterujące strzelająca żarówka
zawór proporcjonalny lodówka kondensator zwarcie
Bosch KGN36A91/15 No Frost – wentylator zatrzymuje się po 1-2 dobach, test w niskiej temperaturze Ariston Clas X CF – błędy 102, 105, 101: ciśnienie, cyrkulacja, przegrzanie, diagnostyka