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...
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...
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...
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...
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...
Niekoniecnzie. Zakladam, ze to jest wyswietlacz monochromatyczny. W takim wypadku kodujesz przezroczyste tlo jako bit o wartosci 0, piksel jako 1. Teraz zeby to wyswietlic pobierasz bajt z pamieci obrazu, wykonujesz operacje OR z twoim rysunkiem i zapisujesz go ponownie. Dzieki temu prosto robisz od razu 8 bitow (8 pixeli) i nie trwa to wiecznosci....
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...
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...
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...
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?
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.
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.
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...
Poszczególne bity tego rejestru pozwalają ci "zamaskować" określone przerwania Wyjaśnienie terminu maska bitowa znajdziesz np na Wikipedii [url=http://en.wikipedia.org/wiki/Mask_%...
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...
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...
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...
(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! 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...
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...
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...
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....
czy to struktura czy unia nie widze sensu czegos takiego robic, zreszta jak masz dane z tego rejestru to w jaki sposob jestes w stanie inaczej niz poprzez maskowanie i przesuniecia bitowe otrzymac intersujące fragmenty rejestru? jesli nie ma sie dostepu do obszaru pamieci bitband to i tak musisz odczytywac bajty. Poza tym to jesli sobie dobrze oznaczyc...
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ę...
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ą...
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...
stany = twiread(NOACK); twistop(); LCD_GoTo(22,1); LCD_WriteText(" "); LCD_GoTo(22,1); int i = 128; for (; i; i>>=1) LCD_WriteText((stany&i?"1&q... Przeanalizujmy zatem. Linie 1 i 2 pomijam bo to dzieło kolegi. Linie 3 i 4 są zbędne. Linia 5 ustawia...
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?
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...
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...
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...
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.
Multipleks wyzwalany jest stanem niskim. No nieee :P Teraz to sobie sam kombinuj z negacją bitową, albo zadaj pełne, konkretne pytanie
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
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...
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:>
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...
To jest procesor NEC 78F9177 - MDL S.A maskuje teraz typ procesora (taki jest stosowany w modelu A510 bez zaworu przesterowania a ponieważ to moduł uniwersalny to przypuszczam, że to to samo) 24 kB EEPROMU, 8 wejściowy, 10 bitowy przetwornik A/D) programowany przez to białe złącze koło procesora po drugiej stronie płytki). Tylko skąd wziąć oryginalny...
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...
Testowanie przycisków w main to nie jest dobry pomysł. Zrób to raczej w procedurze przerwania wyświetlacza. Program nieskomentowany - nie wiadomo jak często są zgłaszane przerwania wyświetlacza, więc trudno coś dalej konkretnie wymyślać. Ogólnie w co którymś przerwaniu wyświetlacza wypada wsunąć stan przycisku do bajtowej zmiennej, w której będą zapamiętane...
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...
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...
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...
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...
przesunięcia bitow ustawianie bitow sprawdzanie bitow
mosfet bateria laptop wymiana grzałki pralka programator cyrkulacji
przedłuzacz zewnetrzny przedłuzacz zewnetrzny
Silnik elektryczny 1,8 kW 230V – dobór kondensatora pracy 45µF/450V, czy wystarczy? Schemat i opis przekaźników Audi A4 B5