Witam od jakiegoś czasu pisze sobie coś w CCS i do wczoraj wszystko było ok, ale postanowiłem mój program przenieść na nowy projekt. To znaczy tworze w CCS nowy projekt, wrzucam tam plik xxx.c , dołączam wszystkie biblioteki i pliki nagłówkowe ze starego projektu i kompiluje.... no i się nie skompilowało....
A może i wychodzi poza obszar tablicy, a może mażesz po stosie. Zaprawdę powiadam Ci mnożenie w ARMach działa dobrze a w pozostałej części programu może być coś źle. Często takie objawy związane są z mazaniem po stosie.
Witam, niestety Logo! nie obsługuje funkcji matematycznych na liczbach zmiennoprzecinkowych, zostaje Ci tylko bloczek Float/Integer. Przy zastosowaniu tego bloczka możesz: - przekazać liczbę float na np. ekran TD - wykonać operację mnożenia liczby float, parametr Resolution (0.001 do 1000) - przy...
przy czym najwięcej problemów sprawiło mi "fused-multiply-add" i związane z nim cuda. Dokładność przy liczbach zmiennoprzecinkowych jest różna, zależy od rodzaju sprzętu oraz rodzaju instrukcji. Przeważnie mnożenie z dodawaniem może mieć większy błąd, niż wykonanie tych instrukcji z osobna. Dokładność...
Witam, Kolega tmf ma całkowitą racje, na AVR unikamy operacji float jak ognia. Nie dość że koszmarnie wolne to jeszcze zjadają sporo flash. Lepiej zrobić kilka operacji mnożenia i dzielenia niż jedną na typie float. Poza tym AVR GCC nie obsługuje liczb typu double, traktuje ją tak samo jak float...
a nie mówiłem...drugi zajmie jeszcze więcej :) Drugi pomysł używałem na Atmega16, lecz nie wywoływałem fprintf_P(); tylko kilka razy. Jeśli wiesz jak będzie wyglądał wynik tzn ile będzie miał miejsc po przecinku i w sumie ile cyfr to zawsze możesz użyć pomysłu kolegi: elektronik12z Możesz też bawić...
Zgadzam się że może być przydatne trzymanie liczb skalowanych jakąś potęgą 2 itd... I tak się w praktyce robi gdy obliczenia na float-ach są za wolne (zarówno softowo jak i czasem również hardware-owe operacje na float-ach mogą być za wolne). Zapoznaj się z formatami Q. Idea jest znana,...
Zapominasz, że w tej pamięci nie tylko te "floaty" siedzą (ściślej - ich obsługa) ale również obsługa uarta oraz ADC. To że masz 3 zmienne typu float o niczym nie przesądza. Przy jednej miałbyś podobnie. Oprócz tego procedura zamiany float-->str - też zajmuje swoje. W twoim przypadku wystarczyłoby...
Mnożąc zmienną typu WORD przez stałą CONST wychodzi niedokładny wynik. Np: WORD = 200 x CONST = 0.0025 = SINGLE = 0.499999933. Dokładność obliczeń zmiennoprzecinkowych jest kwestią długości (i formy) reprezentacji liczb zmiennoprzecinkowych. Z oczywistych względów w ośmiobitowych procesorach...
Witam, napotkałem w swoim projekcie na dziwny wręcz dla mnie nie wytłumaczalny problem dotyczący mnożenia liczb zmiennoprzecinkowych. Poniżej kod który generuje problem: [syntax=c]float error = ( tutaj podaję różne wielkości z przedziału -100 do +100 ) float dana = error * 4.0f; [/syntax] Następnie...
Ze wszystkim sobie poradziłem, obecnie mam problem z liczbami nie całkowitymi. AVR Studio + WinAVR np mam zmienną x = 10 teraz chce zapisać w zmiennej y = x/4 Wynik to oczywiście 2,5 ale jak wykonać takie dzielenie? Takie coś nie działa: unsigned int x=10; float y y = x/4; Operacja...
Wszystko pięknie ładnie ale wolałbym wiedzieć jak jest to zrobione, że on liczy takie liczby. Oczywiście nie chodzi mi o notacje otwartą tylko o samo podanie dwóch liczb z duża precyzja i wykonanie na nich operacji np. odejmowania. Dodano po 4 Jak dodać bibliotekę ap float do DEV C++ jeżeli...
Tego help'a znam, dość często go przeglądam, jednak wielu funkcji nie ma w nim opisanych. Funkcja write_float_eeprom była opisana (w sumie to była tylko zmianka o tym) w którymś z przykładów na stronie, stąd też wiedziałem że znajduje się w pliku internal_eeprom.c. Zawartość pliku poniżej. [syntax=c]//////////////////////////...
Witam, czy ktoś wie jak jest reprezentowany typ float w C Keila? Program piszę w asemblerze, ale wydłubałem z Keila sobie procedurkę asemblerową do mnożenia zmiennoprzecinkowego. Mam tylko problem z odpowiednim sformatowaniem argumentów dla tej procedurki. Ile bitów jest na mantysę a ile na cechę...
Procesory nie operują na liczbach rzeczywistych, nigdy. SIMD - single instruction multi data. To są instrukcje nie dostępne dla kompilatora i trzeba je samodzielnie wciskać w postaci intrinsics. Tutaj masz tabelę z cyklami dla cortex-A9 Powiedzmy instrukcja VMLAL wykonuje takie działanie:...
Wielkie dzięki! Wybrałem mnożenie x1000 i odpowiednio ujarzmiłem wyświetlanie przecinka. W każdym razie conajmniej ciekawe jest aż tak dramatyczne zwiększenie kodu programu po użyciu typu float. Pozdro
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...
Witam.Chciałbym się podzielić programami napisanymi w C.Są to podstawowe programy jakie pisze się na uczelniach (Politechnika) Mam nadzieję że będą one pomocne dla innych studentów.Udostępniam je z takiego powodu, że nie każdy po dwóch wykładach z C umie już pisać takie "zaawansowane" dla początkującego...
Witajcie, mam taki problem: mam do napisania program według założen prowadzącego ... Bold to wykonane. Zad 1. Utwórz klasę macierz reprezentującą macierz jednowymiarową. Klasa powinna zawierać metody implementujące typowe operacje na macierzach (dodawanie macierzy lub stałej, odejmowanie macierzy...
Witajcie moi drodzy Przedstawię tutaj mojego shielda (nakładkę) na Arduino UNO opartego o układ ENC424j600. Shield ten pozwala podłączyć Arduino do internetu bez żadnego lutowania, a nawet bez użycia kabelków i płytek stykowych. W temacie dam jedenaście pełnych przykładów jego użycia z moimi...
Z tym mnożeniem przez 0 i 1 dla 8 bitów to wyjdzie porażka bo albo świeci albo nie świeci. Nie chodzi o mnożenie razy 0 lub 1, bo wynik przecież jest oczywisty. Tylko o mnożenie razy liczbę z przedziału 0 do 1, żeby uniknąć typu float to robi się to wykorzystując arytmetykę stałopozycyjną lub...
proszę o pomoc w napisaniu prostego kalkulatora w c podaje to co napisałem kompilator proszę o pomoc. Proszę o pomoc w napisaniu poprawnego kodu niewiem jak poprawić go za każdym razem program po wykonaniu działania zamyka sie lecz nie wraca do głównego menu . Proszę o pomoc!!!!!!! oto treść zadania. Napisać...
Witam używam mikrokontrolera dsPIC30f6010A, kompilator HI-tech. Mam problem z funkcją realizująca regulator PI. Otóż trwa ona zbyt długo. Na pewno czas znacznie wydłużają obliczenia na liczbach typu float ale na razie nie chciałbym tego zmieniać, stąd pytanie o DSP engine. Czy używając zwykłego mnożenia...
Brawo za to, że dzielisz się tym co napisałeś. Ale niestety to przykład jak robić grafikę wolno. Użycie liczb zmiennoprzecinkowych, dzielenia, mnożenia nie wspominając o trygonometrii to podstawowe błędy. Tutaj przykładowo kod rysowania linii bez float, mnożenia i dzielenia. Używane są dane typu...
Podałeś przykład z mnożeniem niedostosowanych do FFP liczb, to ja podam kontrprzykład: for(float i=0;i<10;i+=0.00000001); Zadziała z float? Oczywiście nie. O czym to świadczy? Wyłącznie o tym, że programując trzeba myśleć. Rozwiązanie problemu który przedstawiłeś zajmuje jakieś 3 sekundy -...
1. 2048+Y0+((X-X0)*(Y1-Y0))/(X1-X0); samo (Y1-Y0)/(X1-X0) może dawać wynik nie dokońca taki o jakim myślisz ponieważ to są liczby całkowite Słuszna uwaga. Ale na początek można zacząć od wywalenia nawiasów dookoła tego dzielenia, tak aby najpierw wykonało się mnożenie, a dopiero potem dzielenie....
Potrzebuje wykonać sporo obliczeń na liczbach zespolonych więc żeby było łatwiej je przemnażać pomyślałem że zastosuje typ complex outRe = Re1 * Re2 - Im1 * Im2; outIm = Im1 * Re2 + Re1 * Im2;
Operacje 32-bitowe muszą być na 8-bitowym AVR kilkadziesiąt razy wolniejsze niż na 32-bitowym Cortex. Cortexy mają ponadto szybką sprzętową mnożarkę. Oczywiście najpierw wypadałoby "wyprostować" algorytm, ale obawiam się, że to nie wystarczy. Mnożenie float zabije AVR. To sporo więcej, niż dodawanie...
Pamiętaj, że funkcja _firFilterPut() implementuje bufor cykliczny. Wewnątrz struktury filtra zawsze będzie przechowywanych 'order' próbek. Ogólne użycie dla filtra 3 rzędu (pseudokod): _firFilterPut(ADC) _fir... (i = 1..n) filteredsample usage: b = fir1(n,...
To "tradycyjne" podejście generuje inny przedział - od 1/1001 do 1000/1001 włącznie; książkowy przykład daje liczby z zakresu od 0 do 1 włącznie. Użycie RAND_MAX gwarantuje najwyższą dostępną rozdzielczość, zaś "tradycja" ogranicza ją do 1/1001. Zastanawiam się, dlaczego mnożą tam przez 1.0 zamiast...
W C przekazuje się do linkera po prostu: -Wl,-u,vfprintf -lprintf_flt. Myślałem, że mała modyfikacja kodu który podałem załatwi sprawę, to co proponujesz jest chyba zbyt zagmatwane dla mnie. Może jednak da radę zmodyfikować mój kod? Nie ma co modyfikować, bo on czasami da ci dziwne wyniki. float...
ARM jest ma architekturę riskową więc dzielenie nie zawsze jest. Rdzeń Cortex M3 np. STM32 firmy ST ma dzielenie sprzętowe liczb całkowitych, zwróć uwagę na algorytm na pewno dzielenie jest i jeśli jest sprzętowe jest dużo szybciej. Jeśli to Ci nie weystarczy najlepiej będzie wziąć DSP'ka ze sprzętowym...
Musisz mnożenie zrobić na liczbach rzeczywistych. float f; f = pomiar1; f *= 0.244; pomiar1 = (long) f;
Jak masz kilka starych jakiś, to mam kogoś, kto by się ucieszył ;) Ale o tym to co najwyżej na PW :) Stare w sensie że ile lat? Mam tu natomiast program na silnię. Ciekawi mnie, jak zrobić silnię na piechotę tj używając tylko mnożenia. #include <stdio.h> #include <stdlib.h> int...
Królik, programisto :D Poprawnie: # include <iostream> # include <cstdio> # include <math.h> using namespace std; int main () { int a, b, c; float delta, x0, x1, x2, pierwiastek_delty; cout<<"Podaj liczbe a\n"; cin>>a; ...
Witam! Uczę się podstaw programowania w C, dobrze idzie, tylko zatrzymała mnie w miejscu pewna rzecz - otóż ostatnio KAŻDY program, który piszę wywala błąd po wprowadzeniu pierwszej danej. Wszystko się kompiluje, natomiast jesli jest błąd w stylu niewstawienia przeze mnie np. średnika to wtedy pokazuje...
w drugim przypadku uint = uint*int/int czyli operacje na liczbach całkowitych kod ciut mniejszy ale czy szybszy i lepszy?? Zakładam, że typ zmiennej 'Data_' będzie uint32_t (zakres od 0 do 4294967295). Zmienna 'ADC_Value' jest typu uint16_t, więc w tym konkretnym przypadku będzie podobny.