czy Crossworks jest taki madry, aby sam potwierdzac przerwania w ich ISRach? w kazdym z nich brakuje przypisania dowolnej wartosci do rejestru VIC odpowiedzialnego za adres... osobiscie nie sadze, aby Crossworks zalatwial to sam, bo w koncu oparty jest na gcc, ktory tego nie zalatwia. bez tego kolejne wywolanie przerwan nie bedzie mozliwe raczej......
dalem korekcje CRC i czas miedzy pomiarami 1s.. gdy oziebiam schodzi do 11.5 i koniec ... crc nie przepuszcza dalej chyba w takim razie.. od czasu do czasu pojawiaja sie wtedy wyniki przerozne 27.5 -87.5 +33.0 niewiadomo skad... przy starcie pokazuje temperature prawidlowa... jak zwiekszam tez (nie probowalem wiecej niz 10 st) chociaz przy przycisnieciu...
SendSpi(17UL << 11);
Słabo wiedzę ten procesor jeżeli pytania są na takim poziomie. Może jakaś literatura o architekturze procesora/komputera najlepiej taka z lat 70/80-tych XXw bo tam rozwiązywano takie problemy. Oczywiście można próbować stworzyć opis ALU zadając pytania na forum ale chyba podręcznik nie jest celem dla forum. Co do problemu Jeżeli rejestr ma oddzielne...
Vitling , przeczytaj ten artykuł [url=http://mikrokontrolery.blogspot.com... i zerowanie bitów, powinien Ci pomóc w zrozumieniu przesunięć bitowych. Zerknij też na [url=http://mikrokontrolery.blogspot.com... mikrokontrolerow...
1. Eliminacja niepotrzebnych skoków tu i tam. Da się to zrobić inaczej - patrz CPSE, SBIC, SBIS. 2. Brak podstawy czasu - impulsy nie będą zawsze równe w czasie. Użycie licznika bardzo wskazane. 3. Brak synchronizacji zmiany stanów na portach - możliwe przesunięcia fazowe. 4. Skąpe komentarze. Za dwa dni nie będziesz wiedział co, jak i dlaczego tak.
Nota, co prawda dla AVR, ale te same reguły obowiązują dla innych USART. Pobieranie prowizji punktowej za publicznie dostępne i darmowe materiały jest sprzeczne z etyką i regulaminem forum. Załącznik usunąłem i dodałem link to źródła.
1. Podstawowa ramka rds to 104 bity podzielona na 4 bloki po 26 bitow. Te bloki są podzielone na 16 bit danych i 10 korekcji błędów ex-or przesunięcie. Każdy z 4 bloków ma inne bity przesunięcia, blok 3 ma 2 rodzaje bitów przesunięcia, zależy czy idą dane typu A czy typu B. Mamy początkowe słowo korekcji błędów = 00h sprawdzamy poszczególne bity danych....
Próbowałem też rzutować - również źle A konkretnie jak? Tak próbowałeś: [syntax=c] time.data |= (1ULL<<58);[/syntax] ?
XOR to nie jest odejmowanie. negacja z dodaniem jedynki a pozniej OR to jest odejmowanie. Żebyś lepiej zrozumiał, xor nie daje ci przesunięcia, w związku z tym jeśli przesuniecie w działaniu powinno nastąpić to xor nie zadziała jak odejmowanie. przykład: 12 - 8 = 4 i 12 xor 8 = 8, to tak jak byś w systemie dziesiętnym próbował odjąć od 2 liczbę 8. Jeśli...
Kolega wyżej już wyjaśnił ja dodam jeszcze, że tego typu prostych błędów jest więcej: http://mikrokontrolery.blogspot.com/2011... Druga uwaga, to zdecyduj się - albo stosuj makro _BV(), albo przesunięcia bitowe (1<<x). Ja sugeruję tę drugą wersję.
Powiedzmy, że jest zmienna 64-bitowa (long long int). Do tego mam 4 liczby 16-bitowe. Jak wpisać te 4 liczby po kolei do zmiennej 64-bitowej? | 64bit | = | 16bit | 16bit | 16bit | 16bit | Rozumiem, że trzeba to zrobić przesunięciami bitowymi ale właśnie coś nie chce mi to iść gdy np zrobię to w ten sposób: long long int w = 0; w = (1000 <<...
Tak też myślałem, ale wtedy tracę te 8 bitów. Ale przy rzutowaniu też tracisz i to te o najwyższej wadze a przy przesunięciu te najmniej znaczące. Czy jest potrzebna dokładność większą niż 16 bitów? Jak ograniczysz sygnał wejściowy do 16 bitów to osiągniesz podobny efekt do przesunięcia a może być gorzej bo po stłumieniu sygnału stosunek sygnał szum...
czyli daj: return (((unsigned long)wartoscrej)<<16|(... long)wartoscrej2)<<8|(... long)wartoscrej));
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 domyślny typ stałej 1. Jeżeli kompilator nie promował...
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 może utwórz własną funkcję: [syntax=c] uint8_t...
Witam! Czy ktos moglby mi jak krowie na granicy podać zasade przesuwania bitow arytmetycznie i logicznie( z jakims przykładem) Myslalem ze wiem jak sie robi ale jednak na zadaniach sie wykładam. pozdrawiam
ok to juz kapuje jak wyciagnac pojedyncza cyfre teraz jak mniej wiecej moze wygladac procedura przeksztalcenia liczby np 4 cyfrowej na pojedyncze cyfry? dzielic to po kolei przez 1000, 100, 10 a pozniej zapisywac ilosc tysiecy, ilosc setek, itd? dzielenie jest 'ciezkie' - lepiej zrobic petle z wykorzystaniem odejmowania. przynajmniej takie jest moje...
Problem rozwiązany - nie przypatrzyłem się, że odwrotnie mam ponumerowane wyświetlacze do "mej" koncepcji.
Ustaw wszystkie bity FTH w rejestrach FCR, zarówno dla RX jak i dla TX. To jest pierwsza rzecz którą zauważyłem w Twoim kodzie, która u mnie jest zrobiona inaczej. Natomiast druga - kluczowa - też już była wspomniana: Postraj się używać definicji zawartych w pliku opisowym danego układu. Wpisywania i odczytywanie tych zer i jedyne z przesunięciami przyprawia...
(at)GrzegorzKostka Przez jednych nie są, przez innych są - gdyby wszyscy ich nie lubili to by ich nie było :) Prosty przykład, żeby ktoś kto czyta ten wątek mógł sam zdecydować. Czy zapis poniższego kodu bez pól jest czytelniejszy? Dodano po 16 BTW, co do wypowiedzi Linusa - oni w kernelu stykają się z sytuacją o której pisałem na początku - wiele...
https://stackoverflow.com/questions/1024... czemu u żywasz różnych DeviceId? raz 1 potem 2 ? spróbuj Dim register6() As UShort = master.ReadInputRegisters(1, &H109, 3) bo mam wrażenie że nie odniosłeś się do kwestii HEX Tam (rejestr 109) odbierasz 3x 16bitów bez znaku, więc a*16^4 + b*16^2+c Kolego a jak poskładać...
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.
Przetestowałem rozwiązanie zaproponowane przez Kolegę nsvinc . Napisałem swój program testowy tak: adc_value=adc->dat; jest równoważny zapisowi: adc_value=*adc.dat; ?
Dziś siedze całą noc nad tym jak wymyśleć algorym prostego dzielenia liczby 16bit przez liczbe 8bit ze wzracaniem reszty na procesor 8bit i szczeże mówiąc nic nie wymyśliłem.... Jedynym sensownym rozwiązaniem jest realizacja klasycznego sposobu dzielenia:( Moje pytanie brzmi... czy da sie jakoś inaczej zrealizować funkcje dzielenia?? np tak jak w mnożeniu...
Witam Jak rozumiem zgodnie z teorią języka C dla AVR [syntax=c] PORTB |= (1<<PB5); [/syntax] jest równoznaczny z PORTB = PORTB | (1<<5) czyli dla PORTB = 0xF0 (0b11110000) wynikiem 11110000 | 00010000 jest 11110000 czyli 0xF0. Logiczne Ale jak należy rozumieć [syntax=c] Tryb |= (0x10 << Wartosc); [/syntax] gdzie zarówno Tryb jak i...
Witamy kolegę. Jak widać na naukę nigdy nie jest za późno. Cyfrowy świat nie jest tylko dla młodych. M. S. 52l. Nie znam narzecza arduino ale zapoznaj się z pętlą for, której przebieg "programuje" się na konkretną ilość razy. Np. [syntax=c]for(x=0;x<X;x++) { } //Rozpocznij od x=0; jeśli x<X ponownie wykonaj pętlę i zwiększ x o 1, w //przeciwnym...
Qmexx: a jakiego wyniku oczekujesz? Nawiasy nic tu nie dają, bo dochodzi do promocji typu do int, a po tej promocji operacja negacji przesunięcia jest tożsama z operacją przesunięcia zanegowanej wartości.
Przesunięcia bitowe są prostsze
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.
No to musisz mieć dane jakieś zasady postępowania. Bit przeniesienia to ten bit, który "wypada" jak wspomniałem. Opcje też wymieniłem, przepada, ustawiana bliżej nieokreślona zewnętrzna flaga C lub pojawia się z drugiej strony po przesunięciu. Jest jeszcze kwestia tego, co się dzieje po drugiej stronie przesunięcia, zwykle jest dopełnianie zerami, jedynkami,...
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 prawdę nie wiem po co ci te pola bitowe ;) - toż to przesada na maxa - chociaż...
Probuję oprogramować kość DDS (AD9835); częstość generowanego sygnału programuje się wysyłając cztery razy 16bitowe słowa, w każdym słowie jest 8 bitów tworzących 32 bitowe słowo określające bezpośrednio częstość. Tego za bardzo nie rozumiem. 16-bitowe słowo, które ma 8 bitów? Czy chodzi o to, że poza danymi o częstotliwości wysyłane jest coś jeszcze,...
Chyba normalnie, tj. przez polozenie i nr_serwa, jednak takie nienazwane unie i struktury są niezgodne z ISO C. Radziłbym używać nazwanych, kod będzie wtedy czytelniejszy i przenośny. Standard nie gwarantuje też sposobu przydziału bitów w polach bitowych. Jeśli jest to określone w ramach WinAVR i zaznaczysz, że kod działa tylko w WinAVR, to ok. W ogólnym...
Trochę chaotycznie napisany program: 1. skoro używasz przesunięć bitowych, to używaj je konsekwentnie. bo sprawdzenie, czy prawidłowo ustawiasz ADMUX zmusza do szukania. co oznacza 0xE9 itp. Przy zmianie kanału zmieniaj tylko bity ADMUX odpowiedzialne za nr kanału: A single conversion is started by writing a logical one to the ADC Start Conversion bit,...
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 bitowe i ustawione na początku na 0 ? Przesuwamy 0000...
Mnożenie przez 3 odpowiada sumie danej wartości i jej przesunięcia o jeden bit w lewo (co odpowiada mnożeniu przez 2). x * 3 = x + x << 1 Dlatego użyłbym 7 (wejście pierwszego bitu połączone będzie bezpośrednio z wyjściem) [url=https://pl.wikipedia.org/wiki/Sumat... opakowanych dla czytelności w bloki (jak np. [url=http://kalitka.dhs.org/tc/cw6.html]...
Chodzi o pomnożenie próbki przez liczbę x z zakresu 0-255 i potem przesunięcie o 8 bitów w prawo, żeby uzyskać próbkę o współczynniku x/255, tak? Dokładnie. Mnożenie ma niewielki narzut (procesor ma instrukcję MUL), a dzielenie przez 256 to po prostu obcięcie najmniej znaczącego bajtu. Stałą? Przecież volume_coefficient to zmienna. Owszem, ale nie...
Nie mam w tej cwili czasu na dokładniejszą analizę, ale zauważ że w celu uzyskania bardziej znaczącego bajtu zmiennej typu uint16_t należy podzielić przez 256, a nie przez 255. Zwiększ też wartość zmiennej ac_adder na 256, bo przy 24 otrzymasz przebieg poniżej 5Hz. Błąd jest na pewno w algorytmie bo np. to działa bez problemu (sprawdziłem dla pewności):...
Operacja iloczynu logicznego oraz przesunięcia w prawo np. interesuje Cię bit 4 a jakimś rejestrze X i zapisać go na 2 bicie portu D push X //odłóż na stos and X,b00001000 //interesujacy nas bit 4 ror X,2 //ror - rotacja w prawo z wpisywaniem 0 na początek X=000000Z0 (Z - czwary bit odczytany z rejestru X na 2 bicie) z 4 miejsca na 2 wiec 2...
Nasuwa mi się myśl - jeśli ważne jest, by te ADC były taktowane symultanicznie i jednocześnie zbierały dane, to z tego co wiem SMT32F7 ma 3 ADC które mogą pracować w trybie równoległym. W pierwszym poście pisałeś coś o 4 ADC. Tu już by trzeba użyć kanałów poszczególnych ADC i wówczas chyba nie da się tego zrobić symultanicznie i pojawią się przesunięcia...
Dzięki za podpowiedź ;) Ale szczerze mówiąc to siedzę już nad tym trochę i nadal mi nei wychodzi ;/ [syntax=java] class przesu { public static void main(String args[]) { int a=256; Integer.toBinaryString(a) System.out.println(" Pierwsze przesunięcie będzie wyglądało następująco :" + (a>>=a)); System.out.println(" Kolejne przesunięcie będzie wyglądało...
;* ;***************************************... ;*PROCEDURA WYLICZANIA SUMY KONTROLNEJ Z NUMERU SERYJNEGO UKŁADU 1-Wire ;***************************************... ;* ;* ;*******************************OPIS****... ;*Kolejne bajty numeru seryjnego...
Kod wygląda na prawidłowy, jedynie zmieniłbym fragment wpisu do rej. 16-to bitowych dla pewności.... OCR0SBH=0x00; OCR0SBL=0x00; OCR0RBH=0x0F; OCR0RBL=0xFF; OCR0SAH=0x00; OCR0SAL=0x00; OCR0RAH=0x0F; OCR0RAL=0xFF; while(1);
Zmienna 'potega' jest również typu uint32_t , wartości przesunięcia występują w zakresie od zera do 19 i w żaden sposób nie powinny wyjść poza zakres tego typu zmiennej.
Po prostu po przesunięciu dodajesz bitwo 1 do wyniku przesunięcia:-)
Przy operacjach bitowych dobrze czasem pomagać sobie przesunięciami Np. 1 << 0 oznacza bit 0 (wartość 1 - szesnastkowo 0x01) 1 << 1 oznacza bit 1 (wartość 2 - szesnastkowo 0x02) 1 << 2 oznacza bit 2 (wartość 4 - szesnastkowo 0x04) .. 1 << 31 oznacza bit 31 (wartość 2147483648 czyli szesnastkowo 0x80000000) Zamiast kombinować...
A nie jest tak, że po przesunięciu pojawiają się 0? 1111 << 2 = 1100 Najstarszy bit tracony, najmłodszy uzupełniany o 0. Ale to nie chodzi o to co pojawia się po przesunięciach z tyłu (LSB) tylko o to co jest z przodu (MSB) Spróbuj coś takiego: [syntax=c]XYZ[0] = (axis[1]<<8 | axis[0]) if( XYZ[0] & 0x00008000 ) XYZ[0] |= 0xFFFF0000;...
Nie wiem jak się zabrać do tego zadania. Książka od Javy do ręki i czytasz. Poszukaj informacji na temat reprezentacji liczb binarnych, dziesiętnych i szesnastkowych, oraz o przesunięciach bitowych. Tyle mniej więcej powinno Ci wystarczyć do rozwiązania tego zadania.
Zdzis_ek: Faktycznie, do budowy ścian i linii w grach ten zestaw wydaje się być lepszy. Jeżeli możesz, to mam prośbę, żebyś na próbę narysował te podwójne ramki cieńsze (2 piksele marginesu zamiast 1) i jeszcze raz przedstawił planszę PacMana. Zobaczymy, jak będzie wyglądać. Czy w prawdziwej (sprzętowej) Cobrze da się w prosty sposób dorobić rejestr...
ustawianie bitow maskowane bitow sprawdzanie bitow
manta ładowanie głośnika unitra ws304s schemat bezpieczniki znajdują
Uszkodzona płyta główna w JBL Charge 5 - diagnoza i naprawa Hegel H300 – schemat, architektura, serwis, SoundEngine, DAC AK4399