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.
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....
Możesz spróbować np. taką formułką: [syntax=text]= SUMA.ILOCZYNÓW(SZESN.NA.DZIES(FRAGMENT.T... WIERSZ(ADR.POŚR("1:"&DŁ(A2))); 1))*16^(DŁ(A2)-WIERSZ(ADR.POŚR("1:"&DŁ(A... wynik dziesiętny nie dłuższy niż 15 cyfr. Jeśli trzeba dłuższy, to już trzeba to podzielić na kawałki i bawić się tekstami.
Co do zaokrąglania, wystarczy dodać 0.5 przed konwersją do int-a (odjąć dla liczb ujemnych).
Zanegowac liczbe, potem dodac 1, to jest dla liczb ujemnych. Dla dodatnich zostawiasz bez zmian
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
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).
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 ;-)).
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....
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:
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...
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...
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....
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...
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...
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...
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.
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 (...
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...
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...
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....
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...
(...) odczytu temperatury. Jaki zaproponowałbyś kod (AVR GCC), aby nie trzeba było używać delay'a (może pooling lub maszynę stanu) ? Przy okazji przedstaw optymalną (bez zmiennoprzecinkowych liczb) konwersję danych ze scratpad'a na stopnie (może być złożeniem liczb całkowitych jako stopnie i części ułamkowe). Do obsługi termometrów DS18B20 bez blokowania...
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...
Myślę, że koledzy nie do końca wytłumaczyli o co chodzi. ... Niestety mylisz się. Zarówno typ przyjmowany przez funkcję jak i binarne reprezentacje liczb ujemnych w kodzie U2 są tu bez znaczenia. Spójrz dokładnie na linka którego podałem. Stronka ta to taki "standard języka C/C++ w bardziej strawnej formie". Po kolei. Z rozdziale "Usual arithmetic...
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.
Witam, Mam problem natury egzystencjalnej ;) Używam licznika nie przekraczającego wartości opisanej na 24 bitach. Nie ma liczb ujemnych. Licznik jest inkrementowany o 1, o 10 lub o 50, czasami kasowany. Innych operacji nie ma. Było by banalnie, gdyby nie potrzeba wyświetlania bieżącej wartości na wyświetlaczu LCD (w systemie dziesiętnym). Widzę dwa...
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...
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....
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...
Z jednej Kolega krytykuje używanie typów ze znakiem, a z drugiej proponuje typ char jako wynik działania funkcji, pomimo, że nie ma "znaków ujemnych". Nooo nie. Char nie jest od liczb w zasadzie, jest od znaków, a że ludzie lubią go wykorzystywać w innych celach to inna historia. int8_t jak już, albo int_fast8_t, zależy od sytuacji. (;
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...
Przydała by się eliminacja pustych łańcuchów znaków, więc zastąp "licznik++" kodem: if (strcmp(liczby[licznik].... "\0") != 0) licznik++; Ponadto możesz inaczej pobierać dane z klawiatury: /* pobranie początkowego ciągu znaków, zapisanego tylko znakami dozwolonymi "q0-9A-Fa-f", tj. q, cyfry oraz znali...
To jest dosyć ciekawy temat - tradycyjne dzielenie liczb jest czasochłonne bez sprzętowego układu dzielącego. Dlatego ludzie upraszczają sobie życie stosując dodatkowe algorytmy, działające dla określonych dzielników. Dla dzielenia przez kolejne potęgi liczby 2 wystarczy przesuwać rejestr w prawo. Z kolei przytoczona przez Ciebie procedurka dotyczy...
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...
To co piszesz nie trzyma się kupy kolego. akurat ten wariant jest dla liczb <0 do wartości -32767. Chcę z tego zakresu uzyskać odpowiadające wartości dodatnie z zakresu 0 ... 65535 a wczesniej Kiedy wartość xx przekracza mi 16384, wartość yy przybiera wartości ujemne od -32768 rosnąc do zera Cały Twój wzór to nieporozumienie. [syntax=c]yy = xx <=...
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,...
Pytanie tylko, dlaczego jego post znalazłem w koszu? Wiadomość skasowałem sam. racając do tematu: Informacja o znaku ujemnym zapisana jest zawsze na najstarszym bicie. Wrzucając liczbę 16-bitową do 32-bitowej, informacja o znaku już nie jest na ostatnim bicie, tylko na 16-stym, a LongInt ma tą informację na 32 bicie. Mam rację? Nawet jeśli mam, to...
Nie chcę konwersji do stringa, bo docelowo ten program ma obsługiwać wyświetlacz LED, a nie LCD. Arktik1, jak ten program może działać poprawnie skoro nie bada stanu 5 najstarszych. bitów w bajcie MSB? W nocie katalogowej DS jest wyraźnie napisane, że tylko wtedy należy wartośc reszty bajtu MSB i całego LSB jako ujemną. Symulator już mnie kilka razy...
(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...
Nie rozumiem po co wartości te są mnożone przez 0x3FF, a następnie dzielone przez wartość 0xFFFF. Obstawiam że chodzi o zmianę "zakresu". Jakie są (typ i rzeczywisty zakres) wartości w tym buforze? Zauważ, że mnożenie przez 0x3FF/0xFFFF to po prostu konwersja wartości z zakresu Deklaracja tablicy: Tutaj obstawiam, że chodzi o uzyskanie wartości ze...
(at)Jaca Ponieważ znalazłem trochę czasu postanowiłem wrócić do tematu, ponieważ nadal mam problemy z poprawnym przeliczeniem wartości ramki NMEA (WGS84) na współrzędne obsługiwane przez Google Maps. Odszukałem zastosowanie poszczególnych funkcji: Trunc() - funkcja Trunc zaokrągla w kierunku zera (dla liczb dodatnich oznacza to "w dół", dla liczb ujemnych...
Witam, wczoraj napisałem (w zasadzie to skopiowałem z tego poradnika:[url=http://www.botched.co.uk/... podstawowy programik do obsługi MPU6050 i uwaga(!) - odczyt z żyroskopu był poprawny ( problem był z przesyłem przez UART, ale napisałem jakąś funkcję, która zamienia zmienna typu int na tablice char i...
Witam! Mam problem z konwersją int do char*. Potrzebne mi to jest do wypisywania liczb na LCD. Napisałem działający kod jednak nie jest on zoptymalizowany i jest taktochłonny... Czy nie dałoby się tego inaczej rozwiązać? Mam takie funkcje wyświetlające: void lcd_putc(char c); void lcd_puts(const char *s); Funkcja wyświetlająca liczby:...
spróbuj też zamienić kod: signed short b = (8<<data[0]|data[1... na: signed short b = ((data[0]<<8)|... (źle wykonane przesunięcie w lewo) - resztą powinien zająć się kompilator. Nie chcę się czepiać, ale używanie w jednym wyrażeniu typów signed i unsigned nie jest najlepszym...
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...
Trzeba prawdopodobnie tylko wyłączyć kursor. Funkcja void LCD_SendCommand(unsigned char ucCommand) komendy zdefiniowane l pliku .h LCD Ewentualnie spróbuj pobawić się kontrastem może uda się go ustawić tak aby nie było bardzo widać przejścia kursora podczas odświeżania. Co do porównania temperatur w bibliotece onewiere.c jest funkcja OW_CompareRawTemperature....
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ę...
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...
poziom:=cisnienie* 10.19716; (*wartosc rzeczywista - przeskalowanie ciśnienia na wysokosc slupa wody*) poziomCentymetry:=TRUNC(poziom*1... (*poziom w centymetrach+ odcięcie czesci po przecinku*) 1. czyli poziomCm = cisnienie * 1019.716, spodziewasz się wartości od 0 do 1000 cm, więc cisnienie < 1.0 bar 2. ciśnienia...
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...
(...) ce_pln: 528.02 } 5.03.2025, 19:40:04node: function 207 function : (warn) "Debug → Wh:20, rce_pln:528.02" 5.03.2025, 19:40:04node: debug 148 topic1 : msg.payload : Object { command: "udevice", idx: 448, nvalue: 0, svalue: "0.01" } Takie zgłasza wartości. mogę cały przepływ podesłać. (at)ElektrodaBot Bezpośrednia odpowiedź na pytanie Z przedstawionych...
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...
Witam Tworze sobie prosty termometr na wyświetlaczu 7 segmentowym. Napisałem kod w bascomie i wrzuciłem na płytę testowa z atmega32 i śmiga jak trzeba. Kolejnym krokiem było wrzucenie tego na na atmege8 (zmieniłem m32def.dat na m8def.dat i taktowanie na 1MHz ) atmega świeża , fusebity nie zmieniane. No i jak zwykle u mnie to bywa, rzecz nie działa....
jaki zakres wartości przyjmuje spectrum po obliczeniach od ilu do ilu. Są to zmienne unsigned, tak. A jak to się ma do zmiennej capture z przetwornika Echhh. A nie pamiętam dokładnie, jak zaczynałem pisać program, to dorzuciłem kawałek kodu, który pokazał tą wartość na LCD. Wydaje mi się, że było to 16383. Dolna granica to zero, bo jest to moduł wartości...
Buduję napęd silnika prądu stałego oparty na Atmedze8. I moim problemem jest implementacja algorytmu kaskadowego do sterowania silnikiem, a dokładniej regulatorów PI. (przepraszam za takie "mądre" określenie problemu, ale w ten sposób najłatwiej mi to opisać. Tak czy owak potrzebuje stworzyć program w asemblerze na Atmegę który wykona zadanie regulatora...
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...
Napisałem sobie takie oto funkcje do obsługi DS18S20: #include <DS89C4xx.H>// biblioteka uC DS89C430 typedef unsigned char BYTE;// definicja typow danych typedef unsigned int WORD; sfr led_10 = 0x80;// port P0 wyswietla cyfre dziesiatek sfr led_01 = 0xA0;// port P2 wyswietla cyfre jednosci sbit DQ = P0^7; sbit run = P1^0; sbit error_sensor = P1^1;...
siedze, kombinuje, odpinam, przypinam kabelki...i ciągle jakieś cuda niewidy....przed chwilą sprawdziłem na kompie stacjonarnym i zaczęło śmigać elegancko, a zdaje się, że i wcześniej było identycznie połączone wszystko. Co najciekawsze....i tu popisałem się jako elektronik :P ....otóż moja płytka testowa wyposażona jest w MAX232 i cały czas byłem przekonany,...
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",...
Czy można przez konwersję BCD wyciągnąć znak (temperatura dodatnia/ ujemna) Wynik zczytywany jest do zmiennej Integer(nie Single, żeby od razu odciąć część ułamkową) dalej poprzez BCD uzyskuję liczbę dziesiątek i jedności. Wszystko działa tylko jeśli temperatura spadnie poniżej 0, zaczyna liczyć od końca. W jaki sposób można oddzielić znak "-" ze zmiennej...
W Twoim przypadku jak widać zadziała jak autor chciał. Ale to nie C więc "implementation defined" nie ma zastosowania. Tomek, jeśli nie chcesz dzielenia to [syntax=c] int a=-34; int b; long c; b=(long)a>>4; // Niejawna konwersja long->int obcięcie złych bajtów c = b; // Promocja do long jeśli konieczna, jeśli nie to "c" niepotrzebne [/syntax] Powinno...
Błędne informacje na temat obciążenia silnika, czyli otwarcia kątowego jej? Naciągana teoria - obciążenie silnika to wartość wyliczana, kąt otwarcia przepustnicy - mierzona, to dwa różne parametry. Jak by był błąd w programie , to by ciągle był minus. Bo niby skąd on się bierze? Czemu zmienia się z wartości dodatniej na ujemną? Nie mówię, że tak jest...
Mam też wątpliwości, czy val <<= (sizeof(val)*8) - size; jest bezpieczne. W zasadzie, to mam wątpliwość, czy to w ogóle działa. To sprawdź!!! W zasadzie, to ma kolega rację. Wszystko zależy od tego, jak zostanie zinterpretowany argument size . Moim zdaniem na takie zastosowanie nazwa argumentu nie jest szczęśliwa. Wiele osób może...
Problem rozwiązany. W datasheet zalecany jest rezystor podciągający ok. 5k. Jednak dalej, jest informacja, że podczas niektórych operacji (m.in. przy konwersji temperatury) zapotrzebowanie na prąd, może wynieść 1,5 mA. 5V/5kohm = 1mA max. Zmiana rezystora na 3,3k rozwiązało problem. Szkoda tylko że maxim jest mało konsekwentny w swojej dokumentacji...
Cześć, Chciałem przedstawić wam bardzo krótki i niecodzienny program, z którego stworzyłem mam duży problem. Próbowałem różnych rozwiązań, szukałem pomocy na różnych forach, książkach... Jesteście ostatnią deską ratunku. To jest moja playlista HLS (.m3u8). Lista zawiera 9-cio sekundowy fragment filmu, który jest zaszyfrowany i odtworzenie go bezpośrednio...
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...
Witam. Nie mogę sobie poradziź z wprowadzaniem liczb dwucyfrowych z klawiatury matrycowej. Moja klawiatura jest obsługiwana z wykorzystaniem przerwania od Timera0. Jeśli możecie to prosze o pomoc i propozycje rozwiązania tego problemu. Poniżej zamieszczam część mojego kodu programu ....... [wyciety fragment] ....... Do 'pętla nieskończona DO...
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...
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...
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...
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,...
Cześć max4elektroda, Przetestowałem wersję dev (dev_20241203_072219), a następnie najnowszą (1.17.794) i otrzymałem ten sam wynik, nadal błąd. Zmieniłem również liczbę kanałów (0 na 2) bez efektu. To jest komunikat o błędzie w wersji dev_20241203_072219: Info:SENSOR:D S1820[0] - Rozpoczęcie konwersji Info:SENSOR:D S1820[0] - Temp=23.12 Error:SENSOR:D...
Regulator PID to twór matematyczny, który służy do sterowania zadanym obiektem przy użyciu zmiennej wejściowej (jednej lub wielu). Stosuje się go, przede wszystkim, w układach automatyki, gdzie ma nadzorować jakiś proces. Załóżmy, że woda w zbiorniku ma mieć temperaturę równą 50ºC. Na pewno nie więcej, żeby ktoś się nie poparzył, mniej –...
A czy ktos wie, jaka może być przyczyna. Jeśli czujnik będąc na 5 cm przewodach i z rezystorem 4k7 pokazuje poprawnie temperatury ujemne. Ale już na 3 metrowym przewodzie i tym samym rezystorze pokazują się krzaczki. Rezystor zmieniałem na 2k2 i dalej te same krzaczki. Niewiem co jest grane, do konwersji i wyświetlenia używam tego: a = ((temp2...
Witam, problem tkwi w wyświetleniu temperatury na LCD. Czujnik działa w trybie 12 bitowym. Szczytuje pierwsze 12 bitów z pamięci scratchpada, sprawdzam czy temperatura jest + czy -, a następnie dokonuje konwersji temperatury na string. Na wyświetlaczu pokazują się jednak dziwne rzeczy. Użycie funkcji typu sprintf odpada (zajmuje za dużo miejsca). Konwersja...
NO okazalo sie bledne polaczenie ale teraz pytanie takie dlaczego jest tak If T <= 2000 Then ' temperatura dodatnia T = T / 16 ' przeliczamy do ludzkiej postaci Else ' temperatura ujemna T = 65536 - T ' przeliczamy T = T / 16 T = 0 - T End If Return End Sub dlaczego akura jest warunek <= 2000 a nie jakas inna liczba Dlaczego T/16 a nie naprzyklad...
https://obrazki.elektroda.pl/5304082500_... * Witam po dłuższej przerwie, tym razem dział mikro kontrolerów. Wymagania dla projektu / założenia: Pomiar w pomieszczeniu/ obudowie urządzenia /w zbiorniku temperatury powietrza /cieczy na wejściu i wyjściu. Wyświetlenie na żywo aktualnych wartości temperatur na wyświetlaczu LED x2. Wykrywanie...
Witam mój program wygląda tak: [syntax=c]#include <stdio.h> #include <stdlib.h> int main() { int n = 0,x = 0; printf ("Prosze podac liczbe dziesietna: \n"); scanf ("%d",&n); if (n<0) printf ("Blad! Podales liczbe: %d, ktora jest ujemna.\n\a", n); else { printf ("Liczba w systemie dwojkowym: "); do { x = n % 2; printf ("%d", x); n...
Szesnastobitowa liczba bez znaku oraz ze znakiem w kodzie uzupełnień do dwóch, będzie przyjmowała następujące wartości: uint 0 = int 0 = 0x0000 = 0b0000 0000 0000 0000 uint 32767 = int 32767 = 0x7fff = 0b0111 1111 1111 1111 uint 32768 = int -32768 = 0x8000 = 0b1000 0000 0000 0000 uint 65535 = int -1 = 0xffff = 0b1111 1111 1111 1111 Trzeba stworzyć dwa...
Witam Jeśli temp jest zmienną zawierającą temperaturę odczytaną z ds18b20 to jest to zmienna 16 bitowa ze znakiem. W związku z tym proponuję: - odczytać najstarszy bit (znak) i gdzieś go zapamiętać - jeśli liczba jest ujemna (MSB = 1), wykonać bitową negację i dodać 1 W tym momencie wykonanie operacji przesunięcia bitowego o 4 w prawo zwróci wartość...
Witam Co do procedury "val" to Help się kłania. Służy ona do zamiany ciągu znaków na liczbę. Ma ona tą zaletę że zwraca kod błędu konwersji. Nie wiem jak wygląda ten program z książki ale jeżeli ramka danych się nie zmienia to można zrobić np tak: _temperatura_ := StrToInt(Copy(_bufor_, _pozycja_ , _ilosc_znakow_)); gdzie: _temperatura_ : to wynik zamiany...
Witam wszystkich forumowiczów:) Dziś chciałbym się pochwalić swoją pierwszą od początku do końca zaprojektowaną i wykonaną przeze mnie konstrukcją "przelaną" na płytkę PCB. Zatem jest to moja pierwsza płytka więc proszę o wyrozumiałość;) Konstrukcją tą jest mianowicie wskaźnik wysterowania oparty o przetwornik ADC w ATtiny13. Projekt obmyśliłem w głowie...
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...
Obydwie 'zjechały się' dopiero po wielokrotnych jawnych rzutowaniach!. Błąd. Ale czy mój? No wszystko ma jakieś swoje wytłumaczenie :) Jest raczej niemożliwe, aby jakiś normalny kompilator C (w szczególności gcc) nie respektował elementarnych zasad niejawnych konwersji, takich jak promocja do typ float, gdy jeden z operandów jest typu float lub rzutowanie...
Prawda READ. A co do tej konwersji to już kiedyś napisałem jak to zrobić, zaraz znajdę post. Znalazłem. Jeśli temp jest zmienną zawierającą temperaturę odczytaną z ds18b20 to jest to zmienna 16 bitowa ze znakiem. W związku z tym proponuję: - odczytać najstarszy bit (znak) i gdzieś go zapamiętać - jeśli liczba jest ujemna (MSB = 1), wykonać bitową negację...
Dziękuję za sposób z long'ami. przynajmniej liczba ujemna mnożona przez siebie daje dodatnią:) w tym przypadku nie zależy mi ani na prędkości ani na objętości kodu, po prostu mam moduł MODBUS na atmega32 i tkneło mnie aby zrobić także barometr. Zajmuje to razem 24% FLASH'a a tempo działania programu niezbyt mnie interesuje ( a niech nawet sobie to minute...
Witam. Składam sobie zegar z termometrem na Attiny2313 i DS18B20 lecz mam problem z ujemną temperaturą. Do odczytu temperatury używam programu kolegi "Elektrooonik" ponieważ zajmuje najmniej kodu co jest tu dla mnie ważne i z 1-Wire styczność mam pierwszy raz więc wpierw wolę mieć jakiś przykład. Program Oryginalny do pomiaru temperatury wygląda tak:...
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...
O kurde zapomniałem :D Jeszcze raz przepraszam. Używam ATTINY 2313 a jako czujnik DS1820 A tu program: Config 1wire = Portd.5 : Dim Odczyt(2) As Byte , A As Byte , Dim T As Integer , Tmin As Integer , Tmax As Integer Deflcdchar 1 , 4 , 14 , 21 , 4 , 4 , 4 , 4 , 32 Deflcdchar 2 , 4 , 4 , 4 , 4 , 21 , 14 , 4 , 32 Do 1wreset : 1wwrite &HCC : 1wwrite...
https://obrazki.elektroda.pl/7717804000_... Witam wszystkich, Tym razem chciałbym zaprezentować termometr dwukanałowy zasilany z dwóch równolegle połączonych akumulatorów Li-Ion, zbudowany w oparciu o mikrokontroler ATTiny84 i dwa czujniki DS18B20 oraz pozostałe części "z szuflady". Termometr ten służy mi do pomiaru temperatury w pokoju...
WO 2010066025 20100617 Magazynowania energii ELECTROCHEiVlICAL I ABSOLUTORIUM Wynalazek dotyczy urządzenia i sposobu magazynowania energii elektrochemicznych i absolutorium. Tło wynalazku Najważniejsze znane techniki związanych z przedmiotem wynalazku jest przedstawiony w patentach US 5124012 (Berleyev) wydane 23 czerwca 1992 i 7033478 (Harde) wydane...
z ta kalibracjo to ciekawy temat ,ale jak podepne czujnik do termometru zrobionego na rs232 to temperature pokazuje idealnie,a ten kwarc to faktycznie 12.902400 ,tylko zmieniłem go na 11,059 oczywiscie tez zmieniając w kompilatorze. Wybacz kolego , ale Cię troszkę "obsztorcuje" :D 1)Twierdzisz , że używasz DS1820 (9-bit) , a temperaturę obliczasz jak...
W Oprogramowanie SDU-X Kod źródłowy dla Arduino można pobrać z repozytorium na portalu Thingvserse: #define REQUESTER , powinna być aktywna. A w przypadku układu, który odpowie i odeśle dane, ta linia musi być zakomentowana. W głównej pętli programu znajduje się sekcja do wyboru schematu modulacji, która ma zostać użyta. Jest kilka typów, ale w pełni...
I jeszcze jedno pytanie. Jak czytać temperatury ujemne ? Chyba zapisywane są one jako U2... czyli muszę czytać 9 bitów, zamiast 8 i sprawdzać stan najstarczego bitu. Jeśli jest równy 1 to obliczam jak U2, a jak równy 0 to z BIN do DEC ? A czy ty z tych dwóch bajtów gdzie jest zapisana temperatura wybierasz sobie tylko 8 bitów? Czyli odczytujesz sobie...
Witam. Jakiś czas temu przerobiłem zasilacz ATX dodając do niego regulacje napięć i prądu. Zasilacz działa jak powinien. Dwa napięcia oraz prąd chcę wyświetlać na trzech wyświetlaczach 7-segmentowych, w sumie 12 znaków. Napięcia są wyświetlane prawidłowo. Mam jednak problem z interpretacją/zrealizowaniem pomiaru prądu. W ujemnej gałęzi napięcia wyjściowego...
Witam. Mam pytanie dlaczego mój termometr nie działa poprawnie. Zapamiętuję temperaturę maksymalną lecz nie zapamiętuje temperatury minimalnej. Minimalna temperatura jest tylko zapamiętywana tylko przy minusowych temperaturach. Oto program: Config 1wire = Portd.5 : Dim Odczyt(2) As Byte , A As Byte , Dim T As Integer , Tmin As Integer ,...
Też kiedyś pisałem w asm ale to było w czasach gdy kompilatory C były drogie i niezbyt inteligebntne. Teraz czasem robię wstawki w asm ale to bardzo rzadki przypadek. Dlaczego wolę C? Np taki kod: [syntax=avrasm]b2d ; konwersja 16-bit bin na dec ; dzielenie przez 1000d = 0x03E8 movlw0x03 movwfxw1 movlw0xE8 movwfxw0 callb2da movwfst1 ; dzielenie przez...
O zasilaniu czy sprawności kodu nie pisałem z prostych przyczyn: Piszącego w Bascom interesuje tylko to by program działał a nie ciągnął mało prądu (zasilanie bateryjne i Bascom? Nigdy nie słyszałem by ktoś to łączył) Piszącego w Bascom interesuje by progam działał niezależnie czy musi użyć procka z 16kb czy 32kb Ja wolę by program mieścił się w 1kb...
Nie zmienia, bo masz błąd w innym miejscu. Dokładnie to miałem na myśli-że błąd jest gdzieś indziej. Zastanów się, co oznacza nazwa trybu CTC (?) – w ang. jest to ‘Clear Timer on Compare’ (pol. - wyzeruj zawartość licznika/timera, gdy jego zawartość jest równa wyznaczonej z góry i ustalonej, bądź to wyliczonej jakiejś wartości w zmiennej...
konwersja liczb dzielenie liczb ujemnych konwersja liczb tekst
zniekształcenia niskich tonach panasonic radio reset dioda schottky anoda
transformatory sieciowe zatra naprawa przetwornic
Jak zdemontować nagrzewnicę w Nissan Micra K12? Schemat zasilacza Philips DYS602-210309W