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...
Jak podlaczyles, ktory bit jest wolny? Poczytaj o funkcjach logicznych AND i OR i o maskowaniu bitow za pomoca tych funkcji.
Witam Uruchamiam układ Atmega8 + SAA1064 - cztery wyświetlacze LED w trybie dynamicznym Próbuje według kodu poniżej jasno tylko wszystkie cztery kropki Wyświetlacz jest koloru zielonego - dwie LEDy na segment. Po podłączeniu przez rezystor 330R segmenty ładnie świecą - sprawdzałem, bo myślałem, że może 5V które jest w zasilaniu nie starcza. Schemat...
Wydawalo mi sie ze dobrze robie... ale teraz zrobielm tak: int checkbusy(void) { // 4 starsze bity DDRC = 0xf0; // maskowanie mlodszych bitow nop(); PORTC = 0x00; // zerowanie starszych bitow nop(); PORTC = 0x20; // RW=1 E=RS=0 (00100000) nop(); do { PORTC |= 0x40; // 01000000 enable High nop(); nop(); nop(); DDRC = 0xf0; temp = (PINC&0x0f); //pobranie...
Coś może w takim stylu. Kod wyrwany z większej całości i trochę zagmatwany. Jest to fragment kodu do tablicowania wyjść w zespole wyświetlaczy 7-segmentowych LED. Fragment dotyczy wspólnych anod/katod ale jest również w podobnym stylu do obsługi poszczególnych segmentów podpiętych do różnych/dowolnych portów i pinów. Większość rozwiązań wykorzystuje...
Mam problem z obsługą odbioru danych przez UART w przerwaniu. Dotąd korzystałem z funkcji SPL niewykorzystujące przerwania do transmisji danych przez UART. Mój kod poniżej, wpisując przez terminal (putty) na klawiaturze cyfry od 1 do 8 mikrokontroler wysyła na terminal m,gp� , a przecież powinien wypluć właśnie przesłane znaki. W czym jest problem...
mnie znanym sposobem, choc na pewno wolnym jest branie reszty z dzielenia przez 10 (np. x%10)... i tak az sie skonczy liczba ;)... oczywiscie za kazdym razem trzeba jeszcze podzielic przez 10 ta liczbe, zeby moc uzyskac kolejna cyfre... a jesli chodzi o "wyciaganie" poszczegolnych bitow z liczby to przydatny jest ktorys z operatorow przesuwania bitowego...
na AVR-ach się nie znam, ale napisałeś: DDRLCD=0x0f; // bity D4 - D7 wejsciami mają być : wyjściami Dodano po 40 PORTLCD=(PORTLCD&0x0f)|((dana&0x... Dane z portu są "maskowane" ze stała 00001111 binarnie (logiczne and) po to by nie były zamieniane bity "młodsze", po czym wykonywana jest "suma logiczna or" z danymi (do wpisu) maskowanymi...
Freddie chyba nie zrozumiałeś mojego pytania, rotacja i maskowanie nic tutaj nie da, bo na drugie 8 pinów też chce przesyłać lub odbierać jakieś informacje. Chociaż możliwe też, że ja nie zrozumiałem Twojej odpowiedzi :) Rozwiązanie CDMaster'a pomogło!! Dziękuję bardzo!! Jednak dla tych, którzy w przyszłości będą tego szukać w necie, napiszę kod, żeby...
50 pkt. za kod w assemblerze (jakby pod mipsa to super) za funkcje zliczające te zera. nie moglem sobie odpuscic [; 1. a moze byc w ASM pod ZX spectrum? <; 2. i co mozna zrobic z tymi 50 punktami? mam ich tyle i nigdy nie rozumialem po co komu one <: zastanawiam sie jak to mozliwe, ze chcesz pisac w ASM na tak rozbudowany rdzen (MIPS), a nie...
fantom napisał: Nie kumam. Po pierwsze w zadnym z trybow USB nie przesyla sie pojedynczych bitow. Tak ale koledze chodziło o to żeby w każdym pakiecie USB ustawiać lub kasować pojedyńcze linie danych na wyjściu układu FT245 i dzięki temu uzyskać interfejs 1Wire. Ale obawim się że to jest nie do zrobienia do 1Wire wymaga bardzo szybkich linii danych...
nie 3 bajty, a 18 bitów, po prostu przechowuj w pamięci bity "obok siebie" a nie na granicy co 3 bajty i napisz procedurę, któa będzie wyłuskiwała te 18 bitów z pamięci. Nie wiem w czym piszesz asm czy w c, ale specjalnie trudne to nie będzie. Dane dla dnia "dzien" bedziesz musial czytac unsigned int bity = dzien * 18; unsigned int od_bajta = dzien...
Stąd pytanie czy ktoś z was pisze całe programy w asm czy tylko wstawki asm w C ? Ja pisze prawie całe programy w asemblerze. Prawie całe ponieważ inicjacje mam w C ze względu na IDE w jakim pracuje - LCPXpresso. Funkcja main natomiast jest już w całości napisana w asemblerze. Pisze głównie dla układów z rdzeniem Cortex-M0 (LPC111x) ponieważ ten rdzeń...
Witam Trzeci dzień usiłuje skonfigurować PWM na timer1 a i b i nie wiem jak to zrobić. Konfiguracja na timer 0 i 2 przeszła bez problemu a tutaj jakoś nie chce. Mam skonfigurowany timer, wydaje mi się ze dobrze, więc proszę powstrzymać się od odsyłania mnie do dokumentacji. Chodzi mi po prostu o to w jaki sposób zapisać wartość zadaną. Rejestr OCR1A/B...
Przepraszam za nieścisłość wyświetlacz YM2004A jest wyświetlaczem 4 liniowym(20x4). Niemniej sterownik interpretuje to jako (40x2) i wyświetla znaki na 1 i 3 linii LCD. Początkowy kod inicjalizacji(ten który wkleiłem w pierwszym poście tematu) był z tego co zauważyłem napisany na sterownik HD44780. Sterownik mojego wyświetlacza to KS0066U. Z tego co...
Na ZX SPECTRUM tak powinno to działać. Na Cobrze z wyprowadzonym przewodem z portu FE sterującym przerzutnikiem dzielącym przez 2, z wyjścia którego przez opornik jest sterowana baza tranzystora T3 (głośnikowego) także powinno to działać, chociaż tam nie będzie sprawdzany bit 4 akumulatora. Tam wywołanie OUT(FE),A ustawi na wyjściu H, następny OUT(FE),A...
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?
http://obrazki.elektroda.pl/5385398300_1... Zaprezentować dziś chcę projekt lampki RGB który wykonałem na pracę zaliczeniową z systemów wbudowanych. Moim zdaniem osiągnięty efekt jest zadowalający więc może ktoś będzie zainteresowany wykonaniem urządzenia według mojego projektu. Jako, że jest to pierwszy zrealizowany przeze mnie projekt...
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.
Dokonałem zmian które zasugerowałeś. Mam na mysli wszytkie warunki w if'ach. Teraz są dobrze? O to chodzi? Jakie jeszcze błędy popełniłem? [syntax=c] #define F_CPU 1000000UL #include <avr/io.h> #include <inttypes.h> #include <util/delay.h> #include "HD44780.h" #define DATA PD0 #define IN DDRD &=~ (1<<DATA) #define OUT DDRD...
lesiotech - bardzo mi przykro, ale metoda kompresji w dziedzinie częstotliwości chyba nie zda egazaminu. Trzeba kompresować w dziedzinie czasu. Można to zrobić tak jak w mpeg, czyli przy pomocy filtrów polifazowych. A może wogóle zaimplementować mpega (np. I warstwę, która jest najprostsza)? Format MPEG-Audio (Wydanie II) zbudowany jest podobnie jak...
Troche skomplikowanie to wygląda - ale ja nie znam C++ :-) Rozumiem, ze to czesc wiekszej całości? Działa? Ja osobiście podziały bajtów (lub liczb wielobajtowych) realizuję (podobnie jak koledzy wyżej) przez maskowanie odp. fragmentów bajtów (lub większych wielobajtowych zmiennych) za pomocą masek bitowych + odpowiednie przesunięcia bitowe.
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.
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.
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...
Witam! Od pewnego czasu usiłuje napisać program do obsługi zegara na pcf8583 i wyświetlaczach siedmiosegmentowych lecz bez efektu. Jest sporo tematów tego typu, ale większość zegarów realizowana jest na LCD. Główny problem polega na wyświetleniu czasu na wyświetlaczach 7segmentowych. Proszę o jakąkolwiek pomoc i podpowiedzi. Schemat układu: http://obrazki.elektroda.net/13_12708371...
franek.bmw mógłbyś pochwalić się wynikami tego akcelerometru. Nie wiem czy przy jego obsłudze poczyniłem jakiś błąd, ale szumy, które otrzymuje sięgają 20mg, bez znaczenia jest tryb, który wybieram low-noise/low-power. Odczyt działa poprawnie, zewnętrzne przerwanie, oraz automatyczny reset przerwania odbywają się prawidłowo najpierw wysyłam adres 0x02...
Rozwijając to co pisał snnaap o nadpisywaniu, dla pewności lepiej wszystkie wartości maskować/warunkować, wtedy nie ma żadnych nieprzyjemności, jeśli zapomni się o dozwolonych wartościach. Dodatkowo, coś mi nie pasuje przy wysyłaniu danych po SPI. Zakładając, że funkcja wysyła bajt, to w pierwszej linii wysyłasz młodszy bajt słowa, a za drugim razem...
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++ ); }...
Cześć Chciałem prosić kogoś o wskazówkę jak poradzić sobie z problemem wyświetlania wartości "Wartosc2" poniższego kodu. Mój problem polega na tym że w momencie naciśnięcia przycisku ( w programie to Up, Dwn ) gdy na wyświetlaczach jest np 1.1 wyświetlacze "resetują" się i wskazują wartość 00 po zwolnieniu przycisku wyświetlona zostaje poprawnie kolejna...
http://obrazki.elektroda.pl/1327978200_1... Badacze bezpieczeństwa z Zscaler odkryli rodzaj ataków internetowych, w których linki przekierowujące do eksploitów są maskowane przez przekonwertowanie adresu IP na postać DWORD (podwójnego słowa). DWORD jest 32-bitową, stałoprzecinkową reprezentacją łańcucha znaków. Co najistotniejsze - jeśli...
Witam, uczę sie programować mikrokontrolery AVR i postanowiłem zrobić sam od podstaw jakiś projekt. Mianowicie, staram sie zbudować termometr na bazie czujnika DS18B20. Nie chcę zaglądać w gotowe projekty ani sugerować się czyimiś rozwiązaniami, chcę żeby był to mój projekt. Ale chciałbym żeby ktoś doświadczony zerknął na niego i wskazał błędy w składni....
Witam ponownie Sugestia Kolegi M. S. była pomocna. Całość wygląda tak [syntax=basic4gl] '************ Zegar 6 wyswietlaczy LED + PCF8563 $regfile = "m8adef.dat" $crystal = 8000000 $hwstack = 32 ' rozmiar stosu sprzętowego $swstack = 32 ' rozmiar stosu programowego $framesize = 32 $baud = 9600 '************ deklaracje portow - 74HC595 Config Portc.3...
To że systemy operacyjne, bibioteki i API odcisnęły na Tobie piętno- to jeszcze nic. Wyobraź sobie że masz komputer z wykasowanym BIOS. To jest właśnie mały mikroprocesor. Ile tysięcy stron dokumentacji musiał byś przeczytać aby taki komputer uruchomić. A tu- tylko 600. Jeszcze jedno- w podręcznikach do C na "prawdziwe" komputery dość po macoszemu opisują...
Główna zagwozdka dotyczy tego czy powinienem wybrać interfejs czy mikser. W samych nagraniach lepiej sprawdzają się interfejsy. Mają lepsze przetworniki A/C, nagrywają z wyższą rozdzielczością bitową i większą częstotliwością próbkowania. Generalnie mniej szumią (z moich doświadczeń wychodzi około 20dB większy odstęp od szumów). biorę go pod uwagę...
Co do pól bitowych to mam Je odbierać i wysyłać więc nie mam wyboru. To nie jest prawda. Odbierane i wysyłane są bajty, odczyt i zapis zazwyczaj realizuje się poprzez maskowanie wartości i przesunięcia (czyli operacje bitowe a nie pola bitowe) Chciałem ułatwić rzycie osobie która nie jest programistą w składanie ramki do wysłania. Po to się tworzy...
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?
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+ADR_1*2+ADR_2*4 ; a ta nie działa : Adres=((~PIND)>>5)&ADRES_MASK; gdzie ADRES_MASK= 0b00000111; Juz nie mam pomyslow ..
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
No ale przecież 8 bitowy przetwornik oscyloskopu nie wymusza na nas abyśmy musieli cały ten przebieg zmieścić w 8 bitach zamiast tylko interesujący nas fragment. Owszem, jeśli już tak zrobimy (po co?) oscyloskopie bez DPO to te 256 poziomów da się w znaki i faktycznie nie zobaczymy drobnych detali które byśmy zobaczyli na oscyloskopie analogowym. Pisałem...
Tak jak wczesniej obiecalem, udostepnie chetnie moj dzialajacy core procesora XMB32 , ktory jest klonem procesora MicroBlaze zrobionego przez firme Xilinx i dostepnego za niecalkiem male pieniadze. XMB32 powstal z nastepujacych powodow: 1). Wrodzona niechec autora do placenia za cos co mozna samemu zrobic, 2). Potrzeba posiadania "mikro"kontrolera o...
Cóż Ci potrzebny przykładowy kod w C? Przecież to proste operacje na rejestrze (odczytanie) do zmiennej 16 bitowej z odpowiednim maskowaniem dwóch 8bitowych rejestrów;) Lepiej wyślij nie obrobione;)
Można tak jak tadzik podpowiedział, a można też użyć pól bitowych. Jest to o tyle wygodniejsze, że nie trzeba samemu liczyć masek.
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
Można sobie zrobić makra sbi i cbi ;-) Ale błagam te pomocniki z bibliotek "while_bit_is_clear(xx.y) są daremne:> O wiele czytelniej wygląda maskowanie bitowe w/g mnie:>
Jeśli to Cortex, to użyj bitbandingu, jeśli nie, to jeśli bardzo chcesz możesz kombinować, ale także moim zdaniem nie jest to dobry pomysł - operacje te i tak będą wykonywane przez odczyt i maskowanie + ewentualne przesunięcie, więc lepiej widzieć to wprost (IMHO). 4\/3!!
Multipleks wyzwalany jest stanem niskim. No nieee :P Teraz to sobie sam kombinuj z negacją bitową, albo zadaj pełne, konkretne pytanie
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
Jednak, żeby nie bawić się w ręczne maskowanie, co naraża na błędy i jest niewygodne przy jakichkolwiek zmianach, proponuję zastosować struktury i pola bitowe. Definiujesz sobie strukturę typu: [syntax=c] struct bf { uint8_t lownibble : 4 uint8_t highnibble : 4; }; [/syntax] i nie ma problemu z maskowaniem, kompilator o wszystko dba automatycznie. Piszesz...
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...
Witaj. Jako osoba pisząca w asm to sprawdzanie jest dla mnie przekombinowane, i jest to wynik działania jakiegoś kompilatora, dlaczego? dlatego: 1) zmiana stanu pinu może nastąpić pomiędzy odczytami portu a po niej jest kilka cykli więc nie chodzi tutaj o pilne i dokładne wykrycie tej zmiany. 2) analizując zapis można to zrobić o wiele prościej i będzie...
Klawiatura PS/2 podłączona do jednego z kanałów SIO (w trybie synchronicznym). Nie ma żadnych mikrokontrolerów. GALe to najmniejszy problem bo to wiekszość tanich chińskich programatorów obsługuje. Używałem TL-866 a wcześniej Galblasta. 22V10 wystarczyłby jeden ale zakupione na ebayu okazały się malowankami i musiałem się zadowolić tym co miałem czyli...
Prawie dobrze ale '!' jest negacją logiczną. Tobie potrzebna jest '~'. Zatem wpis do CODR powinien wyglądać CODR = (~val) & 0x0000000F; Maskować musisz zerami na wszystkich pozostałych pozycjach! Why? Bo tak ;) Dodano po 9 A przepraszam, pominąłem to że 16 pinów. W takim razie ma być tak: CODR = (~val) & 0x0000FFFF; Tobie nie działa ze względu na rodzaj...
W poprzedniej wypowiedzi dokonałem poprawek w przykładowym kodzie. Tak, to już jest kiedy Elektrodę traktuje się jako przerywnik przy pracy. Kwestią otwartą jest nadal testowanie wybranego bitu, lub bitów. 1. Jak to wykonywać poprawnie testowanie jednego bitu ? Zależy to od danej sytuacji. W trakcie testowania pojedynczego bitu w PINx z pominięciem...
J Zauważ natomiast, że nie miałbyś 3/4 tych problemów, gdybyś użył małego Cortexa za 3 złote - ma większą pamięć RAM i kilkanaście razy szybciej od AVR dodaje liczby 32-bitowe oraz klkaset razy razy szybciej je mnoży. Myślę, że wyciągasz błędne wnioski - problemem nie jest wolny procesor, lecz zły algorytm obliczania wyniku. Bez poprawy algorytmu zmiana...
no właśnie, też sobie wymyśliłem że można kopiowaćposzczególne bity z akumulatora i przenosuic je poprzez flagę do pinów portu. Pewien kumpel powiedział mi że to do !(at)#, gadał coś o urzyciu DTR, funkcjach logicznych i maskowaniu portu... z tego co wiem to pomysł bardzo powszechny (i według mnie trochę dupiaty! pomysł z kopiowaniem bitów akumulatora...
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ś...
No to ja Was, Panowie, zostawiam z Waszymi wynikami... ;) A tak na poważnie, to kod pokazany przez dziechu i GrzegorzKostka wygląda na właściwy dla tego testu, więc chwilowo nie będę właził pod stół. O kodzie Tadzik85 trudno mi się wypowiedzieć, bo go nie widziałem. Myślę sobie, że wyniki Tadzik85 mogą się brać z wolnej pracy pamięci ROM - opóźnienia...
Z mojego doświadczenia i opisanych objawów wynika, że Twój program zmienia konfigurację pinów PA13 i PA14. NIe spodziewałbym sie błędu po stronie ST. Najbardziej prawdopodobny jest zapis do rejestrów GPIOA bez wykonania maskowania. Może też być błąd w przesunięciach bitowych jeżeli używasz magic numbers zamiast definicji z pliku stm32l010xx.h. Inna...
Wystarczy po stronie nadajnika rozbić 16bit na dwie liczby 8bit: Na tym etapie nauki warto dodatkowo zaznajomić się pojęciem unii, która pozwoli pozbyć się dodatkowych przesunięć i maskowań. Na tak prostym przypadku to może jeszcze przerost formy nad treścią, ale łatwo będzie można załapać o co chodzi, a później do większej porcji danych przyda się...
Czy jeśli na początku programu zdefiniuję: sfr16 DAC0 = 0xD2; Gdzie 0xD2 to adres bajtu DAC0L, to czy będę mógł się wtedy odwołać do DAC0 jako do szesnasto-bitowego rejestru? Póki co maskowałem wartości, robiłem przesunięcia bitowe i zapisywałem oddzielnie DAC0L i DAC0H. Akurat nie próbowałem używać rejestrów zdefiniowanych jako sfr16 przy dostępie...
Do nawigowania używam nawigacji GoClever 5066HD z 7" wyświetlaczem:>. Dlatego nie wymagam tej funkcji od radia. Co do ściąganego panela-cała konsola jest robiona od podstaw z najeżdżającą roletą aluminiową na konsole centralną która będzie maskowała radio, nawigacje, pokrętła itp itd:>. Czyli nie ma sensu pchać się w radio z systemem Windows tylko po...
"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...
Tak chodzi o liczbę 16 bitową. Chyb dam sobie już dalej radę, kolega powyżej podsunął dobry pomysł. Spróbuję. Pozdrawiam. Dodano po 35 Jednak niedałem sobie rady... Liczbę 16-bitową mam zapisaną w dóch rejestrach (msb i lsb). I teraz jest problrm jak mam to podzielić przez 1000, skoro ja mam tylko rejestry 8-bitowe. I wymyśliłem taki sposób. Powiedźcie...
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:...
Debounce spokojnie by tu wystarczył jeśli nie zależy Ci na ciągłości działania programu (ten zawsze wstrzyma na 25ms). Do tego wykorzystaj dodatkowy timer programowy do mierzenia czasu trwania buzera (ewentualnie można to zrobić w jakiejś pętli jeśli wstrzymanie programu jest nieistotne). Można też wykorzystać badanie portu z maskowaniem (AND) jeśli...
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,...
Chciałem znać tylko opinie. To wszystko, nie uparłem się, słucham mądrzejszych. Wiem, że wyzwalając pomiar Timerem będę miał w zanadrzu ważny parametr jakim jest częstotliwość próbkowania więc na pewno tą metodę wybiorę. Dane z przetwornika są 12 bitowe, ale przecież zapisywane na 16 bitach. Więc mogę jeszcze zastosować maskowanie na pierwszych czterech...
Jakoś sobie poradziłem dzięki. Problemem była moja nie uwaga przy maskowaniu płytki. przy pomiarze na 2 nodze lm358 i diody D1 było zwarcie do masy nie wiem jakim cudem ale było :D ah to za gorące żelasko.... No ale teraz mam inny problem układ działa ale aż za dobrze w opisie po podaniu 1 sygnału przerzytnik nie pownien zadziałac a mi na chwile sie...
Pozwolę sobie podpiąć się pod ten temat, mam nadzieję, że nikt mnie nie zbeszta. Też chodzi o teorię i praktykę języka C dla AVRów, avr-gcc itp. Chciałem sobie zadeklarować strukturę ale oszczędzić miejsca w pamięci, bo jak się pisze na "maluchy" to każdy bajt pamięci może być ważny. Chciałem zadeklarować powiedzmy tak:[syntax=c]struct JAKASNAZWA{ uint8_t...
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...
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;...
jeden jest w verilogu drugi w vhdl a czemu tak ? - z czystej ciekawosci pytam; masz czysto kombinacyjny dekoder, wiec nic dziwnego, ze w momencie gdy przelaczaja sie wszystkie bity licznika powstaja szpilki, chyba zdajesz sobie sprawe, ze praktycznie nie sposob zapewnic idealnie rowne opoznienie na trasie licznik - dekoder, wiec jak sie zmienia stan...
Dziękuję wszystkim za pomocne posty. Kolego michalko12, czytam to co piszesz, czytam, ale nie znajduję na wszystko jasnej odpowiedzi, albo może nie przyszło ci do głowy, że nie dysponuję taką wiedzą jak Ty i dlatego ten temat, aby coś więcej się nauczyć. Tyle jest na Elce o unikaniu dzielenia w AVRach. Toż to najgorsza zmora. Próbowałem coś zoptymalizować....
Witam No to tak...: 1)jeśli port jest wejściem możesz bezpośrednio odczytać jego stan z rejestru (np w Atmega8 masz rejestr np PIND dla PORTD i tam odczytujesz stan logiczny... '1' lub '0'), jeśli wyjściem - to też możesz odczytać jego stan w tym samym rejestrze....tylko po co ?:). Jeśli chcesz odczytać liczbę 8 bitową na która jest na porcie to odsyłam...
Wartość pojedynczego bitu można odczytać stosując tzw. maskowanie. W przypadku pojedynczego bajtu należy przemnożyć logicznie osiem razy, dla wyciągnięcia każdego bitu. Jeśli wynikiem mnożenia będzie zero - oznacza, że na danym bicie jest zero. Jeśli nie zero - to znaczy, że na tej pozycji jest jedynka. np. liczba 131d = 1000 0011b i mnożymy kolejno:...
#include <avr/io.h> #include <avr/delay.h> #include "MK_LCD/mk_lcd44780.h" uint16_t pomiar(uint8_t kanal); //deklaracja funkcji programu int main(void) { //inicjalizacja wyświetlacza LCD lcd_init(); // wyświetlacz podświetlony lcd_LED(1); //wybór napięcia odniesienia w postaci VCC //ADMUX |= (1<<REFS0); Za pierwszym razem zakomentowałem...
ktycznie można stosować karkołomne sztuczki, ja przyzwyczaiłem się, że RAM mi nie brakuje i problemy rozwiązuję w najprostszy sposób sprzętem, wskazuję od którego miejsca ile danych wysłac i to wszystko. No to policzmy - autor chce zrobić wykres 180*275 pikseli, na co potrzebuje 99000 bajtów. Ponieważ ten kontroler ma cykl zapisu równy 400 ns, więc...
Witam wszystkich Elektrodowiczów! Staram się uruchomić filtr akceptacji (Acceptance Filter) w kontrolerze magistrali CAN w mikrokontrolerze LPC1768 NXP. Aktualnie mam ten filtr ustawiony w trybie Bypass mode i nie ma ustawionego żadnego sprawdzania czy akceptacji komunikatów o żądanych identyfikatorach ID i wszystko ładnie działa. Z dokumentacji wynika,...
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...
Metoda widma rozproszonego (hopping frequency) funkcjonuje praktycznie od lat 70-tych ubiegłego wieku. Teoria istniała o wiele, wiele wcześniej. Widmo rozproszone i hopping frequency to nie jest to samo. Na analizatorze może się wydawać że to jest to samo bo widmo _może_ być podobne, Tutaj ktoś zalinkował całkiem niezły artykuł jak zrobić nadajnik...
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...
(at)ElektrodaBot Czy w zwykłych wątkach (poza ISR) można użyć vPortEnterCriticalSafe() oraz vPortExitCriticalSafe() zamiast stosowania operacji atomowych? Bezpośrednia odpowiedź W zadaniach (wątkach) FreeRTOS działających pod ESP-IDF można wywoływać `vPortEnterCriticalSafe()` / `vPortExitCriticalSafe()` zamiast używać `std::atomic`, ale należy traktować...
Wdzialem ta specyfikacje - nawet sam wstawilem do niej link, tylko ze nic na niej nie jest napisane o sposobie sterowania i danych jakie sie wysyla. Same dane to jeszcze nie problem, bo moge wysylac losowe dane i potrzec co sie dzieje i jak sie zmienia i do tego to sobie dojde, tylko chodzi mi tez o ta kontrolke clk - sygnal zegarowy jak napisal kolega...
(at)ElektrodaBot napisz kod i2c dla mikrokontrolera PIC16F1526 i układu scalonego PCA9685 do sterowania serwomotorem. Wstępna ocena dostępnych informacji Dwie przykładowe odpowiedzi offline zawierają już solidny sterownik bare-metal dla: - funkcji master I²C na module MSSP PIC16F1526 - Podstawowa konfiguracja PCA9685 do pracy z serwomechanizmem 50...
Witam serdecznie, Na wstępie podkreślam, że dopiero zaczynam pracę z tego typu układami więc proszę o wyrozumiałe podejście. Próbuję zrealizować układ wyświetlający liczbę wciśniętą na klawiaturze (4x4), jednak niezależnie od wybranego przycisku w danym rzędzie wyświetla mi się ta sama wartość . Niezależnie czy wybieram 1,2, czy 3 - wyświetla się "1"....
Usunąłem Wait 1 przy konwersji z DS18B20, działa, bez problemu ( na trzech przewodach ), tylko wyniki są opóźnione - tzn. wyświetlany wynik nie jest z aktualnego pomiaru, tylko z poprzedniego. Dodałem jeszcze dwa czujniki DS18B20. Ich zapis razem z godziną i datą na karcie jest jak najbardziej w porządku, tylko wyświetlanie trochę szwankuje - tzn. czasem...
http://obrazki.elektroda.pl/5313552500_1... Sterownik włącza/wyłącza do 8 urządzeń grzewczych i chłodniczych. Stan wyjść zależy od: temperatury mierzonej w dowolnej liczbie punktów, wewnętrznego zegara czasu rzeczywistego, programu grzania i chłodzenia przechowywanego w pamięci EEPROM. Architektura sterownika Sterownik jest oparty na...
[syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <avr/pgmspace.h> #include <avr/eeprom.h> #include "hd44780.h" #define LED_DATA PORTD //port pod kt�ry pod��czony jest wy�wietlacz LED #define LED_DATA_DIR DDRD//kierynek...
Popracowałem nad tą biblioteką, m. innymi dołączyłem funkcję wyświetlającą wartości stałoprzecinkowe. Potrafi wyświetlać 32-bitowe liczby, wiec nie powinno być problemu. Jest to wersja pod AVR Xmega. Biblioteka ma jeszcze kilka niedociągnięć, np. funkcje wyświetlające linie mają kolor 8-bitowy, ale funkcja wyświetlająca punkt, a także napisy wyświetlają...
Ciśnieniowy kontroler poziomu wody https://obrazki.elektroda.pl/7746273200_... WSTĘPNIAK Witam wszystkich entuzjastów elektroniki! Chciałbym zaprezentować przykład wykorzystania scalonego półprzewodnikowego czujnika ciśnienia w roli miernika poziomu wody. Dzięki pomiarowi ciśnienia słupa wody możliwa stała się kontrola i utrzymywanie...
Bezpieczeństwo funkcjonalne jest częścią ogólnej strategii bezpieczeństwa w wielu gałęziach przemysłu, w których technologia stara się zmniejszyć do tolerowalnego poziomu, prawdopodobieństwo szkód dla ludzi lub sprzętu w przypadku awarii. Wymóg, aby systemy były funkcjonalnie bezpieczne, znacznie się rozwinął w ostatnich latach. Od elektrowni jądrowych...
Witam, mam problem z jasnością diod w matrycy, napisy ładnie sobie lecą, lecz jasność diod jest kiepska. Sprawdzałem miernikiem i napięcie nie przekracza 2V, Zasilanie całość to zasilacz z komputera 500W, i sprawdzałem nawet na innym i jest to samo. Co może być przyczyną? Rezystory do BC557 to 1k a nie jak na rysunku 330om. http://obrazki.elektroda.pl/1735772500_1...
Witam, mam mały program napisałem przy użyciu książki Pana Marcina Wiązania oraz przy użyciu elektrody do obsługi matrycy led, lecz mam nieporządany efekt stroboskopowy. Nie widać liter, tekstu, tylko wszystkie diody mrugają. Czy to jest spowodowane zasilaniem czy też błędem programu? Dorzucam dwa programy, przy których pracowałem i schemat, schemat...
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
witam...to znowu ja i moj wyświetlacz BG320240F firmy Bolymin ze sterownikiem SED1335. W tej chwili próbuję uruchomić mój wyświetlacz przez procesor sygnałowy, a dokładnie przez interfejs EMIF..ale to mało istotne. Próbuję programować wyświetlacz przez interfejs 8080 a więc linie: A0,WR,RD i CS ( z czego trzy ostatnie są negowane). Interfejs przez który...
przesunięcia bitow ustawianie bitow przesuwanie bitow
akumulator skuter elektryczny śmigła elektrowni wiatrowej renault megane instrukcja obsługi
piekarnik samsung piekarnik samsung schemat
Jak sprawdzić sterownik hulajnogi elektrycznej? Jak sprawdzić czujnik hamulca w Wegoboard Supreme 3?