- wykonanie operacji ( PORTC & ~0x3f ) | 1 << PC1 powoduje wpisanie do PORTC w poerwszej pozycji jedynki, czyli wartosc PORTC po tej operacji bedzie wynosila: 10000010. Czyli nozka procesora PC1 bedzie miala stan wysoki. Pierwszy wniosek prawdziwy tj.: zawartość PORTC będzie 0b10000010...
Dzień dobry, mam pewien problem którego nie mogę pokonać już od dwóch dni. Mam taki kawałek kodu: if ((Matryca[y]&potega)... ... } i kompilator wyrzuca mi (błąd dotyczy linii w której znajduje się instrukcja IF (powyżej)): ../Przesuwajacy_sie_napis_na_matrycy_5x7...
Witam. Wg helpa do Bascom AVR mamy coś takiego: Tymczasem u mnie kod $regfile = "m16def.DAT" $crystal = 1843200 $baud = 4800 Dim Adres As Byte Adres = 63 And 19 Print Adres End zwraca w symulatorze wartość 19, czyli tą która zostaje wpisana po operatorze and. Dlaczego...
Próbowałem przesunięć bitowych, ale to nie jest to co chciałem uzyskać, jeśli chodzi o błędy w kodzie to faktycznie jest błąd i długo siedziałem żeby właśnie ograniczyć licznik, ale nie mogłem tego opanować, zmieniłem jedynie zmienną z unsigned char na integer i uzyskałem pożądany efekt mimo nie rozwiązania...
Dziekuję bardzo za odpowiedzi ;) teraz czuje się o wiele lepiej w operacjach na bitach w C. Wszystko działa jako powinno. Zamykam temat.
tyle narazie dalem rade napisac. ale nie wiem jak sie zabrac za sama funkcje zeby byly to operacje bitowe. [syntax=cpp] void reg (unsigned short &port, short op, short bit) { } int main(){ int a=4,op=4,bit=17; short int port_1=20; short int port_2=13; short int port_3=6; ...
Cześć, mam pytanie jeżeli chodzi o rejestry oraz taki zapis [syntax=cpp]DDRD |= (1<<PD1)[/syntax] Rejestr DDRD jest 8 bitowy i rozumiem, że na początku wygląda tak: 0000 0000 używamy operacji sumy bitowej. Nie rozumiem tylko zapisu przesunięcia bitowego w lewo (1<<PD1). PD1 jest jedno...
Bardzo dziekuję za pomoc. Ostatecznie zastosowałem iloczyn i maski bitowe, wszystko działa jak chciałem!
Dziwne. Jak to wiesz to ile zajmie wyszukanie. Ja zużyłem jakieś 10 sekund i na stronie msdn mam przypład: x = 3 And 5 Czyli w VB jak w wielu innych językach jest and - iloczyn bitowy, or suma bitowa, xor - negacja bitów. Powinno wystarczyć do tego co chciałeś.
Operacją mnożenia bitowego przez wartość : 00011111, jeśli mowa o najstarszych bitach.
int o ile mi wiadomo nie jest zmienną 16-bitową, tylko 32-bitową więc nie wystarczy. Oj, proponuję trochę nauki algebry boola i operacji bitowych. A co do operacji - debugger też przy każdej linijce pokazuje tylko pierwszą wartość?
Witam serdecznie. Mam taki problem. Otóż jakiś czas temu zafascynowałem się przydatnością pól bitowych przy programowaniu mikrokontrolerów. Fascynacja posunęła się do tego stopnia, że przepisałem cały plik lpc31xx.h po swojemu, dodając funkcjonalność w obsłudze rejestrów w postaci pól bitowych. Myślałem...
Pytanko z cyklu "jak to robicie?" :-) Załóżmy, że w projektowanym układzie mam port A skonfigurowany następująco: PA.0...PA.4 - skonfigurowane jako wejścia PA.5...PA.7 - skonfigurowane jako wyjścia. Chciałbym jednym poleceniem odczytać pierwsze pięć bitów. Oczywiście mógłbym odczytać cały...
Podsumowanie: 1. Używając struktur z polami bitowymi w Keil µVision, nie należy używać kwalifikatora __packed , ponieważ powoduje on nadpisywanie "nadprogramowych" bitów w rejestrze. 2. Symulator w Keilu, nie pokazuje tego błędu, problem ujawnia się dopiero na sprzęcie. 3. Zawsze warto...
Operacjami bitowymi - mnożenie logiczne przez maskę się przyda.
Witam, Jaka będzie wartość zmiennej "ZMIENNA" po tych dwóch operacjach bitowych: Zakładając, że początkowa wartość zmiennej "ZMIENNA" wynosi "0000 0000". 1. ZMIENNA &= (0x0F | 0x03); 2. ZMIENNA &= (0x0F | 0x02);
Poznajmy Nibblera - 4-bitowy procesor, zbudowany w domu. Od czasu, kiedy autor stworzył komputer BMOW1, otrzymywał wiele zapytań, jak zabrać się do skonstruowania w domu własnego komputera. I jako że BMOW to skomplikowana maszyna, autor postanowił opracować urządzenie, którego działanie będzie...
Od kilku lat programuję 8-bitowe mikrokontrolery AVR i przez ten czas zdobyłem trochę wiedzy na ich temat. Poniżej znajduje się kilka ciekawostek o tych układach. Jeśli znacie jakieś inne interesujące informacje, to piszcie. Najnowsza wersja artykułu jest również dostępna na mojej stronie: 1....
A jak byś chciał np. najmłodszy bit z bajtu odczytać i przypisać go do jakiejść zmiennej bitowej to najprościej: [syntax=basic4gl]Dim A As Byte Dim B As Bit ' ' B=A 'najmłodszy bit przypisany do zmiennej bitowej B[/syntax]
Rzecz jest koncepcyjnie dosc prosta. bierzesz sobie blok rejestrow typu n.p. RAM16X4S ( dla Xilinxa ) do tego dolaczasz licznik dwokierunkowy czterobitowy. Kazda operacja PUSH zmniejsza licznik o 1 po czym zapisuje dane 4-bitowe pod pozycje wskazywana przez biezaca zawartosc licznika. Operacja POP natomiast...
sprawdze te unie:) a co do Twojego pomyslu to jak pozniej z takimi dwoma liczbami 8 bitowymi wykonywac operacje arytmetyczne??? zastanawiam sie nac czyms takim ze mam liczbe 16 bitowa i na niej wykonuje operacje a pozniej wpisuje na porty 2 obszary pamieci po 8 bitow tylko jak to zrobic w C???? ...
zrobiłem juz rejestr przesuwny w prawo w lewo to tylko ze znakiem minus przesyłam kod mam nadzieje ze dobrze wszystko zrobiłem Proponuję kod wklejać używając znaczników teraz tylko problem z mnożeniem i dodawaniem. bo nie wiem czy to ma byz wszystko razem czy osobna. I od czego teraz zaczac???...
No to fajnie. A z MD też tak działa? Jeśli wpiszę pod MW10 i MW12 jakieś słowa 16-bitowe to odczytam je jako jedno słowo 32-bitowe pod MD10? Czy trzeba wpisać MW tak, aby odczytać w MW12 (chodzi mi o zakres adresów słów 32-bitowych)?
Wykorzystanie 64bit daje naprawdę dużo, o ile wykorzystują to programiści. Nie należy zapominać, ze rejestry też są 64bitowe! Kto w ASM próbował "dzielić zmienną na mniej i bardziej znaczące pozycje" i wykonywać na nich operacje arytmetyczne, to wie ile daje wykonanie tego w jednej operacji (brak dodatkowych...
No nie jest poprawna, bo kolejne zapisy kasują poprzednie. Musiałbyś użyć operacji sumy bitowej (|). Kolejna sprawa, że coś przesunięte o więcej niż 8 bitów po operacji & 0xFF da zero, więc maskę też trzeba odpowiednio zmienić. IMHO o wiele przejrzyściej jest wykorzystać unie.
Ponieważ działań w systemie dwójkowym nie można wykonywać „od tak” na większości kalkulatorów, a takie obliczenia na programowych, wbudowanych w system, kalkulatorach są najczęściej męczące, autor postanowił zbudować swój kalkulator dwójkowy. Pozwala on na wykonywanie następujących...
A to diody lub kondensatory mogą zbytnio obciążać linie programatora - stąd operacja jest niemożliwa. A mój kod obejmuje przecież wszystko. Rozpisz sobie to wszystko powoli i po kolei - operacja po operacji - zrozumiesz zasadę MASKOWANIA BITÓW.
Uprzejmie proszę o pomoc z moim systemem. Od kilku tygodni zauważyłem przycinanie się systemu na prostych operacjach , jak przewijanie strony przeglądarki, uruchamianie pliku muzycznego , czy nawet zacinanie się podczas zamykania systemu.Podczas przenoszenia pliku pomiędzy partycjami, przycina włączono...
Czyli najpierw powiedziałeś kompilatorowi, że domyślnie 32-bitowa stała 19u musi być 32-bitowa (19ul), a potem, że jeszcze bardziej ma ona być 32-bitowa (uint32_t). "19u" w zupełności wystarczy, bez rzutowania typów, z którego w #define mogą być tylko kłopoty. Podejrzewałem właśnie błąd tego typu...
Witam, powoli kończę modernizację swojej nawijarki do cewek i transformatorów, licznik liczby zwojów postanowiłem wykonać na mikrokontrolerze jak w tytule PIC16F877A. Właściwie wszystko sprzętowo działa, za to utknąłem na końcu programu, otóż licznik może zliczać do 65535 zwojów, wszystko wyświetlam...
Fakt, wystarczy podpiac pod "dziurke od klucza" urzadzonko i napierdzielac ciagiem bitow od 0 do 2^255 i w koncu peknie. Pomysl fajny, ale gdyby to zrobic tak Z = procek-zamek K = procek-klucz 1. Z wysyla losowa fraze do K 2. K koduje ta fraze wg jakiegos algorytmu i klucza kory ma w pamieci,...
Żadne AVR nie obsługuje liczb zmiennoprzecinkowych ? Wszystkie 8-bitowe mają ten sam rdzeń, więc żaden z nich nie obsługuje float-ów. nie wiem jak 32-bitowe, ich nie znam za dobrze.
Po pierwsze należy się zapoznać z procesorem, na który ma być pisany program. Szczególną uwagę należy zwrócić na rejestry i organizację pamięci. Dopiero później można pisać program. Podejrzewam, że dowolna książka traktująca o 8051 zaczyna się zwykle od takich informacji. W moim przypadku sprawdziła...
Podczas niedawnej konferencji w San Jose, firma NVIDIA zapowiedziała powstanie nowej 64-bitowej wersji „Denver” swojego procesora Tegra K1. Jednostka ta zadebiutowała na tegorocznych targach CES 2014 i już zdążyła sporo namieszać na rynku urządzeń mobilnych. Jej zalety doceniła m.in....
Hm, nie możesz po prostu użyć operatorów bitowych "|" i "&"? Nie wiem, czy to zamierzone, ale zwróć uwagę, że BajtPort1..4 masz zdefiniowane jako tablice bajtów, a nie pojedyncze bajty. Dodać bajty bitowo czy "normalnie"? Jeśli bitowo, to też operator "|" będzie miał zastosowanie. Ustawianie wartości...
(at)toch88 Nie ma powodów, aby nie stosować takiego zapisu. Np. Atmel w swoich nagłówkach dla ARM daje możeliwość korzystania z pól bitowych, lub składania wartości z masek i przesunięć. Przy czym jeśli korzystasz z pól to wygodnie jest użyć compund literals: Ponieważ posługujesz się konkretnym...
O ile mi wiadomo, to zgodnie ze standardem ANSI C na temat umiejscowienia pól bitowych w strukturze nie można niczego zakładać. Jeśli więc potrzebujesz ścisłej zależności między numerem pola bitowego a odpowiadającą mu wartością bajtu/inta, to musisz zrezygnować z używania wbudowanych w C pól bitowych...
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...
Witam Obojętnie w jakim języku piszesz możesz skorzystać z "maski bitowej": Jeśli na którymś miejscu chcesz ustawić 1 to należy tą liczbe potraktować operacją logiczną OR z liczbą która na ineresującym miejscu (-ach) będzie miała 1 a na pozostałych 0. Np. 1010 OR 0100 ________ 1110...
Tak tez robiłem do tej pory, ale teraz chcę odnieść wszystkie wielkości do wielkości rzeczywistych (napięcie, prąd, prędkość silnika). Ponieważ np. stała całkowania będzie wynosić TP = 100e-6s stąd na część ułamkową chcę przeznaczyć 16 b z czego wynika że na część całkowitą również zostaje 16b. Wtedy...
Jeśli chodzi o AVR: Zapis stałoprzecinkowy robiony jest wg. dwóch formatów: 2^7, 2^6, 2^5, 2^4, 2^3, 2^2, 2^1, 2^0 w zapisie -1, 2^{-1}, 2^{-2}, 2^{-3}, 2^{-4}, 2^{-5}, 2^{-6}, 2^{-7} zapis 2^{-8}...2^{-15} teraz, aby załadować liczbę tego typu (czyli z przedziału (-1..1)) do rejestru najlepiej...
Witam. Powyzszy mikrokontroler jest czescia regulatora, 64 bity to liczba oznaczajaca czas trwania pewnej operacji. Bity sa wczytywane przez jeden z portow szeregowo 8x8 bitow z rejestru sterowanego przez miltuplexer (to nie problem). Druga liczba jest tak naprawde max 62 bitowa i przystosowuje czas...
Texas Instruments Incorporated wprowadził układ ADS614X (ADS612X), rodzinę 14-bitowych (12-bitowych) analogowo-cyfrowych konwerterów A/D, z próbkowaniem do 250 MSPS. Układ łączy wysokie, dynamiczne osiągi i niski pobór energii. Takie rozwiązanie jest dostosowane do rozległych, szerokopasmowych...
Maxim Integrated Products wprowadził dwa układy MAX5138 / MAX5139. Są to pojedyncze, wyprowadzeniowo- i programowo-kompatybilne, 16-bitowe i 12-bitowe konwertery cyfrowo-analogowe DAC (digital-to-analog converter) małej mocy. Przetworniki MAX5138/MAX5139 posiadają buforowane wyjścia napięciowe...
witam, na wej. dostaje sygnał 16 bitowy, spi ustawione jest na obsługę 8 bitów, potrzebuję wewnątrz uC połączyć te dwie części do rejestru 16 bitowego na którym tam sobie będę robił coś dalej, mam pytanie do was drodzy forumowicze jak wpisać dwie dane wejściowe do dwóch kolejnych rejestrów, (z...
eeeh no bo zapomniałem przed każdą nazwą bitu dodać uint8_t czyli ma być uint8_t z0:1 uint8_t z1:1 itd - spróbuj Dodano po 1 Ma to działać tak, że po podłączeniu 5v do PA0 zapali się dioda podłączona do PC7, a jeśli nie to zapali się dioda podłączona do PC6. Eeeee - no to na...
Rozdział: "4.9.4 Pola bitowe" Poza tym sam podajesz przykład i to w C jak to zrobić w oparciu o strukturę więc nie za bardzo rozumiem pytania: "w jaki sposób to zrobić w języku C?" ;) Dodano po 3 Na Avr'y Chodzi mi o to, że mam wyświetlacz 640pixeli. 80x80pixeli. No i teraz zrobiłem...
1. VRef + kondensator, Vcc można wybrać jako VRef programowo. 2. To zależy od rozdzielkczości ADC, dla 10 bitowej masz zakres 0..2^10-1 3. To fragment niepotrzebny, gdyż pisze się po prostu dana=ADC lub ADCW. << to operacja przesunięcia bitowego.
Firma Renesas zaprezentowała na konferencji Embedded World rodzinę mikrokontrolerów RX64M, pierwszą we flagowej serii 32-bitowych mikrokontrolerów RX, produkowaną w procesie technologicznym 40 nm. Mikrokontrolery będą oparte o nowy rdzeń RXv2, zaprezentowany przez firmę w listopadzie ubiegłego...
Hey ! Mam problem z wykonaniem zadania na zajęcia z programowania. Jestem świeżym studentem i ale w związku z moją małą wiedzą na ten temat jest ciężko. Mam wykonać operacje splotu na 24-bitowej bitmapie i zapisać obraz wynikowy na dysku. Mam wykorzystać maskę o wartościach: 0 -1 0 -1 5 -1 ...
Witam, mam do napisania pewien program w VHDLu, muszę w nim wykonać operację modulo na wielobitowych liczbach, ale pojawiły się 2 problemy po pierwsze operator mod, działa na maksymalnie 32-bitowych liczbach, dodatkowo dzielnik musi być potęgą dwójki co jeszcze bardziej mi utrudnia prace. Da się to jakoś...
No nie jestem biegly w assemblerze, ale z tego co widze, sa tam odpowiednie operacje na bitach (moze moja wersja kompilatora tego nie obsluguje, sprawdze). Mam w takim razie jeszcze tylko jedno pytanie: czy przy deklaracji zmiennej typu pole bitowe jest niezbedne slowo struct? (jak u Ciebie struct biciki...
Tak ale niestety niewiem jak takie operacje robic. Np dzielenia liczby 24 bitowej przez 16 bitową
Mam drobne pytanie - wykonuję przesunięcie bitowe o zmienną: uchar a,b; a = 1<<b No i ta operacja zajmuje jakies 26 cykli procesora. Przesunięcie o stałą trwa jeden cykl bo raczej jest to zamieniane w czasie kompilacji a tutaj jest 'troszkę' wolniej. Czy można to jakoś przyspieszyć? Procesor...
Ustawiona predkosc zegara w symulatorze jest bez znaczenia, wazne jest ile taktow operacja zajmie, a to latwo sprawdzic, bo w AVR Studio jest stosowny licznik. Potem wiedzac ile czasu zajmuje jeden takt mozna wyliczyc czas. Operacje na liczbach 32-bitowych sa szybkie, na float to raczej tragedia.
Napisz z jakiego kompilatora korzystasz i na jakim poziomie optymalizacji kodu wynikowego. Jeśli chodzi o standardy C to ISO99 mówi o ujemnym przesunięciu bitowym " the behavior is undefined" i właśnie dlatego lepiej unikać takich operacji. Jeśli koniecznie musisz być przygotowany na ujemne przesunięcia...
Witam, język programowania C oferuje operację arytmetyczną powodującą przesunięcie bitowe, np: a | a<<1 | a<<2 | a>>1 ------+------+------+------- 0001 | 0010 | 0100 | 0000 chciałbym aby przesunięcie następowało w sposób cykliczny, bez zgubienia "1" czyli np 1000...
O ile pamiętam, to avr mają specjalne rozkazy ustawiania i kasowania bitów. Starsze kompilatory wymagały stosowania odpowiednich funkcji/makr, nowsze rozumieją zapis |= n jako ustawienie bitu i wstawiaja odpowiednia instrukcje. Zastosowanie dwóch albo więcej instrukcji logicznych zamiast pojedynczej...
Firma Maxim Integrated zaprezentowała swój nowy 20-bitowy przetwornik analogowo-cyfrowy ADC z sukcesywną aproksymacją o maksymalnej szybkością próbkowania wynoszącej 1,6 MS/s. Jak twierdzi producent, urządzenie oferuje, najwyższą rozdzielczość oraz największą szybkość próbkowania w stosunku do pobieranej...
Jest możliwe, choć mało intuicyjne. To tylko dla celów edukacyjnych. [syntax=c] char tab[6] = {'1','2', '3', '4', '5', '6'}; for(int i = 0; i < 6; i++){ std::cout << tab[i]; // 123456 } std::cout << std::endl; for(int i = 0; i < 6; i++){ tab[i] <<= 1; } for(int...
Ma ono polegać tylko i wyłącznie na dzieleniu 16 bitowej wartości przez liczbe 100 (dziesietnie dla jasnosci). Czy jest szansa aby taka operacja zakończyła sie (po góra) kilkudziesięciu cyklach?. Standardowe dzielenie jest bardzo czasochłonne. Chodzi o AMS na 51ke
Właśnie rozwiązałem u siebie jeden z Twoich problemów (tak myślę), więc się podziele. Potrzebowałem obliczyć wartość, którą muszę przesłać do DDSa mając daną częstotliwość w Hz. Wzorek taki: fw = czestotliwosc * 2^24 / 50000000 akumulator fazy ma rozmiar 24 bity, zegar DDSa to 50MHz. Moje pierwsze...
Nie zawsze (unsigned) char jest 8 bitowy, przykładowo w kompilatorze CSS dla procesorów Texasa serii C2800 jest to typ 16 bitowy :). Wszystko zależy od architektury procesora na który piszemy program. To tak na marginesie. Pozdrawiam.
Moje zadaniepolega na tym że do aplikacji po przez pipe jest przesyłany losoby ciąg bajtów, długość duża, bez znaczenia. I teraz należy odczytać 2 pierwsze bajty i przekształcić je na liczbę szesnastkową (wsumieto już jest) i następnie wczytać pozostałe bajty w ilości takiej jak wartość tej liczby, następnie...
Sciag sobie CoolEdit, tam mozna ładnie zapisac plik wave jako plik tekstowy - ciag próbek - dzieki temu ładnie widac o co w tym chodzi. Konkretnie - dzwiek cyfrowy to jak wiadomo sygnał dyskretny, ciąg kolejnych próbek dzwięku. Przy 16 bit'ach i 44100Hz bodajże, masz 44100 próbek sygnału na sekunde,...
Jak tablicę char, a za moment jak int (w tym przypadku nie jak tablicę int ;) ). Instancja unii alokuje tyle pamięci, żeby pomieścić największy ze swoich elementów. Tę samą pamięć traktować możesz jak typy które zadeklarowałeś, w tym przypadku ten sam fragment pamięci traktuję raz jak int, a raz jak...
Dodam jeszcze jedną cegiełkę: AVRy mają specjalne rozkazy do atomowych operacji na bitach rejestrów układów peryferyjnych. Umożliwiają one ustawienie i skasowanie pojedynczego bitu: - sbi - set bit - cbi - clear bit Jeśli więc kompilator jest na tyle zdolny, że potrafi z nich korzystać to operacje...
Maleńka sugestia: Dla AVR cykl rozkazowy trwa ułamki us (0,25 dla X-tal 4MHz) a odczyty z LCD to czasy w us. Moim zdaniem powtórne impulsy na E następują za szybko (zalecne nop'y po opadającym zboczu E). Sprawdź to w nocie katalogowej HD44780 wiem, że była dostępna na www.ep.com.pl. Ponadto brakuje...
Nie... dzielenie wymaga więcej cykli procesora... (zależy też jaki sie używa procesora ale zawsze dzielenie jest bardziej cyklochłonne od przesówania binarnego) jeśli to procesor ośmio bitowy a program ma być w assemblerze to nawet nietrzeba takich operacji wykonywać gdyż można odrazu podzielić wyraz...
Pokaże Ci przykład dodawania dwóch liczb wiecej jak 8 bitowych (i mniejszych niz 16 bitów), przykład ten znalazłem w ksiązce "Mikrokontrolery AVR w praktyce " Jarosława Dolińskiego ; dodaj dwie liczy 16-bitowe r1:r0 + r3:r2 add r2, r0 ;dodaj młodsze bajty adc r3, r1 ; dodaj starsze...
Zastanawia mnie czy za brednię uważwsz możliwość wykorzystania rejestrów DPTR, czy może fakt, że występują `51 z dwoma takimi. Jeśli błąd to przepraszam, ale chciałbym się dowiedzieć na czym polega, żeby już go nie popełniać. PS: 2 rejestry mają 89SXX oraz 8252 Za brednie uważam sugerowanie użycia...
Jeżeli to pytanie do mnie, to tak, to będzie działać. Do tak zdefinowanych bitów odwołujesz się jak do normalnej struktury, czyli możesz na niej wykonywać wszystkie operacje, jak na zwyczajnej zmiennej. Oczywiście musisz uważać, żeby nie przekroczyć zakresu zmiennej bitowej - jeżeli ma ona 3 bity,...
Witam wszystkich. Mam do napisania pod 8051 program ktory bedzie zamienial szesnastkowa 16 bitowa liczbe na pieciocyfrowa dziesietna (wiec szesnastkowe bierzemy z takiego przedzialu aby najmniejsza dziesietna wyniosla 10000 a najwieksza 65535). Wymyslilem sobie cos takiego, ze dziele liczbe startowa...
A czy zauważyłeś , że 2-ga linia Twojego źródła (tam gdzie wstawiłem znaki zapytania) "nic nie robi" :?: Zamiast: zmienna_long |= (zmienna_byte <<2) & 3; mógłbyś napisać: zmienna_long |= 0; lub tę linię pominąć , bez żadnego wpływu na wartość "zmienna_long", bez względu...
>Przeczytaj kolego tamtem swój post i objasnij co miałeś na myśli, bo to jest jeden wielki chaos, z którego nie wynika żadna w sumie użytaczna myśl - no może poza jedną: liczby od cyfry nie odróżniasz. Nie do konca rozumiem co miales na mysli - nigdzie nie robilem roznicy pomiedzy cyframi i liczbami...
Jeśli chodzi o flagę C - błądziłem ponieważ wszędzie piszą tylko o jej ustawianiu gdy wynik odejmowania ujemny a nie pisze nikt o jej zerowaniu jak wynik dodatni lub równy 0 i dodatkowo zaznacza się aby ją przed odejmowaniem zerować co dodatkowo wskazuje iż nie robi tego operacja odejmowania. Po moich...
OK pierwsza linijka: deklaracja wskaźnika s. druga linijka: &f - pobranie adresu w pamięci zmiennej f (jest ona typu float). Ta operacja zwróci wskaźnik do float, czyli float*. Ale zamieniamy to na char*, więc wykonujemy rzutowanie (char*)&f. Wskaźnik s będzie wskazywał na adres zmiennej f, ale...
Moze mi ktos powiedziec dlaczego taka operacja dziala ( zmienna Adres daje poprawny wynik) : #define ADR_0 !(PIND&(1<<5)) #define ADR_1 !(PIND&(1<<6)) #define ADR_2 !(PIND&(1<<7)) Adres=ADR_0+AD... ; a ta nie działa : Adres=((~PIND)>>5)&ADRES_M...
Fajny programik, dzięki, sam algorytm zamiany z U2 znam, ale nie wiem jakich komend użyć do operacji na bitach tj. złanczanie bajtów, przesów bitów, czy dodanie bajtów ?
UL to jawne zdefiniowanie stałej jako należącej do typu unsigned long (kiedy kompilator nie jest w stanie tego domniemać z wartości, jak w tym przypadku). Podobnie L to typ long a LL to typ long long (rozszerzenie gcc). Ewentualne wyjaśnienie szczegółów: W AVR gcc typ int ma 16 bitów. I taki jest...
nie mozna sie do niczego w pamieci odwolywac bitowo, bo pamiec jest ilustam bitowa (np 8). dlatego rozwiazac da sie to JEDYNIE posrednio. odwolujac sie do danego miejsca w pamieci wczytujesz cale slowo pamieci, nastepnie przy uzyciu funkcji logicznych mozesz sobie wyzerowac nieinteresujacy cie kawalek...
ja nie znam do konca asm AVRow, ale czy ktorakolwiek ze zmiennych bioracych udzial w tej operacji nie jest zadeklarowana jako signed? (brak definicji signed / unsigned oznacza domyslnie signed) +0000010E: FD97 SBRC R25,7 Skip if bit in register cleared +0000010F:...
Timer0 i Timer1 mają wspólny preskaler, Timer2 ma osobny preskaler. Poczytaj o resetowaniu preskalera w dokumentacji. U Ciebie jest inny błąd, w przerwaniu OC2 zmieniasz TCCR1B zamiast TCCR2. Co do zaokrąglania, to 1/76000 jest obliczane wg. zasad arytmetyki liczb całkowitych, a więc wynikiem operacji...
Potrzeba Ci liczby stałoprzecinkowej, a nie zmiennoprzecinkowej. Na chłopski rozum - wykonuj operacje na liczbach -1, -2, -4, 0, 4, 2, 1. Jeśli musisz wyświetlić wynik, to interpretuj go jako wynik/8. łopozycyjny (number_forma...
Jeżeli chodzi o tego typu wyrażenia: PORTC = (PORTC&0xf0) | (instr&0x0f); to radzilbym calość po znaku '=' ograniczyć nawiasami, bo tak to jak dla mnie najpierw na port wpisujesz 0xf0 a dopiero pózniej są wykonywane operacje logiczne. Zrób tak: PORTC = ((PORTC&0xf0)...
Jeszcze tylko jedna uwaga co do Przecież przeniesienie trzeba uwzględnić i wstawić do rejestru bo jak nie to przy następnej operacji dodawania bit carry się wyzeruje i stracimy informację... czy może się mylę? Masz rację. Przeniesienie trzeba pamiętać o ile gdzieś dalej (daleko dalej :-)) będziemy...
Rozumiem, ze o sposobie realizacji instrukcji w CPU wnioskujesz z zapisu mnemonicznego? Gratuluje. Zreszta jak w przypadku AVR okreslisz ile bitow ma ALU, skoro jak pisza w dokumentacji, wszystkie 32-rejestry sa polaczone z ALU *JEDNOCZESNIE*. Z kolei czesto R0:R1 dziala jako 16-bitowy rejestr wyniku. Kolejna...
| jest operacja OR. Zapewne w jakims pliku naglowkowym masz: #define PIO_PA16 (1<<16) Kompilator wpierw przesuwa jedynki na odpowiednie miejsca. Potem tak powstale slowa ORuje ze soba. W efekcie otrzymujesz jedno slowo (nie bajt).
LPC1xxx. Są tańsze od LPC2103 a do tego wymagają tylko jednego napięcia zasilania (3,3V) a nie dwóch napięć (3,3V i 1,8V). Procesor ma instrukcje Thumb a do tego możliwe jest łączenie kilku operacji w jednym słowie rozkazowym. Zatem kod nie będzie raczej dłuższy. Nie wspominając o tym że operacje...
I bardzo dobrze, bo ten system jest strzała wart. Skoro jest strzala wart, to nie musisz go uzywac. Win7 x64 jest jedynym systemem pochodzacym od MS ktory znam i ktory potrafi bezawaryjnie pracowac na komputerze wlaczonym miesiac, czy 2. Nie zaleznie od ilosci przeprowadzanych instalacji, konfiguracji...
Jeśli w tym ramie nie ma linii wyboru bajtu (upper/lower byte lane), to zapis o mniejszej szerokości niż pamięć realizowany jest zapewne przed odczyt słowa o "naturalnej" wielkości, zmianę jego części a następnie zapis całości z powrotem - nie jest to operacja atomowa. Jest to jednak jedynie moja hipoteza. Możesz...
Dziękuję za odpowiedzi. Kol. Ashures odpowiadam: (1) niektóre „flagi“ przyjmują więcej stanów niż 0 i 1; konieczne są złożenia operacji AND i OR, (2) kompilator IAR realizuje dostęp do pól bitowych optymalnie , używając minimalnej ilości operacji OR i AND, (3) przedstawiony problem wynika...
O bit-bandingu szukaj w dokumentacji ARMa. Chodzi o to, że w pewnym obszarze SRAM lub IO są bity, które w innym obszarze mają własne adresy 32bitowe Cortex™-M3 Technical Reference Manual Normalnie w ARM operacje na poszczególnych bitach w komórkach pamięci lub w rejestrach peryferiów odbywają...
tylko, że funkcja void nie może zwracać wyniku i chyba w tym wypadku w ogóle wykorzystanie funkcji traciło by sens (?) ..ale operacja na wskaźnikach to już jest jakiś niezły pomysł..
Dlaczego w połowie wysyłania polecenia podnosisz CS blokując wyświetlacz? Polecenie składa się z dwóch części: indeksu (numeru rejestru) i parametru, obie to liczby 16-bitowe. Na przytoczonym wykresie nie widać by dopuszczone było podnoszenie CS w połowie tej operacji. Na wykresie masz wyraźnie okazane,...
Operacja zmiany znaku polega na zanegowaniu wszystkich bitów i powiększeniu wartości o 1. Stąd 1 ma postać '0001', a -1 to '1111' ('0001' -> '1110' -> '1111'). Z poziomu języka C, spełniona jest równość (-x) == (~x + 1). To z takich prostych faktów. Co do przesunięcia w prawo, wyróżnia się zasadniczo...
MAX5316 to nowy, dokładny przetwornik cyfrowo analogowy w ofercie Maxima. Charakteryzuje się on rozdzielczością szesnastu bitów, co pozwala na osiąganie wysokiej rozdzielczości napięcia wyjściowego, zważywszy że dokładność wyjścia wynosi ±1LSB, przez całe spektrum temperatur w których pracuje...
Wszystkie sprawdzone w wątku metody manipulacji polami bitowymi za pomocą struktur i unii, okazały się równoważne do "tradycyjnych" metod manipulacji za pomocą operacji boolowskich i maskowania bitów. Okazało się wręcz, że działa to szybciej i zdecydowanie poprawia czytelność kodu. Wyżej w temacie...
W tym akurat przypadku nie stosuję rdzenia CORTEX, zatem nie mam możliwości skorzystania z bitbandingu. Rdzeń to ARM 7 TDMI-S. A możesz mi podać jakąś linkę do tej propozycji Freddiego, bo coś nie mogę jej namierzyć? Generalnie działanie tych struktur które zaprezentowałem w temacie jest ok, a...
Problem na który chcesz znaleźć odpowiedź występuje w google pod frazą np. [url=]"handling big numbers in c" ;). W skrócie chodzi o to, aby przedstawić liczbę 64bitową (lub większą) za pomocą 16bitowych fragmentów. Operacje na takich liczbach będą oczywiście o wiele wolniejsze od natywnych typów, więc...
Witam Dzięki kolego kemot55 operacja się udała :) Pozdrawiam wszystkich biorących udział w dyskusji. Temat uważam za rozwiązany i zamknięty
Trochę źle poprawiłeś kolego. Gdy robisz tabele stanów to musisz mieć 3 kolumny. I - rozpisane stany w chwili T, II - stany w chwili T+1, III - wynik operacji. Tak na szybko: Jak coś potrzebujesz jeszcze to napisz do mnie na GG: 2 7 5 4 1 3 8.
Zwykłe binarne dzielenie nierestytucyjne przy 10 bitach będzie prawdopodobnie prostsze, niż każda z tych kombinowanych metod - to w końcu tylko 8 obiegów pętli z porównaniem, przesunięciem i warunkowym odejmowaniem, tyle że te trzy operacje trzeba zrobić na 10 (czyli w praktyce 16) bitach. Gdyby toto...
Świetny projekcik! A mógłbyś opisać sposób (algorytm) tworzenia dźwięku przykładowego generatora DCO oraz generatora szumu. Ten ostatni za czasów Commodorka robiłem z bardzo dobrym skutkiem używając operacji EOR, ale kompletnie nie pamiętam jak ja to robiłem, a mogłem uzyskiwać dźwięki od szumu po całkiem...
Wsuwanie bitu SI powinno być na operacji Or a nie And. To nie jest Verilog :D [url=]VHDL - Concatenation
Zadałem to pytanie, gdyż na AVR8 były z tym problemy. Powyżej 64kB (a tak na prawdę powyżej 32kB) FLASH trzeba było nieźle kombinować, gdyż wskaźniki były tylko 16-bitowe i trzeba było użyć 24-bitowych by dostać się do RAM czy FLASH powyżej 64kB. A wolę odtwarzać z RAM, gdyż ta operacja jest szybsza. Jeśli...
Mam wrażenie, że najprościej będzie Panu wykonać instalację naprawczą. - Z poziomu działającego systemu Windows uruchomić nośnik instalacyjny i wybrać "aktualizację". Ta operacja podmieni pliki systemowe bez ingerencji w inne programy na dysku i jest szansa, że pozwoli odtworzyć system w stanie sprawności...
Ale to właśnie napisałem już przedtem. Użyj komórek pamięci jako rejestrów. W najprostszej wersji będzie to tablica, w lepszej, struktura. Wykonując operację, modyfikujesz zawartość tablicy i przesyłasz do rejestrów. Zawsze przesyłasz cała tablicę. Jeden bajt, to 8 bitów. Nie trzeba żadnych gigantycznych...
I jeszcze jedno już udało mi się "popłynąć" na RS232 z prędk. 115200 w "C" - i musiałem zejść do 9600-, w asm nie do pomyślenia , i nie był to polling No i jakiego komentarza tutaj oczekujesz? Sprawdzałem moje implementacje driverów USARTa napisane w C++11 przy użyciu dwóch współpracujących klas...
Czy ktos wie jak zrealizowac podstawowe funkcje arytmetyczne ( dodawanie ,odejmowanie, dzielenie mnożenie) na liczbach 16- bitowych w procsorze 99c51.
Dokładnie o to chodzi. Np. wpisując do pamięci typu ROM32Kx8 liczbę 16 bitową, (a ta pamięć ma 15 wejść adresowych) jak zrobić dzielenie 1 przez wprowadzoną liczbę? Proszę o jakieś dalsze wskazówki i ewentualny szkic. Błagam pomóżcie, bo czas mnie nagli. Czy ktoś to robił w programie Pspice?
Trzeba wykorzystać: - kwalifikatory bitowe dla zmiennej: np. Portb.1 = A.b i pętlę FOR b=7 TO 0 STEP -1 lub - polecenie SHIFTOUT.
A tak BTW. to czy przypadkiem Twoja zmienna 'kwarc' nie jest 8mio bitowa...jeśli tak, to czemu próbuje wpakować jej taką liczbe? Kompilator wrzuci Ci do niej tylko ostatnie 8 bitów. adamusx ma racje, tutaj lepiej walnąć define'a. Najlepiej o nazwie F_CPU - niektóre biblioteki używają tej wartości, wiec...
no dobra panowie czyli potrzebuje zmiennej 64-bitowej. Doszedlem do tego ze jak sie dwie zmienne 32-bitowe pomnozy to pierwsze 32 bity sa w rejestrze $hi a kolejne 32 w $lo. No i niestety mam ten wynik rozbity na 2 rejestry a jak chce mnozyc to musze przez jeden rejestr. Jakos da rade to zrobic??
Tak BTW to w 16-bitowych PICach odczyt i zapis do portu trwa zapewne tyle co w AVR, mają więcej pamięci, 16-bitowe porty i śmigają na 40MHz No tak, tylko znowu nowy procesor, nowa architektura, ale dzięki za naprowadzenie na taki trop. Swoją drogą sprawdziłem, że STM32 potrafi wysyłać na port dane...
Program w pascal-u który zamienia zmienną byte na jej reprezentację bitową : program Project2; uses CRT; FUNCTION Dec2Bin(Dec:byte):String... B1:byte; Bin,BinDigit:STRING; begin BinDigit:='01'; Bin:=''; repeat B1:=DEC MOD 2; DEC:=DEC...
swoja droga dziwne ze kompilator nie wywalil nawet warninga..(avr-gcc). Myslalem ze trzeba podawac cala postac bitowa 0b100 też jest całą postacią bitową tyle że kompilator uzupełni sobie zera od lewej 0b00000100
Przesunięcia bitowe będą najszybsze. I to jest konkretna odpowiedź! Dzięki! Co do basica-próby z .NET skutkowały nieregularnym występowaniem nadmiernych opóźnień komunikacji z peryferiami. "Wypracować 144 bity" znaczy np. a> zrobić odpowiednie przesunięcie i wyłuskać bit bezpośrednio w danym działaniu b>...
Nie napisałeś na jaki to procesor... ale, czy akumulator nie jest tam 8 bitowy ?
Bazując na twoim drugim przykładzie. Jeżeli minuty to zmienna 8 bitowa to mnożenie zajmuje 2 cykle procesora oraz dodawanie 1 cykl czyli w sumie coś koło 3-4 cykli. Nawet jeżeli będzie to liczba 16bitowa to mówimy tu o max 10-15 cyklach. Pętla będzie wykonywać się dużo dłużej. W kolejności szacunkowo:...
Wbrew pozorom użycie warunku którego chcesz uniknąć jest najbardziej optymalne. I jeśli przerzucasz się na c, przywyknij to operacji bitowych i z przesunięciami. Ewentualnie jak wspomniano można wykorzystać pola bitowe o ile rozumiesz pojęcie struktury i unii.
O sposobie dobrego kodowania można napisać książkę. Ba, nawet już napisano niejedną... ;) Pozwolę sobie skorygować lekko kodzio, pokazując więcej operacji bitowych, bo przecież tak naprawdę na tym operujemy:[syntax=C]#include <avr/io.h> #include <util/delay.h> int main(void) { DDRA...
Witam, Piszę program w asemblerze na architekturę MIPS, który ma tworzyć kwadrat a w nim okrąg o średnicy długości boku kwadratu używając algorytmu Bresenham'a i zapisać w pliku bmp. Prawie skończyłem, ale w żadne sposób nie wiem jak zrobić symetrię 8-io bitowego bajtu względem osi pionowej między...
TM4C129E Crypto Connected LaunchPad to płyta deweloperska od Texas Instrument z MCU wyposażonym w silne mechanizmy kryptograficzne. Płytka działa w oparciu o mikrokontroler TM4C129ENCPDT z zaimplementowanymi sprzętowymi akceleratorami kryptograficznymi. Zestaw ma ułatwić i przyspieszyć projektowanie...
(at)marek2784 Chwileczkę, widzę że korzystasz z EasyBuilderPro. Czy zmieniłeś w bloku numerycznym typ zmiennej na zmiennoprzecinkowy? Domyślnie chyba jest ustawiony 16 bitowa liczba całkowita. Faktycznie,zmieniłem format w EB i wszystko jest w porządku. Wcześniej był 16-bit całkowity. Szczerze...
Można również wykonać mnożenie bitowe z maską 2#0000_0011_1000_0000. Następnie wynik mnożenia przesunąć o 7 miejsc w prawo ;) Ale mało kto tak robi. Powyższy sposób jest bardziej czytelny.
Jeśli tylko dodawanie i odejmowanie, to prosto, wykorzystujesz operacje dodawania z przeniesieniem i odejmowania z pożyczką. Jakbyś liczył w słupku: ; r16,r17,r18 - jedna liczba, kolejno od MSB ; r19,r20,r21 - druga, jak wyżej add r21,r18 adc r20,r17 adc r19,r16 ;wynik masz kolejno w C,r19,r20,r21...
Przy włączaniu diod jest po przesunięciu dodany OR po to żeby ustawić logiczną "1" w miejscu "0" które powstało po wcześniejszym przesunięciu jedynki w lewo. Gdy są gaszone diody, to nie ma takiej potrzeby gdyż przesuwana w prawo wartość rejestru jest po prostu z niego wysuwana. Obrazowo: 1. Rejestr...
Do którejś wersji avr-gcc miał zdefiniowane makra cbi i sbi (de facto były to wstawki z odpowiednimi rozkazami asm). Tak czy siak aktualnie trzeba sobie obrać inną drogę. Cytat z Porting programs that use the deprecated sbi/cbi macros Access to the AVR single bit set and clear instructions are...
Zrobiłem ten program zupełnie od nowa, hmm nie mam pomysłu i działam na "czuja" w oparciu o zbliżone programy. Poniżej wrzucam kod programu, który... nie działa, ale myślę,że jestem blisko i muszę doczytać na temat MUX-ów , ktoś ma jakieś pomysły jak rozgryźć te MUX-y dla 6- ciu wejść (PC0 do...
Generalnie powinieneś posiłkować się nie notą samego procesora, a podręcznikiem użytkownika dla całej rodziny: P1DIR to rejestr w którym poszczególne bity definiują kierunek działania poszczególnych pinów P1.0-P1.7 portu P1. Stan 0 oznacza wejście, stan 1 oznacza wyjście. Zapis P1OUT |= 0x41 jest...
Witam Was już w 8. części poradnika o kontrolerach matryc LCD-TFT. W tej części trzecia odsłona kontrolera RA8875 I kolejna porcja informacji jak z niego korzystać. Dzisiaj zajmiemy się jego głównymi atutami, czyli akceleracją kreślenia prymitywów graficznych (linii, trójkątów, prostokątów, okręgów,...
Prawie rok temu, zainspirowany konstrukcją pana Kamila Przychodzenia Płytka sterownika oraz płytka organizacji połączeń Sterownik oparty jest na mikrokontrolerze ATmega16 z rdzeniem AVR. Taktowany jest zewnętrznym rezonatorem kwarcowym o częstotliwości 16MHz. W układzie...
Hehe, te zera to mógłbyś powyrzucać z arytmetyki ;) i tam, gdzie jest odejmowanie, to zrobić dekrementację, a nie inkrementację o przeciwną (x+=0-delta.y -> x-=delta.y). Przy okazji nazwij inaczej zmienne x i y tak, abyś mógł użyć with'a na delcie. Wykorzystuj też stałe i unikaj dzielenia! Jesli masz...
1. Nie zapominaj o nawiasach przy operacjach bitowych. 2. Stan PB3 nie rzutuje, jest wymuszane wyjście włączeniem TX - ta sama strona datasheet. 3. Dla ATmega162 w MCUCR nie ma bitu PUD, jest w SFIOR. 4. Zamiast "=" używaj odpowiedniej operacji bitowej("|=" przy ustawianiu lub "&=" przy gaszeniu).
A więc: 1. PORTA=0xF0; dramat (tu i wszystkie tego typu kwiatuszki), używaj zamiast tego przesunięć bitowych i operacji logicznych... 2. Cała funkcja wyświetlaj - kolejny dramat... raz notacja segmentów, dwa takie rzeczy robi się za pomocą tablicy z kodami znaków... 3. funckja licz2tab - miliony niepotrzebnych...
A nie będzie korzystniej postawić 'serwer' na uC z zasilaniem awaryjnym, a PC używać tylko do regularnych (lub nie) operacji dodatkowych przez dowolny port USB, WiFi, serial czy jeszcze inny? Zadanie polegające na włączaniu i wyłączaniu zasilania różnych urządzeń jest na tyle łatwe, że nawet prosty,...
Wstęp Pomiary zużycia energii przez urządzenia elektroniczne, prowadzone w czasie rzeczywistym są coraz bardziej istotnym aspektem projektowanych układów. W tego typu pomiary wliczamy między innymi pomiary rzeczywistej mocy wejściowej oraz pomiar wartości RMS pobieranego przez badany układ prądu....
Znasz przecież operacje bitowe: skoro piny ustawiasz i zerujesz. Po prostu zdefiniuj sobie makra za pomocą #define określając, który bit, to który przycisk np. tak: przyciski za pomocą funkcji z biblioteki lub przerwań:
Zostawiam temat bo uznaję tą bibliotekę za bezużyteczną, a samemu nie będę pisał nowej bo mi się nie opłaca siedzieć tygodniami nad taką głupotą. Może gdzieś znajdę bibliotekę bez buforowania z bezpośrednim ładowaniem danych do wyświetlacza. Z tego co się domyślam ograniczeniem jest prędkość I2C bo...
Szum termiczny w pomiarach analogowych jest zazwyczaj wartością pasożytniczą, wpływającą negatywnie na pomiar. W związku z tym powinno się go unikać za wszelką cenę w naszych urządzeniach. Filtrowanie wejścia, odpowiednie projektowanie płytki drukowanej i schematu prowadzenia masy to krytyczne czynności...
Myśle nad inicjalizacją wskażnika stosu mianowicie: __reset: 1: MOV #__SP_init, W15 ;Initalize the Stack Pointer 2: MOV #__SPLIM_init, W0 ;Initialize theStackPointerLimitRegister 3: MOV W0, SPLIM 4: NOP Dlaczego składnia...
Witam. Piszę Arkanoida i mam problem z zamianą wartości opisujących wektor poruszania się piłeczki. W procesie odpowiadającym za ruch piłeczki, przy odbiciu jej od paletki muszę dokonać zamiany współrzędnej x wektora ruchu ze współrzędną y (współrzędne mogą być zarówno sygnałami jak i zmiennymi)....
Używasz tego rejestru niepoprawnie. Operacje bitowe na nim nie mają sensu, ponieważ zapisanie w dowolne miejsce zera jest w manualu zdefiniowane jako operacja bez efektu, a dodatkowo pojawia się informacja, że rejestr ten jest "write only" i nie należy go odczytywać. Tak więc aby zapalić diodę powinieneś...
1. Sczytywanie/wystawianie stanów Digital I/O do poszczególnym zmiennych typu CHAR lub String jest marnotrastwem czasu i pamięci PLC. W takiej sytuacji zamiast mieć 1 zmienna 16 bitowa opisującą stany wszystkich wyjść masz 16 zmiennych 8 lub 16 bitowych 2. Sterowniki PLC (w tym jęz. STL) mają dużo mocniej...
Jakbyś zajrzał tam, gdzie Ci napisałem to byś wiedział co to oznacza :) NVIC->ISER to jest Interrupt set enable register w stmie zorganizowali go na zasadzie tablicy, przerwania: 0-31 uruchamia się w pierwszym jej elemencie 32-63 w drugim 64-67 w trzecim przesunięcie bitowe w prawo ma...
W ten sposób i po sprawie: [syntax=c] for (i=0, i<n, i++){ wynik *=2; wynik +=pow((double)(tab[i]-'0'), (double)(i)); } [/syntax] Tak na serio to twoja funkcja może być o wiele krótsza - i nieco bardziej sensowna - gdybyś skorzystał z typu unsigned long long...
Zazwyczaj jak chce się zrobić taki zabieg to jedna linijka Możesz podać przykład w c jak połączyć 8 bitowe wartości w liczbę 24 bitową? W lua i Air200 teoretycznie niektóre operacje bitowe działają, ale jeszcze ich nie testowałem. [syntax=lua]adc_T = temp_msb(0xFA) temp_lsb(0xFB) temp_xlsb(0xFC)[/syntax]
Witam... Głupia sprawa... :| Potrzebuje do "komunikacji" z DACiem rozbić zmienną int (16-bit) na dwa bajty (młodszy i starszy)... DAC to max508 (12-bit) wartość napięcia podaje się w sekwencji... 8 młodszych bitów i potem 4 pozostałe... Rzecz wydawała by się prosta... Wymąciłem coś takiego... ...
mozesz mi tylko wytlumaczyc jak dziala ta petla while a raczej to w niej bo jakos nie moge tego rozszyfrowac :] Moze w ten sposob bedzie bardziej czytelne: while(rozmiar >= (1 << i)){++i;} (1 << i) to po prostu przesuniecie bitowe (przesuniecie "1"...