Możesz, to zrobić tak: Dim zmienna as single Dim part1 as byte at zmienna overlay Dim part2 as byte at zmienna+1 overlay Dim part3 as byte at zmienna+2 overlay Dim part4 as byte at zmienna+3 overlay Odebrane dane uartem wrzucasz kolejno do zmiennych 'part' w efekcie zapełniając 4bajty zmiennej 'zmienna' typu single.
Przy odczycie takiego czyjnika możesz uzyskać max 99,9 , więc po co zmienna single. Po prostu dla wyniku np 22,5 stC wyliczasz liczbę 225 a później robisz: [syntax=basic4g] calkowite = wyliczonazmienna / 10 dziesietne = wyliczonazmienna mod 10 i pomiędzy wstawiasz kropkę na wyświetlaczu[/syntax]
Witam!!! Mam problem z dodawaniem zmiennej single a mianowicie Dim test as single test = 0 do locate 1,1 lcd test Debounce Pinc.5 , 0 , A , Sub loop A: test = test + 0.1 i jak nacisnę przycisk raz to zamiast być 0.1 wyświetla 0.09999996 Dlaczego tak się dzieje??
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...
Zmienna = -Zmienna ?
Można też zdefinować zmienna np tak: Zmienna As Single At &H80 i podstawić LDS r27, {b1} LDS r28, {b2} LDS r29, {b3} STS $80, r27 STS $81, r28 STS $82, r29
pokombinuj z instrukcjami high i low
- powyżej 10W: "Pwej= Tak będzie się wyświetlało jeżeli pierwszym bajtem zmiennej String Pwej będzie 0. Zero jest końcem łańcucha (dwie możliwości takiego błędu już podałem stos, albo nadpisanie przez inny łańcuch ;)). Nie piszesz też jaka wersja Bascoma to jest, może w którejś wersji był błąd z funkcją Fusing. Możesz podglądnąć co się dzieje z Pwej...
Nie możesz mnożyć liczby byte i stałej ułamkowej. W tym przypadku zmienna "Kolor_temp" musi być typu single.
... Czyli zmienna single będzie wygladać tak: 0001 1001 0001 = 191H nieznaczące zera pominąłem Nie kolego , zmienna SINGLE będzie wyglądała tak ;) 0 10000111 10010001000000000000000 Cały Twój wywód miałby rację bytu , gdyby zmienna była INTEGER lub WORD , ale jeśli chodzi o SINGLE , to po szczegóły odsyłam tu: http://pl.wikipedia.org/wiki/Liczba_zmie...
Fajnie by było, gdyby funkcja zwracała wartość logiczną - czy single ma wartość ułamkową czy też jej nie ma. Chociaż trzeba by się przyjrzeć jak zorganizowana jest zmienna single, czy czasem nie da się wyjąć tej wartości co po przecinku np. za pomocą LOW(zmienna) na przykład.
Witam, Proszę o podpowiedź jak zapisać zmienną typu single, konkretnie wartość np. 1.23458 do komórek pamięci eeprom. Chodzi o zapis w Bascomie. Jeżeli wpiszę dim zmienna as single zmienna= 1.23458 Writeeeprom zmienna , 1 to przy odczycie Readeeprom zmienna , 1 na lcd ukazuje się 1.234580037
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...
Witam ! Mam problem z wyswietleniem zmiennej single na wyswietlaczu LCD 2*16. Wszystkie inne wyswietlają sie bez problemu a jak wstawie zmienna single zeby wyswietlil to wyswietlacz przestaje wyswietlac, czyli ni widu nic :( Mial ktos taki problem ??? Pozdrawiam
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...
to tak jak byś chciał włożyć słonia do pudełka pa zapałkach. zmienna single to 4 bajty a byte to 1 bajt czyli 8 bitów wiec jeżeli wartosc zawarta w single jest nie wieksza niż 255 to da się to zrobić ale jeżeli jest w niej np. 100000 to nie da rady
Temperaturę odczytaną z ds'a formatuję i wrzucam do zmiennej string poleceniem FUSING, np: Temp = Fusing(t1 , "#.#") gdzie Temp to string, a t1 to zmienna single z odczytaną temperaturą. Następnie mam kilka warunków if..then gdzie zmienna Temp jest uzupełniana znakami (np. spacji), tak aby fragment łańcuch z pojedynczą temperaturą miał zawsze tą samą...
Czy tak jest poprawnie : [syntax=basic4gl] ' pulses zmienna word Vol = Pulses ' vol zmienna single Shift Vol , Left , 8 Vol = Vol + Counter0 Vol = Vol / Przep ' zmienna przepływówki zczutana z eeprom 250 i mozliwosć zmiany przez menu B = Vol ' b zmienna single C = B * Cena 'cena 1.36 zmiana przez menu W = B * Waga 'waga 1.36 zmiana przez menu ' wiem...
Zmienna typu SINGLE i komenda FUSING.
Po konwersji część ułamkowa zostaje "utracona". Zmienna przyjmuje wartość jedynie części całkowitej bez zaokrąglenia, czyli: 2,9 (single) po konwersji na integer to 2
Stwórz tablicę za pomocą: Dim Zmienna(5) As Byte 'lub Word, Integer, Long, Single, Double... Przed zapisem aktualnej wartości do Zmienna(1), przesuń wartości z 1, 2, 3, 4 o jeden indeks (na 2, 3, 4, 5). Pamiętaj aby zrobić to tak, by nie "zamazać" wartości przy przesuwaniu. Potem zapisujesz aktualną wartość do Zmienna(1) i masz komplet, który...
W takim razie... Zadeklarowalem zmienna single jako ERAM i druga jako zwykly single Dim a As Eram Single Dim b As Single Odpalam pierwszy program a=5 Potem drugi b=a I nic... Dostaje zero
w przerwaniu operuje na zmiennych typu byte ktore są kolejnymi wskaźnikami do adresu zmiennej typu single czyli odbieram 4 bajty i zapisuje je odpowiednio do 4 zmiennych typu byte: Bajt1=odbior Bajt2=odbior bajt3=odbior bajt4=odbior i w ten sposób Zmienna single juz ma wartosc taka jaka powinna ;) wczesniej mają one odpowiednie deklaracje
:) witam Po pierwsze nie mozesz do PWM do dac 2.55 poniewaz PWM dziala na liczbach typu integer, czyli calkowitych :) i nie wiem czemu sie dziwisz ze Ci wyswietla 85, prosta operacja matematyczna :) 255/2.55, procesor robi zaokraglenie 2.55 do 3, 255/3 daje Ci 85... Tak samo dodawanie wartosci 2.55 zakonczy sie rezultatem dodawania 3-ki. mozesz to sobie...
Nie wystarczy po prostu zadeklarować zmienna jako single ? Z mojego doświadczenia wynika że można i ze to bez problemu działa i że wystarczy polecenie zmienna = wartość żeby zapisać i tak samo odczytać przez proste wskazanie zmiennej - nie ma potrzeby zawracania sobie głowy adresem - to tylko bascom ;)
Nie wiem jak to działa ale dokładność pomiaru spowodowała: R = Int(a) + 100 a dokładniej 100. Gdy było 00 liczył 2x po 10 a gdy wpisałem 100 zaczął liczyć prawidłowo z tym że przed dziesiętnymi była zawsze 1. Czyli 4.120....4.190...5.110....5.160. Więc "przykryłem" jedynkę kropką. Może mi ktoś wyjaśni dlaczego 1 spowodowała prawidłową pracę. Czy zmienna...
Drobna uwaga Zmienna test powinna być typu Single , wtedy można operować na liczbach rzeczywistych nie całkowitych. Inna sprawa to konieczność pamiętania że, liczby rzeczywiste należy wprowadzać z użyciem kropki nie przecinka. Pozdrówka
To wiemy Ty i ja, oraz inni, ale czy wie o tym tomaszdko ? Ta informacja jest umieszczona w pomocy do programu i łatwo ją znaleźć. Niestety jeżeli nie zna choćby podstaw Asemblera nie będzie wiedział do jakich rejestrów została zapisana zmienna Single. Przykład z modyfikacją zmiennej typu Single w przerwaniu to akurat bardzo zły przykład. I to nie...
wprowadzasz zmienną temperatura2 as single wyswietlanie: if temparatura<>temperatura2 then temperatura2=temperatura LCD .... end if return
Nawet nie tyle nie jest liczbą binarną, co zmienne o typie zmiennopozycyjnym są zapisywane w postaci mantysy i wykładnika. A że mantysa ma skończoną długość to pewnych wartości nie da się dokładnie przechować. 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?
Witam Czy ktoś wie czemu zmienna single=0,0103 przy wyświetlaniu przyjmuje wartość 0,010299978 ??? Po to stosuje się zmienne zmiennoprzecinkowe żeby mieć dokładność a nie jakieś bzdury. $regfile = "m8def.dat" ' typ procesora $crystal = 8000000 ' czestotliwosc kwarcu Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5...
Za długość programu odpowiada zmienna najprawdopodobniej single. Na początek zmień Dim Wynik As Single na Dim Wynik As word oraz Wynik = Wynik / 16 na Wynik = Wynik \ 16
Dim Zmienna As Single , Inkre As Byte Enable Interrupts : Enable Timer1 : On Timer1 Co10ms Do Input "podaj zmienna " , Zmienna Goto Co10ms Loop Co10ms: Timer1 = 64911 Print "start" While Zmienna > 0 Incr Inkre If Inkre = 10 Then Decr Zmienna Print Zmienna Inkre = 0 End If Wend Print "stop" Return
Mam w swoim urządzeniu taki patent jak proponuje lotnick. Atmega8 na wewnętrznym oscylatorze 8MHz, dioda schotky za stabilizatorem 5V i kondensator podtrzymujący 100uF. Przy zaniku napięcia wywoływane jest przerwanie w którym zapisuję do eeprom cztery bajty (zmienna typu single). Nie przeprowadzam jakichś dodatkowych zabiegów programistycznych ograniczających...
Witam:) Proszę o sprawdzenie mi tego kodu... Czy można tak zrealizować rozjaśnianie diody podpiętej do cóżki PORTB.1 ? Z góry dziękuję i pozdrawiam :) $regfile = "m8def.dat" $crystal = 8000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Pinb.1 = Output Config Pinb.2 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm...
Celem jest pomiar prędkosci obrotowej. Program się kompiluje, ale wyświetla cały czas 0.0 rpm. Nie wiem gdzie tkwi błąd, czy ktoś może mi pomóc? $regfile = "m8def.dat" $crystal = 8000000 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 Config Timer1 = Timer...
Wszystko było by fajnie z tym innym licznikiem ale niestety zostały mi tylko 8 bitowe a to za mało, musiał bym część liczenia przenieść do pętli głównej a niestety to też nie zda egzaminu bo jak np włączę menu, a tam jest np. obsługa klawiatury i chośby dyskryminacja drgania styków która wstrzymuje czas, a w tym czasie stracę impulsy i pomiar będzie...
Wielkie dzięki mirekk36 Rozjaśniło się i to bardzo !!! Właśnie kompiluję i sprawdzam nowe procedury Nie wiem czy się nie zawieszę na liczbach ujemnych (zmienna Single) Jak co to znów poproszę o pomoc. Rzeczywiście daruję sobie te dzielenie bitów. A w Helpie - jak to w Helpie wszystko trochę zawile wytłumaczone (choć w tym przypadku masz rację nie doczytałem...
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...
Żeby mikroprocesor pokazywał wartość w Woltach, trzeba przemnożyć wynik ADC przez działanie VREF/1023, wychodzi to około 0.0049. Jako, że czujnik lm35 daje 10mV na stopień, to autor tego programu, który przedstawiłeś pominął mnożenie wpierw wyniku przez 0.0049, by potem pomnożyć go przez 1000 (autor chciał uzyskać wynik np. 239 dla temperatury 23,9,...
jeśli twoja zmienna jest typu Single i zadziałasz na niej funkcją INT czy Round to nie dziw się że otrzymasz wynik z kropką i zerem (bo taki typ masz tej zmiennej) ale jeśli zadeklarujsze sobie drugą zmienną np jako Dim T as Byte i zrobisz: T = INT(zmienna_z_temperaturą) no to już w zmiennej T będziesz miał dokładnie to o co ci chodzi o to ją dalej...
Przecież X jest zmienną typu Single a zmienna A jest typu Byte. Czyli jak x=2,4 po odjęciu od X A równa sie 0,4. A może mi ktoś napiszę odnowa ten rozbiór liczby na cyfry :?: Proszę :D
Dostępne w wersji>= 1.11.6.8 Skopiowane z pomocy (sin() - taksamo): Funkcja cos() Przeznaczenie: Zwraca wartość kosinusa kąta podanego w radianach. Składnia: zmienna = COS( liczba ) gdzie: zmiennadowolna zmienna typu single, do której wpisany będzie wynika działania funkcji, liczbaliczba której wartość kosinusa należy obliczyć. Opis: Wszystkie funkcje...
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...
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)......
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...
Ja bym zrobił to tak mam zmienną "a" typu single np potem dziele ją przez 10 a = a / 10 potem przepisuje ją do zmiennej typu np integer np "b" , ktora to automatycznie odcina, zostawia mi tylko liczby całkowite a potem znów mogę ją przepisać do a lub innej a = b zienną typu single można by potraktować tylko jako pomocniczą do obliczeń ale są zapewne...
Spróbuj może tego: Dim Odczyt As Integer 'do czytania DS-a Dim T As Single 'zmienna temperatury Config 1wire = Pind.1 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 600 1wreset 1wwrite &HCC 1wwrite &HBE Odczyt = 1wread(2) T = Odczyt T = T * 10 T = T \ 16 T = T \ 10 Locate 1 , 1 Lcd "Temp" ; Fusing(t , "#.#")
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"...
Witam kolegów! Mam taki problem, na początek troszkę teorii: ROUND Przeznaczenie: Zwraca liczbę zaokrągloną do najbliższej wartości całkowitej. Składnia: zmienna = ROUND( wartość ) gdzie: zmienna- dowolna zmienna typu Single, do której wpisana będzie wynik działania funkcji, wartość- liczba którą całkowita część powinna być zwrócona. Opis: Funkcja dokonuje...
Siemka mam taki problem zmienna a jest to całkowita zmienna b to ułamek (obie zmienne typ byte) jak je połączyć na single (s)? s = a . b
Jak proponujesz zrealizować pomiar czasu pomiędzy bramkami? Spróbuj wykorzystac Timer1 i funkcję 'Capture' czasu pomiędzy dwoma zboczami. Gdybyś nawt zastosował prescaler=64 to i tak otrzymasz rozdzielczośc 4 µsec., a maxymalny czas do Ovf1 = 0.26214 sec.; przy taktowaniu 16 MHz. Czy potrzebujesz jeszcze wyższą dokładnośc ? Zmienna czasu zwymiarowana...
Mam problem z wyświetlaczem alfanumerycznym 2x8 znaków którym steruję przez atmega8. Po podłączeniu napięcia do układu na wyświetlaczu najpierw pokazują się kwadraty na pierwszej linii a zaraz potem również w drugiej. Natomiast gdy wyjmę atmege z podstawki kwadraty są tylko w pierwszej linii. Co może być przyczyną? Fragment kodu: $regfile = "m8def.dat"...
Witam, Mam pytanie... Jak zamienić zmienną Integer na Single w Bascom AVR?? Pytam, ponieważ muszę użyć funkcji: X = Fusing(ds1 , "#.##") a zmienna ds1 mam typu integer. Pozdrawiam A.
zapis writeeeprom zmienna , adres odczyt readeeprom zmienna , adres Musisz pamiętać ile bajtów zajmuje zmienna którą zapisujesz i o taką wartość zwiększyć adres przy zapisie / odczycie następnej zmiennej Jeśli zmienne typu Byte , adres zwiększasz o 1 Jeśli zmienne typu Word , adres zwiększasz o 2 Jeśli zmienne typu Integer , adres zwiększasz o 2 Jeśli...
Korzystam z BASCOM Podłączone mam piny ECHO pin PD.3 TRIG pin PD.4 Stworzyłem taki program testowy [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 32 $framesize = 32 Config Portb.6 = Output 'wyjscie LED Config Portd.4 = Output 'wyjscie dla Trigger Config Portd.3 = Input 'wejscie dla Echo Trigger Alias Portd.4 Led Alias...
Najpierw musisz skonfigurować przetwornik: Config Adc = Single|Free, Prescaler = dzielnik|Auto, Reference = Off|Avcc|Internal A odczytujesz to tak zmienna = Getadc(nr_kanału) Czym sie różnią single i free i ustawienia Uref poczytaj w dokumentacji
Jest to kod z Pana Wiązani być może nieudolnie przerobiony. Oryginał ma tak: Dim licz_8ms As Byte Incr Licz_8ms If Licz_8ms = 125 Then ............. I to działa, czyli ja nie mogę używać liczby stałoprzecinkowej . No dokładnie. To działa tylko dla Byte (i podobnych). Chociaż typ danych Single mówi, iz może przyjmować wartości stało i zmiennoprzcinkowe....
Config Adc = Single , Prescaler = Auto , Reference = Avcc do if getadc(0) = 1024 then {zapalemy 8 diód odpowiedzialnych za kanal 1} {i tak dalej metodą prób i blendów wartości zapalnia diód a potem to samo dla durgiego kanału} loop Jak już chcesz na if-ach to najpierw musisz wartość z przetwornika przypisać do jakiejś zmiennej...
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 ? no to Ci przecież o tym pisałem. możesz to zrobić inaczej, bez żadnych konwersji. wyświetlasz 26.1234 a potem locate i zamazujesz 3 ostatnie cyfry. dużo w bascomi pisze i przyznam że zawsze jak używam jakiś...
Zrobiłem :) Tzn na razie sam termometr. Teraz go muszę tylko wpleść w mój program :) Jednak na LM35 zostałem - okazało się, że był to straszny banał. Pomoc znalazłem tutaj: http://mirley.firlej.org/node/479 A mój program wygląda tak: [syntax=Bascom] 'Program obsługi wbudowanego w mikrokontroler '10-bitowego przetwornika A/C $regfile = "m8def.dat" 'dyrektyw...
Przetestuję i zobaczę, ale dla częstotliwości zegara taktującego atmegę równej 16MHz to powinno dość krótko chyba trwać. Zobaczę i zmierzę w praktyce. Szczerze mówiąc nie wiem, ile będzie trwało. Nie wiem też, jak to skompiluje Bascom. Najlepiej sprawdź. Tablicę można zrobić, tylko do tablicy nie mogę wpisywać wartości Single, a zmienna całkowita Integer...
no ok, ale jeżeli zmienna Mnożnik_vład_2 ma wartość 0,01760 to po przypisaniu Mnożnik_vład = Val(mnożnik_vład_2) , zmienna Mnożnik_vład ma wartość 0,017599937 a żeby ją skrócić trzeba użyć instrukcji fusing nie może być jako single i koło się zamyka.
Wielkie dzięki Piotrek. Ubaw po same pachy, ale w końcu komuś trzeba wierzyć...?. Zainteresowałem się Twoimi sugestiami i mam pytanie. Zmienna typu SINGLE to 4 bajty, więc gdy wyłuskam adres tej zmiennej to spod tego adresu jak wyssać owe bajty..?. Druga sprawa to sprawdz mnie czy dobrze łapię, czyli: 1. W programie ustawiam zmienną typu SINGLE do zadanej...
Układ ATMega 8 Trigger mam podłaczony do portd.4 , Echo do portd.3. Program narazie testowy. Po wykryciu odlegości mniejszej niz 10 cm ma zapalić LED z portb.6. [syntax=vbnet]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 32 $framesize = 32 Config Portb.6 = Output 'wyjscie LED Config Portd.4 = Output 'wyjscie dla Trigger Config Portd.3...
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...
witam, jestem dosc swiezy w temacie;) potrzebuje oprogramowac Atmege8 w taki sposob, aby napiecie pobrane z fototranzystora przesylala do komputera po rs232. Dane bede odbierane przez program Labview. Przeczytalem duzo tematow i sklecilem taki program: $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config Adc = Single , Prescaler =...
ok, mam chwile w pracy, wiec postaram sie cos wiecej napisac najwiekszy problem byl ze znalezieniem odpowiedniego przeplywomierza. Po tygodniu poszukiwania udalo mi sie znalezc taki ktora najlepiej bedzie pasowal do mojego samochodu. Jest to przeplywomierz indukcyjny. Zakres dzialania 1,5 L/h do 150 L/h. Odsylam do datasheetow tego modelu http://obrazki.elektroda.net/0_127167263...
Witam ponownie, Mam nadzieję, że tym razem mój program wygląda nieco lepiej. A oto kod: $crystal = 4000000 $regfile = "2313def.dat" Config Lcd = 16 * 1 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.6 , Rs = Portb.7 Dim P As Bit 'Bit aktywnego pomiaru Dim Pz As Bit 'Bit zakonczenia pomiaru Dim...
Uśrednianie ci nie działa, bo nie zerujesz zmiennej Sre po dziesięciu pomiarach. Wynikiem funkcji format musi być zmienna tekstowa, a ty próbujesz zapisać to do Dys typu Single. Zresztą Dys po Round nie wymaga formatowania. Co najwyżej konwersji na tekst.
Nie pokazałeś jak są zadeklarowane te zmienne, ale podejrzewam że Prąd to Single? Nie to mnie jednak ciekawi tylko z obliczeń wynika: 10/0.0123= 813 czyli na wejściu ADC musiałbyś mieć 3,97V żeby w ogóle zobaczyć coś powyżej 10. Masz tam takie stany na wejściu? Tak "prad" to zmienna Single. Coś źle Liczysz dopiero sprawdzałem i przy wskazaniu 4,5A...
...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...
Jeżeli to ma nic nie robić tylko generować impulsy, to po prostu może użyj Waitms. A jeżeli nie, zmieniaj wartość porównania w zależności od dodatkowej zmiennej. Np: $regfile = "m16def.dat" $crystal = 16000000 Dim A As Word 'Zmienna zwiększana i porównywana. Dim B As Byte 'Zmienna decydująca z jaką wartością będzie porównywana zmienna A. Config...
Dzięki Spięcie za przykład ale to jest dobre gdy zmienna jest typu word i znalazłem już podobne sposoby przeliczania które działają z liczbą całkowitą od zera w górę ja niestety mam to nieszczęsne single z przecinkiem i na dodatek +/-
zrobiłem próbnie na początek samo serce analizatora według algorytmu IIR i czciałbym się zapytać czy nie ma tam żadnych błędów Dim A(10) As Single 'tablica alfa Dim B(10) As Single 'tablica beta Dim C(10) As Single 'tablica gama Dim X(3) As Byte 'tablica próbek z a/c Dim Y(3) As Byte 'tablica wyników w obliczeniach Dim I As Byte 'I Dim J As Byte 'J...
Witam mam pewien problem a mianowicie chce zrobić prosty miernik napięcia akumulatorów do 3.5V.Ustawiłem napięcie referencyjne wew w atmedze 8 i na wejście przetwornika wew ADC podaje napięcia od 0-3.5V jednak ciągle mi sie wyświetla napięcie 2.55 lub 0...co jest nie tak? 'Program obsługi wbudowanego w mikrokontroler '10-bitowego przetwornika A/C $regfile...
Witam... Kolego <PiotrzePitucha> troszeczke nie rozumiem zapisu... nie spotkałem się jeszcze z takim zapisem.... mógłbyś mi to wytłumaczyć..?. Chciałbym jeszcze dodać kawałek kodu o który właściwie toczy się moja batalja.. Otóż chciałbym móc ustawiać zmienną SINGLE i zapisywać tą wartość do pamięci eeprom. Kod programu: Sub U_termostaty Cls Lcd...
Witam Sprawa prosta. Rozwiązać problem można na kilka sposobów. Ja robiłem tablicę 16-to elementową i w pętli z każdym zboczem sygnału zegarowego wpisywałem wartość do tablicy. Po odczytaniu 16 bitów czytałem te komórki, które mnie interesowały i sumowałem wynik z odpowiednimi wagami bitów. Poglądowy program poniżej. Config Pinx.x : Clk alias Portx.x...
Znalazł się znawca od przesuwania liczb i bitów ! Zrobiłem juz wiele sterowników używając nie jednego, dwóch a nawet więcej liczby ds'ów i zawsze działa bezbłęnie, nie tylko w BASCOMIE. A Ty Piotrusiu trochę pokory. Co za problem z przesuwaniem liczb zakodowanych w U2 ? Nie rozumiem . Z podziałem przez 2 i shiftem to zwyczajna literówka oczywiści powinno...
Zajrzałem do skompilowanego pliku i widzę że kompilator w ogóle nie używa tu R2 i R3 więc mi je zostawił ;) Od pewnego czasu w Bascom do rejestrów można się odwoływać prosto z kodu. Ciekawe którą wersję Bascom masz. Pewnie znowu schody... U mnie program się kompiluje na 96% [syntax=vbnet] $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack...
Co to dokładnie oznacza? Nie wchodzi do przerwania, nie wychodzi? Masz sprzętowy debuger? (na jakim środowisku procujesz i jaki programator) I może dodaj sobie diodę do debugowania. Albo wykorzystaj LCD do debugowania. Aby dowiedzieć się do którego momentu program dochodzi. Np,wyświetla się napis HOT ON? A tak swoją drogą to co to ma być? while(!(SPR_GORA)...
kod: Dodano po 5 Czekam na info, bo problem jednak nadal występuje. znalazłem na elektrodzie jeszcze coś takiego: " można pominąć wpis Reference, wtedy domyślnie Vref będzie ustawione na zewnętrzne źródło" ale to nie działa. Ten kod działa tylko dla Vref=AVcc przy: Reference=Off, Reference=Aref i oczywiście dla Reference=Avcc przy reference = Internal...
witam . Dlaczego nie mogę skompilować tj; zmienna = zmienna / 4 kod bascom $regfile = "attiny13.dat" 'typ proca $crystal = 800000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Up Dim B As Iram Word Config Portb.0 = Output Portb.0 = 0 Config Portb.1 = Output Portb.1 = 0 Dim Zmienna...
Witam. Na znanym serwisie aukcyjnym zaopatrzyłem się w wyświetlacze LCD 2x16 znaków które miałybyć kompatybilne z HD44780 jednak nie są. Wyświetlacze to PC1602V-P8 firmy Powertip. Na stronie $regfile = "m8def.dat" 'procesor mega 8 $crystal = 8000000 '8mhz Wait 1 Config Adc = Single , Prescaler = Auto , Reference = Avcc ' ustawienie adc Dim...
Może spróbuj przesunąć przecinek: zmienna x 10 lub 100 Wykonać obliczenia np na byte (jeśli wynik mniejszy od 255) lub na word/integer Potem z powrotem przesuń przecinek. Pozdrawiam.
Twoje działa, ale moje nie działa. Wklej mój kod w kompilator i zobacz co się dzieje [syntax=Bascom] $sim $regfile = "m8def.dat" $crystal = 16000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Cursor Off Noblink Cls Dim Cool As Word ' zmienna określająca wypełnienie...
Witam, zastosowałem się do twojej rady i zeruję zmienną crc. Nawet wyliczyłem ile pec powinien wychodzić (29). i program wyświetla że obliczył pec 29. więc chyba temat pec można pominąć i problem jest gdzie indziej. zdjęcie wyliczonego kodu ''ręcznie'' http://obrazki.elektroda.pl/6428951800_1... kod po przeróbce [syntax=vbnet]$regfile...
heh i jeszcze kilka malych problemow pisze tutaj aby wszystko bylo jasne :) chce wystawic na pinid.5 stan wyskoki i pozniej go zmienic czyli np config pind.5=output .. powiedzmy ze to jest w do loop do set pind.5 wait 1 reset pinb.5 wait 1 loop i oczywiscie to nie dziala caly czas pokazuje ze jest stan 0 na forum juz bylo poruszane ale tamten zapis...
Witam, Chciałbym zrobić woltomierz do zasilacza. Przeszukałem całą elektrodę i nic ciekawego nie znalazłem poza gotowymi .hex (może źle szukałem). Posiadam dwa schematy jednak brak mi dobrego kodu źródłowego. http://www.nikomp.com.pl/opisy/ZEPJ0/ZEP... Znalazłem coś takiego: '[i]Program obsługi wbudowanego w mikrokontroler '10-bitowego...
Witam, Chciałbym zrobić woltomierz do zasilacza. Przeszukałem całą elektrodę i nic ciekawego nie znalazłem poza gotowymi .hex (może źle szukałem). Posiadam dwa schematy jednak brak mi dobrego kodu źródłowego. http://www.nikomp.com.pl/opisy/ZEPJ0/ZEP... http://elfly.pl/multimetr/multimetr.htm Znalazłem coś takiego: Kod: '[i]Program obsługi...
Moim zdaniem jest to przetwornik AC/DC zwiększający amplitudę napięcia wyjściowego. Na wyjściu układu występuje również składowa zmienna, ale przede wszystkim składowa stała. Radzę poszukać informacji na temat powielaczy napięcia stałego, może coś się wyjaśni.
...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ę...
Ale - dla stringu "84.2" otrzymuję wartość zmiennej 84.199996946 Niestety rozdzielczość zmiennych typu Single jest skończona i nie można w nich zapisać każdej liczby zmiennoprzecinkowej. Jak sądzę, jest to problem konwersji do single - czy jest jakiś sposób, aby otrzymać tą wartość dokładnie taką jak w stringu ? Jeśli masz dużo pamięci RAM to zastosuj...
Funkcja GETADC() zmienna = GETADC( nr_kanału [, offset ] ) Przetwornik musi być skonfigurowany do pracy w trybie SINGLE, gdyż funkcja inicjuje i czeka aż przetwornik wykona konwersję. Uwaga! Z powodu zmian w kodzie bibliotecznym w wersji 1.11.7.2, funkcję GETADC() najlepiej wywołać dwukrotnie: W = Getadc(channel) W = Getadc(channel) gdyż za pierwszym...
Mam problem. Wydaje mi się że PRAWIE wiem o co chodzi, ale PRAWIE robi wielką różnicę:) Kompiluję Program i wyskakuje mi błąd OUT OFF INTERNAL MEMORY jeśli dobrze myślę to oznacza to poza zakresem wewnętrznej pamięci RAM. I w tym sęk. Jeśli dobrze kombinuję to ram powinien być zajmowany tylko przez zmienne??? A jeśli tak, to dla czego przy ilości zmiennych...
wymieniłem procesor i zamieniłem kolejność kodu ................ coś pomogło :) chyba zmiana kodu :) Raczej pomogła zmiana processora... Obie alternatywy kodu nie różnią się od siebie, ponadto patrz wyjaśnienia; mam jeszcze problem po przerobieniu na volty wyświetla mi np. 345 a powinno 3.45 stosuje: Pokaż w jaki sposób "przerabiasz" odczytaną wartośc...
Musisz zrobić tak: [syntax=basic4gl]Config Adca = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Int1v , Event_mode = None , Prescaler = 512 , _ Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = &B0_XXXX_0_00[/syntax] gdzie jako XXXX podstawiasz zapisany binarnie nr pinu portu A. Kolejne kanały dopisujesz powielając ostatnią...
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)=...
Andy74 podany przez Ciebie sposób niby działa, ale... po zamianie zmiennej single na int i przypisaniu jej wartości znowu do zmiennej single wyświetlana wartość będzie w postaci np. 5.0. Zeby się pozbyć tego zera po przecinku zmienna do której przypisujemy musi być typu integer , np. Dim A As Single , B As Integer A = 20 / 4 Lcd "n1= " ; A...
do zmiennej typu integer nie zapiszesz liczby zmiennoprzecinkowej. Poprawiam się: wczytaną z pliku liczbę zmiennoprzecinkową przypiszę ZMIENNEJ typu Single ! Co chcesz pozniej z ta zmienna robic? Zmienna siedzi w pętli Do...Loop we wzorze , z którego obliczana będzie inna ZMIENNA. To tyle odnośnie sprostowania mojego wyjściowego postu. Problem zasadniczy...
single language single sided monoblock single
wymiana uchwyt wiertarski dobór zasilacz lampki pomiar rezystancji induktorem silnika
wzmacniacze operacyjne 17mb180e telefunken
Siemens EQ.6 S500 - Wolne Podgrzewanie Wody Stukanie zaworów i dymienie w Peugeot Partner - przyczyny i diagnostyka