Załączam sprawdzoną, działającą bibliotekę do 1-Wire. Opóźnienia są policzone dla kwarcu 16MHz. Skoro Ty wykorzystujesz kwarc 1MHz to wystarczy, że podzielisz przez 16 argumenty funkcji opóźniających. Jakbyś miał z tym problem to napisz. Gratis dorzucam też sprawdzoną i działającą funkcję do odczytu i konwersji temperatury z czujnika DS18B20. // odczytanie...
Patrząc na Twój kod zauważyłem że wykorzystujesz funkcję z biblioteki "delay.h". Tymi funkcjami nie uzyskasz dokładnych czasów potrzebnych do obsługi interfejsu 1-Wire po którym komunikuje się czujnik DS18B20. Udostępnię Ci swoją sprawdzoną w 100% bibliotekę do komunikacji po 1-Wire. W tej bibliotece wystarczy dobrać czasy opóźnień dla Twojego kwarcu...
Witam. Prosze osoby obeznane w temacie o pomoc w znalezieniu błędu w poniższych podprogramach obsługi termometru. Całe urządzenie ma wyświetlać temperature z dokładnością do 1stopnia Celsjusza. W programie wykorzystuje dwa przerwania : od licz. T0 do wyznaczania sekundy , i po upływie tej sekundy w procedurze przerwania wywołuje procedury : ;upłynęła...
Wtedy jest traktowana jako liczba bez znaku, a nie konwertowana na bez liczbę znaku. Konwersja a traktowanie to co innego. Pozatym konwersja nie była by możliwa skoro liczba jest ujemna. Możliwe jest jedynie policzenie modułu (wartości bezwzględnej).
Użyłeś funkcji itoa - czyli integer na ascii - natomiast ICR jest typu unsigned, w efekcie każda wartość większa niż 32767 będzie wyświetlana jako ujemna. Użyj funkcji konwersji liczb bez znaku.
Hmm ... strony temu poświęcone: https://support.office.com/pl-pl/article... https://support.office.com/pl-pl/article... rzeczywiście powielają "analogiczne" wyniki z "minusami" dla liczb tego typu, wyniki inne niż w...
chciałbym aby to wszystko ogarniało 1 makro które niestety niebardzo chce w tym przypadku działać Wstaw je (w znacznikach [code]) jeśli niezbyt długie, popatrzymy dlaczego nie chce. Jeśli bardzo rozbudowane, wrzuć przykład w postaci pliku... Ale najprościej (nawet zwykłymi formułami) byłoby najpierw usunąć kropkę, następnie w tych, które mają "-" na...
Kod który opisujesz nie jest kodem U2, tylko kodem SM (znak-moduł). Jeśli chodzi o konwersję to jest prosta, ale jest kilka szczegółów: 1) w jakim kodzie jest cecha liczby zmiennoprzecinkowej? W 754 jest to kod z obciążeniem, czyli 0 binarnie = maksymalna wartość ujemna. 2) Czy masz opuszczać wiodącą 1 w mantysie? Konwersja przebiega tak: normalizujesz...
Błąd jest w konwersji dekoder pokazuje to co dostaje na port . W programie brak inicjalizacji stosu . Konwersję tego typu łatwiej wykonywać odejmując od wyniku konwersji wartość przetwornika stałą i inkrementując liczbę operacji odejmowania do chwili otrzymania wartości zerowej lub ujemnej . gdy pozostała wartość będzie mniejsza lub równa zero liczba...
Witam. Nie wiem czy piszę w dobrym dziale, jeśli nie proszę o przeniesienie tematu przez moderatora do odpowiedniego działu. Więc jak to się przelicza, jaki jest algorytm? Spotkałem się z kilkoma np.: liczba 51,27 to będzie binarnie: 11 0011,11011 czy nie?
Witam Nie potrafie sobie poradzic z zamianą np. z systemu 10 na ieee754 mam np liczbe -12,625 1)zamieniam ja na binarna 1100,101 jak z tego zrobic iee754?? i jak potem z ieee754 zamienic na binarna bardzo prosze o pomoc
Witam. Jak zamienić ujemną liczbę w kodzie dziesiętnym na tą samą wartość w kodzie szesnastkowym?
Witam. Uczę sie UC. Na dzien dobry jedno łatwe pytanie z ktorym nie bardzo sobie radze. Pytan bedzie wiecej. Musze zamienic na postac dwójkową liczbe w zapisie heksadecymalnym: 1A9F Dziękuje za pomoc..
Witam Muszę napisać kalkulator w C# który będzie dodawał bądz odejmował 2 liczby w kodzie U2. Wartości wejsciowe mają być podawane w DEC.. przez printf maja byc wyswietlone jako liczby w kodzie U2.Nastepnie wynik dzialania(odejmowanie lub dodawanie) ma byc również wyswtietlony w U2. Moje pytanie to jak zemienić wprowadzoną liczbę w dec na U2? Wiem,...
Witam Czy wiecie jaki program jest w stanie zamienic liczby dziesietne na 16 bitowa liczbe binarna??? Musze napisac wszystkie kombinacje z pewnego przedzialu, jak bede to wpisywal rezcznie to mi maks czasu zajmie wiec jak ktos wie jaki program mi to zrobi. Pozdrawiam
znowu mam problem. Nie mam pojęcia jak zamienia się liczby z ułamkami (dziesiętne) np. 23.123 na kod binarny. I na odwrót np. 10001,111. Pomożecie??
Witam. Czy zna ktoś algorytm zamiany liczby rzeczywistej na binarną np. 10.75? Szukałem długo w necie, niestety,bez powodzenia. ========================================... Jestem pewien, że zamienię ( załącznik str.3). Tylko nie bardzo rozumiem idee.
Witam! Jak przekonwertować liczbę np. 268,2 zapis szesnastkowy?
Cześć. Może ktoś będzie wiedział. Mam dwa bajty w hex o wartościach 0xB5 0x00 i wiem tylko tyle, że w zapisie dziesiętnym powinno mi to dać 12,36 . Czy ktoś ma pomysł jak to przekonwertować aby przy innych wartościach tych bajtów można było wyliczyć wartość w zapisie dziesiętnym? P.S. Może być tak, że jest tylko jeden bajt 0xB5 , który oznacza 12,36...
Czesc potrzebuje sosob jak zamienic kod binarny z przecinkiem (np 1011.1101 ) na kod na zwykla liczbe
Witaj, Z materiałów, które zostały mi z zajęć na studiach: "Inną metodą konwersji Qm na liczbę dziesiętną jest przedstawienie liczby binarnej w postaci liczby całkowitej ze znakiem i podzielenie jej przez 2^m. np. w notacji Q7 0 100 1001 = 73(10) / 2^7 = 0,5703125 w odwrotnym przypadku mnożymy liczbę którą chcemy przekonwertowań na standard Qm przez...
4V w wyniku biorą się najprawdopodobniej z błędnego przetwarzania kodu z ADC na wyświetlaną wartość. Zgaduję, że w przypadku gdy kod wyjściowy ADC jest liczbą bliską zera ale ujemną następuje 'przepełnienie' i wyliczenie błędnego wskazania. Zwróć choćby uwagę że otrzymałeś wynik praktycznie tożsamy z 4,096 czyli 2xFSR Nie wiem jak wynik konwersji ADS1110...
napisz w języku verilog prosty moduł, w którym na wejście podawane są ośmiobitowe liczby zapisane w kodzie uzupełnień do dwóch a na wyjście te same liczby zapisane przy pomocy kodu znak-moduł. Oto przykładowy moduł z opisem, który działa na ośmiobitowych liczbach w kodzie uzupełnień do dwóch i konwertuje je na kod znak-moduł: ``` module konwersja (...
o może policz, zamiast gdybać? Nie gdybam tylko komentuję Twój głupi pomysł. Klucz może mieć 200mA, jak się spali to wymieni, łatwiej niż wymieniać procek i jest to zgodnie ze tzw sztuką inżynierską. A tak a propos sztuki, właśnie znalazłem błąd w twojej książce w liczeniu temp 1wire w dallasie dla ujemnych temp, dla -10.12 twój przelicznik daje -10.875....
Cecha EA = -22 Cecha E6 = -26 wg algorytmu który podałem w moim pierwszym poście 0100 0000 0000 0000 0000 0000 * 2^(-22) 01,00 0000 0000 0000 0000 0000 = 1.0 kg -1kg 1100 0000 0000 0000 0000 0000 * 2^(-22) wniosek: najstarszy bit określa znak liczby, 1 - ujemna, 0 - dodatnia 0.1 kg 0110 0110 0110 0110 0110 0110 * 2 ^ (-26) 0,00011001100110011001100110...
Wpadłeś w pułapkę liczb ze znakiem, domyślnych konwersji i Undefined Behaviour (UB) za jednym zamachem. [syntax=c]wartosc32 = (FLASH_0_read_eeprom_byte(addrEE)<<... | (FLASH_0_read_eeprom_byte(addrEE+1))<... | (FLASH_0_read_eeprom_byte(addrEE+2))<... ; [/syntax] kiedy wykonujesz taką operację to FLASH_0_read_eeprom_byte(.adres) jest...
SB starszy bajt ale dla dwóch liczb, starszy bajt ma 4bity. W SB masz dwie 4bitowe liczby jako starsze bajty. Jak masz dane z rejestrów np.: 0x12, 0x03, 0x04 to masz 0x01 *256 + 0x03 i 0x02 *256 + 0x04 Kodowanie ujemnych liczb w systemie U2. sub u2 { my $sb=(at)_[0]; my $lb=(at)_[1]; my $wyn; if($sb&8) { #12bit...
Jedno pytanie, system w jakim jest zamieniana liczba to U1. W większości architektur liczby ujemne reprezentowane są w kodzie U2. Konwersję U2 -> U1 pozostawiam Tobie :) Pozdrawiam, Dr.Vee
W takiej notacji, że każda cyfra jest w osobnej komórce tablicy, problemem jest obsługa wartości ujemnych. Najłatwiej jest operować na kodzie uzupełnienia do dwóch. Wtedy wyliczanie przeniesienia nie jest skomplikowane. Tutaj możesz zastosować algorytm pisemnego odejmowania, przy czym najniższe cyfry trzymać pod niskimi indeksami, aby można było działania...
Co do zaokrąglania, wystarczy dodać 0.5 przed konwersją do int-a (odjąć dla liczb ujemnych).
W powyższym przykładzie dla avr wychodzi (0x93E0) dlatego, że zmienna x jest traktowana jako "signed" (i dla x=60 000 jest już liczbą ujemną). Trzeba zadeklarować: uint16_t x; i można na wszelki wypadek rzutować obie zmienne na typ long. u mnie u16 to właśnie uint16_t czy jak kto woli unsigned int więc Twoja teoria o liczbach ujemnych jest błędna....
Zanegowac liczbe, potem dodac 1, to jest dla liczb ujemnych. Dla dodatnich zostawiasz bez zmian
ee no musiało pomóc, sprawdzałem u siebie i kod się zmniejszał o kilka kB pokaż jakim poleceniem ze wszystkimi flagami jakie używasz kompilujesz kod dla tych zmiennych równych 134 i 1: LS Byte: 10000110 MS Byte: 00000001 w MS Byte pięć najważniejszych bitów wskazuje na znak - zera to dodatnia, a jedynki to ujemna trzy najmłodsze bity z MS Byte i cztery...
Ależ w funkcji lcd_int() nie masz nic wspólnego z rzutowaniem zmiennych a szczególnie float. Jest tylko zamiana liczby binarnej na ASCII za pomocą wbudowanej funkcji ITOA (Integer To ASCII) zastanów się jakie zakresy liczb może pomieścić typ int (czytałeś o typach ? - spróbuj zajrzeć do tabelki bo masz taką w książce na 1000%) to po pierwsze wyjaśni...
chciałbym użyć bibliotek p. Łukasza, Wciągnij sobie nową wersję z obsługą liczb ujemnych (autor najwyraźniej czyta elkę bo kilka godzin temu poprawił liba ;-)).
a jej wynik to Kod: -06:40:00 Ten zapis wskazuje, że nie jest to wartość liczbowa (czasu :D ) tylko tekst :idea: :!: Nie uda Ci się nigdy (bez konwersji) dodać liczb do tekstu :please:
tak samo jak konwersja bin->dec, tylko odejmujesz kolejne potęgi liczby 16, czyli: 1. Od zadanej liczby odejmujesz sukcesywnie 16*16 i zliczasz liczbę odjęć aż do uzyskania liczby ujemnej. Do uzyskanej liczby odjęć dodajesz jeden i już masz starszą cyfrę hex. 2. Do uzyskanej liczby ujemnej dodajesz 16*16 3. Odejmujesz sukcesywnie 16 i zliczasz liczbę...
(at)szwagros Pusty projekt z tą biblioteką zajmował 450 bajtów. [syntax=c] #define F_CPU 8000000UL #include <avr/io.h> #include "moje/itoa.h" #include <stdint.h> void rsPrintInt(uint16_t liczba ) { char buffer[10]; itoa( liczba , buffer, 10); } int main(void) { rsPrintInt(123456); while(1) {} } [/syntax] Usunąłem z niej analizę znaków ujemnych...
Ostatnio też potrzebowałem przekonwertować i znalazłem w Pomocy Excela potrzebne informacje: DEC2BIN (liczba;miejsca) Liczba to dziesiętna liczba całkowita, która ma zostać konwertowana. Jeżeli liczba jest ujemna, argument miejsca jest ignorowany, a funkcja DEC2BIN zwraca 10-znakową (10-bitów) liczbę binarną, w której najbardziej znaczący bit jest bitem...
Co trzeba rzerobic w programi zeby obsługiwało temperatury ujemne?? Sprawdź czy bity 11-15 (bity 3-7 starszego bajtu) są równe 1. Jeżeli tak, to oznacza liczbę ujemną. Dokonaj wtedy konwersji : zaneguj wszystkie bity (z obu rejestrów) i dodaj 1 (pamiętaj o ewentualnym przeniesieniu). Dalsza interpretacja liczby jest taka sama jak dla temperatur dodatnich,...
Cześć Program działa następująco Zmienna pomocnicza jest zerowana następnie ze zmiennej DM47 i 48 przesyłana jest zmienna podwójne BCD do DM58 i DM59 ponieważ zmienna jest typu podwójne BCD to składa się z ośmiu cyfr. Najbardziej znacząca cyfra w tej liczbie reprezentuje znak. funkcja ANDW służy do odfiltrowania właśnie najbardziej znaczącej cyfry (dlatego...
Zacząłbym od tego: Otrzymujesz wartość zmiennej temperatura równą np. 1871819,25. Jak przemnożysz to przez 16 to okaże się, że wyrażenie (temp1 + (temp2*256)) zwraca wartość 29 949 108. Teoretycznie zmienne temp1 i temp2 nie powinny przyjmować wartości większych od 255, więc wartość maksymalna wyrażenia (temp1 + (temp2*256)) = (255 + (255*256)) = 65535....
tzn nie jest to równe 63 ale ok -63.563. i jak bardziej grzeje tym temp maleje i jest ujemna Dodano po 3 ok ..już wszystko jasne...niepotrzebna konwersja z float do double dla dodatnich liczb....
Witajcie, jak przekonwertować poprawnie wartość z czujnika temperatury ds18b20 w postaci dwóch liczb typu uint8_t, które odpowiadają części całkowitej i ułamkowej, do postaci jednej zmiennej typu int16_t? zakres liczby ułamkowej to 0-9, zakres liczby całkowitej jest 8-bitowy. Wartości ujemnych nie ma.
A co to za cudaczne obliczenia :wink: ... unsigned char wynik1=0; unsigned char wynik2=0; wynik1=read1w(); wynik2=read1w(); reset1w(); float temp=0; if((wynik2)!=0){ //temp ujemna wynik1=~wynik1; temp=wynik1+1; //dlaczego /2 i gdzie się podział wynik2 ? temp=-temp/2; //??? } else{ //temp dodatnia...
Przetwonnik zlicza napięcia tylko do 2047, pokazując ujemne napięcie nie ma znaku minus i wartość, tylko np 65320. Czyli przetwornik zwraca wyniki w kodzie U2. Tam nie ma znaku minus. Jest za to przesunięcie poziomu. Najprościej mówiąc, zastosowanie takiej funkcji do konwersji: Napiecie = Zmierz1 * 256 Napiecie = Napiecie + Zmierz2 da Ci złe wyniki....
Już kiedyś pisałem tutaj o konwersji bin->bcd. Są na to specjalne algorytmy. Ponieważ nigdy mi się nie chce ich szukać, konwersję przeprowadzam metodą łopatologiczną: 1. Odejmuję od zadanej liczby 1000 tyle razy, aż uzyskam wynik ujemny. Liczba odejmowań (pomniejszona o jeden) daje cyfrę tysięcy. 2. Koryguję liczbę po odejmowaniu (dodając z powrotem...
Witam. Mam zmienna double którą chcę skonwertować do liczb całkowitych bez znaku (tylko 0 i dodatnie) - (arduino 023) [syntax=c] double d = cap; unsigned long x = (unsigned long) d; [/syntax] W tej postaci wyświetla liczby bez ułamków od 0 wzwyż poprawnie, natomiast jeśli cap jest minimalnie ujemny to zamiast pokazać 0 przekręca się na 429496 - chciałbym...
Podsumuję: Sinus przyjmuje wartości -1 do 1 więc nic nie da tablicowanie tab tab_sin[n]=(int) (sin((double) (n/20*(2*M_PI))))... Problemem w tym przypadku jest wyrażenie n/20 gdzie n typu int Rózne kompilatory róznie to potraktują. W niektórych (chyba wiekszości) wynik bedzie takiego typu jak użyte...
Witam! Mam problem z konwersja i wyswietlaniem liczb ujemnych. W przerwaniu µC sprawdzane sa dwa klawisze: +, - Jak sama nazwa wskazuje zwiekszaja one lub zmniejszaja wartosc. Wartosc jest z zakresu od -55 do +125. Zliczanie wartosci dodatnich dziala, nie dzialaja wartosci ujemne. Zmienna SwitchesCounter (licznik) jest waroscia signed char...
1. Stosuj komentarze co robisz w danym kroku a jeszcze lepiej coś znaczące (dla czytającego kod) nazwy zmiennych/funkcji. Np. co to jest: [syntax=c] int liczba= sizeof napis/sizeof*napis; [/syntax] 2. Deklaruj zmienne w momencie kiedy ich potrzebujesz a nie wszystko na raz na początku funkcji. 3. Stosuj 'const' tam gdzie to jest możliwe. To upraszcza...
Nie odpowiedziałeś na pytanie Rariusz'a czy TIA Portal, ale zakładam, że tak. DINT_TO_STRING to precyzyjne wywołanie S_CONV, ale tylko w SCL'u. Różnica w wywołaniu jest taka, że w LAD/FBD dopełnia łańcuch znaków spacjami do rozmiaru liczby wejściowej (DINT do 2 miliardów ze znakiem czyli 11 znaków, przy czym tylko do ujemnych doda minus), w SCL nie...
temp2temp jest tylko do sprawdzenia, wykluczenia tego, że to zmienna decicelsius2 jest winna wykrzaczaniu temp2, co pokazało, że nie, bowiem w temp2 i w temp2temp przy wykrzaczeniu są inne wartości. Co do zmiennej licznik, to ona się ma nie zerować, ponieważ liczę średnią temperaturę przez cały czas działania urządzenia, a więc potrzebuję sumę wszystkich...
Nie, przecież to jest garść drutów - skąd narzędzie ma wiedzieć jak ma zrobić dodawanie na garści sygnałów? No jakaś automatyka w syntezerze jest. Może to wydedukować jakoś :D Ale jak bity maja reprezentowac liczby? Jak kodujesz wartosc ujemna? Czy to jest format zmiennoprzecinkowy czy staloprzecinkowy? A moze IEE754? Zapoznaj sie z biblioteka numeric_std,...
Cała trudność polega na wczytaniu liczby ujemnej i zapisaniu jej binarnie. Pokazanie tego w Hex proponuję załatwić 16-znakową tablicą cyfr, indeksowaną połówkami bajta (4 bity). Przy większej liczbie bajtów (potem słów 16 bitowych, itd) pamiętaj o odwrotnej kolejności: młodszy - starszy.
to z returnem (co w końcu tam ma stać?) Nic nie musisz zwracać. Funkcja przecież zwraca dane zapisując je do tablicy przekazanej jej jako parametr. po co dawać długośc miejsca na rzymską? Bo skąd funkcja wywoływana ma wiedzieć ile jest wolnego miejsca w tablicy, którą dostaje? Jeśli nie przekażesz rozmiaru, to funkcja wywoływana i wszystkie funkcje...
Witajcie, mam problem przy konwersji liczby 16-bitowej ze znakiem do liczby 16-bitowej bez znaku. int16_t xx; uint16_t yy; yy = (uint16_t) ((((-1)*(xx))<<1)-1); Kiedy wartość xx przekracza mi 16384, wartość yy przybiera wartości ujemne od -32768 rosnąc do zera. Co robię źle?
Jak widzę na twoim układzie to liczba ujemna przesyłana jest na konwersję a co sie dzieje w przypadku liczby dodatniej, którędy będzie szła. Dodatnia liczba w u2 jest taka sama jak w znak-moduł, więc tylko idzie na wyjście. Mi jest potrzebny układ tego typu co teraz zamieściłem. Tylko ma parę błędów. Ciągle myśle jak to poprawić. Załączam algorytm konwersji...
Ponieważ odczyt z tablicy w maluczkich uC zajmuje "dużo" flash i czasu też, dlatego nie ma odczytu z żadnych tablic. A w tych gdzie ciąg ląduje w ram, zużywa ją niepotrzebnie. Na szczęście choinka if then else zajmuje zero bajtów i zero instrukcji oraz wykonuje się w ujemnym czasie. Proponuję najpierw sprawdzić obie wersje na min. 2 platformach, a...
while(scanf("%s", dzialanie)) czy to poprawna funkcja jesli dzialanie to tablica char ? Nie. Zauważ, że scanf zwraca liczbę przetworzonych konwersji, lub EOF w przypadku gdy nie wykonano żadnej konwersji lub błędu wejścia wyjścia. Zgodnie ze standardem wartość EOF jest ujemna. Poprawnie byłoby w takim przypadku: while(scanf("%s",...
Funkcja ta coś tam robi, operuje na danych i ma zwrócić wynik. Chciałbym móc jakoś sprawdzać czy funkcja wykonała się prawidłowo. Niby można by zrobić tak, że gdy funkcja zwraca wartości większe lub równe 0 to wtedy jest ok, a gdy zwróci np. -1 to znaczy, że jest jakiś błąd. Ale problem w tym, że wynikiem tej funkcji, może być też wartośc ujemna i...
konwersja liczba liczba ujemny konwersja temperatura ujemny
wymiana livebox ustawic kanaly system canon
podzielniki peltiera lodówka siemens
Lokalizacja odcięcia pompy paliwa w Volkswagen LT 2,5 Pompa paliwa w VW LT 2.5 TDI 2002 - brak podawania paliwa