A zamieniłeś wszędzie , miejsca gdzie było 'dword ptr i' na 'edi', a 'dword ptr j' na 'esi' ? Poza tym, czemu wywaliłeś 'add esp, 0x0c' za wywołaniem funkcji???
:arrow: - to lepiej zrobić w asemblerze, najprościej zapisać wskaźnik stosu do zmiennej i wywołać funkcję w C bez argumentów, która użyje zapisanej wartości wskaźnika stosu, aby się dostać do argumentów programu. A jeśli chodzi o syscall() i __syscall_error - można użyć pierwszego z biblioteki libc, i dopisać swój __syscall_error() w asemblerze (konieczne,...
Czy są jakieś ograniczenia w bascomie na skok wykonywany przez instrukcję gosub?? Chodzi mi o to czy może skoczyć np. do etykiety oddalonej od wywołania funkcji gosub o 300 linijek?? W asemblerze jest coś podobnego o ile wiem na funkcję ljmp? Proszę o pomoc. Pozdrowienia limatorek
http://www.elektroda.pl/rtvforum/topic87... tu masz opisane wraz z dzialajacym przykladem ;) To akurat mój wątek, ale dotyczący innego problemu. Zresztą mam go już za sobą. Tym razem chodzi o wywołanie funkcji z własnej biblioteki napisanej w asemblerze. Jestem już krok dalej. Funkcję już umiem wywołać. Problem jest z przekazaniem argumentów...
Chodzi mi o to żeby tak, jak zrobiłem to w przypadku funkcji do enkodera podejrzeć wartości zmiennych w danym momencie programu i świetną sprawą byłoby śledzić program linijka po linijce, skoki do funkcji, powroty z funkcji, stan stosu, wywołanie przerwań i ich wykonanie. Wiem, że dla PICów programowanych w asemblerze jest coś takiego, a przynajmniej...
A w czym on jest jak nie w asemblerze?:P Pierwsza część jest cała w nim (prócz może wywołania funkcji). Druga część to wersją robocza, która przetłumaczyłem na asemblera. Zmienne są zadeklarowane w odpowiednich "portach"(nie wiem czy tak to się nazywa) Co do powtarzania to nie widziałem go jeszcze. A to mój program a nie kogoś i jakoś nie chce "zrzynać"...
Ale jest generowanie ciągłe przerwanie - jedno po drugim. Program się zawiesza. Dodam że program nie wchodzi do funkcji z pliku .c - fatfs. Pada na styku wywołania funkcji z kodu .c Przy czym w asemblerze istnieje jakby dobry adres wywołania funkcji: 0x080009b6 <_ZN4mysd4testEv+22>: bl 0x80001fc <f_mount> A oto cały kod disasemblera...
wynik wyswietli sie 2x, a nie trzy, pytanie - dlaczego? Na to pytanie, odpowiedź jest prostsza :-) Kiedy wywołujesz return 0, funkcja main powraca (to ogólnie nie najlepszy pomysł). W asemblerze, wywołanie funkcji main wygląda tak: 48:32 d0 rcall.+100 ; 0xae <main> 4a:4e c1 rjmp.+668 ; 0x2e8 <_exit> Po zakończeniu funkcji main wykonany...
Pisze programy w asemblerze na mikrokontrolery lpc111x (lpc1114). Ponieważ korzystam z takiej płytki - .syntax unified .cpu cortex-m0 .align2 .globalsystick_init .thumb .thumb_func systick_init: //wyzerowanie rejestru SYST_CVR movs r1, #0 ldr r0, =0xE000E018 str r1, [r0] //wpisanie wartosci odliczanej do rejestru SYST_RVR movs r1, #1 lsls...
marcel333 --> stos nie jest czymś co zostaje ustalane a raczej jego wielkość w procesie kompilacji czy optymalizacji ;) ..... stos to dybamiczny twór, który zwiększa się dynamicznie i zmniejsza w trakcie działania programu. Niestety trzeba o tym poczytać a najszybciej zrozumiesz o co chodzi ze stosem jak poczytasz jakąkolwiek książkę o chociażby początkach...
Co do samego tematu: Szybkość kodu w asemblerze wynika z tego, że pisząc w nim kod wykorzystujemy wszystkie założenia dotyczące projektu - założenia są podstawą optymalizacji, a jeśli ktoś nie wykorzystuje wszystkich założeń, niech pisze w C, mniej się narobi, bo i tak nic nie zoptymalizuje - i tak: - można niektóre warunki uprościć (założenia dotyczące...
Nie znam mozliwości w tym zakresie Bascoma. Jedno jednak jest pewne. Każdy program tego typu może działać sekwencyjnie. Oznacza to, że wywoływanie kolejnych procedur w procedurze działać musi. Jest jednak tzw granica zagnieżdzeń. Może ona wynika z możliwości samego kompilatora (programu tłumaczącego - w tym wypadku Twoim nie sądzę aby tak było), albo...
Witam, Na wejściu mamy 40-bitową liczbę binarną, potrzebujemy ją skonwertować na zapis przy podstawie 10. Chcemy tego dokonać bez angażowania 'dużej biblioteki'. Najlepiej jest tego dokonać metodą kompensacyjną. [syntax=C] /* niezbędne deklaracje np. uint8_t arr[5]; itp. Także kolejność lsb..msb bardziej pożądana, ale nie niezbędna */ /* Tablica użyta...
Nie znalazłem tematu, który by rozwiewał moje wątpliwości, przepraszam, jeśli takowy już istnieje. Programowałem już wcześniej uC Analog Devices w c. Tam odpowiednie przerwania miały swoje numery i po prostu pisało się funkcję obsługi danego przerwania. Czy dobrze rozumiem, że programując PIC w asemblerze po instrukcji org 0x04 ma nastąpić programowe...
Witam Mam funkcje napisana w asemblerze i wykorzystuje ją w pliku "C". funkcja używa dwóch argumentów, są to zmienne GLOBAL w asemblerze "x1" i "x2", w pliku h mam zadeklarowane extern do tych zmiennych i funkcji "test" Program wygląda tak: main(void) { x1=2; x2=3; test(); } funkcja wykonuje operacje na x1 i x2,a wynik tych...
W procedurach wlasciwie wszystkie 32 rejestry sa uzyte, a nie bardzo wiem gdzie wsadzic dane przed skokiem do procedury i gdzie bedzie wynik po powrocie. AVRgcc interface: All functions use the AVR-gcc function call interface : double func( double A [, double B] ) A := R25:R24:R23:R22 with R25 holding sign and...
Niedawno zrobiłem mały egzamin tej 'inteligencji', marnie wypadła ze znajomości avrów ;) (nie można zagnieździć bold w code, więc będzie rozlazłe) procesor avr ze stosem sprzetowym ChatGPT Procesory AVR, takie jak te z rodziny ATmega, są wyposażone w stos sprzętowy, który jest używany do zarządzania wywołaniami funkcji, przerwami oraz przechowywaniem...
Z tego co mi wiadomo jest już dostępna beta LPCXpresso pod linuksa. Co do asemblera ja stosuje wywołanie funkcji i dorzucam plik z rozszerzeniem .s do projektu. A w pliku w którym wywołuje tą funkcje wstawiam coś takiego: extern int clock_init(); a później w wybranym miejscu w pliku z rozszerzeniem C daje coś takiego: clock_init(); Jeśli...
Używanie argumentu "bo taka jest konwencja" nie różni się niczym od stwierdzenia "bo tak". Przeczytaj jeszcze raz uważnie ten link, bo użyłem zupełnie innego argumentu. The cdecl (which stands for C declaration) is a calling convention that originates from the C programming language and is used by many C compilers for the x86 architecture. Registers...
1. Ja zaczynałem od pisania na peceta. 3. ...i od książki Kernighana i Ritchiego (ale to ciężkostrawna lektura). Nie mam żadnej literatury ani o mikrokontrolerach ani o pisaniu w C na mikrokontrolery (ale nie twierdzę że to jest dobre - po prostu szkoda mi było kasy na to). 2. pisałem najpierw w MS Visual C++, żeby się przyuczyć (fajne środowisko no...
Witam, piszę z prośba o wytłumaczenie mi jak liczy się opóźnienie w sekundach. Procesor to at89s4051 z zegarem 24Mhz. kod opóźnienia: lcall delay delay: mov R0,#0xff mov R1,#0xff mov R2,#0xff petla: djnz R0,petla djnz R1,petla djnz R2,petla ret i teraz tak wiem że lcall 2 cykle, mov 1 cykl, ret 2cykle, djnz 2 cykle, jak policzyć czas opóźnienia wywołany...
Jak powinien być zakończony program PLANSZA.asm ? END? HALT? RET ? Zdecydowanie podprogram musi kończyć się RET (o czym za chwile dłużej) a nie może HALT. Mam dla Ciebie niedobrą wiadomość: nie da się postąpić dalej jako tzw "praktyk", bez czytania. RET i HALT to instrukcje, są przenoszone do kody wynikowego *), ale END to tylko "wtręt organizacyjny",...
(at)JarekC To niekoniecznie musi być problemem, bo: - w większości AVR stos ustawiany jest podczas resetu na koniec SRAM, więc nie trzeba go inicjalizować (ale warto sprawdzić, czy w użytym w symulatorze modelu tak jest), - funkcja się wywoła, bo asembler umieści ją począwszy od adresu 0, czyli wektora resetu, - skoro to symulacja i na końcu jest breakpoint...
Tak. Na początek wyrzucić RET po RJMP Piksel_rowna_sie_jeden. A następnie, analizując ten zestaw instrukcji napisać równoważny kod: [syntax=armasm]Piksel_rowna_sie_zero: RET [/syntax] Skoro kasujesz R16 instrukcją CLR R16, to po co ładujesz tam literał przez LDI R16,0? Bez sensu. Skoro w R16 jest zero, które wymusiłeś, to po co sprawdzać warunek czy...
ldi R16,200 ldi R17,1 start: ldi R22,0x00 out PORTC,R22 call Czekaj_ms ldi R22,0x01 out PORTC,R22 call Czekaj_ms rjmp start Nie wiem którą implementację funkcji Czekaj_ms konkretnie używasz, ale jakąś tu oglądam i widzę że akurat ta nie zachowuje wartości rejestrów R16 i R17. Moja sugestia byś R16 i R17 ustawiał przed każdym wywołaniem Czekaj_ms i...
Hmm... No to nie jest tak prosto. Po pierwsze, gdy Winavr generuje listing, to najczęściej nie jest tak, że pokazana linijka kodu w C dotyczy dokładnie kodu w asemblerze poniżej. Czasami przełożenie nie jest jednoznaczne (np. z uwagi na optymalizacje), a czasami sobie, chyba, po prostu nie radzi. Po drugie, w main() kompilator rozwinął (inline) wywołania...
Witam mam pewnie dla większości forumowiczów banalne pytanie ale jakoś poradzić sobie z tym nie moge.. Musze napisać program w Keil-u który wykorzystuje przerwania zewnętrzne INT0 i INT1, jak nazywa sie funkcje do których program skacze po wywołaniu tego przerwania? czy może jest to robione jakoś inaczej? Druga sprawa jak zrobić wstawkę w asemblerze...
Nie jest to trywialne, musisz znaleźć uchwyt do okna aplikacji (chyba najprościej enumerując okna i szukać po nazwie), następnie znaleźć określone obiekty pochodne okna (te które są w ramach tego okna) i wysłać kilka komunikatów do nich. Jak już znajdziesz uchwyt do pola edycyjnego to jeśli jest standardowe (kontrolka windows), to wystarczy użyć makro...
if(flaga_z_przerwania) return; Pewnie starałbym się tak zrobić, nie znam kodu który ma być przerywany więc nie powiem na ile to rozsądne w tym przypadku. Funkcja przerwania obsługującego wyjątki chyba takie coś realizuje więc w asemblerze powinno się dać. Może jakby coś [url=https://gist.github.com/buserror/31... zmodyfikować żeby się wywołało...
michalko12 --> próbowałem umieścić w pętli while(1), też nic nie daje niestety, ale w końcu zobaczyłem że coś dziwnego dzieje się w asemblerze, otóż gdy zastosowany jest static dla *reszta to wtedy wywołanie funkcji strtok_r() zrobione jest tak: f80:cf 01 movwr24, r30 f82:60 e0 ldir22, 0x00; 0 f84:71 e0 ldir23, 0x01; 1 f86:4c e1 ldir20,...
Dziękuję za odpowiedź Wpisałem do programu _delay_ms(x) i wielkość kodu po tym wpisie podskoczyła prawie pięć razy, pierwsze wywołanie tej funkcji daje +~3k Idę o zakład, że x jest zmienną. Spróbuj wpisać tam zamiast x jakąś konkretną wartość, żeby była znana już na etapie kompilacji. Akurat pisałem program, który używał _delay_ms i w całości miał...
PO. : ad 1/ avr'y są ośmiobitowe, ale obsługa zmiennych 16-bitowych jest optymalna. W przypadku średnim obsługa zajmuje 2* więcej czasu: podstawienie pomiędzy rejestrami (2*mov=2 cykle lub w szczególnym przypadku movw=1 cykl), inkrementacja (subi+sbci = 2cykle, odejmowanie wartości ujemnej, gdyż nie ma dodawania o stałą podaną bezpośrednio; w przypadkach...
Witam, jestem na studiach informatycznych i z przedmiotu "architektura systemów komputerowych" dostałem zadanie: napisać program w asemblerze(dodam ze uczono nas c, c++ oraz c#)niestety nie dostałem zbytnich poradników tylko na zajęciach omawialiśmy jeden prosty program kory wyświetla "hello world" na konsoli treść zadania wygląda mniej więcej tak :...
Przykład jak to sobie w prosty sposób sprawdzić korzystając z pliku *.lss mamy taki kod z funkcją inline: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> inline void fun(uint8_t a) { PORTA = a++; PORTB = a; } int main(void) { uint8_t z = 8; sei(); fun(z); cli(); while(1); }[/syntax] optymalizacja - pierwszy poziom -O1 i w takiej...
Mam pytanie czy podane niżej zagadnienia będą działać pod windows Opóźnianie za pomocą operacji I/O na porcie Inną metodą opóźniania o niewielkie ilości mikrosekund są operacje I/O na portach. Czytanie/zapisywanie jakiegokolwiek bajtu z/do portu 0x80 (patrz wyżej jak to się robi) powinno dać opóźnienie prawie dokładnie 1 mikrosekundy bez względu na...
void keyboardHandler(void) { if((AT91F_PIO_GetInput(AT91C... & AT91C_PA19_FIQ)) { AT91C_BASE_AIC->AIC_SMR[AT91C_ID_... = AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE; AT91F_PITDisableInt(AT91C_BASE_PITC&... //readKeyboard(); keyboardTrigger = 1; } else { AT91C_BASE_AIC->AIC_SMR[AT91C_ID_...
Dlatego pytałem jak bez systemu operacyjnego mając czysty dysk, wykonać np funkcję: int a,b,dodaj; cout << "Podaj liczby"; cin >> a; cin >> b; dodaj = a+b; cout >> dodaj; i ją zrealizować wpisując bezpośrednio z klawiatury polecenia biosu lub procesora Z klawiatury niczego nie wywołasz, bo nie ma programu który by to zinterpretował...
Wersja kolejna 0.1.6, wzbogacona o możliwość czytania z pliku po deasemblacji. Nowe opcje: -d plik - plik po deasemblacji, zapis do pliku _lisdfun.txt -D analiza pliku _lisdfun.txt kalkulacja stosu -m plik plik map Na chwile obecną program czyta pliki z deasemblacji (za pomocą np gpdasm z pakietu gputils), z pliku formatu zawierający etykiety oraz...
Jeśli tej struktury używasz tylko do odczytu w przerwaniach i programie głównym, przy czym zapis do niej odbywa się wyłącznie w programie głównym, to volatile nie jest konieczne. .. Panowie wydaje mi się, że właśnie w takim przypadku użycie volatile jest KONICZNE i to zdecydowanie, ponieważ to właśnie tylko w funkcjach a w zasadzie TYLKO w funkcjach...
Witam, dołącze się do tego tematu z moim problemem, a mianowicie, mam ATmege128L (kompilator CodeVisionAVR C) i pisze prosty programik w którym po wywołaniu przerwania w głównej pętli programu ma cos tam być wykonane. W przerwaniu ustawiam flage, a sprawdzam ją w głównej pętli programu. Flaga zadeklarowana jest jako volatile ale niestety po wyjściu...
Z tego co widzę z MIDE nie da się. Jedyne wyjście to używania dyrektywy, które pozwalają zrobić w ciele funkcji (tzw. INLINE). sdas8051 -los asm_func.asm sdcc main.c asm_func.rel Wtedy w pliku asm_func.asm funkcja w asemblerze napisana przez Ciebie, a w main.c zawartość kodu w C. BTW. Może lepszy niż MIDE będzie dla Ciebie [url=http://mcu8051idesourceforge.net/pr...
Jaki masz zegar w układzie (częstotliwość)? Twoja procedura opóźniająca zajmuje około 256*256 cyklów, a to najprawdopodobniej za mało. Możesz np. wywołać funkcję CZEKAJ w analogicznej pętli, odpowiednią dla Twojego przypadku, liczbę razy.
Być może dlatego, że do wywołania "sabrutyny", z której chcesz powrócić do miejsca wywołania za pomocą instrukcji ret należy użyć instrukcji call. dobrze kolega podpowiada - tylko, nie być może - a na pewno dlatego ;) tylko proszę autora - używaj ludzkich nazw typu podporogram, procedura, funkcja itp a nie "subrutyna" ;) a skoro się przesiadasz na...
Ten temat pojawia się tu od czasu do czasu ale żadna z porad nie jest skuteczna w moim przypadku. Od paru godzin już męczę się z wpisaniem czegokolwiek pod EEPROM. I udało mi się to ale jedynie w asemblerze w którym mam już pewne doświadczenie. Próbowałem zarówno EEMEM jak i inne funkcje z nagłówka eeprom.h ale nic z tego. Najbardziej obiecujący lecz...
Raport z postępów: brak ;P (chociaż rozgryzłem to haszowanie częściowo - w programie easyhash pod nazwą crc-16(x25) - nie moge tylko zmusić swojej funkcji żeby poprawnie hashowała - nie jest podany wielomian haszujący...) o adapterze: Adapter który posiadam kupiłem gotowy na allegro, schemat: jak z tego wybrnąłem? układ FTDI232R może pracować w trybie...
Z takich sztuczek to jeszcze - po wywołaniu przerwania zdejmujemy ze stosu oryginalny adres powrotu i zapisujemy swój i procek po zakończeniu przerwania wraca tam gdzie chcemy, ale to raczej tylko w asemblerze.Podobny trik można zastosować do podprogramów ( call ret ). Bardzo przepraszam za określenie ale to nie żadne sztuczki czy triki tylko głupota...
SylwekK --> tak jak pisałem jest to obarczone takimi małymi błędami ale chodziło mi tylko o przekazanie IDEI, którą jak widzę podchwyciłeś ;) Super. Jak widzisz można się obyć bez waitms'ów a dokładność odliczania czasu nie jest tu w ogóle aż tak istotna. Za to mamy 3 różne fragmenty kodu, które działają w sposób absolutnie nieblokujący. A te warunki...
Witam Asembler Masm32 W programie mam wywołanie funkcji CheckDlgButton. Program działa prawidłowo W Windows 98 SE. Natomiast w Windows 2000 wykonuje nieprawidłową operację: "Kalc.exe wygenerował błędy i będzie zamknięty... Tworzony jest dziennik błędów." Jaki jest powód błędu? Gdzie szukać owego dziennika błędów? Zakomentowanie wywołania tej funkcji...
np potrzebujesz zmienną którą będziesz zarówno aktualizował w przerwaniu i w pętli głównej programu. Gdy nie dasz jej volatile - to optymalizacja doprowadzi do tego, że w pętli głównej wrzuci sobie zawartość tej zmiennej np do jakiegoś wolnego rejestru procesora i w ramach tej pętli głównej będzie się posługiwać tylko tym rejestrem bez sprawdzania czy...
no nie wiem czy tak na wyrost sie robi inicjalizacje- fabrycznie sa inne ustawienia tego lcd, a ty (przynajmniej ja) inicjalizujesz go pod konkretny program. może masz cos nie tak z zależnosciami czasowymi. z tego co widze u ciebie w programie nie daje CLR A, tylko MOV A, #0-- kiedys mi to coś nie chciało działać z tego co napissałeś to lcd jest w trybi...
To jest tylko sztuczny marketingowy zabieg w celu zdywersyfikowania produktu jakim jest kompilator na wersje Free, Standard i Pro. Taki system powoduje przywiązanie do produktów i skrojenie na miarę kieszeni klienta i nie ma nic wspólnego z obiektowością. I to jest właśnie problem , bo pisząc w C nie mamy wpływu na to jak będzie wyglądał kod wynikowy...
dobry pomysł asembler, ale odkryłem że jednak wszystko działa. dwukrotne wywołanie funkcji USART_Transmit() rozwala kod. nie mam zielonego pojęcia dlaczego tak się dzieje. w innym układzie ten kod działa - pozatym jest prosto z datasheeta więc nic dziwnego. podsumowując kostka jest sprawna. przeżyła naprawde ostre grzanie hotairem i grotem i nic jej...
nie rozumiem o co Ci chodzi? Nie mysl o rzeczach, które daleko wykraczaja poza Twoje potrzeby i wiedze (sadzac po tej (at)definicji(at)). Napisaem Ci juz: poczytaj o instrukcjach barierowych. Jak zrozumiesz (ale tak uczciwie) jak dzialaja, to mozesz dalej wglebiac sie w rdzen. NOP jest bardzo specyficznym przypadkiem w ARM. Jak Ci sie chce to poszukaj...
https://obrazki.elektroda.pl/5132775900_... Chociaż na zdjęciu widać mini płytkę z PIC18F1220, to posłuży ona jedynie do praktycznego zaprezentowania obsługi wątków które zaimplementowałem. Obecne możliwości kodu który chce zaprezentować, to działanie równoległe 2 lub trzech wątków, w tym głównej funkcji main która jest pierwszym wątkiem....
Mam zbudowany układ z Atmegi8 i dwóch rejestrów przesuwnych: http://obrazki.elektroda.pl/9505521200_1... Jeśli ktoś nie wie jak działa rejestr przesuwny, można podejrzeć http://obrazki.elektroda.pl/1770969900_1... W C jest to całkiem proste i można zrobić to w ten sposób: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h>...
Witam, Pomysł dobry ale sypie się najprawdopodobniej z powodu zbyt dużej ilości przerwań. Proponuje projekt sterownika "równoległego", taki wykorzystałem w mojej pracy inżynierskiej. Wprawdzie korzystałem tylko z 8 serw ale 16 też obsłuży po drobnej modyfikacji. Program zabiera większość mocy procesora do obsługi przerwań ale tylko przez czas 2ms potem...
Można to zrobić jako macro lub podprogram choć wygodniej jako makro i wywołać je z odpowiednim parametrami masz wtedy uniwersalną procedurę która możesz wykorzystać do dodawania dowolnych zmiennych
Jeszcze małe pytanko. Jakie mają być kondensatory w torze analogowym (te 1uF? Elektrolity czy może MKT? Jeśli elektrolity to jak powinna wyglądać ich polaryzacja przy wejściu i wyjściu MAXa? MKT w zasadzie są lepsze, ale praktycznie bez znaczenia większego. Nawet ceramiki SMD mogą być. Elektrolity plusem do większego potencjału, czyli wejście sygnału:...
https://obrazki.elektroda.pl/6601336100_... Zegarek podręczny warsztatowy: - zegarek, rozdzielczość 1 sek - pomiar napięć +-50 V rozdzielczość 0.1 V impedancja różnicowa ok 10 Mom - pomiar częstotliwości ok 10 Hz-50 MHz z automatycznymi zakresami - pomiar temperatur wewnętrznej i zewnętrznej na KTY - alarm - podświetlanie - światło,...
; **** zapisz/odczytaj rejestr **** ; Funkcje zapisz i odczytaj rejestru CC1000. Adres rejestru powinien przed ; wywołaniem znaleźć się w rejestrze adres, oraz dane powinny się znaleźć lub ; znajdą się w rejestrze dane. ; UWAGA ; ; funkcja nie zabezpiecza sreg ; adres jest w 7 dolnych bitach rejestru adres ; zakłada także, że pale jest Hi przed wywołaniem...
(at)tmf Trochę offtopic, ale czuję się wywołany do odpowiedzi w poście #9. Czy można zrobić na AVR32 kartę dźwiękową w systemie 7.1 podłączaną przez USB, która może również odtwarzać i nagrywać dźwięk na kartę pamięci? Ta karta ma również regulację głośności każdego z kanałów, korekcję opóźnienia czasowego każdego z kanałów i funkcję analizy i korekcji...
Jeśli to ma być złączenie tylko na ekranie to po prostu dwukrotnie wywołaj odpowiednią funkcję. Jeśli chcesz złączyć w pamięci - musisz zarezerwować zmienną o stosownej wielkości i przekopiować do niej ciągi pomijając za pierwszym razem znak $ (lub nadpisując go drugim ciągiem).
Zainteresowany jestem dekompilacją wsadów, przeróbką na własne potrzeby, ponowną kompilacją i generowaniem podpisu. Poruszyłeś tu dwa tematy: modyfikację istniejącego skompilowanego kodu i generowanie podpisów. Kilka uwag na oba tematy. 1/ Modyfikacja kodu binarnego W przypadku kodu natywnego (C, C++) nie ma co liczyć na pełną dekompilację do kodu...
http://obrazki.elektroda.pl/4029783300_1... Układu SID (6581 stary i 8580 nowy), będącym muzyczną orkiestrą komputera Commodore 64 nie trzeba nikomu przedstawiać – między innymi dzięki jego brzmieniu owa maszyna osiągnęła tak dużą popularność. Warto tylko przypomnieć, że SID ma jedynie trzy kanały, ale umiejętności programistów...
Witam. Mam problem z funkcją wywołaną w przerwaniu wektoryzowanym - zawiesza arma (nie mam jeszcze jtaga) void Delay1(unsigned int del_time) { for(abc=0;abc<del_time;abc++)... } void Timer0Handler(void) { IO1PIN ^=(1<<16); Delay1 (200); T0IR = 1; VICVectAddr = 0; } Działa jeżeli zrobię...
Piszę algorytm szybkiego sortowania w asemblerze a dokładniej jest to dll w asmie w projekcie z pisanym w c++ i mam pewnien problem - algortym źle sortuje dane. Oto mój algorytm w asmie: QuickSort PROC tablica:dword, ilosc:sdword start: push EAX push EBX push ECX push EDX push ESI push EDI push EBP push ESP mov EAX, 0 push EAX; lewy na stos...
Przeniosę to przerwanie i tablice do plików .c. Ale wtedy w pliku głównym .c mam includować plik przerwania .c? Myślałem, że tam inkluduje się tylko pliki .h Nie musisz include'ować pliku .c, a nawet nie powinieneś. W Makefile dopisz go tylko do plików źródłowych (SRC = $(TARGET).c przerwanie.c inny_plik.c itd.) a linker odwali resztę roboty. Zostało...
Tylko czemu oryginalny kod nie ma tej zmiennej przecież nawet starszy winavr też źle kompilował , chyba że kod był kompilowany bez optymalizacji. Może był kompilowany bez optymalizacji, a może optymalizacje były mniej zaawansowane. Nie byłby to pierwszy w historii przypadek kodu działającego przez przypadek... Z całym szacunkiem dla dobrych chęci poprzedników...
ważna jest dla niej latencja Jeśli to jest naprawdę ważne, to zostaje raczej tylko asembler. ie wywołuje innych funkcji poza funkcją inline i _delay_us (jest niezbędna) ale one nie są wywoływane tylko wprowadzane w miejscu wywołania To wcale nie jest takie oczywiste, inline nie wymusza osadzenia kodu, jest tylko sugestią.
I teraz nie wiem czy mikrokontroler wykonuje moja funkcję SystemInit czy tą "standardową" ? Podglądnij kod asemblera :) Wystarczy, że wrzucisz przed main Jeśli konsolidator nie krzyczy, to znaczy, że widzi jedną funkcję SystemInit. Jeśli oryginalna zstała zadeklarowana jako WEAK, to podłączył Twoją. Pewnie nie krzyczy dlatego, że w pliku system_LPC13xx.h...
po jakimś czasie nad kodem doczytałem się, że konwencję 'liczby' masz jako znaki, jedno z trudniejszych do obliczeń (a tradycyjnie konwersja jest serią mnożeń rzez 10). Bez wódki tego nie wyobrażę sobie :) jak mawiali starożytni Rosjanie. Gdybym ja robił, wyznaczył bym sobie trzymanie liczby binarnie, w rejestrze, skonwertował do/z (nie ukrywam, mógłbym...
A co do uwag na temat książki to tylko to, że jak dla mnie to za mało info o łączeniu asemblera z C. A jak połączyć C z asemblerem to w tej knidze nie ma nic. Może i to dziwny pomysł, ale akurat jak na złość taka konieczność mnie dopadła. Pozdrawiam. No to proponuję jednak jeszcze raz przeczytać rozdział 28 :) Masz tam przykłady chyba wszystkich możliwych...
Witam Kolegów. Za namową SQ6ADE zamieszczam prototyp sterownika do radmora 3045, który wykonałem. Sterownik oparty jest o układ 89c2051, zawiera podstawowe funkcje; 1. sterowanie układem syntezera TDD1742T 2. Sterowanie wyświetlaczem DL2416 3. Zawiera prosty generator tonu 1750Hz Na wstępie przestroiłem generatory według wskazówek: http://www.isj.pl/3005.html,...
Chyba to jest błąd samego Windows, bo wywoływane są wyłącznie funkcje systemowe. Wszystkie w konwencji stdcall, czyli powinny same wyregulować stos. Ostatnia mozliwość, to błąd Masm'a. uwielbiam tego typu stwierdzenia :D zapewniam Cię że błąd oczywiście jest po stronie Twojej aplikacji. Sprawdzasz stan radio buttona bezpośrednio w głównej pętli DlgProc...
Nie obraź się ale myślę że najpierw powinieneś powalczyć z migającą diodą. :) Przerabiałem to 2 lata temu w asemblerze od pół roku walczę z C# jednak migającą diodę udało mi się uzyskać poprzez przerwania w C#. Jednak na początku tematu napisałem że pierwszy raz programuję LCD. Zasadniczo przed rozpoczęciem następnej funkcji powinieneś zakończyć poprzednią....
ad. 2. W asmemblerze MC68k :], a co? jak dowolny, to dowolny :] (asm x86 nie znam za bardzo) Założenia: argument funkcji podawany jest przez stos (wskaźnik stosu - rejestr A7, stos rośnie w dół) Wartość (wskaźnik) zwracana jest w rejestrze D0. Reszta rejestrów pozostaje niezmieniona. Za obsługę stosu odpowiada funkcja wywołująca, więc po powrocie z...
ldr pc,[pc,#-0xFF0] // IRQ - read the VIC Taki sposób wejscia do przerwania jest najszybszy, ale po pierwsze: funkcja przerwania musi byc w trybie ARM, po drugie zdaje mi sie ze z zagniezdzania przerwan nici. To a propos przerwan w trybie THUMB. Zwroc uwage, ze to cos powyzej jest kodem ARM, ktory skacze sobie gdzies, gdzie mu VIC kaze, jednak bez rozpoznania,...
To teoria a tu widze praktykę którą nijak sie nie da algorytmem okiełznać. Nie da, ponieważ Light-I zakłada, że ten drugi styk jest ustabilizowany, a on także drga w momencie wywołania przerwania przez styk 1 :) Dodatkowo ten podłączony do przerwania drga czyli wywoła kilka przerwań za 1 krokiem impulsatora.
A pomysł o skompilowaniu kodu z C++ i wyswietlenie w Asm - większej bzdury nie słyszałem zdajesz sobie sprawę ile kompilator dorzuci kodu !!! Nie czytasz uważnie. Nikt nie mówił o jakimś wyświetlaniu. Jeśli jesteś taki obeznany (a twierdzisz, że jesteś) to znasz także proces disasemblacji, który niejako rozbiera programy pisane pod jezykiem wysokiego...
http://obrazki.elektroda.pl/9079980500_1... Na wstępie chciałbym przybliżyć, skąd taka a nie inna nazwa nadana przeze mnie temu projektowi. Prace rozpoczęły się w momencie zapotrzebowania na minimum dwa zsynchronizowane generatory małej częstotliwości. Ponieważ zakres przestrajania jaki mnie zadowalał ograniczał się do 100Hz przy rozdzielczości...
Tylko że "+" to też może być funkcja zewnętrzna... Wydaje mi się ze jest to instrukcja asemblera Ja się pogubiłem, jeżeli komuś takie coś zadziała proszę o przykładowy kod i listing/opis jak kompilować Dobra daj tu jakoś funkcje, albo co ona ma robić, możemy zrobić przykład 1. Dwa projekty,jeden główny, w drugim tylko funkcja to wywołania 2. Z głównego...
Jeśli chodzi o ustawienie prędkości transmisji to polecam zajrzeć do noty katalogowej układu. (Jest na stronie producenta "Atmel"). Tam masz wszystko napisane czarno na białym. Jeżeli masz zamiar programować mikrokontrolery to koniecznie musisz odświeżyć znajomość "C" (chyba że wolisz asemblera lub bascoma). Jeśli używasz "WinAvr" to w tym pakiecie...
Pytanie jak w temacie. Przeglądam kilka książek poświęconym tematyce programowania w C w Linuxie, gdzie omawiane są zagadnienia związane z pisaniem aplikacji w C obejmujących przykłady oscylujące wokół wykorzystywania kompilacji, bibliotek, procesów, wątków, sygnałów, urządzeń, wywołań systemowych, systemu plików, wykorzystanie w kodzie asemblera, bezpieczeństwa...
Sprawdziłem...dla __flash funkcja jest znacznie krótsza i nie odkłada rejestrów. Niemniej jednak, tym razem, zauważyłem, że w kodzie asemblera innej funkcji mam odkładanie rejestrów i "ret", baaardzo prostej funkcji, niezwiązanej z odczytem pamięci Flash czy przerwaniami. Kiedy kompilator wykonuje tego typu "manewr"? robiw Dodano po 2 Zauważ, że sprawa...
Witaj tmf :) Na początku chciałem użyć delay_ms jednak wywalało błąd asm . Wyczytałem, że Attiny10 nie posiada funkcji asemblera SBIW, z której korzysta delay. Dlatego zdecydowałem się na takie rozwiązanie. aktualizacja rejestru ADC nie nastąpi dopóki nie odczytasz ADCH Wyczytałem w nocie The ADC generates an 8-bit result which is presented in the ADC...
Prawda nie wiem. Poradzono mi zmapować wektor przerwań i najlepiej cały kod do RAMu. A mówiąc zapis do pamięci flash ma kolega na myśli zapis dowolnych danych do stron flasha czy mapowanie wektora i funkcji do flasha? Jeśli to pierwsze to mam to już zrobione i działa poprawnie (są to w moim przypadku odczyty z enkodera). Problem jest w momencie, gdy...
Tak swoją drogą przyglądam się teraz kompilatorowi cc65 (https://github.com/cc65/cc65). Mam jedno pytanie. Jak działa dołączanie bibliotek standardowych języka C do projektu? Bo z tego co widzę, kod źródłowy z dołączonym plikiem (w moim przypadku "string.h") kompiluje się do formy asemblerowej. Kod źródłowy używanych funkcji bibliotecznych nie jest...
Wkońcu to jest Bascom. w bascomie na pożądku dziennym jest mówienie "moduł działa poprawnie gdy inny moduł jest niezaładowany, ponieważ również używa timera i moduły zaczynają interferować niemożna używać ich razem" (zakładając że moduł jest niejawnie dołączany do projektu w bascomie, gdy tylko w kodzie występuje wywołanie funkcji modułu) jeśli program...
gcc potrafi tworzyć wyspecjalizowane funkcje automatycznie na podstawie argumentów. Jeśli stworzysz funkcję 3-argumentową i w kodzie znajdzie się wywołanie z którego kompilator będzie wiedział, że 2 argumenty są bez znaczenia (lub ich wpływ jest możliwy do określenia na etapie kompilacji) to stworzy wyspecjalizowaną funkcję jednoargumentową zupełnie...
Jeśli np. w miejscu wywołania funkcji inne rejestry są akurat wolne, to kompilator nie będzie ich mógł wykorzystać bo twój kod w asm na sztywno zakłada z których rejestrów korzystać. Jest to pewien mankament tego rozwiązania, bo niestety wymaga odkładania na stos używanych wewnątrz funkcji rejestrów. Chociaż może nie wszystkich, bo dokumentacja avr-libc...
Witam, //--------------------------------------... char s_write_byte(unsigned char value) //--------------------------------------... // writes a byte on the Sensibus and checks the acknowledge { unsigned char i,error=0; for (i=0x80;i>0;i/=2) //shift...
https://obrazki.elektroda.pl/4168190800_... Na wstępie znajduje się „tło historyczne” przybliżające przyczyny powstania projektu, jeżeli ktoś jest zainteresowany jedynie kwestiami technicznymi proszę przejść od razu do części poświęconej skróconemu opisowi konstrukcji sprzętowej. Jak to się zaczęło Odkąd sięgam pamięcią,...
A dynamika jazdy się liczy. Dynamika by była gdyby miał co robić, ale jeżeli procek się nudzi ... Jak pisałem wcześniej autor sam musi zdecydować. Dodano po 3 Jeżeli przerwania by się gubiły yo nie można by zrobic zegaraka na procesorze a takąmożliwośc daje producent. Producent daje, Ty programujesz. Efekt końcowy zależy od Ciebie. A przerwania mogą...
Witam Napisałem kawałek kodu do obsługi przerwań IRQ Zasada miała być taka po wywołaniu przerwania (zwarcie PIO_PA2 do masy) miał zmienić się stan diody na PIO_PA27. Niestety program nie działa poprawnie (przerwanie nie jest wykonywane). Tytułem wstępu to tyle. Poniżej kod, który powinien realizować przerwania. main.c http://obrazki.elektroda.pl/7449929900_1...
http://obrazki.elektroda.net/42_12648689... Na temat projektu avr-cdc z [url=http://www.recursion.jp/avrcdc/]htt... napisano już wiele i jeszcze więcej - nie będę się rozpisywał o samej idei - można zajrzeć chociażby do wątku [url=http://www.elektroda.pl/rtvforum/to... prosta niezawodna przejściówka...
Akumulator to tylko nazwa rejestru. Potrafił akumulować wyniki z ALU i był docelowym rejestrem do której zapisywany był wynik operacji. Obecnie wyniki mogą być zapisane do dowolnego rejestru z pewnej grupy rejestrów, więc nadaje się im po prostu nazwy R0..R31. Jeżeli, któryś z nich dodatkowo spełnia jakąś funkcję to nadaje się mu ekstra nazwę. Nazwa...
(at)ElektrodaBot Jak konwertować kod 64-bit na 32-bit? /** (at)file Copyright (c) 2025, Gelip Copyright (c) 2024, Andri Kurniawan Copyright (c) 2020, Seungjoo Kim Copyright (c) 2016, Dawid... Bezpośrednia odpowiedź „Konwersja” istniejącego binarnego modułu UEFI X64 na IA32 nie jest możliwa - trzeba ponownie skompilować kod źródłowy z ustawieniem architektury...
http://obrazki.elektroda.pl/6032166600_1... Prezentowane urządzenie służy do wytwarzania różnokolorowego światła z 5 diod led, z możliwością regulacji jego natężenia, oraz posiada funkcję stroboskopu z możliwością dokładnego dobrania częstotliwości oraz czasu impulsu. Dodatkowo ustawienia są zapamiętywane w pamięci eeprom dinozaura...
Perler: w twoim kodzie jest dużo niedociągnięć.. funkcje Delay powinieneś wywołać przez 'rcall', tu zaś przychodzi brak stosu i brak 'ret' na końcu. w samym Delay widze odkładanie 4 rejestrów (gdzie?) ale niewidze ich zdejmowania ani pętli do opóźnienia.. po wystawieniu wartości 0x00 na porta odrazu dokonujesz skoku do początku pętli i odrazu zmieniasz...
Podaję definicję klasy z tymi polami bitowymi: [syntax=c] //PMC Master Clock Register. //This register can only be written if the WPEN bit is cleared in “PMC Write //Protection Mode Register” . class CMCKR { public: //Master Clock Source Selection: enum ECSS { CSS_SLOW_CLK,// Slow Clock is selected CSS_MAIN_CLK,// Main Clock is selected...
wywołanie funkcji napisany asemblerze zegar asemblerze
diody wzbudzenia phoenix programator karta podgląd rejestrator
pralka electrolux czyszczenie zbiornika paliwa
Zapalniczka nie działa w Toyocie E12 2004 - diagnostyka Nagrzewanie się grzejników podczas grzania wody użytkowej