https://obrazki.elektroda.pl/3803750000_... Witajcie moi drodzy Przedstawię tutaj mój sieciowy sterownik przekaźników kompatybilny z Home Assistant poprzez Tasmota HTTP. Sterownik oparty jest o PIC18F67J60 i dodatkowo oferuje m. in. odczyt temperatury, budzik, przyciski, niezależny panel WWW oraz szerokie możliwości konfiguracji. Wstęp...
http://obrazki.elektroda.net/79_12208735... Tym razem chciałbym zaprezentować nowe oprogramowanie dla wyżej wymienionych kitów, za pomocą których możemy przekształcić posiadany stary napęd CD-ROM w funkcjonalny odtwarzacz płyt Audio CD. Szczegółowe opisy kitów znajdują się tutaj: http://sklep.avt.com.pl/photo/_pdf/AVT26... i http://sklep.avt.com.pl/photo/_pdf/AVT94...
Ten fragment o którym mówisz lepiej również przenieść za główną pętlę programu, a wywołać również poleceniem gosub . Inna opcja to użycie goto w tym akurat przypadku. Adres powrotu nie jest kasowany, ale zostanie nadpisany, bo po wykonaniu return nie jest już potrzebny. Działa to w ten sposób, że przy wywołaniu procedury adres powrotu jest zapamiętywany...
Sam kod jest bardzo prosty: Na końcu obsługi każdego (oprócz stanów końcowych) stanu jest przekazywane sterowanie do następnej procedury poprzez wpisanie wskaźnika do niej - do kolejki. [syntax=c] DISABLE_INTERRUPTS; // disable interrupts (atomic access) EV_Pointers_Table[EV_RecTable_WrPtr] = FuncPtr; EV_RecTable_WrPtr = (EV_RecTable_WrPtr+1) & 0x3F;...
Tablica (będzie ich więcej, ale w celach dydaktycznych wystarczy jedna), która zwiera tekst dla LCD. Znacznikiem końca niech będzie wartość 128. Tekst może być rozdzielony jakaś wartością "nie ASCI", np po to aby z CG RAMu wywołać polski znak. Tu kombinujesz dobrze jednak w C każdy string (tablica zawierająca tekst zawsze zakończona jest wartością...
Włączanie poszczególnych Pinów LPTWitam Od jakiegoś czasu szukałem jak podać sygnał(5v) poszczególne Piny LPT np.żeby załączać diody...Aż w końcu do tego doszedłem i postaram się podzielić z wami moją wiedzą. Na początek jest nam potrzebny Adres portu.Przeczytamy go w tabeli: http://obrazki.elektroda.net/82_12664384... U mnie jest to LPT1 więc...
ok, idąc dalej samemu doszedłem już, że jest taka procedura jak _i2c_rbytes, której trzeba podać: r17 - adres slave układu r24 - ilość bajtów do wysłania r25 - ilość bajtów do odebrania X - bufor tychże bajtów więc próbuję ją wywołać --- rcall _i2c-rbytes i NIC ! nic nie wysyła ;( a jak zrobię wysłanie pojedyńczego bajtu za pomocą procedurek: _i2c_start...
Witam , mam nadzieję iż nie zanudziłem bez reszty.. W zestawieniu z moimi "dokonaniami asm." kolega michalko12, jest najbliższy temu co ja kiedyś robiłem . Oto wersja asm z przełącznikiem kompilacji aby kompilować jako samodzielny plik - kto chce ->ten może :D ( ta wersja to 16-timerów, 16-nasto bitowych, każdy cztery tryby konfiguracji, oczywiście...
0x60 to adres podawany bez najmłodszego bitu RW. Po dodaniu bitu RW otrzymujesz adresy: 0xC0 - zapis 0xC1 - odczyt Pamiętaj, że zanim zaczniesz czytać przydałoby sie podać adres od jakiego chcesz zacząć odczyt. Inaczej przy każdym wywołaniu Twoja procedura będzie czytać dane z innego obszaru.
Sprawdź, cza nazwa Twojej procedury obsługi przerwania jest taka sama, jak w tablicy adresów przerwań w pliku startup. Wyrzuć zbędne wywołanie SetPriority.
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...
Nie wiem czy dobrze rozumiem ale: Wywołanie call (rcall) odkłada na stosie Program Counter, więc wewnątrz procedury program mógłby go pobrać ze stosu (POP) i wpisać tam coś innego (PUSH) - adres, gdzie ma iść dalej po skończeniu procedury rozkazem RET. Ale to nieeleganckie, niebezpieczne itd... I trzeba sobie przygotować takie "dalsze" kawałki programu...
Witam. Wygląda na to, że Kolega niewłaściwie używa instrukcji skoków, próbując zastosować po nich instrukcję RET. Taka konstrukcja ma zastosowanie przy wywoływaniu podprogramów instrukcjami LCALL lub ACALL. Te dwa rozkazy zapamiętują adres powrotny, umieszczając go na stosie. Natomiast RET odczytuje ten adres i powoduje dalsze wykonywanie programu właśnie...
Link Register - najpierw zawiera adres skoku, który należy (albo i nie) wykonać, potem (jeżeli wykonano skok pakowany jest tam adres powrotny z procedury, tzn. : BPU wydłubuje sobie z cache, czy kolejki (nie wiem) instrukcję skoku do podprogramu, jeszcze zanim dojdzie do jej wykonania, jeżeli licznik programu dojdzie do tej instrukcji i należy wykonać...
Włączyłeś przerwania, jednak nigdzie nie masz procedury obsługi dla RXCIE i TXCIE. Wywołanie przerwania powoduje skok programu pod adres zdefiniowany w tablicy wektorów przerwań, czyli w Twoim przypadku reset procka. Druga sprawa to błąd w tej funkcji. Ona nigdy się nie zakończy, gdyż brakuje inkrementacji wskaźnika s w pętli. Ale zakładam, że to błąd...
W uip też ten ból występuje, a problemem jest przekazanie gotowej ramki IP do ARP, ARP nie mając adresu IP w swojej tablicy rozpoczyna procedurę pozyskania adresu MAC, a ramkę z IP odrzuca. Może w tym jest problem. Jeśli chcesz to wykluczyć, przed wysłaniem ramki do komputera wyślij cokolwiek do STM32, żeby ten zarejestrował adres IP i MAC w swojej...
. Język BASCOM BASIC oferuje wiele instrukcji obsługujacych wyświetlacz LCD. Aby jednak mieć całkowitą kontrolę nad wyświetlaczem można stosować procedury w języku asembler. Poniżej znajduje się przykład: $asm Ldi _temp1, 5 'załadowanie kodu rozkazu do R24 Rcall _Lcd_control 'prześlemy do LCD jako komendę Ldi _temp1, 65 'załadowanie do R24 kodu znaku...
Panowie umiem w miarę C++ i przecież musi być miejsce wywołania funkcji a ja tego nie widzę. Pozdrawiam Wiesz co to są wektory przerwania, ATtiny2313 ma ich razem z resetem 19. Jeśli jakieś moduł np Timer, UART itp. zgłosi potrzebę obsługi, CPU przerywa wykonywanie programu, zapisuje swój stan na stosie i zaczyna wykonywać program od innego miejsca....
Do "samosia" W roku 1990 miałem zdeassemblowany ręcznie cały ROM Cobry wraz z adresami początków procedur oraz szczegółowym opisem. Wówczas miałem zapał, gdyż był to mój jedyny domowy komputer. Później nastała era PC i po zakupie IBM PC AT 12MHz (80286) Cobra powędrowała do piwnicy a cała obszerna dokumentacja oprogramowania (system i wersje źródłowe...
Szczerze powiedziawszy to nie wiem, ale jak pytałem się wykładowcy jak zrobić zadanie o treści: Omówić na poziomie mikrooperacji wykonanie rozkazu: wywołaj procedurę spod adresu Ri to napisał mi to w 4-5 linijkach. Takie podstawowe operacje które muszą być wykonane.
Pisze pewien prosty program na 8051 w Keil uVision. Wiemy, że zmienne i stałe globalne można lokalizować w dwóch aspektach: rodzaj pamięci (wewętrzna, zewnętrzna RAM z dostępem bezpośrednim, zewnętrzna RAM z dostępem przez rejestr Rx) oraz adres, w którym dana zmienna jest położona. Czy w ogóle da się zrobić coś, co opisuję poniżej? Mamy program: void...
Witam :) Zacytuje Kasie18 ale odpowiadam atomowi1477 ;) Procedura wyglada tak: HINSTANCE ShellExecute( HWND hwnd,// handle to parent window LPCTSTR lpOperation,// pointer to string that specifies operation to perform LPCTSTR lpFile,// pointer to filename or folder name string LPCTSTR lpParameters,// pointer to string that specifies executable-file parameters...
Zakładam, że program działa tak jak chcesz, a chodzi o optymalizację, niekoniecznie permanentną. Pierwsza uwaga dotyczy startu programu. Mimo, że w aktualnej wersji programu nie wykorzystujesz przerwań proponuję przesunąć kod programu (etykietę START) powyżej adresu zarezerwowanego na przerwania (4) zostawiając miejsce przynajmniej na skok do podprogramu...
Luźne przemyślenia pod rozwagę: -procesor wchodząc do obsługi przerwania stanu ABORT (tryb ARM) podstawia shadow-registers w tym r13 który jest wskaźnikiem stosu używanym w czasie obsługi tego typu wyjątku. W twoim przypadku skoro chcesz wywoływać w procedurze obsługi funkcje do obsługi LCD prawie na pewno trzeba zarezerwować specjalny obszar stosu...
Tym nie mniej adres powrotu Możemy się umówić, że przed wywołaniem przerwania, albo wykonaniem procedury, w liczniku adresu wyznaczany jest adres następnej instrukcji do wykonania (pomijając procedurę), zresztą tak to się odbywa w logice procesora. Czy to nazwiemy adresem powrotu, czy nową wartością licznika rozkazów, to jest tylko kwestia nomenklatury....
Chodzi ci o takie wywołanie ? (wciąż ta sama biblioteka DLL) unit _main; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, dynlibs; type {Dynamiczna procedure z DLL-a} TDynamiczny_Showform = procedure; cdecl; { TForm1 } TForm1 = class(TForm)...
Problem dotyczy wszystkich języków programowania i wszystkich mikrokontrolerów. Chodzi o uszkadzanie się zawartości pamięci eeprom kiedy program idzie w krzaki. Zauwzyłem, żę kiedy traktuję atmegę zakłoceniami emc potrafi o ona zacząć wykonywać inny fragment kodu (bascom), jakby skoczyła pod jakiś przypadkowy adres. objawia sie to czasem podwójnym pisaniem...
M8 == ATMega8 Opcje można znaleźć w helpie BASCOMa Options Compiler Chip itd...np... XRAM Pamięć zewnętrzna (dla M8 nie wchodzi w grę) HW Stack Stos "hardwarowy" adresy wywołań GOSUB (każde zagnieżdżenie = 2 bajty), dla procedur obsługi przerwań ze składowanymi rejestrami kazde zagnieżdżanie=32 bajty). Używany także przez inne instrukcje BASCOMa. Soft...
(at)robiw na 99.99% to błąd kompilatora, bo kiedy definiujemy procedurę przerwań np. ISR(INT0_vect) to w domyśle jest ISR(INT0_vect, ISR_BLOCK), czyli w trakcie wykonywania przerwania ponowne przerwanie nie zostanie wywołane dopóki aktualne się nie zakończy. Ten rcall powoduje że blokowanie zostało zdjęte przez reti i to jest problem. No i kod wcale...
Zgadza się, wyrób końcowy taki sam, tylko fabryka całkiem inna, a Ty się upierasz, że właściwie taka sama, a obrabiarka CNC to właściwie takie kowadło z ręcznym miechem, tylko trochę lepsze i ten miech się nazywa frez, a może młotek - w końcu to wszystko jedno jaką nazwą określimy obrabiarkę lub jej dowolną część, skoro wyrób ten sam. No i przecież...
Dzięki! Dokładnie działa jak ta lala :D Przed skokiem trzeba zdjąć aż 4 POPy bo zapomniałem, że oprócz adresu powrotu jest odkładany na stos adres powrotu podprocedury z której program ma również wyskoczyć do pętli głównej. Myslałem wzcześniej jak bezpośrednio podmienić adres powrotu dla procedury przerwania odłożony na stosie na adres etykiety do której...
Chodzi o to ze nie mam jeszcze kodu chce go napisać tylko nie wiem jak się zabrać Po prostu w parametrze podaje numer funkcji i po obliczeniu przesunięcia skacze pod ten adres a tam skacze pod procedurę która ma wykonać i wraca. Czyli wywołanie każdej funkcji jaka by nie była zostanie wykonane w tym samym czasie. chodzi mi o to ze jak będę miał koło...
Faktycznie, po usunięciu włączenia przerwań program działa, ale właściwie czemu to przeszkadzało prawidłowej pracy ? A co się dzieje jak się wywołuje przerwanie a nie ma procedury jego obsługi? Wylądujesz w DH, wywołasz HF albo skoczysz do jakiegoś adresu (co i tak zakończy się pewnie HF-em) w zależności co masz w tablicy wektorów..
#pragma vector = <VECTOR_NAME> __interrupt void <ISR_NAME> (void) { // сюда вписыk... код обрабl... прерыk...
Router LTE od orange Huawei b315. Dokupiony stały publiczny adres IP Skąd pewność, że masz adres publiczny? - w Orange z tego co mi wiadomo, taka usługa jest dostępna tylko dla firm. No i musimy odpowiednio zmodyfikować procedurę wywołania połączenia przez VPN od Orange - zamiast standardowego wywołania, musi być ustawiony APN vpn.static.pl: 1) APN...
Nie używam i nie znam BASCOMA. Próbuje swoich sił w Arduino IDE (ATMega328(at)16MHz). Po pomocy ze strony przyjaznych niewiedzącym: BlueDraco , nsvinc , tmf mogę stwierdzić że: Ten uC ma na pewno możliwości, aby obsłużyć te przerwania (zakładam ok. 33kHz). Problem nie polega na wywołaniu zaprogramowanego przez Ciebie przerwania (ale to już zauważyłeś),...
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...
Jeśli program po restarcie odczyta nowe ustawienia to wystarczy Ci (jak napisał Kozak_sc ) skok do procedury resetu, znajdującej się domyślnie pod adresem $0000: Uściślając, pod tym adresem najczęściej, lecz nie zawsze jest umieszczony rozkaz przeskoku do procedury inicjującej. W przypadku przesunięcia wektora RESET do procedury bootloadera (fusebit...
tak też jest zrobione, zauważ że po wywołaniu adresu (do odczytu) 161 mam skasowaną flage C, która używam jako NACK/ACK. Jest ona ustawiona dopiero na ostatnim bajcie. ----------------------------------------... coś to kiepsko widze, jeśli ktoś ma pewne procedury to prosił bym podesłać na bolo(at)poczta.ox.pl
dzień dobry wszystkim!! mam pytanie do wszystkich którzy zajmują bądź zajmowali się mikrokontrolerami serii 51 Chodzi o oraganizacje stosu w 51. Przy wywołaniu procedury (podprogramu) na stos przekazywane są paramtetry procedury następnie adres powrotu z podprogramu. Czy dostęp do tych paramterów jest wykonywany przez wyzanczenie adresu tych danych...
Mam taką sytuację, że wywołuje mi się data abort exception w data abort. Na początku przy pierwszym wywołaniu wyjątku procek skacze mi pod adres 0x010 (Data Abort) a potem pod adres który określiłem pod adresem 0x10, czyli do właściwej procedury obsługi wyjątku, konkretnie funkcji __cs3_isr_dabort(). NIestety procek nie przechodzi przez całą funkcję...
Mam taki (niezrozumiały dla mnie) przypadek: - wewnątrz procedury main() definiuję zmienną strukturalną beż żadnych modyfikatorów typu volatile, czy static; - programowo wypełniam jej pola wartościami; - z main() wywołuję inną procedurę zewnętrzną, do której przekazuję adres tej struktury, np. func(&struktura) - func() jest przystosowana do otrzymywania...
Dodano po 2 Nie wiem czy ja popełniam błąd czy to Bascom... Choć symuluję to na najnowszej wersji, ale kompiluje na starszej wersji, bo nowa ma ograniczenie do 4kb.
No ale przerwanie spowoduje zachowanie rejestru statusu a później jego odtworzenie więc problemu nie będzie. Wywołanie przerwania jak procedury też nic złego nie narobi, nie wspominając już o tym że w przypadku wywołania tracenie rejestru statusu nie było by problemem bo praktycznie każdy normalny podprogram go traci. Chyba musisz sprecyzować pytanie.
Stos znajduje sie w pamięci RAM i problem polega na tym że wywołanie podprogramu powoduje odłożenie na stos adresu powrotu a jeśli z podprogramu wywołasz następny podprogram ten też odłoży na stosie swój adres powrotu i tak dzieje się do momentu aż stos sie przepełni co oznacza że nadpisze zmienne programowe. Aby uchronić sie od takiej sytuacji musisz...
O taki rozwiązaniu właśnie mówię. W bramce po stronie abonenckiej wpisujesz w okienku planu numeracyjnego adres na który ma być skierowane połączenie. Jeżeli przed adresem dasz parametr S0 i pustą pozycje wybieranego numeru to wywołanie nastąpi zaraz po podniesieniu słuchawki. Analogicznie ustawiasz po stronie bramki centralowej. Przykładowo; zapis:...
Aby obliczyć prawidłowe wartości stosów wystarczy znać swój program, zwłaszcza to co ze stosów korzysta najwięcej. - Ile jest przerwań i jak mogą się wywoływać wzajemnie. Każde przerwanie może odłożyć na stos prawie 40 bajtów w prologu. - Ile mamy wywołań podprogramów przez GOSUB. Ile mamy wywołań wbudowanych funkcji i czy korzystają z operacji na zmiennych...
Początkowa część programu napisana w kodzie maszynowym mikroprocesora Z80 zawiera 16 wywołań tego samego podprogramu zawierającego w sobie sprawdzanie czy wciśnięto klawisz S. Gdy nie wciśnięto, to po wykonaniu wszystkich procedur podprogramu wraca do głównego programu w miejsce skąd został wywołany. W ten sposób jest realizowana animacja i dźwięk strony...
Disassembler to program, który tłumaczy skompilowaną postać binarną programu dla danego procesora z powrotem na mnemoniki assemblera danego procesora. Oficjalnie służy to do odzyskiwania kodu programu w przypadku zaginięcia jego kodu źródłowego lub poprawianie wersji binarnej programu. "Nieoficjalnie" służy do operacji zwanej "reverse engineering" czyli...
kurczę trochę nie łapię... to w niektórych rozkazach (w tekscie programu w C) stosuje się adres w pamięci ram, a w niektórych (w kodzie assemblera) adres w przestrzeni IO? nie przeczytałem jeszcze pdfa do AVR więc może czegoś nie wiem... mam jeszcze jedno pytanie (mam tą książkę, ale uważam, że jest marna) chcę napisać program w C który będzie miał...
procedura adres zdalny wywołać procedura wywołać adres router
wałkowany milion lexia sterowniki interfejsu vitopend pompa
regulowany generator impulsów ne555 regulowany generator impulsów ne555
Toshiba 32PS200E Unstable Backlight: LED Strip & Driver Faults, Repair Steps Solarman – brak danych dziennej produkcji prądu od 2 dni, migracja serwerów, logger Wi-Fi