Oki. to trzeba zacząć od podstaw, rozumiesz co to jest bajt, słowo,młodszy bajt starszy bajt zapis liczb szesnastkowych?
Poprostu wystarczy napisać: zmienna(uint8_t) = zmienna(uint16_t) i młodszy bajt zostanie skopiowany.
starszy bajt * 256 +młodszy bajt [MUL starszybajt K256 miejsce_docelowe] [ADD młodszybajt miejsce_docelowe miejsce_docelowe]
zamiast s_bajt=temp/0x0100 ; zrób s_bajt=temp>>8; Wprawdzie porządny kompilator powinien to sam zoptymalizować, ale jeżeli tego nie zrobi to masz niepotrzebnie dzielenie zamiast prostego przesunięcia
Nie wiem jak działa na tej Atmedze SPI, ale konfiguracja tego NCO za pomocą SPI 8bitowego powinna wyglądać tak że: 1. Wysyłasz starszy bajt zaczynając od MSB!, 2. Po wysłaniu tego bajta trzymasz FSYNC na low cały czas, a SCLK w idle hi, 3. Wysyłasz młodszy bajt, 4. Po zakończeniu FSYNC na hi. P.S. Pomyliłeś działy.
Składnia: rezultat = LOW( zmienna ) Przeznaczenie: Zwraca młodszą cześć (bajt MSB) podanej zmiennej. gdzie: rezultatzmienna do której zapisana będzie młodszy bajt zmiennej, zmiennazmienna której młodsza część ma być określona.
Miałbym więc prośbę do kol."andrzejlisek", który najlepiej zna ten emulator, czy mógłby sprawdzić emulację rozkazu: LD IY,(nn) czyli FD, 2A, młodszy bajt, starszy bajt liczby.
Witam, mam prośbę. Mam 5 czujników. Każdy czujnik wysyła 3 bajty. Pierwszy mówi mi o tym który to jest czujnik (0;1;2;3;4). Drugi to starszy bajt paczki danych. Trzeci to młodszy bajt. Teraz tak bufor zapełnia się danymi i teraz muszę wyłuskać konkretne mnie bajty. robię modulo 15 tak,by mieć pełny pakiet dla wszystkich 5 czujników (5 czujników po 3...
Zgodnie z rysunkiem 6-1, adc to młodszy bajt, więc nie wiem w jakim celu go przesuwasz. Dodatkowo starszy bajt przesuwasz o zbyt mało miejsc. Operacja powinna wyglądać tak: data musi być zmienną 16-bitową. PS. Zakładam, że połączenia i konfiguracja SPI są poprawne
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...
Format ramek Modbus dla poszczególnych rozkazów http://www.modbus.org/docs/Modbus_Applic... Uzupełnienie dla transmisji szeregowej, w tym sposób liczenia CRC metodą tablicową: http://modbus.org/docs/Modbus_over_seria... Przygotuj ramkę bajt po bajcie w kolejnych rejestrach, wylicz CRC i wyślij. Po otrzymaniu odpowiedzi...
Malutkie 3 grosze na temat sygnałów: ALE, PSEN i EA. ALE/PROG Impuls wyjściowy zapisujący młodszy bajt adresu podczas dostępu do pamięci zewnętrznej. Używany także w czasie programowania wewnętrznej pamięci. PSEN Używany przy korzystaniu z zewnętrznej pamięci EPROM EA/Vpp Podłączony do masy informuje procesor że ma korzystać z zewnętrznej pamięci EPROM,...
wilk125: jeszcze mam takie pytanie, jeśli kwarc zew. mam 8MHz i preskaler ustawiony jest na 8, to jeden takt timera1 w tym przypadku będzie odpowiadał 1us ? Tak Tak powinno być TCCR1B, moja pomyłka Przy odczycie wartości z TCNT1, sróbuj najpierw odczytac TCNT1L(młodszy bajt TCNT1), i następnie TCNT1H (starszy bajt). Chociaż odczyt jak wyżej tez powinien...
Wykonujesz działanie MODULO 256, czyli reszta z dzielenia twojej liczby przez 256. Używając tylko tych działań, które wskazałeś to będzie wyglądało mniej więcej tak: 53380:256=208,515625 itd. czyli liczba 256 mieści się w liczbie 53380 208 razy z jakąś resztą, następnie sprawdzamy ile tej reszty zostaje, czyli: 256*208=53248 i odejmujemy naszą liczbę...
Poniżej przedstawiam działającą procedurkę jaką sobie napisałem do obliczania CRC16 w komunikacji po ModBusie z falownikami. Nie wiem tylko pojęcia czy algorytm obliczania dla ModBus jest jednakowy np z tym dla czujników dallasa z 1-wire ale CRC to CRC :) ;crcl, crch - zmienne zdefiniowane w wewnętrznej RAM ;-----obliczanie CRC16----r0, r1, acc----...
Hmmm. Podpinasz w zasadzie jak sobie chcesz. Chyba, że chcesz korzystać z tego jako zewnętrznego RAM-u (w sensie dostęp rozkazami movx). Napisz coś więcej. Teraz mogę Ci powiedziec tyle, że do adresu fajnie jest zastosować (1 lub 2) rejestry zatrzaskowe 74HC574 podpięte do jednego portu (najpierw wysyłamy np. młodszy bajt adresu, a potem starszy i zatrzaskujemy...
Sam aktualnie ćwiczę ten temat. Zakładam, że w Step7 HWconfig ustawiłeś komunikację na 3AX - 3PD ( 3 słowa ) i adresy I/O. Mamy 3 słowa wej i 3 wyj: PA1 - słowo sterujące ( parametr w SEW 870 ) PA2 - słowo np. prędkość obrotowa ( parametr w SEW 871 ) PA3 - rezerwa ( parametr w SEW 872 ) PE1 - słowo statusowe ( parametr w SEW 873 ) PE2 - słowo np. prędkość...
'do liczby 1536 trzeba by jeszcze coś dolożyć, na wykonanie instrukcji Zasadniczo nie trzeba nic dokładać, bo wartość timera jest inkrementowana sprzętowo od razu (w kolejnym cyklu maszynowym). Czyli już w trakcie obsługi przerwania. Jeżeli obsługa timera zmieści się w 255 cyklach maszynowych, to zmieniany jest tylko młodszy bajt timera - czyli w procedurze...
Coś mi tu nie gra. Potrzebny jest kawałek schematu. Skąd się bierze sygnał A4? Bo na razie próbujemy grać w szachy bez szachownicy. Co tutaj może nie grać? W systemie 8085 sygnał A4 może pochodzić tylko z jednego miejsca, z magistrali systemowej, gdzie jest trzymany w rejestrze (w moim przypadku 74HCT573), bo młodszy bajt magistrali adresowej jest...
TH0 i TL0 to rejestry 8-bitowe - przy czym TH0 to starszy, a TL0 młodszy bajt licznika T0... zatem, aby prawidłowo wpisać je do zmiennej typu unsigned int, należy najpierw TH0 przesunąć o 8 bitów w lewo, a następnie operacją bitową (OR) dodać młodszą część licznika. Załóżmy, że: (odstępy zrobiłem dla lepszej czytelności) TH0 = 0b 1000 1000 TL0 = 0b...
Aby zlepić bajt młodszy ze starszym w dwubajtowe słowo, będziesz musiał użyć operatora "shl": slowo := (starszy shl 8) + mlodszy;
To już bym wolał wskaźnikowo się odwołać... Niezależnie od rozwiązania to jeszcze jedna uwaga: Trzeba być pewnym, że operacje na słowie odbywają się w kolejności nieodwróconej (czyli nie jest zapisywany najpierw młodszy bajt a po nim starszy bajt słowa).
Z pewnością sposobów jest mnóstwo. Przypomniałem sobie troszkę asembler mcs51. Mam nadzieję, że program w asemblerze wyjaśni wątpliwości (albo pogłębi ;-) ). Skorzystanie z "tabliczki dzielenia" lub "tabliczki mnożenia" na liczbach o podstawie 2^8 przedstawia poniższy program. Tabelę rozbiłem na 3x256 bajtów. Obliczenie realizowane wg zależności x=256*a+b...
Jedyne, co mi przychodziło do głowy, to przesunięcie bitowe w prawo i tak właśnie napisałem, jednak albo moja odpowiedź była zbyt ogólnikowa, albo nie o to chodzi wykładowcy. To jest ośmiokrotne przesunięcie bitowe w prawo. Ten sam efekt uzyskamy, odrzucając cały młodszy bajt. Jeżeli zaokrąglenie ma być zgodne z zasadami arytmetyki, to gdy młodszy...
tak, zmienne "odczyt" mogą być typu byte (zapomniałem o nich :P ) makeint() robi z dwóch bajtów jeden (najpierw podaje się bajt młodszy a potem starszy) np jeśli masz dwa bajty 255 to makeint zrobi z nich liczbę 65535 a abs() robił moduł z zadanej liczby, cyzli jesli wpiszesz do modułu liczbę -2 to w wyniku funkcji otrzymasz 2 :) mój algorytm jest najprostrzy...
Witam. Chcę wysłać do urządzenia po modbusie RTU komendę załączającą jedno z wyjść przekaźnikowych. Moje pytanie to jak powinna wyglądać ramka na podstawie poniższych danych: Bity nadawane przez koncentrator: ADRES-adres urządzenia (1bajt) FUNKCJA-5(1bajt) ADRES HI-adres wyjścia (starszy bajt)-0 ADRES LO-adres wyjścia (młodszy bajt)-1,2 lub 10 WARTOŚĆ...
SP to rejestr 16 bitowy, podzielony na 2 częsci , młodszy bajt oznaczony SPL i starszy bajt oznaczony SPH. inaczej mozna by zapisać SP jako SP=SPL + 255*SPH SPL=&HDF, oznaca ze młodszy bajt wskaźnika stosu zostanie ustawiony na wartość &hDF, czyli na DF w zapisie hexadecymalnym (szesnastkowym ) Odpowiada to wartosci dziesietnej 223.
Ten typ tak ma ;) W Siemensie te bajty są zamienione. MB100 to starszy, a MB101 młodszy bajt słowa MW100.
Nie lubię i nie używam Basica, ale moim zdaniem jest tak: PRINT wysyła dane typu STRING, a FUSING zamienia liczby na ciągi ASCII. Dodatkowo PRINT wysyła znaki końca wiersza. Żeby wysłać bajt spróbuj CHR() mniej więcej tak: PRINT CHR(Msb); CHR(Lsb) Teraz wysłane zostaną dwa bajty - starszy i młodszy a za nimi znaki końca wiersza. Teraz...
mam taki problem bo nie wiem jak policzyć ile poniższe programy zajmują bajtów nie wiem jak to policzyć czy mogłby mi ktos w tym pomóc czy chociaż naprowadziłby mnie ktoś na jakiś link gdzie mógłbym to sam wykombinować są to programy w asemblerze avr programy na sume i różnice liczb 16 bitowych bardzo prosze o jakieś wskazówki zgóry dziekuje oto te...
Witam, Do fukncji MAKEINT najpierw trzeba wpisać młodszy bajt a potem starszy... sprawdź czy napewno tak masz :)
$include (REG51.inc); dołączenie definicji rejestrów uK (kompilator RA-51 Raisonance) NAMEOBSLUGA_AT24C64 ;Poniżej definicje stałych użytych w programie FIXEDADDR EQU0A0H;stała częśc adresu pamięci 24C64 USRADDR EQU0;ustawiana przez użytkownika część adresu (wartości 0..7) MEMSIZE EQU2000H;liczba bajtów dla 24C64 PMEMSIZE EQU32;liczba bajtów na stronę...
Góra - 00, 72 Dół - 00, 80 Lewo - 00, 75 Prawo - 00, 77 To są akurat kody strzałek na klawiaturze numerycznej (tylko w dec)... kursory mają ten sam młodszy bajt, ale starszy to 224 (E0).
Ja to sobie nieco inaczej wyobrażam: najpierw kurs architektury i małe wprowadzenie do asemblera, a następnie przesiadka na język wyższego poziomu. Brzmi to bardzo patetycznie, tym niemniej nie ma co się na asm obrażać, kompilacja niektórych wyrażeń standardowych (pętle, warunki itp) mnie osobiście zachęca do zrobienia wstawki w asm, która załatwi...
Problem polega na tym, że odczytujesz wartość ADC z uC zamiast z DS18xxx. Brakuje ci obsługi DS18B20. Poniżej fragment kodu działającego u mnie. [syntax=vbnet] Config 1wire = Portb.0 '0,1,2 NOP 3,4,5,6,7 works good ON MY Equipment Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms...
Domyślam się, że chodzi o to, w jaki sposób kodowane jest słowo 16 bitowe na 2 bajtach. Tylko zastanawiam się, dlaczego dwa edytory po wczytaniu tego samego pliku pokazują inną kolejność wyświetlania tych bajtów. Czy kolejność aby na pewno nie powinna być zdefiniowana w pliku BIN? Dlaczego jeden z edytorów przestawia sobie kolejność na odwrotną? A tak...
Widać, że po dwa ostatnie bajty odpowiadają rozdzielczości odpowiednio: poziomej i pionowej ale pomniejszonej o 1 i zapisanej w osobnych bajtach jako starszy i młodszy. Wpisz tam obliczone wartości na podstawie rozdzielczości twojego wyświetlacza
Witam, skonfigurowałem i uruchomiłem kod obsługi termometru z interfejsem 1wire na pomocą UART. Mam taki problem, że w temperaturze pokojowej (około 23C) odbieram z niego dane : Młodszy bajt wynosi : 250 Starszy bajt : 6 Przy temperaturze ciała odbieram: Młodszy bajt: 190 Starszy bajt: 8 Dodam, że ze wzrostem temperatury wartość młodszego bajtu rośnie,...
Cześć, potrzebuję rozbić w D-Script słowo dwubajtowe na osobne bajty i za chiny nie mogę tego ogarnąć :) Infolinia Proface nie działa... Ogólnie problem wygląda następująco: Mam recepturę której nazwę kopiuję do zmiennej typu WORD, później tą nazwę muszę wysłać do innego urządzenia ale jako pojedyncze znaki. Niestety na tą chwilę każda zmienna mieści...
[syntax=c]#define SS1 PORTB |= (1 << 0) #define SS0 PORTB &= ~(1 << 0) #define CRG 0xF4 //rejestr konwersji #define TMP 0x2E //odczyt temperatury #define PRS 0xF4 //odczyt ciśnienia z overs x8 #define RAD 0xF6 //rejestr odczytu #define REG 0xAA //adres pierwszego rejestru typedef struct { int16_t ac1; int16_t ac2; int16_t ac3; uint16_t...
Cóż, jak to sie mówi, niezły hardkor:P Ale jeśli chodzi o mnożenie liczb wielobajtowych to można rozwiązać to tak jak mnożenie w słupku, czyli powiedzmy mamy do wykonania działanie a:b*c (gdzie a:b jest liczbą dwubajtową - starszy bajt - a i mołodszy b). Rozpisujemy to tak.... jako liczbę wielobajtową, gdyż w goólności iloczyn dwóch liczb jednobajtowych...
Niecbyt wiele danych podałeś jak na sumę kontrolną, która może być liczona na różne sposoby, tym niemniej chyba coś udało mi się zauważyć, mianowicie że różnica pomiędzy słowami zawierającymi dzień i miesiąc równa się różnicy pomiędzy słowami sum kontrolnych: 1711 - 0108 = 1609 8086 - 6A7D = 1609 Rachunki oczywiście w hex, przy czym nie wiadomo jaki...
Zamiast dzielić lepiej przesuwać i andować unsigned int c; unsigned char a, b; a = c >>8; // pobieramy starszy bajt b = c&0xFF; // pobieramy młodszy bajt Ewentualnie można odwołać sie poprzez wskażniki (w tym wypadku jednak znaczenie ma ułożenie danych danego kompilatora big endian lub little endian) np: unsigned int c; unsigned char a, b; a =...
Pewnie chodziło o ten fragment... Ocr3al = Low(wypełnienie) Ocr3ah = High(wypełnienie) Oznacza to, że wartość którą chcemy wstawić do rejestru odpowiadającego za wypełnienie musimy rozbić na młodszy i starszy bajt i według kolejności jak wyżej wstawić odpowiednio młodszy bajt do OCR3AL a starszy do OCR3AH... Opisane jest to w dokumentacji na stronie...
Piszesz: I2cwbyte Adres Zobacz jaką wartość wysyłasz jako adres. Bajt to 8 bitów, więc od wartości 255 jako adres wysyła Ci tylko młodszy bajt adresu.
Nie widzę tu jakichś prawidłowości. Ja widzę, pierwsza - regularnie występują bajty synchronizacyjne 7f, 7f a po nich wartości binarne. Jedno jest pomieszane - część bajtów jest HEX a część jako ASCII a to strasznie miesza - trzeba te ASCII zamieniać na HEX i potem dekodować liczby. Problem jest jak pojawi się spacja bo słabo ja widać a też ma swój...
przesyła sie w kolejności: starszy bajt (H) potem młodszy bajt (L) >> oznacza przesówanie binarne w prawo 0xFF to liczba 255. w bitach: 11111111. służy to do oddzielenia młodszego bajtu od starszego... ten fragment wyżej dzieli wyraz (2 bajty) na 2 samodzielne bajty które można potem wysłać..
;Sumowanie dwóch liczb LICZBA1 i LICZBA2 wynik sumowanie umieszczony w WYNIK. LICZBA1EQU 40;Adres gdzie znajduje się pierwsza liczba LICZBA2EQU42;Adres gdzie znajduje się druga liczba WYNIKEQU44;Adres gdzie znajduje się wynik sumowania MOVA,LICZBA1+1 ;Do akumulatora pobieram młodszy bajt pierwszej liczby ADDA,LICZBA2+1 ;Do akumulatora dodaję młodszy...
Hmmm... Nie wiem co działa a co nie działa. Wiem, że pierwsze co mi się rzuca w oczy to to, że rejestr UBRRL jest 8 bitowy, zatem wpisanie do niego wartości większej niż 255 nie daje zamierzonego efektu (wpisze się bowiem młodszy bajt).
nie mam teraz bascoma ale spróbuję coś poradzić tylko musisz zobaczyć jak w bascomie zapisywana jest zmienna typu long, bo może sie okazac że moja rada będzie do bani... > deklarujesz zmienną long to jest (chyba 4 bajty): xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx > zapisujesz w niej dwa starsze bajty: xxxxxxxx xxxxxxxx SSSSSSSS SSSSSSSS > teraz trzeba by...
Witam męczę sie nad transmisja rs232 między uC a PC. Wymyśliłem juz jak stabilnie odbierać w kompie za pomocą komponentu Comport 2 bajty. Niestety próby połączenia ich w 1 liczbę gdzie 1 bajt jest młodszy a 2 starszy czyli w liczbę 16 bitową nie za bardzo mi wychodzą. Próbowałem przemnażać młodszy bajt przez 256 albo przesuwać zawartość rejestru operatorem...
Nie wiem skąd te szpilki. Sygnały z analizatora stanów logicznych nie mają ustawionych etykiet, co utrudnia analizę. Ok. Dla uproszczenie usunąłem pliki, na których w wyniku mojego niedopatrzenia pojawił się błąd z milczącymi liniami A14 i A15. Plik bus2.png pokazuje młodszy bajt magistrali adresowej. Natomiast bus4.png to starszy bajt. Nie ustawiłem...
Cały problem, który spędza sen z powiek BD to rozpoznanie bitu startu przez odbiornik. W konkretnym przypadku jak w wątku (nadawane wartości 10 bitowej ciągle na 2 bajtach) taka sytuacja MOŻE wystąpić i odbiornik jej nie wykryje tylko w przypadku, jeśli zarówno starszy jak i młodszy bajt nadawanej wartości będą miały równocześnie 2 najmłodsze bity o...
Rozbij ją na starszy i młodszy bajt. Starszy_bajt = Liczba_integer div 256 Mlodszy_bajt = Liczba_integer mod 256 Aby je potem złożyć: Liczba_integer = Starszy_bajt * 256 + Mlodszy_bajt Pozdrawiam...
Nie wiem czy dobrze, w dodatku nie rozumiem jak zanumerować BS. Nie wiem też czy zamiast x w tabelce rozumieć jako 0? [syntax=vbnet]Do I2cstart I2cwbyte 192 I2cstop '//Dzielnik - starszy bit I2cstart I2cwbyte 14 ''(div_h) i2cstop '//Dzielnik - młodszy bajt I2cstart I2cwbyte 0 ''(div_l); I2cstop '//Bajt kontrolny I2cstart I2cwbyte 12 ''(ctrl); I2cstop...
Normalnie zaraz z podziwu wyjdę z siebie i stanę obok... Sam sobie zaprzeczasz. Bo wpisanie do TL0 66h wcale nie spowoduje zliczania od 66h, bo licznik jest 16 bitowy, a to zmienia tylko młodszy bajt. Więc zliczać będzie od (poprawniejszy zapis będzie) FFh*TH0 + 66h. Zresztą wątliwości autora postu już chyba zostały rozwiane. Miuego dnia ;-)
union { unsigned int pwm; unsigned char pwmc[2]; }volatile upwm; Co to jest unia - polecam jakis kurs C np http://galaxy.uci.agh.edu.pl/~chwastek/l... , a po krótce po zdefiniowaniu uni jak w twoim przykladzi emamy dostęp do jej zmiennych w taki sposób: możemy przypisać do upwm.pwm liczbę 2 biajtowa (16 bitowa), a upwm.char[0] -to młodszy...
void write_to_lcd(char x) { SET_E; out_nibble(x >> 4); // wystawienie na szynę danych starszej połówki bajtu CLR_E; // opadające zbocze na E powoduje zapis do wyświetlacza SET_E; out_nibble(x); // wystawienie na szynę danych młodszej połówki bajtu CLR_E; // opadające zbocze na E powoduje zapis do wyświetlacza _delay_ms(1);...
ldi yl, low(RAM) ldi yh, high(RAM) załadujesz adres. teraz jak masz juz w Y adres mozesz kopiować wartość na przykład do r16: ld r16,Y a jezeli zmienna ram jest 2 bajtowa to : ld r16,Y ldd r17,Y+1 tylko musisz sie dowiedziec czy młodszy bajt jest pod niższym adresem czy na odwrót( kiedyś to wiedziałem :)).zapis realizujesz przez st std. Y to rejestr...
pierwszy bajt starszy np:=8 drugi bajt młodszy np: =4 8*10 +4=84; :)
Ten procek nie ma również I2S - gdyby miał nie było by problemu :-) Ma za to 2 x UART - ale nie widziałem przetwornika z takim interfejsem... Tak przy okazji jeszcze generacji dzwięku - gdybym np. puscił na dwa PWM - na jeden PWM starszy bajt próbki 16-bitowej, na drugi PWM, młodszy bajt próbki 16-bitowej, a ich wyjscia analogowe zsumować potem - dla...
Ale jeśli to byłaby wina opóźnień to nie powinno być w ogóle jakiegokolwiek odczytu temperatury. Skoro młodszy bajt jest odczytywany to starszy też powinien się odczytywać nie? A co do twojego pliku to skąd wziąłeś plik nagłówkowy "1-Wire.h"? Rezystor podciągający mam 3k bo w dokumentacji czujnika piszą o jakimś zwiększonym poborze prądu. Wcześniej...
Odczyt pozostałych wartości kalibracyjnych też budzi moje wątpliwości. Młodszy bajt w każdej zmiennej jest zawsze równy zero. Z drugiej strony komunikacja działa ponieważ jak dotknę palcem czujnik to odczyt temperatury wzrasta. A więc wygląda że komunikacja jakoś działa. Mały sukces jednak jest. Sprawdziłem że temperaturę czujnik podaje prawidłową....
W radiach samochodowych pamięci microwire (czyli 93xx) odczytywało się w organizacji 16 bitowej. Nie pamiętam odczytu w organizacji 8 bitów ale możliwe, że jakiś radio tak miało. W wyświetlaczach Opla rzeczywiście w 8 bitowej i pin był jawny. Oczywiście, dla bezpieczeństwa, można odczytać pamięć w obu organizacjach (i zobaczyć różnice, jeśli pamięć...
Zerowanie timera powinno być zrobione tak: if (a==2) { PortLED2=0; TH0=0; //zerowanie licznikow TH0 TL0=0; //i TL0 przed pomiarem } W twoim kodzie timer był zawsze zerowany, niezaleznie od tego czy dwa impulsy wystąpiły, czy nie. No i nie wiem, czy powinienes sprawdzać TH0 czy TL0. Sprawdź, który z tych rejetrów zawiera młodszy bajt wyniku, bo to niego...
Hmmm... , prwadopodobnie chodzi o załadowanie wartości 1000 , do pary rejestrów A i B , gdzie A=młodszy bajt i B=starszy bajt. MOV B,#>1000 MOV A,#<1000 ;lub MOV B,#03 MOV A,#0E8H ;lub MOV B,#3 MOV A,#232 Jakaś dziwna składnia :| Piotrek
mod nie operuje na int64, próbowałem przed załozeniem tematu. Jak odzyskac najmłodszy bajt z liczby 8 bajtowej? Lo(x) nie działa. To ciekawe bo u mnie (D7) mod dziala na int64
Trzeba zrobić timer ze zliczaniem co 1us (lub coś około) oraz dodatkową zmienną inkrementowaną przy przepełnieniu takiego licznika. Funkcja odczytująca czas podawałaby wartość takiej zmiennej jako starsze bajty informacji zwrotnej oraz TCNT jako młodszy/młodsze bajty.
Dzięki za zainteresowanie się problemem. Zastosowałem się do wskazówki, ale niestety dalej to samo. Udało mi się pożyczyć karty pomiarowej, i z tego co widać dane przesyłane przez czujnik są poprawne 22-23 C. No to spróbowałem coś takiego ..odczytać młodszy bajt i następnie go wysłać... Późno trochę już wiec może głupoty robię ale wydaję się że to powinno...
Witam Mam następujący problem: używając polecenia $eeprom lub $eepromhex tworzę pliki z wartościami które chcę wgrać do eeprom problem jest w tym, że podczas kompilacji w tych plikach nie są zapisywane poprawnie wartości np 500 (zmienne integer). Po przejrzeniu skompilowanych plików widać, że zapisywany jest tylko młodszy bajt. Natomiast w samym programie...
<label to tylko dyrektywa asemblera, której wynikiem jest młodszy bajt etykiety label. Czyli jeśli label jest pod adresem $abcd, to lda <label jest równoznaczne z lda $cd czyli wczytanie do akumulatora komórki pamięci spod adresu $cd. Niech potwierdzeniem moich słów będzie poniższy zrzut z symulatora: http://obrazki.elektroda.pl/6727883800_1...
Też stosowałem kiedyś tą metodę "wyskoczenia" z przerwania we wskazane przeze mnie miejsce i wszystko działało, tutaj też nie widzę błędów o ile "jakies_miejsce" to młodszy bajt adresu i po wykonaniu określonych tam działań nie chcesz wracać do miejsca jeszcze sprzed przerwania. Ale Twoim problemem jest reakcja na stan niski z intx zamiast na zbocze...
Fajny ładnie wykonany projekt. Chciałem jeszcze podpowiedzieć co do obsługi ds'a: T = Odczyt(2) 'przepisz starszy bajt do zmiennej typu Integer Shift T , Left , 8 'przesuń ten bajt w lewo na wyższe pozycje T = T + Odczyt(1) 'przepisz - dodaj młodszy bajt T1 = T / 16 Jakbyś zmienił to na: t = read(2) t1 = t shift t1 , right , 4 To odpadają Ci dwie zmienne...
Rejestrem EEWE? Nie myl takich rzeczy bo łatwo kogoś (albo nawet samego siebie) wprowadzasz w błąd. EEWE to bit z ATtiny26. Przypuszczam że chodzi ci o rejestry EEARH i EEARL. Jest to adres komórki którą chcesz zapisać lub odczytać w pamięci EEPROM. W przypadku ATtiny861, który ma 512 bajtów EEPROM starszy rejestr adresowy (czyli EEARH) będzie przyjmował...
Nie za bardzo rozumiem o co ci chodzi ale działa to tak. 8086 jest 16 bitowym procesorem z 8 bitowymi rozkazami. Przy pobieraniu rozkazu (instrukcji) przez procesor z pamieci pobierane jest 8 bitów danych. Jeżeli wykonujemy odczyt (zapis) z (do) pamięci to możemy sami decydować jak chcemy te dane otrzymywać (wysyłać), czy jako słowa 16 bitowe czy też...
Masz może schemat tego próbnika? Dodano po 3 Kości ze stajni Intel nie są w/g mnie badziewne, one mają swoją specyfikę i tyle Ładna mi specyfika. 8255 zeruje porty wyjściowe po zmianie konfiguracji. O tyle bolesne, że najczęściej obowiązuje logika ujemna. 8253/54 - czytamy timer, młodszy czy starszy bajt? Nie wiadomo, trzeba odczyt poprzedzić odczytem...
witam posiadam kość RAM CS18LV02560 , proszę mnie poprawić bo się pogubiłem,czy dobrze rozumiem adresacje , młodszy bajt adresu podaje na piny A5-A14(pomijając pin 10) a starszy bajt na piny A0 - A4+A10 ? http://obrazki.elektroda.pl/5241104500_1... w załączniku nota katalogowa . Wg. sprzedawcy jest to zamiennik dla kości K6X0808C1D-GF55...
Cześć, Napisałem program, który uruchamia 16-bitowy Timer (TCNT1 w ATmedze 128). W moim programie Timer zlicza przez 128ms (dolicza w tym czasie do wartości 1000). Następnie wyświetla młodszy i starszy bajt Timera na wyświetlaczu alfanumerycznym (odpowiednio wartości dziesiętne 232 oraz 3). Do tej pory wszystko działa, ale gdy chcę wysłać odczyt każdego...
Oczywiście linie są podciągnięte, robiłem testy na hal i komunikacja działa czyli sprzętowo można uznać że jest dobrze. zmienną maddr ustawiłem na uint16_t i w celu wysłania podzieliłem na starszy i młodszy bajt bo rejestr DR jest 8 bitowy jednak dalej zatrzymuję mi się na pętli while [syntax=c]while (!(I2C1->SR1 & SR1_TXE)){}[/syntax] Oto zmodyfikowany...
Liczba: 36115358506580996 to inaczej: 1000 0000 0100 1110 1011 1010 0010 1010 1011 1000 0111 1100 0000 0100 Teraz, licząc od najmłodszego bajta (z prawej) i biorąc 16 bitów (2 bajty), mamy wynik: 0111 1100 0000 0100 = 31748 Kolejny bajt (czyli trzeci od prawej): 1011 1000 = 184 Jeżeli chodzi o liczbę 0799580650500 , to stanowi ona...
adres_lo = (unsigned int)przyklad; Adres jako taki, jest typem wskaźnikowym, innym niż int, więc bez jawnej konwersji kompilator będzie się "czepiał". P.S. adres zmiennej to adres nizszego bajtu. Pojęcie "niższy" zabrzmiało mi tu trochę niejednoznacznie. Domyślam się, że miałeś na myśli właśnie pierwszy, w sensie pierwszy w pamięci. Osobiście...
Wiesz jaka jest różnica między 3 + 1 a 3 | 1 ? Pojechałeś za daleko. W przykładzie, do którego się odnosisz mamy dodawanie dwóch liczb uint16_t, z których jedna ma wyzerowany młodszy bajt, a druga starszy. Napisz proszę czym się wtedy różnią te operacje. Albert Ustawieniem rejestrów stanu procesora po operacji:) Dodano po 14 BTW, coś wygrałem ?:)
Mam układ jak na rys. Jednak port P0 (młodszy bajt adresu multipleksowany z bajtem danych) zawsze jest w stanie logicznego zera. Gdy na porcie ma być 1 napięcie wynosi ok. 0.20V (kiedy mierzyłem, wszystkie układy poza prockiem były wyjęte). Układ sprawdzałem kilka razy i nie ma żadnych zwarć, kość chyba też jest sprawna, bo testowałem z inną (też c52)...
Witam, Zrobiłem sobie programator Willem 3,0 i tu pojawia się pytanie: czy jest opcja w programie programatora żeby nagrać plik z danymi 16bit do dwóch kości 8bit? Inaczej mówiąc,czy jest opcja do podziału na starsze i młodsze bajty. ten podział pliku - "wsadu" - na dwie części zawierające oddzielnie starszy i oddzielnie młodszy bajt słowa 16-to bitowego...
Nie mam kodu na 407 bo zazwyczaj korzystam z zewnętrznej pamięci jeśli w ogóle. Ciężko coś powiedzieć bez analizy poszczególnych funkcji. Na F030 używałem takiej funkcji do zapisu i ewentualnego kasowania strony: [syntax=c]//EEPROM #define FLASH_END 0x0800 #define FLASH_ADDR 0x0803F800 //ostatnia strona (page 127) #define EEPROM ((uint16_t *)FLASH_ADDR)...
segal: ja biore np jakąś kombinacje np $5af, każdy bit odpowiada jednej lampie... teraz dziele sobie to na starszy bajt i młodszy bajt.. i otrzymuje: $05 i $af $05 wysyłam na portd a $af na portb i kłopot rozwiązany... nom.. niestety ja pisze tylko w asm.. w bascomie nie... jak jusz napisałem no to dam na forum.. może komuś innemu sie przyda.. komuś...
Mam natomiast pytanie co oznaczaja znaki przy "ladowaniu tablicy": <<, +1, *2 itp n01x Zapewne zastanawia cię takie adresowanie tablicy w pamięci. Wynika to z tego ,że pamięć programu jest 16 bitowa więc komórki mają postać 0xFFFF co za tym idzie w każdej komórce masz starszy i młodszy bajt aby sięgnąć po właściwy należy dokonać takiej operacji....
Witam czy ktoś potrafi podać przyczynę dlaczego zmienna "czas" raz przyjmuje wartość 1000 a raz 768 w tym programie? Problem tkwi w tym, że nie zapewniasz atomowego dostępu do zmiennej czas (inkrementowanej w przerwaniu) podczas porównania: Zmienna czas jest tu porównywana ze stałą 1000, która hexadecymalnie jest równa 0x03E8. Jeśli zmienna ma wartość...
... I do zmiennej Odczyt(1) leci 0000 0000 a do zmiennej Odczyt(2) leci 1010 0010 Mam rację? Nie masz racji i zamiast pytać na forum, zajrzyj do dokumentacji DS-a Poza tym , jeśli rozumiesz swój(?) kod z 1-go postu, to pomyśl nad tym fragmentem: Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty T = Odczyt(2) 'przepisz starszy...
Witam Nie myli się kolega Dareks do DS 18B20 trzeba inny program. Mam coś takiego 1wreset 'reset 1wwrite &HCC 'jedna kostka więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms 750 'poczekaj czas konwersji 1wreset 'reset 1wwrite &HCC 'rozkaz adresowy SKIP ROM 1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu Odczyt(1)...
Skoro działa to fajnie. Ale wcześniej błąd zrobiłeś tutaj: ldi r27,&H00 'ustawiam adres w pamieci dla tablicy 512 bajtow ldi r26,&H273 'było &H60 zmiennej BUFOR z ktorej bede czytal dane do zapisu r26 to bajt młodszy L, r27 to bajt starszy H do wskaźnika w pamięci dla tablicy bajtów. Bajt może mieć max wartość FF lub decymalnie 255, natomiast ty wpisałeś...
Wklej i zapuść symulator Bascoma: Dim Mbt As Byte 'młodszy bajt temperatury Dim Sbt As Byte 'starszy bajt temperarury Dim Dz As Byte Dim T1 As Integer Mbt = &HF8 : Sbt = &HFF 'wartości z tabeli w dokumentacji dla temp. -0.5 'warto spróbować wstawić inne Do T1 = Makeint(mbt , Sbt) T1 = T1 * 10 : T1 = T1 / 16 Dz = T1 Mod 10 T1 = T1 / 10...
Witam Sorki za to 37 faktycznie będzie działać . W takim razie mamy dwa problemy 1. panel przesyła dane do sterownika w formacie szesnastkowym a sterownik wymaga w dziesiętnym . dziesiętnie 16 to w hex 10 działa dziesiętnie 18 to w hex 12 działa dziesiętnie 37 to w hex 25 działa dziesiętnie 255 to w hex FF nie działa - licznik dostaje niedozwolone znaki...
Powinno zadziałać przy odczycie. Co do zapisu to nie byłbym taki pewien, chyba że pamięć wewnętrznie potrafi zatrzaskiwać połówki szyny danych przed zapisem. Po rzucie okiem na schemat blokowy wygląda że potrafi. Ale... Czy przypadkiem nie będzie tak, że żeby zapisać jeden bajt, trzeba będzie odczytać drugą połówkę słowa i zapisać całe słowo? Ciekawe...
1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms 750 'przeczekaj czas konwersji 1wreset 'reset 1wwrite &HCC 'rozkaz adresowy SKIP ROM 1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu DS18x20 Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty T = Odczyt(2)...
Witam Aby nie wyjechać zbyt daleko musisz sprawdzać warunek ile razy została wykonana funkcja rotate. Co do drugiego to możesz utworzyć zmienną typu WORD i ją potraktować poleceniem ROTATE, teraz tniesz zmienną na połowę, jedną część wysyłasz na jeden port a drugą na drugi, jest problem z tym że małe Atmele nie maja pełnych niektórych portów, chyba...
na temat poprzedzających mnie 2 postów: obaj niemacie racji, w kodzie wyraźnie widać: I2cstart ;start I2cwbyte 160 ;adres układu I2cwbyte 0 ;starszy bajt adresu <<<---- I2cwbyte Adres ;młodszy bajt adresu. <<<---- I2cwbyte Value Waitms 10 I2cstop a więc wasze posty nic niewnoszą do tematu, poprostu kod jest poprawny. p.s. waitms 10...
To jest kod z pdf'a i u mnie nie działa... UCSRC nadal ma same zera... Nawet jeśli to jest kod z pdf-a , to jest to błędny kod.Jeśli byś chwilkę pomyślał , to sam byś doszedł , gdzie jest ten błąd. UBRRH = (unsigned char)(ubrr); //młodszy bajt do UBRRH UBRRL = (unsigned char)ubrr; // j/w Powinieneś to zauważyć i ... UBRRH =...
Witam Do 1wreset 'reset 1wwrite &HCC 'jedna kostka więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms 750 'poczekaj czas konwersji Disable Interrupts 1wreset 'reset 1wwrite &HCC 'rozkaz adresowy SKIP ROM 1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty Enable...
W niektórych PIC nie ma tego buforowania i za to trzeba sobie wykonać bardziej skomplikowaną procedurę sprawdzenia czy nie rozjechał się młodszy i starszy bajt. . Byłbyś uprzejmy napisać w których? Wtedy post miałby przynajmniej jakąś wartość. Albert
młodszy słowo młodszy specjalista młodszy automatyk
praca niemczech tranzystor bc547c kontrolki klawiatury komputera
telewizory sharp opinie telewizory sharp
Śrubka kalibracyjna termostatu lodówki – funkcja, regulacja, Bosch, Whirlpool, Gorenje Rygiel drzwiczek pralki Samsung, Electrolux, Bosch – samoczynne odskakiwanie, diagnostyka, typowe usterki