Bo jak ma działać? Widać kolega nie do końca rozumie mechanizm przerwań, skoro czeka na przerwanie INT0, a włącza przerwanie przepełnienia Timera0. Adresem przerwania przepełnienia Timera0 jest OVF0addr, a nie INT0addr. Przerwanie od INT0 wyzwalane jest ZEWNĘTRZNIE zboczem lub stanem na fizycznym wejściu INT0 mikrokontrolera, a nie Timerem. Skąd ten...
Jesli rozumiem chodzi o przerwanie INT aktywowane oadajacym zboczem a nie poziomem. W INT0 ustawiasz bit IT0 w rejestrze TCON na 1 jesli ma byc od zbocza a 0 jesli od niskiego poziomu. w INT1 bit IT1
Zacznij od przerwania timera.
Nie mam żadnego pomysłu na to aby zmusić kompilator AVR GCC(+AVRstudio) aby procedurę obsługi przerwania całkowicie zrealizować jako procedurę napisaną w assemblerze reszta jest w C... Utwórz sobie plik z rozszerzeniem "S", umieść w nim np. coś takiego i dołącz go do projektu :) #include <avr/io.h> #ifdef __SFR_OFFSET #undef __SFR_OFFSET #endif...
cjne A,02h,etykieta - co znaczy porównaj i skocz gdy nie są równe. W tym przypadku 02h to R2 w banku 0. Zakładam że wartość z klawiatury jest w A oraz, że jest to wartość 0-9. Jeśli kod klawisza jest inny należy do programu dorzucić tablicę z kodami klawiszy.
Witam, mam problem z ustawieniem przerwania od timera0 na atmega8, jestem początkujący jeśli chodzi o assembler... Problem leży w tym że, uP jest taktowany z wewnętrznego zegara 1MHz, i jeśli mam ustawiony prescaler na 8 czyli rejestr TCCR0 na 2 to powinienem otrzymać obsługę przerwania co 8us a na oscyloskopie otrzymałem igiełkę co 2ms;/ nie wiem co...
Chyba nie, taka "uroda" 8255. Można by było wystawiać dane i ręcznie generować sygnał strobe, ale wtedy komunikacja nie działała by już w przerwaniach.
Działa ;-) Ustaw Breakpoint na linijce (prawy myszy Toggle Breakpoint) [syntax=avrasm]com LED[/syntax] naciśnij F5 (Run) jak zatrzyma się na Breakpoint wykonaj kod przerwania krokowo F11 naciśnij F5 (Run) jak zatrzyma się na Breakpoint wykonaj kod przerwania krokowo F11 itd. Zamiast 15625 ładuj do OCR1A 15624. Wieczorem wrzucę inny sposób migania tym...
A jakis przerwania powodują?
Czy wiesz co to znaczy ORG 2000h ?? Poczytaj w literaturze , a na przyszłość całkowicie pomijaj tą dyrektywę, chyba że będziesz używał przerwań.
Kiedy zdarza się przerwanie, bit I w SREG zostaje wyczyszczony, podczas powrotu z przerwania RETI ustawia bit I z powrotem na 1. Zapobiega to kolejnemu wywołaniu tego samego przerwania dopóki jego obsługa nie zostanie zakończona, jak i zagnieżdżonym przerwaniom.
coś w ten deseń? na razie chodzi mi o to że: Licznik działa zgodnie z zegarem. Po przepełnieniu występuje przerwanie, a jego obsługa skacze do timera i uruchamia go na nowo. cały czas nasłuchuje usart i gdy nadejdzie przerwanie, to obsługa wrzuca z tcnt(czyli wartość licznika) do tablicy coś z tego ma sens? .include "m32def.inc" .cseg .org 0 jmp restart;...
<ciach> V-USB wymaga aby przerwania były blokowane nie dłużej niż ~25 cykli. Czyli w tym przypadku występuje problem ze zbyt długim przerwaniem timera w bibliotece "IR". Najprościej byłoby odblokować przerwania w ten sposób: Zbędne wyciąłem, bo logicznie kłóci się z kolegi postem. :)
Po długich bojach udało się znaleźć winą były jakieś śmieci w rejestrze UCSR1A które sprawiły że jednocześnie oprócz int0 pd2 pracowała jako xck1 co chyba uniemożliwiało wywoływanie przerwania int0. Pisze bo może się komuś to przyda. Warto też zwrócić uwagę na fusebit M161C przy takich problemach
Witam. Rozwiazanie jest i nazywa sie Assembler.
A jaki kod błędu zwraca po wykonaniu funkcji 1 przerwania 14h?
Pytanie moze nie do konca dotyczy tego forum ale wiekszosc programujacych uP w assemblerze ma podstawy assemblera z komputerow PC... mam nadzieje ze zagladaja tu jacys specjalisci z tej dziedziny. Do rzeczy! Pisze TSRa czyli program rezydentny i mam problem z obsloga przerwania int 21h. Chodzi o to, ze moj TSR musi utworzyc plik i zapisywac do niego...
Ja proponuję po prostu pobierać czas bezposrednio z przerwania 21h. Albo użyć timera ;) (LUBIMY '51:D ) Nie pamietam akurat numeru funkcji, ale chwilka kopania w dokumentacji i sie znajdzie. A tak ostatecznie, to mozna uzyc instrukcji pobierania cykli zegara od startu kompa. Trzeba tylko pobrac "próbkę" i później tym mierzyć czas.
Problem jest prozaiczny. Przycisk obsługujesz czy on tego chce czy nie. Polecam rozwiązać obsługę przycisku w przerwaniu wtedy będzie działało.
1. Ogólnie liczysz dobrze, ale procesor nie wyrobi się w 160-ciu cyklach (a dokłądniej mówiąc to liczysz trochę źle bo własnie nie uwzględniasz czasu potrzebnego na obsługę przerwania). Nie uzyskasz czasu 10us, nawet dla kwarca 16MHz. Musiał byś to napisać w assemblerze i użyć dyrektywy Nosave. 2. Nie. Jeżeli coś zadeklarujesz w programie to ta rzecz...
Dla przebiegu o okresie 30 ms i współczynniku wypełnienia 20% w trybie przerwania [syntax=assembler] ORG 0 ; wektor zerowania JMP main ; bezwarunkowo skocz poza obszar wektorów przerwań ORG 000BH ; wektor przerwania po przepełnieniu timer0 CALL podpr RETI ; powrót z przerwania ORG 0030H ; początek programu głównego main: CLR P0.7 ; wlaczenie oscyloskopu...
Może odpal jakiś Timer żeby generował przerwanie bardzo często. Powiedzmy co 10us. I w przerwaniu sprawdzaj czy pin ma stan 0 czy 1. Jak 1 to inkrementujesz jakaś zmienną. Jak zmieni się na 0 to zwracasz wynik i zerujesz tą zmienną. Oczywiście w tym samym przerwaniu sprawdzaj tak samo drugi pin. Niestety wymaga to kodu obsługi przerwania w assemblerze...
Definiujesz sobie w timerze licznik czasu zwiększany po każdym przerwaniu jeżeli jest ustawiony znacznik MIERZ. Czynności w programie: 1. Zgaś lampkę 2. MIERZ=0 3. CZAS=0 4. Czy start ? 5. Jeżeli nie to idź do punktu 4 6. Odmierz przypadkowy czas od 2 do 6 sekund 7. Zapal lampkę 8. MIERZ=1 9. Czy wciśnięto STOP ? 10. Jeżeli nie to idź do pkt 9 11. MIERZ=0...
to czym się różnią eax od ebx??? Kolejnością wykonania z tago co mi wytłumaczyli więc wnioskuje że są dalsze litery alfabetu między e i x ale chyba jestem w błędzie :| Więc jak zrobić aby ten program był w 2 przerwaniach i żeby działał?
gdyby to było takie proste to nie pisałbym o tym na forum, ja potrzebuję czytać pozycje przy pełnej prędkości i to bezbłędnie bez żadnych przekłamań... Maksymalnie schrzaniłeś hardware, teraz to już Cię nic nie uratuje. Do zliczania trzeba było wykorzystać ten większy Timer, a do wykrywania zmiany kierunku przerwanie. Pięknie by to chodziło a procek...
mozna po prostu wylaczyc na ta chwile przerwania... 0x41 0x56 0x45!!
Po pierwsze jakie czasy chcesz obliczać i jakie przerwania po co ??? To jest bascom nie assembler, deklarujesz na wstępie programu prędkość kwarcu a kompilator troszczy się o resztę tj. dajesz deklarację $regfile = "m8def.dat" $crystal = 12000000 Po drugie, procedura obsługi wyświetlaczy LCD (mowa tu o alfanumerycznych HD44780) jest w BASCOM zaimplementowana...
A powiesz mi coś o przerwaniach? Np czy mogę użyć przerwanie aby zwiększyć rejestr o 1? Jak to zrobić
To tego są przerwania. Generalnie ja nie lubię odbierania w pollingu.
Z tymi sterownikami nie maiłem do czynienia ale początek opisu wskazuje, że służą do obsługi code page - czyli zestawu znaków (np polskie litery) Co do programowania kontrolera przerwań to znalazłem taki papier: http://sirius.cs.put.poznan.pl/~inf94333... Trzeba pamiętać, że dostęp do rejestrów HW jest przez rozkazy assemblera in/out i nie jest...
Jakie Bez tego mechanizmu ciężko ogarnąć takie tematy jak zagnieżdżanie przerwań czy zmiana kontekstu po przerwaniu. Idea jest taka, że w twoim przypadku SysTick musi mieć wysoki priorytet (najwyższy w "systemie", w znaczeniu w RTOSie), tak aby tick był regularny i się nie gubił. Przełączanie kontekstu na najwyższym priorytecie zaś jest średnio zabawne,...
Nie wiem jak to działa gdy kasujesz TI w przerwaniu. To już poziom assemblera czy wcześniej sprawdzasz warunek pętli while(TI==0) {}; czy też w obsłudze przerwania jest kasowana flaga TI. Włącz debugger w keilu ustaw breakpoint w przerwaniu i zobacz jak program działa. Sądze że skasowanie linii "if (TI) { TI=0; }" rozwiąże problem :) Korzystanie z funkcji...
Czy pod adresem 0x012 ($012) masz wpisany rozkaz skoku do procedury przerwania (np.: jmp TC0OVF)?
U mnie działa bez problemu. Niepotrzebne są 2 linie w obsłudze przerwania: [syntax=asm]CLR P3.0 CLR P3.1 [/syntax] Bo to jest robione zaraz po wejściu do procedury obsługi przerwania.
Witam, mam chyba proste pytanko .. jak zrobić coś takiego: Mem Zamykam. - arnoldziq
Co do tego przerwania w assemblerze to masz tylko czesciowo racje. Brakuje jeszcze paru ustawien. :)
Dziękuję bardzo :D a czy jest jakiś sposób żeby wymusić dany fragment kodu w danym miejscu pamięci flash?? Pod "czystym" assemblerem wystarczyło ".org" a czy w takim miksie asm+C jest na to jakiś przepis ??
Dawid nie wydaje mi się, napisałem kiedyś właśnie prosty zegar gdzie w funkcji przerwania od wewnętrznego licznika wykonuje się minimum 100 cykli + opóźnienie 150ms i nic się złego nie dzieje. Fakt że miejsce w pamięci na wektor przerwania jest niewielkie, ale C to nie assembler i kompilator jakoś to sobie ułoży.
W PONOŻSZYM PROGRAMIE JEST JAKIŚ BŁĄD, JEST PROSTY PROGRAMIK GENERUJĄCY PRZERWANIE OD T0 I ZMIENIAJĄCY CO 0.5s STAN P1.7 CHOĆ PROSTY TO JEDNAK NIE DZIAŁA. KOMPILOWANY JEST POD KOMPILATOREM FORTECH ASSEMBLER RODZINY PROCESORÓW 8051 NA 2051. NA PORT TEN WŁĄCZYŁEM DIODĘ JEDNAK NIC, TO SAMO ZADANIE POD BASSCOM NIE PISANE W ASSEMBLERZE DZIAŁA WIĘC UKŁAD...
Dołączając moduł #include<avr/interrupt.h> możesz stosować deklarację SIGNAL i INTERRUPT. SIGNAL blokuje pozostałe przerwania na czas jego obsługi, a INTERRUPT nie. Osobiście nie stosowałem INTERRUPT, ale sam zastanawiałem się niedawno w jaki sposób będzie interpretowana komenda RETI(assembler) podczas jej wywołania z przerwania uruchomionego...
To w jaki sposób się "operuje" na przerwaniach, wynika z budowy procesora i do tego są odpowiednie "schematy" graficzne w specyfikacji. Z takiego schematu widać która flaga czym steruje i które flagi jak używać. Do tego producent oferuje do tych modeli "midrange mcu reference guide" gdzie są opisane w bardziej rozległy sposób elementy procesora. Tam...
Paweł Es. pisze w języku assembler. Jak mogę obsłurzyc przerwanie aby nie dopuścic do migotania wyświetlacza<??>
Witam, Pierwszy błąd, który wychwyciłem to brak zachowania i odtworzenia rejestru stanu procesora SREG we wszystkich obsługach przerwań. Należy również zadbać o zachowanie używanych rejestrów (R0-R31). Zobacz ci się stanie np. w takim przypadku: CPI R16,10 ; tutaj przychodi przerwanie które zmienia stan SREG (znaczniki Z,C ...) BRNE xxx LDI...
Witam siedzę od jakiegoś czasu i nie mogę za chiny uruchomić przerwań. Program piszę w assemblerze. chcę uruchomić przerwanie INT0 i INT1 na porcie E Oczywiście odpowiednie bity kierunkowe tego portu są ustawione na IN (czyli wyzerowane) Chcę wywołać przerwanie INT0 gdy na bicie1 portu E pojawi się zbocze opadające. Podobnie z drugim przerwaniem: Chcę...
Wystarczy naciskać F8 idąc po swoim kodzie w głównym oknie i patrzeć na wartości rejestrów procesora po prawej. Pokaż co masz bezpośrednio po funkcji 7 przerwania 21h bo to coś dziwnego aż, że wszystkie rejestry są ciągle zerowe.
Witam Otóż mam mały problem. Pisze sobie szybkie przerwanie dla timera na Atmega644, to co mi kompilator z C przetłumaczył na assembler wrzuciłem do wstawki assemblerowej a przerwanie zadeklarowałem z argumentem ISR_NAKED, rejestry używane w przerwaniu zarezerwowałem przez: register uint16_t licznik asm("r30"); register uint16_t temp...
Prosze zauwazyc ze wszystko dzialalo poprawnie wyswietlanie bylo bez bledów, dopóki nie wprowadziłem obslugi przerwań. Napewno błąd leży gdzies w wywolaniu adresu talblicy cyfr.
W BASCOMie nie da rady - przynajmniej czystym. Musi być co najmniej mały fragment w assemblerze, żeby zlikwidować jitter przerwania AVR. Reszta też by się przydała w assemblerze, bo liczba taktów na linię jaka jest do dyspozycji nie jest imponująca. A co do łączenia - masz H i V-Sync, które są liniami cyfrowymi i po prostu je łączysz z MCU - mały rezystor...
Zawsze mozna uzyc przerwania 16h: xor ax,ax int 16h i wynik masz w al=kod znaku, ah=kod klawisza...
tyle ze uzycie tej flagi (czy jakiegokolwiek innego sposobu) to nie kwestia jezyka C, tylko kazdego jaki istnieje, z assemblerem wlacznie. inna sprawa jest to, ze koniecznosc rownoczesnego wspoldzielenia zmiennych przez przerwanie i funkcje zachodzi raczej nieczesto, a jak juz zajdzie, to i tak mozna jej czesto uniknac na conajmniej kilka sposobow....
Witam, Ja mam podobny problem - dwa timery i INT. Chciałbym, żeby przerwanie od jednego timera nie było przerywane aż do momentu jego ukoczenia. Wykombinowałem, żeby podczas wykonywania tego przerwania zablokować pozostałe, a potem odblokować. Nie wiem niestety jak jest tłumaczone "enable interrupts" na assembler - jeżeli to kilka instrukcji, to mogę...
Port szeregowy działa na całkiem innej zasadzie. Podaje się mu liczbe iluś-bitową (to można skonfigurować) a on przekształci ją w ciąg binarny rozpoczynający się bitem startu a zakończony bitem stopu. Układ sterownika zbudowany jest z rejestru przesuwnego do którego wpisuje się wartość do wysłania a w czasie wysyłania kolejne bity są przesuwane tak...
Ponieważ w całym poście jedyną wartą uwagi informacją jest to: nie chce przyjmować klas to obstawiam że używasz C++. W takim razie gotów jestem się założyć, że nie masz nigdzie przy przerwaniach: extern "C" void nazwa_IRQHandler() {...} Bez owego >extern "C"< przerwania definiowane w plikach C++ nie zadziałają (jeśli...
Nie chce cię martwić, ale w bascomie to specjalnie kodu nie zoptymalizujesz. Jeżeli działa to dobrze, a nawet jeżeli byś przyspieszył procek o te pare ns to cie za bardzo nie urządza. W tym przypadku nie problemem nie jest czas wykonywania kodu i nawet po przepisaniu go na assembler czas ten niewiele się zmieni. Chyba że problemem jest to że kod nie...
ok, scon.0 i scon.1 to znam z assemblera, czyli w przerwaniu musiałbym wpisać if scon.0=1 then cos_tam else cos_innego clear scon.7 clear scon.6 mnie zastanawia natomiast jak to zrobić inaczej, z wykorzystaniem przerwania, ale bez assemblera ;D a chętnie bym podglądnął jak to robią inni.... ;-) pozdrawiam JAreCK
Witam Mam do napisania program do licznika T1 ze zliczaniem impulsów zewnętrznych z obsługą przerwań. Bez NPM tylko jako przerwanie. Proszę o pomoc.
Testy można przeprowadzić w niektórych symulatorach np. [url=http://www.edsim51.com/]edsim51. Przykładowy kod poniżej. [syntax=asm] sekundy EQU 07Eh ;zmienna sekund jedna_dwudziestaEQU 07Fh ;licznik jednej dwudziestej sekundy resetowanie EQU 19456 ;ustawienie zliczania co 0,05sek setkiEQU 07Bh dziesiatkiEQU 07Ch jednostkiEQU 07Dh flagiEQU 020h org 0000h...
Witam! Przygode z assemblerem radze zacząć od porządnego zrozumienia jak działa wasz sprzęt, jak jest zorganizowana pamięć, co to są rejestry, przerwania itp. Tutaj macie dwa kursy z ktorych sam korzystalem: http://skowi_magik.republika.pl/ http://rudy.mif.pg.gda.pl/~bogdro/dos/in... Pozdrawiam!
witam! jak nadpisać konkretny plik np wartościami 0x01?są w assemblerze przerwania (int 13h) które powodują zapis/odczyt z konkretnego sektora pod konkretną głowicą itd (w AL,AH podaje się odpowiednie dane jak np numer sektora itp..),ale jak np. sprawdzić w którym miejscu dysku znajduje się plik np. plikt.txt?w jaki sposób sprawdzić jego długość,zeby...
Zawsze mozna cos takiego napisac, ot, chocby w assemblerze (na przerwaniach)...
google "bascom wstawki assembler" np. http://www.elektroda.pl/rtvforum/topic10...
Programowe generowanie sygnału video w jakimkolwiek standardzie jest zadaniem krytycznym czasowo, dlatego bez asemblera niewiele zwojujesz. Nawet w asemblerze trudno uzyskać więcej niż 100 punktów w linii. Zresztą zerknij na: Rejestrator przebiegów cyfrowych - przystawka do TV z EP Rejestrator przebiegów analogowych - przystawka do TV z EP Nie jest...
tak sie złożyło, ze nas na studiach uraczyli Motorolką MCF5282 ColdFire... i w assemlerze do tego kazali programować... i problem polega na tym jak "złapać" przerwanie?? cos tam wyczytałem, o róznych rejestrach sterujacych itp... ale nie mam pojęcia jak jej "powiedzieć", co ma robić po zgłoszeniu przerwania (np. z PIT)... o pomoc prosze :)... ewentualnie...
Prędkość obsługi przerwań determinuje wyłącznie tempo ich obsługi. Aby AVR wykrył przerwanie potrzebne są o ile dobrze pamiętam 2 takty zegara, co niewiele zmienia, bo z taką prędkością i tak przerwań nie obsłużysz, bo samo wejście do nich trwa ponad 4 takty, a wyjście dodatkowo 2. I to w przypadku pustego przerwania. Lepiej opisz co to za proste analizy...
Rzeczywiście. Przepraszam za pomyłkę. Chciałem tylko by wyrażenie nie zostało pominięte w procesie optymalizacji( chodź i w tej szerszej formule też nie zostałoby uwzględnione). Stałoby się tak, podczas próby odczytu rejestrów przy np. bezpośrednio wklepanym adresie '0xffff...'. Rejestry systemowe przez nagłówek(at91.*,h) mają atrybut 'volatile'( no...
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ł...
Udalo mi sie w ten sposob (skacze do miejsce po zakonczeniu przerwania): przerwanie: . . . POP ACC POP ACC MOV A,#MIEJSCE PUSH ACC MOV A,#00H PUSH ACC RETI
Zapoznaj się z przerwaniami tego uC z datasheetów: http://www.keil.com/dd/docs/datashts/sil... http://www.keil.com/dd/docs/datashts/sil...
ISR_NAKED i assemblerem https://gcc.gnu.org/wiki/avr-gcc#Registe... jest tam właśnie napisane że te co zauważyłeś muszą być zachowywane. ps. to przerwanie jest aż tak często, że jest o co walczyć?
Witam, Przyczyną twoich problemów jest to iż błędnie zakładasz działanie instrukcji BREQ (skok jeżeli równe) a ty traktujesz ją jako CALL z warunkiem EQ (wywołaj jeżeli równe) a tak nie jest. Instrukcja BREQ location "skacze" do miejsca w skazywanego przez location nie odkładając adresu powrotu na stos. Aby wywołać podprogram musisz użyć instruckcji...
po prostu pod adresem pamieci w ktorym jest wektor przerwania(sprawdzisz w dokumentacji, pewnie jest to 0002 lub 0003h) zrob call do obslugii przerwania, wykonaj co masz wykonac i wroc komenda reti . Sprawdz czy nie musisz odblokowac flagi przerwan(Interrupt Enable) bo inaczej nic nie zadziala. Powodzenia
Witam, wlacze od jakiejs chwili z assemblerem dla 51, stanalem na odczytaniu stanu licznika T1, sytuacja jest taka ze T1 pracuje w trybie counter liczac impulsy z zewnatrz w tym czasie T0 pracuje w trybie timer, w momencie gdy T0 wygeneruje 15 przerwan przy kwarcu 12Mhz tyle mniej wiecej przypada na sekunde ma nastapic odczyt licznika T1. O tyle co...
Ileż się naszukałem w User Manualu co odpowiada za globalne włączenie przerwań w LPC2478. I okazało się że chyba nic. Po prostu to wymysł Keila ta funkcja. W User Manualu tego nie znajdziesz, tak samo jak szczegółów dotyczących przerwań, instrukcji assemblera itp. Dlaczego? Dlatego, że to są rzeczy specyficzne dla RDZENIA tego mikrokontrolera - rdznia...
W poprzedniej wypowiedzi dokonałem poprawek w przykładowym kodzie. Tak, to już jest kiedy Elektrodę traktuje się jako przerywnik przy pracy. Kwestią otwartą jest nadal testowanie wybranego bitu, lub bitów. 1. Jak to wykonywać poprawnie testowanie jednego bitu ? Zależy to od danej sytuacji. W trakcie testowania pojedynczego bitu w PINx z pominięciem...
Balu -> no tak zgodnie z tym co podpowiedział dalej BoskiDialer to miałeś rację, próbuję odczytać z flasha - ten nieszczęsny LPM (eeeh no chwila nieuwagi) BoskiDialer -> WIELKIE DZIĘKI !!!! - kurczę w tym drugim poście nie dostrzegłem niestety tych twoich poprawek w kodzie i to był mój największy błąd. Czyli dokładnie tak jak sugerowałeś w pierwszym...
Witam, proszę o pomoc w trzech zagadnieniach assemblera. 1. Jak przy pomocy MMX/SSE sumować 2 wektory o rozmiarze 3? 2. Jak w assemblerze wyświetlić informacje o DOS-ie? 3. Jak zrobić wypisywanie tekstu bez użycia przerwania DOS-owego? Podobno można wykorzystać przerwanie karty graficznej 10h Korzystam z NASM i jak dobrze pamiętam to z architektury...
Jeżeli masz czasochłonne przerwania mogą one znacznie zakłócić transmisje nawet przy 300baud. Jeżeli możesz na ten czas wyłączyć przerwania, zrób to - możesz wtedy próbować podnieść prędkość transmisji nawet do 115kbaud. Taki zabieg bez użycia assemblera może się nie udać.
Podział na kolejne kostki jest równie banalny jak łączenie. Przypuszczam, że program do programatora może mieć opcję wybrou układu który ma zaprogramoiwać - podaje się kompletny plik i poleca nagrać kość H albo L. 68340 to CPU32. Procki m68k mają na początku przestrzeni adresowej tabelę wektorów przerwań - 256 pozycji czyli 1kB.
To nie ma nic w wspólnego z BASCOMem, C, czy Assemblerem. Masz błąd w rozumowaniu. Używasz LCD w programie głównym i przerwaniu. Obsługa LCD nie jest ReEntrant (tylko nie szukaj definicji słowa "ReEntrant" na Polskiej Wikipedii bo na Polskiej Wikipedi ta definicja jest błędna ;) (albo przynajmniej niekompletna)). Umieść wyświetlanie w programie głównym....
Jeśli chcesz bez zatrzymywania to o ile pamiętam (dawno nie bawiłem się asmem pod DOS'a) to istniała usługa nr 6 przerwania 21h. mov ah, 06h int 21h W zależności od stanu rejestrów (zobacz jakich) pobierała znak z bufora i umieszczała w dl, bez "zatrzymki". Pozdrawiam.
... tutaj wyłącznie chodzi o sprawę nieprawidłowego zliczania impulsów przez T1 gdy chodzi INT0... To raczej przerwanie źle zlicza impulsy , a nie T1.Procedurę przerwania napisz w assemblerze , a M8 się wyrobi :D Piotrek
A niby dlaczego miałby nie funkcjonować? Gdyby zawartość SRAM była tracona to program musiałby się wykonywać od początku, co efektywnie byłoby równoznaczne z resetem procesora. Oczywiście w każdym trybie oszczędzania energii zawartość SRAM jest zachowana, co czyni twoje rozważania nieco pozbawionymi sensu. Jeśli chcesz wydłużyć czas to do wybudzania...
Chodzi o to ze po przyjeciu przerwania nie kasuje automatycznie flagi D wiec zaleca sie w procedurze przerwania ja skasowac Dotyczy to wszystkich flag (poza I). Są takie jakie były w chwili przyjęcia przerwania. I jest kasowane. Warto zaznaczyć, ze w 6502 wejście w przerwanie odkłada na stosom, poza adresem powrotu, także rejestr statusu. Rejestr ten...
Wszyscy mają rację ;-) Ale żeby dobrze poznać mikrosterownik trzeba poznać jego assembler. Ja też czasami kożystam z BASCOMA (avr i 8051), ale i tak większość kodu jest w tedy w assemblerze, pomijając to, że kodu wynikowego wychodzi mniej, to łatwiej min się "myśli" w assemblerze. A ile razy trzeba się zastanawiać "co ten bascom wyprawia z tymi timerami/rejestrami/przerwaniami/itd"?
Gdzieś wyczytałem, nie wiem gdzie, że w Cortex'ach funkcje obsługi przerwań mogą być użyte jako zwykłe funkcje. Odwrotnie - funkcje przerwań mogą być zwykłymi funkcjami, bez żadnych dziwactw, bez atrybutów, bez assemblera. Ale jak jest przerwanie to skąd procesor "wie" że wychodząc z przerwania ma nie odtwarzać LR bezpośrednio tylko to ma inicjować...
unisiemens zgra wszystko jak sa 2 flersze to 2, jak 1 duzy to cała jego zawartosc. W eepromie (emulowanym ) jest sp-lock area, Mapa IMEI, ustawienia usera (ostatnie połaczenia pierdoły...) Deassemblera poszukaj na stronie producenta, moze bedzie. Najważniejsza jest jednak dokumentacja od tego procka. Dam ci plik deassemblowany np od atmela 90s8515 i...
Dobry wieczór, Gra działa, ale wyświetla tylko cyfry parzyste z wyjątkiem pierwszej. Generator liczb pseudolosowych polega na wycięciu młodszej cyfry setnych sekundy zegara systemowego... Kiedyś działało, a na CA80 kuleje... Zakładam, że problem wynika z różnicy w implementacji obsługi klawiatury starego (SA) i nowego (CA) systemu oraz wykorzystania...
Za bardzo nie mogę zrozumieć dlaczego po stronie odbiornika wszystkie dane mają postać zanegowaną w stosunku do nadajnika. Nie musi tak być - po prostu większość (wszystkie?) dostępne demodulatory podczerwieni w przypadku braku sygnału mają na wyjściu stan wysoki. Pojawienie się paczki impulsów generuje stan niski na wyjściu takiego odbiornika. Tu...
Polecam obejrzenie paru stron, jakies proste programy "hello world", troche o przerwaniach i pamieci i tyle, asm nie jest trudny ;]
(at)velsper Najsmieszniejsze jest to ze jeden z Gumisiow obecnie robi w TPSA (Orange) ;) i chroni ta siec przed wrednymi hackerami ;) Co do assemblera nie bylo zle, akurat w latach 90 moj nauczyciel od informatyki (w szkole sredniej) wydal kasiazke "Jak Pisac Wirusy", fakt ze spora czesc to bylo tlumaczenie ksiazki z pakietu Borland Turbo Assembler,...
Co do odmierzania czasu to możesz to zrobić na wiele sposobów. W normalnych pętlach albo klawiaturę obsługiwać w przerwaniu, wtedy opóźnienie definiuje to przerwanie i nie angażuje zbytnio procesora. A z drugiej strony to poszukaj na forum, sam tu umieszczałem program obsługi klawiatury matrycowej.
:oops: przyznaje sie bez bicia - pic'ow nie programowalem 6502, 68k, x86, '51, od biedy z80 i avr no i pierwsza prawda programisty niskiego poziomu - assembler przenoszalny nie jest :) ale.. to tylko pomysl ze starych dobrych czasow
Wstawki asemblerowe w AVRGCC można umieszczać w programie po instrukcji "asm volatile", zresztą najlepiej przeczytaj sobie "GCC-AVR Inline Assembler Cookbook" - znajdziesz go pod tym adresem: http://www.stanford.edu/class/ee281/proj... Pozdrawiam.
Chyba to właśnie co znalazłem w źródłach. Deklaracja funkcji przerwania nie może mieć atrybutu Interrupt("FIQ") skoro mamy już wrapper w assemblerze. Tak jak pisałem, spróbuj z __attrybut__((naked)) albo wcale. Jeśli zadeklarujemy to jako FIQ to kompilator dodaje kod odejmujący 4 od adresu powrotu, co my już robimy we wrapperku.
Wychowałem się na assemblerze Potem AVR i nadal assembler Szacunek! a więcej trzeba ufać narzędziom zewnętrznym Nie można całkowicie. W przypadku generowania kodu startowego przez Cube miałem kiedyś zagadkę. Nie pamiętam dokładnie ale chyba chodziło o ADC i DMA. Cube generował inicjalizację w odwrotnej kolejności i to po prostu nie działało. HAL jest...
Do asemblera się nie dotykałem od 4 lat, ale sprawdziłem w mądrych książkach, że tryb VGA 640x480 256 kolorów inicjujemy przerwaniem 10h z wartością 13h w ax. Masz błąd w książce , 13h to tryb 256 kolorów ALE 320x200
Co do środowiska programistycznego to do atmeli jest AVR Studio, darmowe i bardzo dobre i ma dużo większe możliwości niż zachwalany MPLAB chociażby samą emulację procesora. wspaniale. MPLAB ma emulacje KAZDEGO procesora microchipa (PIC32, dsPIC rowniez) wlacznie z przerwaniami i niektorymi peryferiami (m.in. UART i cos tam jeszcze, mozna tez chyba...
Teoretycznie jest możliwe na etapie kompilacji stwierdzenie które przerwania będą odblokowane, ale tylko teoretycznie, kompilator musiał by przeprowadzić symulację działania programu, można by w zasadzie zrezygnować z wstawiania takiego „bezpiecznika” (instrukcji RETI) dla każdego możliwego poza jawnie wskazanymi, idę o zakład że w wielu...
Witam, ... Czy to dzielenie będzie wykonane jako 1 operacja, czy zostanie rozbite na ileś tam poleceń asm. I czy przerwanie nie nastąpi w trakcie wykonywania się tej funkcji i czy przez to nie mogą pojawić się błedy? W AVR na wszelki wypadek wyłaczałem przerwania na czas wykonywania tego typu działań. ... 1) Nie do konca rozumiem pierwsze pytanie, tak...
[syntax=assembler] ORG 0 ; wektor zerowania JMP MAIN ; bezwarunkowo skocz poza obszar wektorów przerwań ORG 000BH ; wektor przerwania po przepełnieniu timer0 JMP PODPR_L MAIN: MOV TMOD, #01H ; ustaw dla timer0 tryb 1 MOV TL0, #01110000b ; 65536-10640=54896 MOV TH0, #11010110b ; SETB EA ; globalnie zezwól na przerwania SETB ET0 ; zezwól na przerwanie...
assembler przerwania assembler przerwania zegarowe assembler darmowy assembler
prosty pilot włącz wyłącz inwerter naprawa skrzynia automatyczna dodge
kablówka skrzynka matryca lsc320an02
Podłączenie głowicy uniwersalnej w Unitra MDS 432 Epson L1800 - Migające diody tuszu i papieru: przyczyny i rozwiązania