Tamte akurat miały architekturę von Neumann-a, więc wszystkie adresy były jednego rodzaju. Składnia DANE<<1 (albo chyba DANE*2 też mogło by być) wynika z (nieco) idiotycznej konwencji, że dla przestrzeni kodu asembler numeruje (adresuje) słowa (pamięć FLASH jest 16-bitowa), natomiast przy dostępie przez LPM trzeba zaadresować pojedynczy bajt.
[url=http://www.elektroda.pl/rtvforum/to... ,8 post masz cala obsługę spi
Więc pojawia się pytanie jak sprawdzać kolejne bity w kolejnych przebiegach "pętli" (w przypadku procedury zapisu) oraz jak ustawiać logiczne 1 w kolejnych bitach przy kolejnych przebiegach "pętli" (w przypadku procedury odczytu). Jeśli chodzi o zapis to zrób tak, że sprawdzasz, czy najmłodszy bit w rejestrze jest wyzerowany, jeśli tak to ustawiasz...
Przede wszystkim należy czytać po sektorze - czyli po 512 bajtów. Karty SDHC nie umożliwiają odczytu dowolnego bajtu - odczyt 256 bajtu sektora wymaga odczytania i pominięcia pierwszych 256 bajtów, co trochę trwa.
Witam, słabo znam te procesory, musisz więc sprawdzić w dokumentacji, moim zdaniem problem nie bierze się z kolejności wysyłania ale z kolejności odczytu. Generalnie, ośmiobitowe procesory przy dostępie (odczycie i zapisie) do szesnastobitowych timerów wykorzystują (dla zagwarantowania jednoczesności obu bajtów) specyficzny mechanizm. Starszy bajt nie...
Chyba musisz doczytać dokładniej... 1. Wysłanie jednego BAJTU przez UART przekłada się na wysłanie jednego BITU przez 1wire. 2. Wysyłać można tylko 0xFF albo 0. 3. Odczyt inicjowany jest przez mastera - musi on nadać 0xFF żeby cokolwiek przyszło. 4. Odczyt jednego BAJTU z UARTa przekłada się na odczyt jednego BITU z 1wire. Ty zaś wysłałeś od razu 0x33...
Spróbuj ten kod /* Ver. 1.02 - 2020-03-29 Kod emulujący kierownicę Thrustmaster TMX Pro, umożliwiający podłączenie Arduino do bazy TMX Pro i emulację naciśnięć przycisków. */ #include <Arduino.h> byte wheelState[8]; // Stan przycisków volatile byte next_byte; volatile byte next_byte_idx; // Zmienne do debouncingu byte lastState[2] = {0xFF, 0xFF};...
Najpierw uściślijmy twoje potrzeby. Pisząc bitmapy masz na myśli pliki w formacie monochromatycznym BMP? Czy bitmapa będzie wyświetlana na LCD w stałym miejscu, czy miejsce wyświetlania konkretnej bitmapy może się zmieniać? Jeśli dana bitmapa, przynajmniej w poziomie będzie wyświetlana zawsze w tym samym miejscu, to prościej ją rozszerzyć, tak, aby...
Podobno w atmegach w "signature row" sa pod kolejnymi adresami zapisane bajty kalibracji dla różnych prędkości wewnętrznego oscylatora. Potrzebuje bajtu kalibracyjnego dla 4MHz. Jak go odczytac?
Na c sie nieznam. Myśle ze kolega wie że pilot nadaje najpierw kod pilota potem dopiero kod klawisza może twój program po odczytaniu pierwszego bajtu konczy juz odczyt. Kiedyś miałem program na 8051 pokazywał na lcd pełny kod każdego klawisza ale chyba mnie gdzies zapodziało to
Czyli Twój pseudokod to jest taka jakby kolejka FIFO? No niezupełnie. To co przedstawiłem buffer_is_empty() zwracająca prawdę lub fałsz) należy sobie dopisać. Sprawa jest dosyć prosta np. w przypadku USART. Wystarczy dodać bajt do bufora, później - jeśli bufor nie jest pusty - pobrać bajt i wysłać. W przypadku I2C sprawa jest o tyle skomplikowana,...
Chciałbym odczytać bajt ze wskazanego miejsca w eepromie 24c16 za pomoca nastepujacego kodu: odczytbajtu: SER W OUT TWBR, W CLR W OUT TWSR, W LDI W, (1<<TWINT)|(1<<T... OUT TWCR, W RCALL wait IN W, TWSR CPI W, 0X08 BRNE error LDI W, 0XAA OUT TWDR, W LDI W, (1<<TWINT)|(1<<T...
Nie stosowałem dotychczas więc nie wiem czy pomoże ale poczytaj o INPUTBIN, INPUTHEX
Tak się składa, ze również korzystam z BMA180. O to moja funkcja odczytu i zapisu bajtu z czujnika pod wskazany adres: [syntax=c]u8 spi_read_byte_acc(u8 adres) { u8 data; // Opuść ChipSelect, wyczyść poprzez odczyt DR bufor RX, oraz wyślij adres wraz z poleceniem odczytu. CS_ACC = 0; data = SPI1->DR; SPI1->DR = BMA180_READ | adres; // Oczekiwanie na...
Ad 1. LD(IX+01),#23 - rozkaz 4-bajtowy: - 1 bajt - wartość DD (prefiks mówiący o tym że rozkaz dotyczy rejestru IX), - 2 bajt - wartość 36 (rodzaj operacji), - 3 bajt - wartość 01 (przesunięcie względem wartości z rejestru IX), - 4 bajt - wartość 23 (ta wartość będzie zapisana w komórce pamięci o adresie (IX+01). Rozkaz wykonywany jest w czasie 5 cykli...
Witam, Zapis do pamięci jest zbyt wolny. Dla ATMEGA8 zapis jednego bajtu do EEPROMu trwa ok. 8.5ms Natomiast odbiór jednego znaku (10bitów) przy prędkości 9600bodów trwa 1.04ms. Tak więc w Twoim przypadku zanim zapiszesz odebrany bajt do EEPROMu to zdąży przyjść już kilka następnych których nie zdążysz obsłużyć. Pozdrawiam JarekC
Dzieki za szczegolowy opis, wczesniej zbyt szybko pospieszylem sie z odpowiedzia :) . Jeszcze raz przyjzalem sie programowi i mam watpliwosc co do odczytu z 16b. rejestru TCNT1. O ile zapis jest zgodny ze specyfikacja atmela (zobacz strona 83 pdf-u Tiny2313) najpierw wpis to bajtu starszego a pozniej mlodszego to odczyt powinien byc w kolejnosci odwrotnej....
Użyj zdarzenia DataReceived portu szeregowego - jest wywoływane po odebraniu każdego bajtu do bufora portu. Możesz też sprawdzać ile bajtów jest w buforze i odczytać go dopiero gdy znajdzie się tam ciąg właściwej długości. Odczytanie bufora opróżnia go.
Witam, Jakis czas temu tez zapragnalem uzyc TWI i szczerze mowiac znacznie mniej czasu zajelo mi kiedys napisanie programowego I2C niz uruchomienie TWI ;) Ale do rzeczy. 1) Zakladam, ze masz rezystory podciagajace na liniach, 2) W funkcji void i2c_start(void) czegos brakuje. Twoj kod jest zgodny z przykladem ze strony 180 dokumentacji, jednak jej autorzy...
http://obrazki.elektroda.pl/5144790300_1... Przedstawiam Wam swoje najnowsze dzieło - KrzysioCart MicroSD - kardridż do konsoli Pegasus, który będzie ostatnim, jaki kupisz - żaden inny już nie będzie potrzebny. Kardridż obsługuję 82% wszystkich gier, jakie wyszły na konsolę NES / Famicom / Pegasus. Obsługiwane są następujące mappery...
Cześć !!! Pomysł bardzo dobry i ciekawy. Ale propnuje przesiąść się na jakiś procesorek ze sprzętowym I2C np. Atmega8 lub któryś z grupy nowych procków Philipsa. Dlaczego. Komunikację Mikroprocesorów z i2C w trybie Slave najłatwiej jest zbudować, gdy masz możliwość obsługi protokołu w przerwaniu. Tzn. procek dalej się kręci , coś czyta czym się zajmuje...
Nie możesz jeden po drugim, bez żadnego czekania odczytywać czy wysyłać kolejnych bajtów przez I2C. Pomiędzy każdym wysłaniem lub odebraniem muszą być sprawdzane stosowne flagi wskazujące czy transmisja danego bajtu się już skończyła. Początek każdej transmisji musi zaczynać się warunkiem startu, a kończyć warunkiem stopu. Razem z adresem urządzenia...
Aż tak głęboko nie siedzę w protokołach, ale spróbuj wyświetlić przez USART wszystko co odebrałeś. Jak dobrze myślę to od piątego bajtu będziesz miał ciąg "/?..." a potem różne inne pierdoły. Wyciagnij to z ciągu znakowego, lub poczytaj dokumentacje biblioteki Arduino bo ja akurat jej nie znam :P
Tablice umożliwiają odczyt i zapis elementów wybranych po indeksie, jeśli są dwie funkcje getbit/setbit, to one również umożliwiają odczyt i zapis pojedynczych elementów - w zasadzie to jest ten sam model abstrakcyjny, tylko używa się innego zapisu: mając tablicę 16 bajtów o nazwie "tab" będzie się pisało: getbit(tab, 12) // zamiast tab[12]...
Dzielenie przez 16 to to samo co przesuwanie bajtu w prawo o 4. Czyli jest to wywalenie jakby 4 najmłodszych bitów, czyli odczyt temp będzie z dokładnością do 0,5 stopnia. Zajrzyj do notki. 5 najstarszych bitów to znak czy dodatnia czy ujemna, a 4 najmłodsze oznaczają miejsca po przecinku. Rozumiem ze zmiana z systemu binarnego na dziesiętny jest znana?...
Gdzie wyczytałeś jaka jest wartość offsetu? Stoi jak byk w tabelce. k=1, T dla 25 C wynik ok 300 czyli odczyt ADC to temperatura w około Kelwinach Po odjęciu 20 od młodszego bajtu wyniku mamy stopnie Celsjusza. Wszystko Ewentualnie korekta ofsetu przez kalibracje na jeden punkt. Kalibracja dwupunktowa raczej nie ma sensu, bo przeliczanie sie komplikuje...
4. Blokowy układ pamięci wynika z ograniczonej przestrzeni adresowej. Dany układ nie pozwala na adresowanie każdego bajtu z osobna więc stosuje się bloki np po 64 lub 128 bajtów. Zatem wybierając adres powiedzmy 32, zaglądasz do szufladki w pamięci do której możesz zapisać te 64 lub 128 bajtów. Adres 33 wskazuje na inną "pustą" szufladkę w której jest...
;* ;***************************************... ;*PROCEDURY OBSŁUGI MAGISTRALI 1-Wire DLA MIKROKONTROLERA AVR ;***************************************... ;* ;*Nazwa pliku :AVR_1Wire.asm ;* ;*Przeznaczenie :dowolny AVR, za wyjątkiem AT90S1200 ;*Kwarc :4MHz ;* ;*******************************OPIS****...
Zapis wartości w programie (ostatni zapis w kodzie): ; KOD 1 orgEND_FLASH retlwBAJT_KALIBRACJI end Powyższy kod zapisuje w ostatniej komórce pamięci programu wartość: 0x34xx, gdzie xx to twój bajt kalibracji. Odczytałeś wartość 0x343C dlatego jako bajtu kalibracji użyj wartości 0x3C Kalibracja (zapis na początku programu): ; KOD 2 bsfSTATUS,RP0; bank...
Cały problem jest w tym żeby te dwie ATmegi się zsynchronizowały. Przerwanie od SPI występuje po zakończenia transmisji pierwszego bajtu. Zanim nastąpi obsługa przerwania to pierwszy bajt zostanie utracony. Nie mamy też gwarancji że dwie Atmegi "wystrzeliły" :) równocześnie i Slave nie czyta np. 4 bajtu nadanego przez Mastera. Jeżeli to by była np....
Mniej więcej, to znaczy flaga jeśli nie jest niegdzie zerowana, to po odebraniu pierwszego bajtu zostanie ustawiona i koniec dalszych zmian (kazdy kolejny bajt bedzie wpisywal w nią jedynke ale nic to nie zmieni bo tej jedynki nic w miedzyczasie nie kasuje). Stan wysoki na linii SS również jej nie wyzeruje. Zauważ tez że odczyt najpierw SPSR z ustawiona...
http://obrazki.elektroda.pl/6130528400_1... http://obrazki.elektroda.pl/2906458300_1... Witam wszystkich. Chciałbym przedstawić na łamach forum mój projekt, który powstaje już od około pół roku. Tematem projektu jest komputer 8-bitowy oparty o procesor Z80. Założeniem jest, aby zbudować funkcjonalny komputer 8-bitowy...
Napisze ci jak bym to zrobil i przemyslisz sobie sprawe Dodano po 5 1.Zrob pomiary - tak z 120 co 0.2 , 0.4V 2. Wyniki zapisz do eproma z tiny2313 - od komorki 1 a nie od zerowej w epromie (patrz data sheet) zapis taki ze: a) w komórce 1 laduje najmniejszy wynik a w 121 najwiekszy - przy czym wyniki zapisywane sa liniowo - taka aproksymacja odcinkowo...
Dla F4 niestety tak - errata sheet, str. 16 pkt 2.3.2 - najbardziej denerwujący bug nie został w żaden sposób poprawiony w stosunku do F1. W F2 - to samo. Wszędzie gdzie jest ten zonk będą działy się cyrki gdy magistrala zostanie jakkolwiek zakłócona, w tym: - stop w trakcie trwania transferu bajtu (nie wazne czy adres czy dane) - stop w ack slocie...
http://obrazki.elektroda.pl/2748649000_1... Witam, Przedstawiam projekt autorskiego edytora do kart SLE 5528, lub ich starszego odpowiednika SLE 4428 –„SLE 5528 / SLE 4428 Card Editor by vayo” . Na wstępie parę słów o samych kartach. Karty te to 1kB EEPROM z dwu bajtowym kodem zabezpieczającym przed zapisem. Posiadają...
Gotowego programu nie mam, poniżej masz funkcję obsługi 1wire bez których się nie obejdziesz, musisz zrobić sobie tylko odpowiednie funkcje opóźnień, w listingu funkcje nazywają się np. waitus(x) -tzn czekaj x mikrosekund lub waitms -milisekundy, wait10us(x) -10*X mikrosekund itd. dodatkowo musisz przejrzeć aplikację i dopasować komendy, #define MATCH_ROM...
https://obrazki.elektroda.pl/8376286000_... Dzisiaj będziemy rozpracowywać zupełnie nieznany protokół I2C kontrolera LED RGBCW poprzez przechwytywanie i analizę jego pakietów. Użyjemy do tego analizatora stanów logicznych Sigrok, oczywiście zapewniając całemu układowi odpowiednią separację galwaniczną gdyż analizowane urządzenie pracuje...
https://obrazki.elektroda.pl/3928983600_... Opiszę naprawę dość rzadkiej konsoli, polegającą na odtworzeniu schematu pierwowzoru, zaprojektowaniu i wykonaniu płyty głównej i dalszych krokach niezbędnych do przywrócenia jej życia i funkcjonalności, w których zastosowałem swoją nowatorską metodę. Będzie więc coś dla miłośników retro,...
A możesz skontaktować się ze mną na gg?? Wytłumaczyłbym Ci trochę, bo tak trudno trafić, co już wiesz a czego jeszcze nie!! Wszystko w zasadzie można wyczytać z pdf-a, opisującego PCF8583, do pobrania ze strony Philipsa. Ogólnie mogę powiedzieć tak: 1. Rok: Właściwe rejestry zegarowe PCF8583 nie przechowują całej liczby oznaczającej rok, a jedynie cyfrę...
Witam. Dopiero zaczynam programowanie. Mam program w Borland C dla DOS-a 3.1 który powinien wyświetlać czy naciśnięty został jakiś klawisz np SHIFT. Mam tylko dopisać adresy odpowiednich bitów. Wiadomo że w bajcie pod adresem 0040:0017h znajdują się bity odpowiedzialne za informacje o wciśnięciu klawiszy specjalnych klawiatury np bit 0 - prawy SHIFT...
https://obrazki.elektroda.pl/7257498500_... Pokażę tutaj jak można łatwo uruchomić zewnętrzną pamięć Flash z dowolnym mikrokontrolerem w oparciu o programowe SPI. Omówię tu działanie i znaczenie poszczególnych operacji (odczyt, zapis, kasowanie) oraz zaimplementuję je w kodzie. Temat użycia takich pamięci wydaje mi się co najmniej...
https://obrazki.elektroda.pl/4375354000_... Jakiś czas temu dostałem centralkę domofonu. Było to zamontowane w jednym z bloków w Grudziądzu. Postanowiłem się tym trochę pobawić. Poniżej znajdują się fotografie z kolejnych etapów demontażu: https://obrazki.elektroda.pl/3034659400_... https://obrazki.elektroda.pl/7523674300_...
https://obrazki.elektroda.pl/8150253700_... Oto krótka prezentacja wnętrza mikrowieży z odtwarzaczem CD i USB firmy Blaupunkt model MS8BK. Sprawdzę tutaj jak jest ona zbudowana, spróbuję przeanalizować jej firmware z nieznanego mikroprocesora i określić jego architekturę w Ghidra, a potem uruchomię jej wyświetlacz z Arduino. https://obrazki.elektroda.pl/3095604700_...
ebx, esi i edi są rejestrami które musisz zachować w niezmienionej wersji wracając z funkcji. ebx z niczym extra mi się nie kojaży, ecx działa jako licznik w krótkich rozkazach typu "lawinowego": mov eax,0 ; szukamy zera czyli konca stringu (mov al,0 wystarczy, ale kto tak pisze) mov ecx,-1; max 0xFFFFFFFF znaków do przeszukania mov edi,lpString...
https://obrazki.elektroda.pl/9994348800_... Zapraszam na szczegółowe sprawozdanie z budowy prostego termometru/higrometru na bazie części znalezionych w szufladzie. Najpierw dobiorę i uruchomię tutaj wyświetlacz, potem złożę i wykonam niezbędny układ na płytce uniwersalnej, a na koniec do niego dodam czujnik AHT20, tak by móc odczytywać...
https://obrazki.elektroda.pl/1803056600_... W tym artykule opiszę zmagania z odczytem nietypowej składanki, wbudowanej w konsole typu Pegasus. Projekt to pomysł + stworzenie PCB + napisanie kodu w assemblerze 6502. https://obrazki.elektroda.pl/9452065200_... https://obrazki.elektroda.pl/3230638000_...
http://obrazki.elektroda.pl/1342215400_1... Witajcie moi drodzy! Chciałbym wam pokazać kolejny mój projekt oparty na mikroprocesorze z rodziny PIC. Jest to płytka developerska obsługująca komunikację przez USB i RS232 oparta o PIC18F4550. W tym opisie skupię się na funkcjonalności USB, ponieważ jest ona trudniejsza i skutecznie odstrasza...
Zamknięcie się w kilku, czy kilkunastu grupach zestawów tematycznych jest pewnego rodzaju ograniczeniem. Gdzie tu będzie miejsce do twórczości. Jakiś czas temu proponowałem przerobienie generatora znaków na pamięć RAM zapełnianą zawartością ROM po włączeniu i z możliwością modyfikacji pikseli. Zupełnie na wzór generatora znaków w systemie MS-DOS, w...
http://obrazki.elektroda.net/78_12770565... Witam! Zniechęcony rozwiązaniami dostępnymi w internecie postanowiłem napisać własny bootloader dla mikrokontrolerów z rodziny AVR. Gotowe rozwiązania jakie znalazłem były zbyt rozbudowane lub po prostu nie działały. Projekt powstał w około 6-7 dni ale tylko dla tego że było to zagadnienie zupełnie...
http://obrazki.elektroda.pl/3546939500_1... Konstrukcja będąca tematem wątku powstała jako projekt na zaliczenie przedmiotu na uczelni, którego celem było napisanie sterownika dla systemu Linux do jakiegoś urządzenia. Ponieważ miałem swobodę wyboru tematu sterownika, postanowiłem stworzyć jakieś urządzenie w postaci karty ISA. Złącze...
odczyt bajtu flash wysyłanie bajtu transmisja bajtu
windows millenium edition szumy ekran radio error connect 10060
ZTE MF258, Play – ciągłe restarty routera, zasilacz, firmware, przegrzewanie Podłączenie silnika Bosch ProfiMixx bez modułu – test przez żarówkę, bezpieczeństwo, WAGO