Kod: pomiar = (ADCH & 0x0F); Tylko najpierw wpisz w pomiar same 0, albo przynajmniej na pierwszych 4 bitach. Wpisywanie 0 nie jest potrzebne. Zawsze to jedna operacja mniej. Kod: pomiar = (ADCH & 0xF0)>>4; Tutaj też mamy mały nadmiar i wystarczy coś takiego: pomiar = ADCH >> 4;
Chodzi Ci o: i++; _delay_ms(300); PORTB = i & 0x01; PORTE = ((i & 0x02) << 5) | ((i & 0x04) << 5); ?
No to jak się zastanawiałeś nad tym, to powinieneś zaskoczyć o co chodzi... Po prostu należy najpierw wyłączyć maskowanie roku i dnia tygodnia (więc zamiast 8 do rejestru 0 wpisać wartość 0), potem odczytać cały bajt, zamaskować niepotrzebne bity w danym bajcie: najpierw rok i odczytać dzień miesiąca, potem zamaskować dzień miesiąca i odczytać rok -...
czy coś w tym stylu zda egzamin? Nie zda. Nie Port tylko Pin. No i zastosuj maskowanie niepotrzebnych bitów jak radził tadzik85 . Czyli: If (PINB And 0x0F) Then
Ustawianie poszczególnych pinów, czy też w ogóle poszczególnych bitów w rejestrach zależy od tego czy i jak są one definiowane w bibliotekach kompilatora. Zawsze można zapisywać wartości całymi rejestrami, albo używać maskowania bitów. A powyższy kod jest zły po próbujesz ustawiać bity z PORTA w rejestrach PORTB
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.
Acha. To zrób w assemblerze. Albo na tablicach. Nie ma takiej operacji w BASCOMie ani w assemblerze AVR, '51 i innych. Taka operacja to tak zwany "motylek" ale naprawdę nie słyszałem o prcesorze który by miał taki rozkaz. Może jakieś procesory DSP. Albo assembler albo tablicowanie. Wiesz o co mi chodzi z tymi tablicami?
Dlaczego miałbym potrzebować takiego dostępu Dala, w miarę eleganckiego, dostępu do pól rejestru. Oczywiście można jawnie robić maskowanie bitów pola i przesunięcia albo napisać makra dla każdego pola ale w czym to jest lepsze od pól bitowych? Czy jest czytelniejsze?
W celu zrealizowania czegoś takiego należałoby zastosować maskowanie reszty bitów tj. iloczyn logiczny. Jeśli urządzenie master nie ma możliwości takiej konfiguracji, to oczywiście nic nie da się zrobić. Jakie opcje można wybrać w "condition"?
Dokładnie. te _delay_ms(x); to już gwoździe do trumny tego programu. Po pierwsze wszystko do przerwania, a po drugie musisz stosować maskowanie bitów, tak aby zmiana kombinacji 4-rech pierwszych (I silnik) nie wpływała na zmianę kombinacji kolejnych 4-rech (II silnik).
Witaj Kolego. Z zegarkami RTC philipsa to jest tak: 1. dobrze popatrz czy podłączyłeś przez diodę bateryjkę czy Ci jej nie rozładowuje. 2. Sam napisałeś procedurę I2C czy skopiowałeś od kogoś - dlaczego pytam - otóż jeśli masz jakieś przerwania i masz źle skonfigurowane te nóżki to w momencie kiedy Ty nie zdążysz ich przekonfigurować (mam na myśli SDA)...
Witam serdecznie. Jak w prosty sposób obliczać godzinę kolejnego alarmu zakładając że alarm ma następować co 1 godzinę? i nie chodzi mi o maskowanie bitów a o ustawienie alarmu poprzez funkcję [syntax=c]HAL_RTC_SetAlarm_IT(hrtc, &sAlarm, RTC_FORMAT_BIN)[/syntax] Ustawienie alarmu w ten sposób: 1. odczytuję bieżącą godzinę 2. dodaję do zmiennej Hours...
Wstyd sie przyznać ale właśnie nie rozumiem co robi ta linia, z tego co mi sie wydaje to chyba maskowanie bitów ? Tak to jest jak sie zrzyna kogoś program do obsługi zegara. Ok poradziłem sobie wystarczyło zmienić na : [syntax=basic4gl]Day = Day And &B00111111[/syntax] i działa.
Multiplekser 8 na 1 do wyboru zbocza wyzwalającego (74'151). Komparator 8-bitowy do wyzwalania słowem (2x 74'85) + przydałoby się jeszcze maskowanie bitów przed komparatorem = 8 bramek. W sumie 5 kostek + procesor. To już warto sie CPLD nauczyć ;) Pozdrawiam, Dr.Vee
Nie bardzo rozumiem. Nie ważne czy liczba jest zapisana jako binarna, dziesiętna czy szesnastkowa. To jest tylko forma prezentacji liczby. Kompilator akceptuje je wszystkie. Rejestry SODR i CODR są 32bitowe co odpowiada 32 liniom portu. Wpisujesz do niego liczbę i po sprawie. W armach nawet nie trzeba maskować bitów (dlatego właśnie są dwa rejestry)....
Wydaje się że trzeba ustawić bity MSK0, MSK2 i MSK3, bit MSK1 wyzerować. Jak to się przekłada na HALowe maski i struktury? To już musisz sobie znaleźć sam w dokumentacji (czyli zapewne w kodzie źródłowym).
Zanim zaczniesz tego portu uzywac.I na przyszlosc lepiej maskuj bity w rejestrach zamiast wpisywac cale wartosci do rejestrow bo w dwoch roznych miejscach mozesz sobie cos pozmieniac.
Rozumiem, dzięki za pomysł. Zupełnie zapomniałem o istnieniu tej instrukcji :( Maskowanie bitów mogłoby zadziałać, ale to jednak gorsze rozwiązanie od podanego przez Ciebie jako pierwsze, zawsze to kolejna linijka programu więcej. Rozumiem też, że jeśli tak jak napisałem w pierwszym poście wrzucę do R16 stan portu A z tylko najbardziej znaczącym bitem...
A nie spojrzałeś do Helpa Bascoma - jak odbierać komendy RC5 - przecież tam masz GOTOWCA ;) ... a ty tutaj tworzysz od nowa i pomijasz istotne rzeczy - jak np maskowanie bitu toggle czy sprawdzanie adresu
A maskujesz nieużywane bity? W każdym rejestrze powinieneś po odczytaniu wykonać operację maskowania bitów oznaczonych jako nieużywane/reserved. Ten układ jest dosyć czuły na zakłócenia ze względu na ultraniski pobór energii, sprawdź też to podłączenie baterii, bo masz dosyć nietypowe. Najlepiej wrzuć schemat jak go podłączyłeś.
Co do DSB(). W przykładach stosowałeś go ale nie wszędzie. A należy go stosować zawsze po włączeniu zegara, jeśli natychmiast dokonujesz zapisu pod włączane peryferium. W każdym rdzeniu Cortexa. Ja stosuje zawsze po włączeniu przez to nigdy o tym nie zapominam - taki nawyk. Tak samo należy go zastosować np po wyczyszczeniu flagi jeśli od razu masz zamiar...
Przede wszystkim to w ostatniej linii jest błąd. Nie powinno być tam operatora '>>'. co to jest to 2*4 potem &0xf... No cóż, zazwyczaj 2*4 daje 8, tak to już jest z mnożeniem ;) A poważnie to jest tak: '>>' - oznacza przesunięcie w prawo bitów wartości z lewej strony o liczbę podaną z prawej, np. short a = 0x1285; // 0001001010000101b short b = a>>8;...
Witam. Mam takie pytania. 1. Czy maskowanie bitów roku i dnia tygodnia odbywa się tylko przy zapisie danych do RTC, a przy odczycie jest to gotowa juz zmienna do konwersji na wartość zrozumiałą do wyświetlenia Dnia i Miesiąca..?. Czyli czy dobrze rozumiem, że jak zamaskuję rok przy zapisie to nie odczytam już roku.? 2. Ustawianie maskowania odbywa się...
1. Daj zewnętrzne rezystory podciągające SDA i SCL do VCC jak już kolega wcześniej napisał 2. Dodaj przed pętlą główną komendę I2cinit 3. Nie zapomnij maskować nieużywanych bitów odczytanych wartości
al777 -> dzięki za cenne info (na takie uwagi i spostrzeżenia praktyczne również liczyłem w tym temacie właśnie) a możesz mi podpowiedzieć w czym pisałeś program do procka? dla mnie to o tyle istotne, że ja jak czytałeś robiłem to w asemblerze i po raz pierwszy. Też na początku nie maskowałem bitów do momentu uwagi tutaj kolegi zumka. Zapewne popełniłem...
maskowaniem bitów zerowanie anl rejestr ,#0Fh ustawianie 1 orl rejestr,#1Fh ____ z ustawianiem był przyklad jako dodatek ;) jeżeli chodzi o dokładnie pierwsze pół bajtu to oczywiście F0h
raf_entek Pierwsza wersja też działa, ale ponieważ Twój program nie jest kompletny, to nie wiem czy prawidłowo rozpoznawałeś stan przycisków. Domyślam się, że oczekiwałeś stanów 0 lub 1, a tymczasem miałeś 0/1, 0/2, 0/4 i 0/8, odpowiednio do maskowanych bitów. Gdybyś jeszcze wykonał jawnie przesunięcia, to uzyskałbyś założony efekt. W tej chwili 'if'...
Maskowanie odczytu bajtu po F0 przechwytuje chyba za mało bitów 8+start+stop +parity=11 a maszyna stanów przewiduje 8. Prawdopodobnie trafia wtedy do stan=0 będąc w trakcie transmisji. Wyprowadź sobie na jakieś dodatkowe diody aktualny stan maszyny. To ułatwi Ci diagnozę problemu. Jaka jest idea sygnału licznik?
A pomyślałeś, żeby przy odczycie maskować ten bit?:> *Nie patrzyłem w źródła* ale pewnie nie;P
W jaki sposób twój program przerabia literę na zapalone piksele? Domyślam się że masz jakieś bitmapy i czytasz z tablicy czy 0 czy 1 (białe- czarne). Dokładnie jak piszesz. Tworzę w pamięci czystą bitmapę następnie na podstawie wybranej czcionki tworze font i piszę wpisany tekst. Bitmapę mam powiązaną z tablicą i każde rysowanie, pisanie czy cokolwiek...
Najprościej zrób sobie wyświetlanie w HEX, podziel liczbę na część starszą i młodszą przy pomocy przesunięć i maskowania bitów. Z tablicy 0-9,A,B-F wyświetl najpierw starszą część a potem młodszą.
[url=http://www.google.pl/imgres?um=1&hl...
Witam. Chciałbym użyć jednego portu w procesorze do obsługi:4 młodsze wyjścia portu pełniłyby funkcje dowolnych wejść/wyjść, a na 4 starszych pojawiałyby się stany logiczne od 1 do 12(kod binarny). Kod ten chciałbym dawać w ten sposób, aby pętla for ze zmienną licznikową wykonywała tę pętlę 12 razy. Nie wiem natomiast jak rozdzielić ten port, aby zmienna...
górowanie jest zdaje się oczywiste. Maskowanie pozostałych bitów, mniejsza ilość instrukcji. Dla mnie nie. Ale może coś mi umknęło, specjalistom od ARM nie jestem. Ale chętnie się uczę. Zarówno z BB jak i bez musimy najpierw wykonać instrukcję load. Ponieważ ona nie ustawia znaczników musi być w obu przypadkach instrukcja testowania Następna może być...
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 obliczeń - takie rzeczy robimy w pętli,...
Owszem, operacje maskowania bitów. Reszta z dzielenia przez 8 to po prostu x & 7. Operacja dzielenia przez 8 to x>>3. Tyle, że jeśli wykorzystasz % i / to kompilator sam powinien tak to zoptymalizować. Także jak sądzę problem leży w zupełnie innym miejscu niż podejrzewasz. Pokaż cały kod zapalania piksela.
A z czego wnioskujesz , że nie działa :?: Mi działa :D #include <avr/io.h> #define ADR_0 !(PIND&(1<<5)) #define ADR_1 !(PIND&(1<<6)) #define ADR_2 !(PIND&(1<<7)) #define ADRES_MASK 0b0000111 volatile unsigned char adres,adres1; int main(void) { while(1)...
gdy po kanal++ kanal wyniesie 8 czyli 0001000 maskowane jest 5 starszych bitów czyli w wyniku uzyskujesz 0 więc w czym problem?
W sprawie maskowania ale nie danych tylko bitów z danych, które odczytujesz z zegara. Jeżeli przykładowo czytasz godzinę w formacie bcd (dziesiątki godzin i jedności) = ddddjjjj to dla godziny 23 masz xx100011 (x - dowolny stan). Teraz odczytujesz tą godzinę to skąd masz pewność, że w miejsce xx będzie 00. Zaraz po wystartowaniu czas jest zerowany więc...
Mam jeszcze pytanie o maskowanie bitów Będę odczytywał dane z PCF8563, a on wymaga maskowania bitów po odczycie. Jako, że na aktualnie używanej płytce nie mam RTC PCF8563, na razie na "sucho" wymyśliłem coś takiego: [syntax=c] void Czas(){ // definiujemy sobie dla polepszenia czytelności programu typ wyliczeniowy // wskazujący nam później na odpowiednie...
Nie może działać, poczytaj o maskowaniu bitów i podstawowych operacjach logicznych. 2 wersja jest poprawna. PORTD &= _BV(5); działa następująco: 0000 0001 po bv masz: 0010 0000 po AND zerujesz wszystkie bity oprócz 5, a ty chcesz go ustawić nalezy więc zastosować operacje OR.
Trzeba wtedy trochę pomanipulować operacjami bitowymi: [syntax=c] PORTC = (PORTC & 0b11110000) | (1 << PC0) | (1 << PC3); [/syntax] ta komenda po kolei: bierze aktualny stan portu C kasuje bity 0..3 (tzw. maskowanie) ustawia bity 0, 3 zapisuje wynik działania do PORTC Operacja jest rozbijana na więcej instrukcji ASM, ale w efekcie nie...
Bajt wyższy Zmienna>>8 Bajt niższy Zmienna <<8 a następnie Zmienna >>8 To przykład przesunięcia o 8 bitów a nie [url=https://pl.wikipedia.org/wiki/Maska...
Co za filozofia - używasz BRAMu dual port do a), a do b) tak samo, ale używasz maskowania bitów adresu instrukcji z jednego i drugiego procesora (np. w 1 cpu zawsze ustawiasz najwyższy bit PC, a w 2 cpu zawsze zerujesz). Schemat narysuj sobie sam - w końcu musisz mieć jakiś wkład pracy w odrobienie zadania... ;) Pozdrawiam, Dr.Vee
bardzo prost można sterować portami z poziomu Pythona(to jezyk programowania, informacja dla mniej uświadomionych). Ściagasz program, domyślam się że interesuje cie windows. http://www.python.org/download/ Potem instalujesz http://sourceforge.net/project/showfiles... pobierz wersję dla python2.4 dalej http://sourceforge.net/project/showfiles...
"a >> b" jest przesunięciem "a" o "b" bitów w prawo. "&" to nie porównanie tylko maskowanie (iloczyn logiczny) bitów. Wyrażenie "var>>(3*4)" przesunie zmienną o 12 bitów w prawo, czyli zwróci czwarty nibble (trzeci licząc od zera - stąd trójka, nibble ma 4 bity, stąd czwórka). "(var>>(2*4))&0xf" przesunie zmienną o 8 bitów w prawo i zamaskuje 4 najniższe...
Tu nie chodzi o nazewnictwo, tylko o wynik operacji. Najmłodszy bit jest gubiony, a nie wpisywany na najstarszą pozycję. Ale mniejsza z tym. Po maskowaniu będzie wszystko jedno. Natomiast mam pytanko - dlaczego pętla obejmuje te konwersję. Powinno być jakos tak [syntax=c] int licznik; for(licznik=0;licznik<5;licznik++) { buffer_t[licznik] = TWI_read(pcf8583,rtc_adres[licznik]);...
y0yster : Pokaż jakiego typu są zmienne "animacja" oraz "plus_minus". Jeśli wynik najpierw wpisujesz do zmiennej typu char, to sprawdzasz, czy dolne 8 bitów jest wyzerowane. Jeśli jednak robisz porównanie bez wykorzystania zmiennej "badaj", bez rzutowania typów, bez maskowania bitów, to może się okazać, że dolne 8 bitów jest wyzerowane, ale wynik dodawania...
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 został przedstawiony fakt, że Keil wymaga nadawania...
Przy przesuwaniu bajtu ostatni bit wskazuje na flagę C i wg niej odpowiednie ostawiasz pin procesora. Operator & to nic innego jak iloczyn logiczny. Wykorzystuje się go najczęściej to maskowania nieistotnych bitów w bajcie lub ich zerowania.
no to teraz nie ma czemu się dziwić dlaczego masz sieczuszkę z IR. Po pierwsze to nie IRDA (bo to coś nieco innego) tylko odbiornik podczerwieni. Ale i jego wejścia/wyjścia jak i procesora nie mają nic wspólnego z ToogleBit ;) (o tym za chwilę) Poza tym popraw w programie bo opisy przy INT1 masz poplątane z pomieszaniem m.inn z Timerem2 - później sam...
itoa służy do konwersji zmiennych o typie int, do typu long służy ltoa. A poza tym po co ci taka konwersja? Przecież liczby natywnie są przechowywane w postaci binarnej, więc łatwiej zastosować operacje maskowania bitowego, a nie długotrwałe i pamięciożerne konwersje.
Witam wszystkich, jestem w trudnej sytuacji gdyż jestem początkującym w tym dziale a mój profesor wymaga ode mnie odpowiedzi na te pytania ;/;/ z góry dziekuje za odpowiedzi i prosiłbym tak trochę bardziej zrozumiale ponieważ w środę mam kartkówkę z tego i przydało by mi się nauczyć tego :PP 1 Prosze nazwać elementy interfejsu urzytkownika występujące...
Aby policzyć to wszystko dla sieci potrzebujesz nie tylko jeden z jej adresów itp, ale też jej maskę (tzn. ile bitów jest maskowanych). Ilość adresów w sieci zależy od ilości bitów zastosowanej maski. Adres sieci to adres który w miejscach niezamaskowanych ma same zera, więc jest to adres pierwszy. Adres broadcast w miejscu niezamaskowanym ma same...
wyjscie = (wyjscie & maska) | wejscie; maska to np. 0xc0; wiec obsługujesz tylko 6 najmłodszych bitów C0 = 11000000
Wiecie co Koledzy? Podać Wam namiary do jakiejś wróżki? Bo "chyba nadaje", potem ktoś się przyczepia do prawidłowego maskowania bitów, a z całym szacunkiem, ale nikt z Was nie ma dostatecznej wiedzy w tym temacie... Standardów różnych od RC5 jest jeszcze trochę, gdybyście chcieli postrzelać zajrzyjcie tu: http://www.sbprojects.com/knowledge/ir/i...
[syntax=C]buffer &= (i << 0x01); //maskowanie po kolei kazdego bity[/syntax]Cała funkcja jest zła. zacytowana funkcja nie robi tego co w komentarzu i modyfikuje bajt wejściowy
No, ale czym przełączasz? Jak zwykłe switch-to dzwonią. Spróbuj na początek: if pinc.0 =0 then waitms 20 if pinc.0=0 then porta.7=0 ........ itd. Zapoznaj się z debounce,-programowe wytłumienie dzwonienia styków Ci pokazałem. Może po każdym daj waitms 500. Zapoznaj się z ustawianiem bitów przez maskowanie-and , or itp. Help po polsku na stronie MCS...
Taka mała ciekawostka. To co kiedys działało z DS1307 niekoniecznie jest kompatybilne wstecznie. Kilka bitów które kiedys były "reserved for future purpose" teraz sa używane i trzeba je maskować jesli chce sie odczytać dane. Proszę zerknąć na temat -> https://www.mcselec.com/index2.php?optio...
Witam Uruchamiam zegar na wyświetlaczach alfanumerycznych na atmega169 i testuje klawiaturę umieszczona na porcie F na bitach 1-6. Problem polega na tym ze bity 1-3 klawiatury działają normalnie, natomiast układ nie nie reaguje na bity 4-7, pomimo tego ze zmienia się napięcie na końcówkach procesora. Klawiatura była testowana poprzez maskowanie wszystkich...
Jest takie "coś" w STM32 jak RCC - czy w wielowątkowej aplikacji do włączania/wyłączania zegarów i resetowania peryferiów prościej użyć bit-bandingu, czy może z jakiegoś perwersyjnego powodu trzeba się koniecznie bawić w maskowanie przerwań? Generalnie nie wiem w czym problem - bit-banding zajmuje mniej kodu, wykonuje się z porównywalną prędkością,...
Ehh, no to trzeba bylo tak od razu. in r16,PINB ;odczytaj klawiature i enkoder cbr r16,0b11111100 ;maskuj niepotrzebne bity cpse r16,r18 ;porownaj aktualny stan ze starym rjmp EnkoderWRuchu ;= to skocz do obslugi enkodera ret ;!= to wyjdz EnkoderWRuchu: lsl r18 ;przesun o jedna pozycje poprzedni odczyt eor r18,r16 ;exor "dziurki 2 starej"...
Wiesz już co to dodawanie i jakich rozkazów użyć. Wiesz pewnie do czego służy znacznik CY i dlaczego druga operacja dodawania musi go uwzględnić. Teraz trzeba zainteresować się znacznikiem AC, operacjami maskowania-łączenia bitów ORL, ANL i... prawie gotowe. http://www.edw.com.pl/pdf/k09/19_07.pdf http://elportal.pl/pdf/k09/23_10.pdf http://elportal.pl/pdf/k09/26_11.pdf...
Przepraszam za błędy w tekście "Maskowanie bitów". Poniżej poprawiona wersja. ----------------------------------------... MASKOWANIE BITÓW w pigułce. (Dla tych, którym sprawia trudność zrozumienie zagadnienia) PODSTAWY Liczby binarne - szybkie czytanie ich wartosci (dzisiętnych) polega na określeniu położenia ustawionego bitu (czyli...
Witam, Zaprogramowałem ATmege16 i tak wyszło, że potrzebuje jeszcze jednego bitu wyjściowego na własny użytek, mam takowy wolny ale jest on na porcie do multipleksowania, przez co gdy zmienię stan to kolejne odświeżenie wyświetlacza znowu go zmieni. Weźmy taki oto bajt &B01111110, używam tylko pierwszych 7 bitów a ostatni zostaje bezużyteczny, i tu...
Witam. Mam problem z filtrem adresu w CANie. Używam tej samej biblioteki co Yaerius . Płytka STM32F103 ma odbierać wiadomości. I odbiera, jak podam w filtrze jakiś adres. Drugą taką samą płytkę używam do nadawania wiadomości powiedzmy z adresami 33, 34 i 35 (płytka moja więc mogę zaprogramować dowolnie). Docelowo ta pierwsza płytka ma służyć jako analizator...
Trzy lub cztery możliwości: - XOR na rejestrze FIOPIN - odczyt FIOPIN i w zależności od odczytanej wartości warunkowy zapis do FIOCLR albo FIOSET. - odczyt FIOPIN, maskowanie bitu, zapis tego co wyszło do FIOCLR, negacja bitu, zapis do FIOSET - bitbanding (nie wiem, czy dostępny dla portów)
Dopiero zaczynam programowac ale wydaje mi się ze mozna zrobic cos takeigo w Bascomie: ... Ale zupelnie nie wiem o co chodzi z tym maskowaniem bitow :? Maska jak nazwa wskazuje służy do zasłaniania np.twarzy :wink: Do tego wykorzystuje się logiczne "AND" i "OR". Przykład: Do x chcemy skopiować najstarszy i najmłodszy bit z y. x=y AND 129 (129 to właśnie...
Nie rozumiem po co ta złość... Moja wypowiedź nie miała być złośliwa, źle to odebrałeś. Wskazałem ci niekonsekwencje twojego rozumowania. Jeśli coś nie działa, to zazwyczaj lepszym rozwiązaniem jest zaciśnięcie zębów i próba rozwiązania problemu, niż jego ominięcie i porzucanie wszystkiego co zrobiłeś dla złudnej nadzieji, że nagle pojawi się jakieś...
Maskujesz odpowiednie bity rejestrów czasu PCF8583 ? ps. Pokaż kod obsługi PCF'a...
Z pierwszą funkcją już Ci podpowiedziałem. Weź ołówek, narysuj sobie zmienną x jako ciąg bitów (binarnie) i zobacz co się dzieje w trakcie operacji przesuwania i maskowania (bitowy operator &). Tak się najwięcej nauczysz. W drugim przypadku powinno być chyba (składnia C "K&R"): x( a, b ) char *a, *b; { while ( *a++ = *b++ ); }...
Pętla jest prawidłowo, ale o tej porze mogę się mylić :). START_T: lds temp,UCSR0A; sprawdzenie UDREn andi temp,0x20; maskowanie bitu UDRE ;jeśli jest 0 po maskowaniu to znaczy ze UDRE=0 ;więc sprawdza dalej (skok do START_T) breq START_T; jeśli było by brne to przy UDRE=0 przeszedł by dalej
(at)madiz08 Rozpisz sobie operacje bitowe, chociażby na jednym bajcie i wszystko stanie się jasne. Operacja AND 0 zawsze da 0, a AND 0xff zwróci niezmienioną wartość. Czyli wniosek z tego taki, że jeśli chcesz testować konkretny bit to go maskujesz przy pomocy AND, np. PINC & 2 - czyli interesuje cię bit nr 1 (licząc bity od zera), w efekcie dostaniesz...
Witam Mam Atmege 32 EvB nie chce mi tego skompilowac i wywala tu błąd : Wtemp = Rxstat And &H0080 ' maskuj bit Received Ok ' bład o tresci : ERROR 31 : Line 791 Invalid datatype 0007 oraz If Wtemp = 0 Then ' bład o tresci : ERROR 31 : Line 793 Invalid datatype 0006 oraz ' bład o tresci : ERROR 229 : Line 793 End Sub expected [>11] prosze o pomoc autora...
A zobacz jakie informacje niosą bity niewykorzystane do zapisu danej cyfry i co w danych rejestrach jest oznaczone jako reserved. Podpowiedź - maskuj nieużywane bity, tak aby miały wartość 0.
chcę go podłączyć do płytki Nucleo 144, a tam magistralą steruje każdy inny pin W Nucleo jest tak samo jak w AVR tylko porty są 16-bitowe i jeśli coś jeszcze wisi na pozostałych bitach to trzeba odpowiednio maskować, lub stosować zapis bajtowy do rejestrów GPIO. Ale teraz widzę Twój kłopot jak spojrzałem do dokumentacji Nukleo144. Przypuszczam że chodzi...
W obsłudze timera (TIMER0_COMPA_vect) zrób wyświetlanie odpowiedniej cyfry. Wcześniej trzeba zdjąć bity maskujące. Ja w moim zegarze nixie mam rtc ds3231 i tam co sekundę sygnał 1 Hz wyzwala przerwanie w którym zmieniana jest flaga sygnalizująca że należy odczytać akualny czas i uaktualnić wartości wyświetlane na lampach.
Problem jest z wyswietlaniem czcionek szerszych niż 8 pixeli. Przede wszystkim zmienna mask musi być typu unsigned int a nie unsigned char, żeby móc maskować liczby większe niż 8 bitów. Podobnie zmienna PixelRow. W przypadku zmiennej PixelRow należy dorzucić coś takiego: if(nCols > 8) PixelRow+=(*pChar--) * 256; // u ciebie pewnie będzie pChar++...
Zacznijmy od tego, po co chcesz zmniejszyć rozdzielczość pomiaru? Żeby skrócić czas konwersji? Jeśli tak, to ok, zmieniasz jak wspomniano wartość rejestru konfiguracyjnego - w tym celu musisz zapisać do scratch pad, potem robisz normalną konwersję. Tyle, że... twój kod nie czeka na koniec konwersji, tylko na sztywno przyjmuje, że trwa ona 750 ms, więc...
Nie trzeba nic maskowac, wystarczy jak kolega markosik20 napisal
Możesz wykorzystać XOR np: maskujesz najmłodszy bit (AND 1) XOR przesunięcie bitów w prawo (powót na początek) Będzie szybciej niż przy sumowaniu
Do tego co napisał kol. (at)szczywronek dodam tylko, że suma bitowa może być niebezpieczna jeśli maskowane pole nie ma wartości zero. Dla pewności trzebaby więc przedtem wykonać dodatkową operację zerowania bitów. Inaczej czasami uzyskamy sieczkę. No i analiza efektu końcowego takiego zapisu jest utrudniona.
Właśnie pożądane byłoby uporządkować dyskusję ustalając, co może się posypać, a co nie podczas stosowania pól bitowych. Wydaje mi się, że po zastosowaniu poniższych zasad zmianie może ulec co najwyżej big/little, ale w ramach kompilatora jest to ściśle opisane: 1) 32-bitowy rozmiar kontenera pola, w przypadku enum sprawę załatwia deklaracja rozmiaru...
tmp_kolor = (alfa * (float)kolor_tla) + (1.0 - alfa) * (float)red; red = (uint8_t)tmp_kolor; tmp_kolor = (alfa * (float)kolor_tla) + (1.0 - alfa) * (float)green; green = (uint8_t)tmp_kolor; tmp_kolor = (alfa * (float)kolor_tla) + (1.0 - alfa) * (float)blue; blue = (uint8_t)tmp_kolor; } kolor = (red << 11) | (green << 5) | (blue <<...
Obiecałem że pokażę co z tego wyszło, więc proszę: [youtube]http://www.youtube.com/watch?v=... Jeszcze nie miałem jak przetestować tego rozszerzonego adresowania niestety :( Ale dodam że adresu nie dzielę na nr strony i na adres w stronie, tzn nie maskuję bitów które są oznaczone jako "x" - ślę cały adres i nie ma z tym żadnych problemów,...
if (Frame.state & READY) f2: 80 91 f1 01 lds r24, 0x01F1 f6: fd cf rjmp .-6 ; 0xf2 <main+0x60> po tym kodzie szacuję, że READY ma wartość równą 0. Odczyt Frame występuje (bo jest oznaczone jako volatile), ale porównania nie ma, gdyż jest zawsze fałszywe (tylko moje spekulacje). Jeśli READY to numer bitu, musisz maskować przez...
Pokaż schemat. Odłączenie zasilania - masz na myśli całkowite, czy PCF ciągle działą na baterii? Zobacz w bibliotece czy są maskowane nieużywane bity - to częsty problem, że programiści przyjmują, że mają one zero, podczas, gdy ich wartość jest losowa.
Włączenie przerwania polega na ustawieniu bitu w rejestrze maskującym czy flagowym ?
.. Nie wyswietla się migający kursor, a nawet dalej ta linijka.. :( A niby dlaczego , kursor miałby się wyświetlać :?: send_instr(0x0C, 1000, instr); // włącz wyśw. z mruganiem Powyższa instrukcja , to tylko "Display On" , a bity C i B masz wyzerowane. Display on/off control 0 0 0 0 1 D C B Popraw. W main() , brakuje mi na końcu jakiejś pustej...
..słyszał, czytał, rozkminiał i się zmęczył tak, że idzie spać :) Wiem, wiem, adresowanie zapis/odczyt itp. Dotychczas zawsze bazowałem na gotowych procedurach gdzieśtam znalezionych, ale widzę że czas zagłębić się w temat (jutro ;-)) EDIT PO LEKTURZE : Ok, zrozumiałem, pin 3 czyli A0 mam zwarty do masy, stąd układ ma adres 160 dla zapisu i 161 dla...
Rozumiem, że pierwszy bit to bit najmłodszy... jnb p0.0, skip ; skocz, jeśli bit 0 wyzerowany jb p0.3, skip ; skocz, jeśli bit 3 ustawiony mov p1, #1 skip: Alternatywnie możesz napisać test z maskowaniem (działa dla dowolnej ilości bitów): mov A, p0 anl A, #09h ; maska 0000_1001 cjne A, #01h, skip ; skocz, jesli p0 != xxxx_0xx1 mov p1, #1 skip:...
Z analizy tego rysunku i któregoś z wcześniejszych w tym temacie, przełączanie pamięci wykonuje się za pomocą OUT 16d, A (chodzi o rozkaz Z80, nie komendę w Basicu, ale komenda OUT wywołuje ten rozkaz), a przełączanie generatora znaków za pomocą OUT 12d, A. Jestem w trakcie doimplementowywania tych funkcji do emulatora. W emulatorze pierwotnej wersji,...
Wszystko zamieściłem w 1 pliku żeby było pod ręką. Nie wiem dlaczego przy wyświetlaniu cyfr 0 i 7 nie zaświeca mi się SEG_A, przy pozostałych cyfrach nie ma z tym problemu. Co do wyświetlania temperatury to powinno być już chyba dobrze, tylko jutro muszę to sprawdzić na LM35 bo na potencjometrze to co chwila skacze mi napięcie. [syntax=c]/* * main2.c...
Poczytaj wątek który podałem poniżej. Może w czymś Ci pomoże. Jest tam opisany podobny problem. Twojego kodu nie sprawdzę bo piszę w asemblerze. Ale sprawdź czy zgodnie z opisem w tym wątku maskujesz odpowiednie bity. http://www.elektroda.pl/rtvforum/topic85...
Kod RC5 przewiduje tzw. Toggle Bit. Jeśli ponownie naciskasz ten sam klawisz to bit 6 zmienia stan na przeciwny by odróżnić, że kod nie jest wysyłany stale tylko jest to kolejne naciśnięcie klawisza. Dlatego w helpie w przykładach jest napisana instrukcja maskująca ten bit.
Ja bym dodał jeszcze o bardzo przydatnym narzędziu zwanym bitband. Jak funkcja z tej biblioteki zwraca jakąś wartość (powiedzmy status flagi), to robi odczyt, maskowanie i zwrot. Nie powiem już o zmianie pojedynczego bitu w rejestrze. Czytelniej i mniej linijek zajmie zdefiniowanie sobie dostępu do określonych bitów: [url=http://infocenter.arm.com/help/inde...
Nurtuje mnie jeszcze jak dobrać się do trzech bitów BCD odpowiadających za numer dnia w tygodniu... Zamaskować pozostałe bity i przesunąć w prawo albo nie w ogóle nie trzeba maskować przesunąć je w prawo o 5 i już masz dostępną bezpośrednio liczbę dni.
Edit: Ehh. Problemem było nie ustawienie bitów maskujących przerwanie w rejestrze CPSR. Znaczy bity ustawiałem ale niepoprawnie :| I 2 dni wyjęte z życia. Dzieki. Pozdrawiam. p.s. Co do poprzedniego posta to nie korzystam z funkcji bibliotecznych CW.
:) akurat ten zegarek jest taki prowizoryczny bo mam wyswietlacz 3 cyfrowy i pojawia sie problem z wyswietleniem godz wiekszej niz 9 a to ze godz ma 59 min to czyste przeoczenie, w każym razie nie o to chodzi :P Anody wyświetlacza mam podłączone do PORTD a katody odpowiednio do PB0 PB1 i PB2. Poniżej funkcja inicjalizujaca wyswietlacz LED: [syntax=c]...
Raczej zegar taktujący mikrokontroler nie ma wpływu na zewnętrzny układ RTC. I2C jest magistralą synchroniczną i częstotliwość taktowania (w szerokich granicach) jest bez znaczenia. Aby rozwiązać problem proponuję pokazać jednak kod, bez tego możemy powróżyć z fusów, ale chyba nie o to chodzi :) A propos wróżenia - maskujesz nieużywane bity rejestrów?
bascom maskowanie bitów maskowanie kamer maskowanie przerwań
toyota radio zasilać arduino kasowanie eeprom rozruchowy danfoss
instrukcja obsługi przejazd kolejowy
Schemat przetwornicy step-up: kluczowe elementy i zasada działania Sterownik wtrysku Mitsubishi Carisma 1.8 a Pajero Pinin 2000 GDI - kompatybilność