Zauważyłem pewną specyfikę dla zwykłej tablicy makro nie działa jedynie dla pozycji nieparzystych w tablicy... Dla parzystych rzutowanie działa jak należy... To sugeruje błąd dostępu do źle "wyrównanych" danych w pamięci - zmienne o długości 2 bajtów powinny być umieszczone w pamięci pod parzystymi adresami. W tablicy elementów typu char, przy próbie...
Myślę, że już otrzymałeś odpowiedź, jak to zrobić. Podejrzewam, że zmienną modul_depth masz zadeklarowaną jako uint16_t ...dlatego uint16_t musisz zamienić na uint32_t na czas tych operacji, np. przez rzutowanie typów więc powinno być: [syntax=c] procentowo=((uint32_t)modul_depth*1000)/... //wspolczynnik zmian [/syntax] ponieważ bez rzutowania kompilator...
Nie sprawdzałem ale mam wątpliwości czy to zadziała. W nowym oknie musisz wywołać metodę GetParent() która zwróci uchwyt do okna z którego nowe zostało wywołane. Pewnie trzeba będzie wykonać rzutowanie. Do zmiennych dostaniesz się przez pParent. [syntax=cpp] stareOkno* pParent = (stareOkno*)GetParent(); pParent->zmienna [/syntax]
Jest to rzutowanie na wskaźnik do zmiennej typu uint8_t, a nie na zmienną. Ta gwiazdka to oznaczenie wskaźnika. Samo z siebie nic nie robi, powoduje tylko, że kompilator nie rzuca ostrzeżeniem lub błędem.
1 jest typu int więc jest 16 bitowa Dokładnie, po prostu pierwszy argument w wyrażeniu przesunięcia x : ( x << y ) jest 16-bitowy , więc jeśli chcemy użyć 32-bitowego - to trzeba zrobić rzutowanie typu.
rzutowanie zmiennych poprostu...
To wiele wyjasnia, dziękuję bardzo. Korzystając z okazji chciałbym jeszcze zapytać o wyrażenie : *(int*)20000=7 Ja to rozumiem jako wpisanie do zmiennej typu int mieszczącej się pod adresem 20000 wartości 7. Samo (int*)20000 oznacza rzutowanie na wskaźnik do zmiennej typu int, zmienna mieści się pod adresem 20000, Dodanie gwiazdki * przed nawias powoduje...
float normalized = 1.0 * x / INT32_MAX; To mnożenie przez 1.0 jest tu do czegoś potrzebne? Konieczny trick w tych językach, inaczej wejdziesz na pole minowe dzielenia stałoprzecinkowego. Rzutowanie na zmienny przecinek też by było ok (i chyba bez różnicy w wydajności)
Dzięki 2P. Działa. Podejrzewałem, że chodzi o rzutowanie zmiennych, ale próbowałem sposobem kolegi BlueDraco i niestety.
Tablica data to bufor (z komendą), jeżeli jej drugi bajt oznacza komendę USBASP_FUNC_SETLONGADDRESS, to następne cztery bajty (od data[2]) zawierają adres wpisywany do prog_address. Tak wynika z tego programu. Rzutowanie na wskaźnik na unsigned long jest po to, aby ta pierwsza gwiazdka "wyciągnęła" z pamięci unsigned long. Inaczej, takie użycie to bezpośrednia...
Może spróbuj zmienić typ zmiennej *odebrano* z uint8_t na char bo może to jest problem z rzutowanej zmiennej unsigned na signed.
Przecież uint8_t to jest unsigned char, więc co tu chcesz przerabiać? Jak masz warninga to po prostu rzutuj zmienną na char i już. 4\/3!!
przesunięcie li Jak już coś to to trzeba rzutować zmienną b a nie a. Przesunięcie ze znakiem tez wg standardu jest zależne od implementacji
no wiec czas poznac nowa umiejetnosc (nowy skill [; ) - rzutowanie zmiennych - type casting - pisalem o tym ostatnio - http://www.elektroda.pl/rtvforum/viewtop... 4\/3!!
PTR to nie jest rzutowanie, jakie występuje w językach wysokiego poziomu, tylko traktowanie. Po prostu jest spod adresu wskazanego zmienną pobierane WORD danych. Jako, że sama zmienna jest tylko typu bajt, to w rzeczywistości zostaną pobrane wartości ze zmiennej Byte1 i Byte2 w kolejności.
Witam. Poniżej przedstawiam prosty program, który rzutuje zmienną typu "char" na "int": [syntax=c]#include<string> #include<iostream> using namespace std; int main() { char a = 'ż'; cout << static_cast<int>(a) << endl; return 0; }[/syntax] Moje pytanie do Szanownych Pań i Panów brzmi - dlaczego "cout" zwraca -65, skoro...
Jeśli chcesz, żeby zaokrąglał zamiast obcinać to do zmiennej float dodawaj 0,5 i następnie rzutuj.
Pierwszy zapis o który pytasz, to tablica wskaźników na funkcję, która to funkcja nie zwraca wartości i nie przyjmuje wartości. Zapis const oznacza, że tablicy nie będziemy modyfikować. Zapis, moim zdaniem bardziej czytelny, który sam stosuję w takim przypadku (z głowy): typedef void (*pVector_t)(void); __attribute__ ((used,...
Najlepiej zadeklaruj int A; a do wszystkich obliczeń stosuj A/10.0 (najprostszy i najwygodniejszy sposób) Można też zaokrąglić stosując funkcje RoundTo(A,-1) lub ((int)(A*10))/10.0 (poprostu najpierw mnożymy razy 10 później rzutujemy na inta a póżniej dzielimy przez 10 i rzutujemy na float)
hotdog: miałem na myśli ogólny przypadek użycia const. W tym przypadku rzutowanie nic nie daje i co więcej jest niepotrzebne. Zmienną na typ const kompilator rzutuje automatycznie i nie powinno to generować ostrzeżeń. Co innego w drugą stronę - rzutowanie zmiennej const na zwykłą - tu pojawić się powinien błąd. Dr. Kuj - sądząc z innych twoich postów...
Witam! Aby pozbyć się warningu, musisz rzutować zmienną. Zmień linijkę: if (strncmp (bufor, "RING", 4) == 0) na if (strncmp ((const char*)bufor, "RING", 4) == 0) I będzie OK. Pozdrawiam Wojt
Jeśli chcesz wyświetlić bez miejsc po przecinku to rzutuj zmienną cisn na jakąś zmienna typu Integer lub Word. Zdefiniuj ją na przykład Dim cisn_int as integer i nastepnie napisz cisn_int= cisn I wyświetl bez fusing. Bascom to nie jest prymitywny język. Jest bardzo dobrym narzędziem do pisania nawet skomplikowanych programów.
Prawdopodobnie problemem są typy zmiennych. Funkcja atan2 operuje na zmiennych typu double - Ty podajesz zmienne typu int. Czasem trzeba w takich sytuacjach zrobić jawne rzutowanie każdej zmiennej na typ float - sprawdź czy to pomoże.
Pokaż większy fragment kodu, z deklaracją tablicy i rzutowaniem na unię.
Nie działa mi to mnożenie tam u góry bo zapis zrobiłem w ten sposób że rzutuje zmienną na czar potem przesuwam o 8 bitów i znów rzutuje przesuwam znów rzutuje. I tak to zapisuje i przy zapisie wyskakują dziwne licznik. A tak w ogóle dzięki za tutorial ale ja używam zewnętrzny eeprom bo wewnętrzny atmegi jest zarezerwowany na co innego. Post raportowany,...
O jakim rzutowaniu Wy tu mówicie :?: Potrzebujesz zmienną w EEPROM, to ją sobie tam zadeklaruj, a nie wymyślasz cuda :-P
Rzutowanie? Wszystkie te zmienne są typu string.
Ja w ogóle nie kumam gdzie tu jest problem, skoro flash w tym (jak i w każdym innym w zasadzie) mikrokontrolerze można odczytywać w bajtach, półsłowach i słowach? Po co rzutujesz na zmienną 16-bitową skoro chcesz odczytać 8-bitów? 4\/3!!
Cześć! Przy pisaniu programów starałem się unikać liczb ujemnych. Tak, wiec w jednym z programów stosowałem dane typu uint, jednak w wyniku pewnego błędu okazało się, że na wyświetlaczu pojawiła się wartość ujemna jako wynik obliczenia. Tak więc prośba o wytłumaczenie dlaczego stosując dane typu uint otrzymuję prawidłowe wyniki? Na przykład w wyniku...
Rzeczywiście kompilator zwraca przy f_write warning. Jak to powinno się poprawnie zapisać? Należy użyć dokładnie takiego typu jakiego oczekuje funkcja, czyli UINT, a nie uint8_t. I bynajmniej nie chodzi o rzutowanie - należy zmienić typ zmiennej której adres jest przekazywany do funkcji. Zwrotne informacje z tych funkcji odbieram, ale nie chciałem...
Nie zawsze można ręcznie dodawać ".0", jeśli chciałbyś dzielić zmienne typu int trzeba rzutować i w sumie wystarczy tylko jeden czynnik typu float drugi domyślnie się zrzutuje [syntax=cpp] int a=2518; int b=12512; //w stylu c float test = float(a)/b; //poprawnie ;) float test2=static_cast<float>(a)/b; [/syntax]
Zrobiłem porównanie dla int w postaci /// temp_ds[0] -> temperatura z czujnika // n0_eeprom_1_dol -> temperatura z eeproma if((int16_t) temp_ds[0] <= (int16_t) n0_eeprom_1_dol) { } Niestety musiałem tak rzutować zmienne inaczej nie chciało działać chociaż obydwie zmienne są odczytane i zapisane...
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...
To jest typowa metoda konwersji za pomocą rzutowania typów i nie wymaga allokacji pamięci.
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.
Jeśli y będzie typem unsigned int, to jawne rzutowanie nie jest potrzebne - kompilator niejawnie zrzutuje wynik operacji na typ zmiennej y
Masz dużo racji. Prawdopodobnie to co napisałeś zadziała. Następnym krokiem ( pomnożyłeś przesuwając w lewo 4 razy przez 16) będzie podzielenie przez 16 i rzutowanie na zmienną single. Otrzymasz temperaturę dodatnią lub ujemną z dokładnością bodajże 4 miejsc po przecinku.
Cześć, mam problem z obliczeniami w języku C. Ustawiam zmienną float i podstawiam proste obliczenia tj. float t; t=(20/100)*45; Chcę uzyskać wartość całkowitą z tej liczby więc rzutuję na nową zmienną unsigned int i; i=(unsigned) t; Nie uzyskuje tej liczby. Dlaczego?
mój błąd - musisz zostawić W jako Word, a potem dodawać wartości do zmiennej typu Long poprzez tzw. niejawne rzutowanie typów. czyli Dim W as word, L as long '... W=getadc(0) L=L+W '... L=L/10 W=L '... i dalsze obliczenia
Cześć Jak wpisać do bufora 32 bitowego takie zmienne address,command,negated_command address-16 bitowy command-8 bitowy negated_command-8 bitowy buffer-bufor 32 bitowy W podanej kolejności zmienne mają być włożone od LSB do MSB. buffer=address; buffer=command<<16;Czy takie polecenie odrazu rzutuje prawą stronę do zmiennej typu uin32_t czy na początku...
Dzięki o coś takiego dokładnie mi chodziło:).W poprzedniej Twojej wypowiedzi myślałem że poprzez wirtualną kartkę rozumiesz to abym rzutował poszczególne zmienne stringowe do zmiennej plikowej która potem będzie zapisywana jako zbiór informacji zebranych z pól textbox.Stąd zrobiło się małe zamieszanie bo nie wiedziałem wtedy jak dokonać przejścia do...
Dzięki. A mógłbyś powiedzieć dlaczego tak akurat działa? Sam poradziłem sobie w inny sposób: zmienna_w = temp2; zmienna_w = zmienna_w <<16; Mam też inne pytanie. Mam oto liczbę float e FLoat zawiera liczbę z przedziału 0-1. Chciałbym zapisać jej cztery bajty w buforze. Mam coś takiego: uint8_t bufor[4] bufor[0]= ((long...
Trochę na ślepo walczysz - jak usuniesz rzutowanie na zmienną 8-bitową, a pD jest czymś większym, to wtedy ta operacja zadziała zupełnie inaczej niż było w planach... A zamiast rejestru IPR jest chyba IP, może jakiś inny nagłówek ktoś wykorzystywał. Do nazwy przerwania wystarczy dodać ...CAN1... 4\/3!!
Hmmm, rzutujesz na unsigned long i zmienna czas_podawania_sredni jest tego typu, natomiast rzutowanie nie zmienia typu zmiennej czas_podawania_odliczony, pozostanie ona typu unsigned int.
Więc to potwierdza że afx współpracuje tylko z MFC. Więc albo zrobisz aplikacje MFC albo będziesz musiał sam napisać wstawianie grafiki do RichEdita albo tak jak wcześniej wspomniałem przerobisz wszystkie afx. Aby działało należy przebudować cały projekt przy takich zmianach a nie naciskać tylko F5 jako start debuging. Polecam Rebuild Solution (Ctr+Alt+F7)...
Pokombinowałem, spróbowałem każdą zmienną rzutować osobno w następujący sposób: [syntax=c] Ton = (uint32_t) ICR1 * (uint32_t) DutyCycle /100; [/syntax] i zadziałało. Teraz przy każdej częstotliwości mam zmianę wypełnienia zgodnie z założeniami ;) Dziękuję bardzo za pomoc.
Freddie Chopin : Masz drobny błąd w kodzie - na wskaźnik rzutujesz nie adres zmiennej "data", tylko jej wartość. Ogólnie warto jest posiadać funkcję do wysyłania bloku danych - wystarczy podać wskaźnik oraz długość danych.
ad.1 Aby zrozumieć co się dzieje w tej linijce musisz dowiedzieć się co to są wskaźniki i rzutowanie typów. Jeżeli restart to tablica, to: [syntax=c]x=restart[0];[/syntax] przepisze pierwszy element z tablicy do zmiennej x. Nazwa tablicy to jednocześnie wskaźnik (adres w pamięci) do tej tablicy. I na przykład: [syntax=c]x=restart[1];[/syntax] zadziała...
W swoich programach często mam linijkę: [syntax=vbnet] Dim Help_b As Byte, Help_i As Integer, Help_w As Word ' itp[/syntax] Nie muszę się potem zastanawiać i takie podręczne, znane na pamieć, powodują że nie musisz powoływać nowych. Następną rzeczą jest to że w Bascom nie musisz rzutować zmiennych na typ string jeśli chcesz je wyświetlić na LCD. Robi...
Juz gotowe :) mogłem najpierw poczytać, zanim napisałem te pytanie. Temat zamkniety rzutowanie pomogło.
OK tylko jak przypisać odpowiednią zmienną umieszczoną pod danym indexem listy do zmiennej którą mogę przetworzyć w progrmie: Podam kod prymitywnie ale tak bym przekazał i docelowo zrozumiał ide przypisania w drugą stronę Dane.Nazwa:=CheckListBox1.Objects ... Dane.Adres.Ulica:=CheckListBox1.Obje...
A jemu chodzi o to żeby było 0x0044 Wiem, ale odniosłem wrażenie, że markosik20 uważa iż podgląd pamięci i podgląd pamięci przez zmienną pokazują co innego, a tutaj wszystko jest OK. Jeśli zawartość jest big-endian, to żadne rzutowanie tego nie zmieni - trzeba ręcznie zamienić bajty. Przy okazji - http://freemodbus.berlios.de/ 4\/3!!
Więc odpowiedź już masz wyżej. Mam taki problem, jak z tablicy liczbowej z uint8_t wyłuskać (przez złożenie) zmienne uint16_t? Rzutuj na int16_t i masz zmienne ujemne. To co pokazałeś niby działa tak samo, ale po co udawać, że chodzi Ci o mnożenie i dodawanie, skoro chodzi Ci o przesunięcie i bitowy OR? Zresztą to działa tylko "przypadkiem", bo tak...
No chyba że tak, myślałem że jawne rzutowanie ma miejsce wtedy gdy wszystkim zmiennym przyporządkowujemy taki typ, żeby w danym wyrażeniu występowały tylko zmienne danego typu.
program W czym problem? Przepisujesz znak po znaku(albo linijka po linijce) plik źródłowy dotąd aż nie napotkasz w nim znacznika końca pliku EOF. ch = getc(input); while(ch != EOF) { ch = getc(input); putc(ch, output); } Gdybyś chciał tak zrobić z plikiem binarnym to mogło by ci się to nie udać. Wtedy powinieneś...
(at)Sztuka_To_Tajfun Brakuje Ci jeszcze w jednym miejscu rzutowania + round.
To ja wytłumaczę prościej: 2+3 == 5 a nie 23 :) . Prawidłowy kod to coś w stylu: pomiar= gora<<8 + dol; zmienne są automatycznie rzutowane na int.
Jak to jest z rzutowaniem ? Jeśli mam zmienną uint8_t to jak ją w kodzie zmienić i zapisać do zmiennej int8_t ? Żeby np. pobrać w postaci uint8_t i wyświetlić w int8_t.
(A0 + A1 )*(A2 + A3) /4096 Lepiej użyć: ((A0 + A1 )*(A2 + A3)) >> 12, będzie szybciej. Zmienne Ax powinny być typu unsigned long (albo uint32_t - w Uno to ekwiwalent) analogRead() zwraca wartość int, więc trzeba je rzutować do uint32_t przed dodawaniem.
Każdy klawisz wysyła znak przy nacićnięciu i puszczeniu. Te kody różnią się troszeczkę - doczytaj. Zauważ także, ze ustawiasz bit 7 w zmiennej char - tworzysz liczbę ujemną. Tę poddajesz różnym niejawnym rzutowaniom. Np. getATkbd() robi z niej unsigned char. Na pewno wiesz co się w tym czasie dzieje z jej wartością? Albert
O ile sprzęty AGD ą wykorzystywane cyklicznie i regularnie (pranie, prasowanie, odkurzanie itp.), trzeba pod uwagę uwzględnić zmienną taką jak zmiana czasu na zimowy - wówczas wcześniej włączamy oświetlenie, co rzutuje na dodatkowy pobór.
Witam! krzychoocpp napisał: Nie jestem pewny czy obydwa rzutowania są potrzebne, chyba wystarcza tylko jedno. Masz rację wystarczy jedno rzutowanie: float f = (float)a / liczby; albo float f = a / (float)liczby; daje ten sam wynik; Pozdrawiam
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...
Najprościej: 1. mnożysz float *10, powstaje np zmienna "liczba"; 2. następnie "liczba" dzielisz przez 10 - masz zmienną "całe"; 3. na "liczba" wykonujesz dzielenie modulo 10 i masz ulamek. W przypadku całkowitych można też od razu rzutować na int, tak jak pisał kolega wyżej. Poskładać to do kupy z kropka pomiędzy za pomocą itoa() i już.
Zwiększyło niewiele bo już wcześniej używałeś floatów. Swoją drogą twój problem wynika z niezrozumienia podstaw C, typecast następuje w chwili przypisania wartości zmiennej, chyba, że jawnie to zmienisz stosując rzutowanie. Kup sobie K&R i miłej lektury :)
Problem wynika z reguł promocji typów występujących w języku C. W AVRGCC typ int jest 16 bitowy i do takiej wartości następuje promocja typu przy przesunięciu bitów w lewo. Powinno pomóc rzutowanie: [syntax=c]uint32_t mask = (uint32_t)((uint32_t)1<<(uint32_t)... Pozdrawiam Wojtek
Nigdy nie używałem rzutowania w pascalu gdyż nie było potrzebne. Wystarczała funkcja round(). Shift + F1. Bardzo przydatne narzędzie w Pascal IDE.
Zakres wyniku obliczenia zawsze mieści się w przedziale -100 do +100. Interesująca teoria, biorąc pod uwagę fakt, że dla 127 i 127 wynik wynosi 135 i definitywnie nie mieści się w podanym przez Ciebie zakresie ani w zakresie zmiennej int8_t.
Ja to rozumiem tak, że nie rzutuję float na float tylko zmienną result na float po to, aby wynik dzielenia był liczbą rzeczywistą, ale być może się mylę. Wszystko się zgadza. Mój błąd, nie zauważyłem deklaracji INT przy zmiennej result. Powinno od początku być zadeklarowana jako float, właśnie po to, żeby uniknąć wszelkich rzutowań. Przyzwyczajenia...
Zamieść fragmenty Twojego kodu. Może podczas zapisu rzutujesz int na unsigned char.
to jak masz tak, to zaywaz, ze te mozesz te warunki co bierzesz do if zapisac w jakis zmiennych, a pozniej wykorzystac raz drugi w rysowaniu... a nie obliczac to samo dwa razy... poczytaj o rzutowaniu/konwersji zmiennych/typow :)... przeciez nie rysujesz bezposrednio wartosci sin/cos, ale i tak musisz to przeskalowac na na piksele :)... wiec i tak bedziesz...
Dla tablicy, jak rozumiem, GCC nie zastosuje optymalizacji, więc używana i w main i w ISR nie musi być volatile bo i tak każdorazowo będzie pobierana dana z odpowiedniej komórki RAM. W funkcji nie potrzebuję volatile. Nie mam pewności, czy rzutowanie zapewni odpowiedni dostęp do zmiennej...robiw
Czyli zostaje tylko taki potworek Tak właśnie powinno być jak napisałeś. Poza tym czemu "potworek"? Powiedziałbym, że to eleganckie wyrażenie. Widać ładnie, jak poszczególne typy kolejno "maszerują". Praktyka programowania wymusza często bardziej skomplikowane twory. Trochę jeszcze skoryguję to, co napisałem poprzednio, bo nie było to do końca poprawne....
Zawsze można w if sprawdzać R zamiast powtarzać operację odejmowania. Tak, to też przyszło mi do głowy, ale to mnoży zmienne w programie. Cały program testowy wziął się stąd, że tak się odlicza opóźnienia w programie tylko zamiast zmiennej Tim odczytuje się wartość z systemowego SysTic. No i przyszło mi do głowy "... a co jak urządzenie będzie działać...
Pamięć zasilona z nóżki 3V. Napięcie między pinem 3V a GND to dokładnie 2,915V podczas normalnej pracy przy obciążeniu tego pinu około 4mA. Wg. datasheetu tolerowane napięcie w zakresie 2,7 - 5,5V, powiem szczerze, nie sprawdzałem zachowania na lini 5V. Odnośnie częstotliwości, sprawdzałem działanie zarówno przy standard mode = 100kHz jak i fast mode...
W avr-libc unsigned int ma 2 bajty a ty potrzebujesz 4 (unsigned long int). Jeśli chodzi o red, green to mogą być 8-bitowe. Pamiętaj by użyć rzutowania. red = (unsigned char) (kolor & 0xff0000) >> 16;
Można użyć operacji stałoprzecinkowych zamiast operacji na float. Autor nie ma nigdzie operacji float. (100 - volume_coefficient) *127)/100 Ta część obliczeń jest stałą w pętli, więc nie powinna wprowadzać żadnych obciążeń. W wielu miejscach rzutujesz typ na 32-bity, podczas, gdy wynik operacji nie może przekroczyć 16 bitów. Takie rzutowanie wprowadza...
Generalnie nie istnieje coś takiego jak wskaźnik do struktury. Można natomiast wydobyć wskaźnik do pierwszego elementu struktury lub zrobić zmienną wskaźnikowa na strukturę.
Kolegi szelusia. :) Aby odwoływać się do poszczególnych pinów jako pól bitowych trzeba wymusić na kompilatorze traktowanie portu (który jest normalnie zmienną typu uint8_t) jako struktury pól bitowych. W C nie da się wprost wymusić zmiany typu tzw. lvalue czyli lewej strony instrukcji podstawienia. Aby zmiana typu mogła funkcjonować jako lvalue, czyli...
Pomiar zaczyna pulsować . Troszkę za dużo wrzuciłem programu . Wystarczyło przerwanie od licznika PWM . Jeżeli chodzi o długość przerwania to może błędnie myślałem , że lepiej jedno dłuższe niż kilka krótszych . Spróbuje zastosować przerwanie od przetwornika ac .Ile pomiarów najlepiej zrobić i jak rozwiązać rzutowanie zmiennych int na char ? Na początku...
Alternatywnie możesz skorzystać z dynamicznej alokacji pamięci. Sprawdzi się szczególnie w przypadku dużych tablic. Deklarujesz najpierw typ type tZmienna = array [min...max] of jakis_inny_typ; następnie zmienną wskaźnikową rzutowaną na ten typ var zmienna = ^tZmienna; W inicjalizacji programu musisz przydzielić pamięć new (zmienna);...
objaw jaknajbardziej prawidlowy. zapomniales o tym, ze jak masz komorki o adresach: 00 01 02 03 04 05 06 07 to na raz odczytac mozesz tylko pod takim warunkiem: - 1 komorke zawsze - 2 komorki na raz (16b) tylko jesli adres jest podzielny przez 2 - 4 komorki na raz (32b) tylko jesli adres jest podzielny przez 4 :) Dzięki, czekałem na potwierdzenie tej...
Tylko, że ja właśnie nie wiem jak dokonać tej konwersji ;/ Jak rzutuje to mi wstawia znaki według standardu ASCII.
Piszesz "nie działa" a to nie wiadomo czy LCD pusty czy kod się nie kompiluje. Ta Twoja wersja pamięta jeszcze dinozaury. Być może trzeba zmienną 4 bajtową jaką jest Single rzutować najpierw na 4 bajtową Long. Czyli Dim A As Single, B As Long. Zamieść kawałek kodu który Ci nie działa łącznie z deklaracjami zmiennych.
No trochę przesadziłeś z obliczeniami :) to jest niestety cały czas 8-bitowiec. Spróbuj rozpisać te działania matematyczne, bo prawdopodobnie nie jawne rzutowanie w którymś miejscu przekracza zakres zmiennej. EDIT: I pamiętaj że double i float dla kompilatora CX51 to są zawsze tylko 4bajty...więc żadnej różnicy nie ma.
Cześć! To już mój drugi temat, dość niechętnie go zakładam bo problem jest błahy, ale mam nadzieję, że nikt na mnie nie nakrzyczy ^^. Niedawno skończyłem robić GUI do aplikacji, która wysyła dane przez port COM w Qt Creator, zaprogramowałem kilka przycisków, suwaki i listę z aktywnymi portami COM. Mianowicie napisałem funkcję wysyłającą, która wywołuję...
No ale jak licznik był zrzutowany na float to po podzieleniu przez 16 chyba dalej powinien być float. I wynik chyba powinien być float. Chyba że kolejność działań. No ale nawet jak najpierw podstawienie a potem dzielenie- to też nie tak. Wydawało mi się kiedyś że rozumiem rzutowanie- ale chyba nie.
No, coś w tym stylu. Tylko jeszcze nie dokonuj w każdej pętli rzutowania [syntax=cpp](Bitmap ^) pictureBox->Image[/syntax], utwórz zmienną typu Bitmap i przypisz do niej obrazek tylko raz, przed wejściem w pętlę, a potem na niej operuj. Ostatnio pomagałem na forum w [url=http://www.elektroda.pl/rtvforum/to... temacie, jeśli uznasz,...
Przy mnożeniu floatów przez stałe często widzi się "na siłę" robione ułamki, np. zamiast a*100 -- a*100.0, zaś przy przypisaniu tego do inta można jeszcze to rzutować... Może takie niepozorne zabiegi pomogą
Wystarczy mieć zmienną zadeklarowaną jako Byte i zrobić rzutowanie. Przykłąd: Dim w as byte Dim f as single f=73.2 w=f print w ' uzyskasz 73
Takie operacje na bitach w strukturach nazywane są polami bitowymi. Jeżeli chcesz gdzieś zmieścić wartość 10 bitową, to przecież możesz przechowywać tę wartość w zmiennej o wielkości 16 bitów. Co do używania struktur z polami bitowymi i rzutowania na nie innych wartości, to zwróć uwagę, że są to elementy wrażliwe na kolejność przechowywania bajtów w...
Coś mi tu typy zmiennych nie pasują - zastanawiałeś się nad tym, aby nie rzutować gdzie nie jest to konieczne?
Gdzie masz funkcję write_text(); ? Tworzysz w ogóle jakieś pliki nagłówkowe? extern możesz też zastosować do tej funkcji syscalls.c który współgra ze skryptem linkera a o tym poczytaj na stronie Freddiego http://www.freddiechopin.info/
Pomyśl - zmienna aa ma 8 bitów a Ty jej wartość przesuwasz o 8 bitów w lewo więc ją zerujesz tak na prawdę. Do tego do zmiennej 32bit zapisujesz zmienną 8bit bez rzutowania.
Sprawdziłem jak wygląda wygenerowany kod: owszem dwie zmienne char będą wczytane, ale do porównania są rzutowanie na typ int (2 bajty ze znakiem, bit znaku jest rozszerzany), przez co porównanie nie działa tak, jak powinno. Jawne rzutowanie z (char) które podałem spowodowało wygenerowanie poprawnego kodu. Kod testowy: char c1; char c2; asm volatile(";...
-> zumek jak najbardziej może to być przyczyną kłopotów autora. Ale autor twierdził że mu się nie zmienia CAŁA zmienna w pętli. Wcale nie analizowałem jak on ją dalej używa. Jeżeli mówił to na podstawie wyglądu obrobionej i przekazanej zmiennej gdzieś wewnątrz tych wywoływanych funkcji to niestety, nie wpadłem nato. Toteż dla tego nie napisałem , że...
Witam Nie wiem czy autor rozwiązał problem jaki postawił w 1 poście, ale mam podobny do jego. Czytając FAQ z avrlib Basically yes, C++ is supported (assuming your compiler has been configured and compiled to support it, of course) mam własnie problem z prawidłowym ustawieniem makefila. Po zmianie opcji: CC= avr-cc na CC= avr-c++ błąd pojawia się przy...
Generalnie unsigned long oznacza liczbę długą bez znaku, w tym przypadku 32-bitową. VUART równe 2400 spokojnie wejdzie do zmiennej int , stała 16 też. Dlatego należy poinformować kompilator, żeby zarówno VUART jak i 16 traktował jako typ long bez znaku - gdyż w dalszej kolejności wykonywane jest dzielenie F_CPU będące zapewne również typu unsigned long....
kod ktory cie tak zaciekawil polega na tym: 1. jest sobie liczba 0x8000 2. chcesz zeby liczba ta traktowana byla jako adres, jak wiadomo adres = wskaznik, wiec dokonujesz rzutowania (u08*)liczba . od teraz dla kompilatora ten zapis bedzie dokladnie tym samym, co gdybys uzyl najzwyklejszej zmiennej wskaznikowej 3. skoro jest to zwykly wskaznik, to mozesz...
masz źle zrobione rzutowania, przesunięcia i dzielenia, to na pierwszy rzut oka: float temp=0.0; temp = (float)(((uint16_t... | (((uint16_t)temp2)&l... chcesz zmienne 8 bitowe przysuwać o 8 bitów to musisz je rzutować na typ 16 bit - inaczej tracisz cały bajt. Ponadto durgą zmienną...
rzutowanie wskaźnik delphi rzutowanie rzutowanie tablicy
lodówka bosch rozszczelnienie prąd zgrzewarka przebieg pojazdu
bateria robota sprzatajacego dorabianie kluczy samochodowych
Konfiguracja nowego routera T-Mobile z identycznymi ustawieniami Czy drzwi mikrofalówki powinny być otwarte po użyciu?