Zacznij od przerwania timera.
<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. :)
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,...
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...
Tryb CTC jest w atmega8 na timer1 i timer2, Jeżeli chcesz mieć dokładnie to zastosuj któryś z powyższych timerów. przy odpowiednim skonfigurowaniu timera może on automatycznie zmieniać stan na odpowiednim wyjściu. (dla timer 1 jest to OC1A/PB1 OC1B/PB2, a dla timer2 OC2/PB3) W trybie CTC nie musisz ciągle wpisywać wartości do TCCRx.
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...
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...
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;...
https://obrazki.elektroda.pl/3029878300_... Witajcie moi drodzy Oto trzecia część mojego praktycznego tutoriala dla ośmiobitowego mikrokontrolera PIC18F2550 od Microchipa i programatora SDCC . W tym temacie najpierw krótko omówię różne konfiguracje oscylatora PIC18F2550 - oscylator wewnętrzny (internal oscillator), zewnętrzny (zegarowy...
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...
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.
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...
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...
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...
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...
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.
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ę...
http://obrazki.elektroda.net/57_12088851... Pokrótce przedstawię pomysł na wykorzystanie przestarzałych komputerów PC, których jak podejrzewam, podobnie do mnie wielu maniaków elektroniki po prostu nie chce wyrzucić. Komputer pracujący pod DOS-em, umożliwia dostęp do pełnych zasobów sprzętowych bez żadnej kontroli systemu operacyjnego, toteż...
Ale 01h przerwania 21h czyta znak, a nie liczbę. Co więcej, DIV chyba nie działa na 8-bitowych rejestrach, więc bierze AX przez BL. Stąd AX = 0134h = 308, a to jest podzielne przez 7.
Sterowanie serwami rozwiązałem (jeśli ktoś ma lepszy pomysł to chętnie wysłucham), problem tkwi w komunikacji z komputerem... Moja propozycja to wykorzystanie timera z przerwaniem. W przerwaniu timera byłyby zmieniane stany wyprowadzeń sterujących serwami. Ponieważ standardowo przerwanie od portu szeregowego ma mniejszy priorytet to nie mogłoby ono...
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.
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...
Niestety czasu nadal nie mam zeby odpowiedziec dokladnie (moze jutro się cos znajdzie :) ), Co do 'zasymulowania' to Keil jest bardzo dobry ew. (juz nie pamietam ktory mnie bardziej odpowiadał, bo ostatnio ich nie uzywalem) jest jeszcze Raisonance (http://www.raisonance.com/ ) i oba są dosc fajnymi srodowiskami zarówno do pisania jak i testowania kodu....
Faktycznie, taki zegarek akurat do domu nie bardzo się nadaje :) A co do reszty to: 1) Programuje praktycznie tylko w C/C++, a to dlatego, że jak się ma jednocześnie do czynienia z 4 rodzinami procesorów to już trudno assembler spamiętać (szczególnie w przypadku ARM'ów) :) Do AVR'ów używam WIN-AVR opartego na GCC. 2) W tym przypadku pomiar temperatury...
Ja soe nie znam, ale skoro uzywane są przerwania to trzeba jakis stos zadeklarowac. Przerwania uzywaja tych samyc rejestrow oraz sa rowniez uzywane w programie głownym W srodku przerwan zmieniaja sie znacznik w rejestrze SREG co moze miec znaczenie przy wykonywaniu programu głownego i.t.d. i.t.p. To chyba nie moze dzialac ale cuda sie zdarzają:-)
Swoim przykładem tylko potwierdziłeś to, co ja napisałem: "wszystkie zmienne lokalne, które muszą zachować wartość" - po wyliczeniu wartości dla b, wartość zmiennej "a" nie będzie już dalej potrzebna, nie musi zachować wartości, więc można zmienną w tym miejscu porzucić. Może nie wyraziłem się jasno, ale chodziło mi właśnie o posiadanie jak najmniejszej...
Witam. Dużo siedzę w asm dla '51 ale bardzo dawno nie używałem przerwań zewnętrznych i wyleciało mi z głowy - jak zmienia się, żeby wywołanie programu obsługi przerwania działało na zbocze 1-->0 (sprzętowo) - u mnie działa na poziom niski a jest jakiś bit co to zmienia ale nie pamiętam jego nazwy/adresu... programowo bym to zrobił ale to się mija z...
Zgłaszam się po przerwie. Przeczesałem internet w poszukiwaniu różnych rozwiązań w sterowaniu serwami. Przedtem jednak udało mi się coś stworzyć na ATmega16 (at)16MHz. 18 serw i rozdzielczość 100 pozycji... Zajętość czasu procka ok. 10%. Jako, że od jakiegoś czasu zacząłem bawić się trochę PICami znalazłem bardzo ciekawe rozwiązanie, niestety tylko...
Witam tak studiuje te kursy z Ep i jakoś mi to do głowy nie wchodzi, kurs jest napisany straszie chaotycznie facet rozpisuje sie o mało znaczących rzeczach a najwazniejsze nie sa opisywane, tak jak by były oczywiste, może są ale dla niego,ja znam tylko bascoma na 8051 no i troszke assemblera ale assembler wydaje mi sie trudnym jezykiem przy bardziej...
Witajcie, Kontynuując moją przygodę "chirurga ARM" doszedłem (i zatrzymałem się) do plików startup'owych i linkera. Przeglądając czarne zakamarki internetu znalazłem jakieś przykłady (Fredie'go też) lecz nie rozumiem na jakiej podstawie one powstały. Jako główne źródło podawana jest biblioteka standardowa STM i zawarte tam przykłady. Interesuje mnie...
Fajny przykład jak nie należy programu pisać. Nikt nie powiedział że należy :) To nie jest kod produkcyjny tylko żeby ułatwić debuggowanie. Dlatego pozbyłem się przerwań wszystkich. - zły wybór uc w ustawieniach projektu Jest OK, testowałem zarówno kompilowaniem "z palca" avr-g++, jak również Atmel Studio 6.2. - resety uc Dzięki, sprawdziłem - nie...
Właśnie ! Weź to obejrz w asmie. U mnie Keil to tak organizuje, ze w asmie pod odpowiednimi adresami przerwań są instrukcje skoków LJMP do obszarów, w których kompilator był łaskaw umieścić obsługę przerwania. Czyli wszystko jest ok! O! Już wiem. Najedź w lewym okienku na nazwę Twojego pliku źródłowego. Prawym przyciskiem myszy i wybierz "Options for...
Witam Utworzyłem nowy temat ponieważ nie widziałem żadnego podobnego tematu na elektrodzie. Otóż potrzebuję pomocy odnośnie wyświetlania znaków na wyświetlaczu LCD. Jest on zgodny z HD44780 (jego numer to: WC1602ASFYLY...). Chodzi mi o kod programu napisany w języku Assembler tylko, że bez dołączanych do niego bibliotek oraz przypisywania innych nazw...
... To w mniej więcej w taki sposób pisze się programy do zegarów alfanumerycznych, i w ogóle obsługę przerwań tak się pisze? WIem tylko, że one (te zegary)zczytują z odzielnych funkcji cyfry i je wyświetlają, a ustawienie godziny ejst możliwe w takim razie w każdym momencie ... Najprostszym rozwiazaniem dla takiego zegarka bylby program zawarty praktycznie...
Ściągnij sobie zestaw instrukcji Intela. Jest w 2 częściach: (razem 4,8 MB) Stamtąd dowiesz się, co robią konkretne instrukcje. mov ax,4c00h int 21h kończy program z kodem wyjścia = 0. (jest to funkcja 4ch przerwania DOS'a) Z tego: ASSUME CS: CODE, DS:CODE ORG 100H; wynika, że jest to program typu COM.
Ok, dzięki hi8 i lo8 nie wyskakują tamte błędy, ale za to teraz otrzymuję to: Build started 30.10.2010 at 23:00:46 avr-gcc -mmcu=attiny2313 -mmcu=attiny2313 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=20000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT wstawka.o -MF dep/wstawka.o.d -x assembler-with-cpp -Wa,-gdwarf2...
Proszę o odpowiedź czy dobrze rozumiem te obliczenia i zależności między częstotliwością, czasem przerwania a preskalerem. TIMER1 Wartość dla 1 sekundy OCR1A=((częstotliwość procesora)/preskaler)-1 Zgodnie z tabelką na stronie 110 mamy do wyboru preskaler: - 8 - 64 - 256 - 1024 więc obliczam według wzoru wartości dla każdego preskalera i biorę ten którego...
Stary post ale , jest sposob aby przerwania od timera wystepowaly w rownych(co do jednego cylku) z gory okreslonych odstepach. Przy kwarcu 12MHz aby odmierzac rowne czasy np 20ms wystarczy na poczatku przerwania wpiac taka procedurke ktora modyfikuje odpowienido rejestry TL0 i TH0 i uwzglednia opoznienie czasowe. t0VAL equ 20000 ; czas miedzy przerwaniami...
Czasy się zgadzaja bo sprawdzalem w symulatorze avr studio. Jak to sprawdzasz ? Mi nigdy się nie udało w symulatorze AVRSimulator (AVRStudio) zasymulować czasu rzeczywistego, a AT90S2313 nie ma DebugWire, ani JTAG. Do generowania opóźnień proponuję użyć przerwania Timer0 Overflow , tak skonfigurowanego, aby było zależne od stałej Xtal, która definujesz...
W DS89c4xx liczniki pracuja tak samo jak w zykłym 8051, pewnie zeby zachowac zgodnosc wstecz... Xtal jest dzielony przez 12 Reszta procesora taktowana jest 1:1 i cyklu maszynowego nie zmienisz!!! mozesz natomiast: - dynamicznie podzielic przez 1024 /ale liczniki pracuja swoja predkoscia/ /w momencie przerwania procek wraca do normalnej predkosci/ -...
Teraz już całkiem nie działa... :/ Muszę przyznać, że nie czuję się najlepiej w asemblerze. Mam nadzieję, że nie będę musiał już więcej nic w nim pisać. Wklejam kod: myszaF2 , dziękuję, że zainteresowałeś się moim problemem. Lepiej będzie jeśli podczas wklejania kodu użyjesz pełnej edycji i użyjesz znaczników SYNTAX - kod będzie o wiele czytelniejszy....
Udało się skompilować lwip i ... nagle przerwania przestały działać. Proc. lpc2148 Startup.S plik .ld i vector.S brałem z jakiegoś innego projektu z sieci (na mniejszy proc lpc zmieniając jedynie rozmiar sekcji ram rom) zapewne tu jest problem. Znalazłem na sieci projekt typowo pod LPC2148 http://gudjon.org/electronics/source_cod...
Z tym ADC to chodziło mi o to że można z niego zrobić Timer, bo też generuje przerwania w stałych odstępach czasu. 89S51 to już lepiej. Ma chyba 3 Timery, tak? No to jeden niech zlicza impulsy z zewnątrz (T0) a jakiś inny (powiedzmy T1) niech liczy takty zegara. Tylko że jakiś preskaler by się przydał. A w 51 to chyba tylko programowy. Czyli co kilka...
Witam, posiedziałem odrobinę i większość problemów się rozwiązała. <Pituś Bajtuś> oczywiście masz całkowitą rację. Po adresie początku stosu ma być tablica wyjątków/przerwań a nie instrukcje. Tak się ciekawie złożyło że kod się uruchamiał (ale pewnie tylko pod debuggerem ) czyli głupi ma zawsze szczęście jeśli nawet jest ono złudne ;) dodałem...
Cieszę się, że osiągnąłeś zamierzony cel, a że "po swojemu" to tylko plus bo znaczy, że sam kombinujesz, a to najważniejsze. Niestety muszę Cię zmartwić, ale robisz bardzo podstawowy błąd, polegający na zapętleniu się w przerwaniu w pętli: while(bit_is_set(ADCSRA,ADSC)); Rozważ hipotetyczny (aczkolwiek możliwy) przypadek, że pętla ta nigdy nie zostanie...
Ze względu np. na to (przepraszam za brak kolorowania składni): Ja aktualnie uzyskuję podobny efekt za pomocą makr - definiowanych np. dla różnych rodzin procesorów, ale funkcjonalnie będących swoimi odpowiednikami. O ile rzecz jasna jest to możliwe (bo w jednej rodzinie procesorów jest obecne peryferium X, a w drugiej nie ma). Można to nazwać Makro...
Witam czy mógłby ktoś sprawdzić poprawność kodu Assembler '51? Czy składnia jest ok? WDTCN DATA 0FFH ; WATCHDOG TIMER CONTROL AMX0CF DATA 0BAH ; ADC 0 MUX CONFIGURATION AMX0SL DATA 0BBH ; ADC 0 MUX CHANNEL SELECTION ADC0CN DATA 0E8H ; ADC 0 CONTROL ADC0H DATA 0BFH ; ADC 0 DATA - HIGH BYTE REF0CN DATA 0D1H ; VOLTAGE REFERENCE 0 CONTROL ADC0CF DATA 0BCH...
Tool chain editor used tools: Cross GCC Compiler Cross G++ Compiler Cross GCC Linker Cross G++ Linker Cross GCC Archiver Cross GCC Assembler A w zakładce discovery option compiler invocation command to arm-none-eabi-gcc wiec chyba korzystam z C Dodano po 1 EDIT: A tak w ogóle to jak przerabiasz przykład (zakładam że ten dla STM32F4), to poprawiłeś już...
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.
przerwania assembler assembler przerwania zegarowe assembler darmowy assembler
panasonic muting regulator prądu triak sagemcom dsi83 dekoder
cyfrowy polsat 17mb185 firmware
Mitsubishi Canter 2000 - brak prądu po zwarciu akumulatora Brak napięcia ładowania w prostowniku BST-1224/20