A włączyłeś w Keilu wektory przerwań? "Cofigure Flash Tool" zakładka "C51". Zaznacz "Interrupt vectors at adres".
Przepisałem wedle swej wiedzy. Symulacja w AVR Studio 4 działa poprawnie, ale po zaprogramowaniu LED'y nie migają... Drogi kolego ucy74 , jeśli już coś robisz , to rób to dobrze , albo nie rób wogóle - nie mogłem się powstrzymać ;) Ustawiasz INT0 na wyzwalanie zboczem narastającym ,"usypiasz" proca snem głębokim (Power-down) i dziwisz się , że nie...
chodzi o to że jeżeli podczas czekania w głównej pętli programu wystąpi przerwanie zaraz za rozkazem zmieniającym flagi to po powrocie mogą one być zmienione i niezależnie od wyniku porównania program może "pójść" gdzie indziej. Dlatego dobrze jest zadbać o to żeby takich sytuacji nie było, czyli na przykład: in r16,SREG pushr16 i na koniec pop r16...
Witam. Timer mikrokontrolera '51 taktowanego zegarem 11.059200 MHz zliczy w ciągu jednej sekundy 921600 impulsów. Ze względu na wielkość timera (2 bajty) może Kolega zliczać setne części sekundy - ustawić przerwanie co 9216 impulsów. Każde wywołanie przerwania zwiększy zmienną o 1, czyli mamy w niej wynik pomiaru z rozdzielczością 0,01 s. Rozwiązanie...
Ja w tego typu wyświetlanie zaprzęgam któryś licznik przepełniający się 100 do 200 razy na sekundę (w zależności od ilości segmentów) i tam przy każdym przepełnieniu aktywuje kolejny segment wyświetlając na niego daną ze zdefiniowanego wcześniej rejestru. Tak więc po dokonaniu pomiaru aktualizujesz tylko odpowiednie rejestry z których dane są wyświetlane...
Za pomocą bitów CSn2 CSn1 CSn0 możesz ustalić podział częstotliwości kwarcu przez 1,8,64,256,1024. Aby uzyskać dokłądnie sekundę musisz ustawić podział na 8 lub 64. Wtedy do timera musisz wpisać odpowiednio 65536-62500 lub 65536-15625 (do rejestrów TCNTnH starsze 8 bitów i TCNTnL młodsze osiem bitów). Przepełnienie jest sygnalizowane flagą ToVn którą...
Co do kompilatora to spróbuj: ftp://ftp.bielsko.evatronix.com.pl/pub/T... (12,2 MB). Nie gwarantuję ale asembler pod PowerPC powinien w tym być.
Ja sie nie znam na STM8 ale oglądając Twój kod odnoszę wrażenie że wektor dla przerwania powinien być opisany jako: {$82000000+tim2}
Czy ktoś zna rozwiązanie tej kwestii? Bo kolega benek33 miał napisać i nie napisał. Czy można samemu stworzyć całą procedurę przerwania w asm?
Nie :) TYlko to umożliwia działanie 2 programów "jednocześnie" (przynajmniej w dosie). Ty spokojnie pracujesz sobie w dosie a program siedzi w pamięci i obsługuje dane z rsa ale jeśli nie chcesz to mozesz napisać program nie rezydentny i tylko on będzie działa w danym czasie i nic wiecej
W procedurze przerwania wymagane jest zapamiętanie rejestrów, które są współdzielone w pętli głównej (przy użyciu komendy "push"), a następnie odtworzenie początkowego stanu zasobów (przy użyciu procedury "pop"). Ale o które rejestry dokładnie chodzi? Których rejestrów dotyczy warunek poprawnego wykonania procedury przerwania i w jakich sytuacjach?...
cześć potrzebuje napisać odbieranie danych z UARTa w uP(ARM LPC2142). znalazłem bardzo dużo przykładów konfiguracji UARTa i odbierania danych ale napisanych w C, a ja natomiast muszę to napisać w asemblerze no i odbieranie musi działać na przerwaniach. bardzo proszę o jakieś wskazówki jak to napisać, jeśli chodzi o UARTa to w miarę sie orientuje a problem...
Nową wartość dla OCR wpisuj w przerwaniu Overflow, a nie CTC. W przypadku Timer1 dla obu OCR1A i OCR1B jednocześnie (prawie ;) )...
mam pytanie, mianowicie pojawił się u mnie ten że sam problem, z tym że ja chcę zrobić komunikację pomiędzy komputerami za pomocą portów COM w asemblerze. Kod w asm napisałem analogicznie jak w 1 poscie KaMaSa. Uruchamiam go w DOSBoxie ale nic sie nie dzieje. Na drugim kompie napisałem odpowiedni kod do odczytu ale nic nie działa. Sprawdzałem status...
Niech będzie to: 1. dwukierunkowa 2. 8-bit 3. z potwierdzeniem 4. master slave 5. używamy przerwań
Faktycznie nieczytelnie :( Uważam, że powinieneś sprawdzenia dokonywać w pętli LOOP. Jednak odczytywanie będziesz miał opóźnione o ponad 100 ms. Najlepiej gdyby sprawdzanie odbywało się, w którymś z przerwań jeśli to możliwe.
Kolego, nawet nie chce Ci się przepisać programu... Już Ci pisałem - poczytaj o PRZERWANIACH. Przerwanie nie polega na ciągłym testowaniu jednej czy dwóch flag, tylko na pozostawieniu tego procesorowi. Przykład kodu z użyciem przerwania: org 0 ; adres wektora resetu sjmp start org 0bh ; adres wektora T0 sjmp t0_isr t0_isr: inc A anl A, #7 jnz t0_skip_blink...
Ogólnie mam problem w jaki sposób to zrobić by potem przy większej ilości regulowanych prędkości i ilości diod program był przejrzysty. uC 8051, chciałbym by ktoś wytłumaczył mi z przykładowym programem działanie też tych timerów czy priorytetów przerwań.
Proponuję zapoznać się z popularnymi przerwaniami oraz ich funkcjami. Szczególnie interesujace będą przerwania 13h i 21h
Dobrze rozumiesz. Są nawet przykładowe kody w Reference Manualu dla PIC midrange.
Nie wiem po co Ci tutaj asembler, ale Twój wybór ;)
To co napisał shg- trzeba uważać. Jeżeli pierwsze przerwanie odłoży na stos to co trzeba i drugie przerwanie wewnątrz pierwszego też odłoży na stos to co trzeba i z tego przerwania zostanie wywołane jeszcze raz pierwsze albo drugie- bo znów zostało wywołane- i znowu odłozy na stos to co trzeba- to stos może się przepełnić. To znaczy wejść w obszar pamięci...
Oto szkielet programu *** .dseg .include "2313def.inc" ; Jaki procesor ;.......................................... SEGMENT DANYCH W SRAM ; Twoje dane ;.......................................... SGMENT DANYCH W EEPROM .eseg .org $0000 ; Twoje dane w EEPROM ;..........................................
Poczytaj o licznikach 8051, ładujesz wymierzoną liczbe do licznika, licznik odlicza tyle cykli maszynowych, i po odmierzeniu tej liczby (20ms) zmieniasz w przerwaniu stan portu, i tak w kółko, trzeba znać częstotliwość taktowania. Taki skrót żebyś wiedział czego szukać.
NIEKONIECZNIE TAK Z TYM PRZERWANIEM Szkoda wejścia INT. ...są prostrze metody. Możesz coś zasugerować??
ogolnie do przerwan to interrupt z numerem na koncu funkcji ( 0 - adres 0x03, 1 - 0x0b itd) jest w pdf o kompilatorze. do nopa jest jakies makro chyba _nop() ale nie pamietam dokladnie tylko trzeba biblioteke dolaczyc. void przerw0(void) interrupt 0 { ; } mozna jeszcze dodac using i potem numer banku rejestrow ktore beda dla tego przerwania...
A w którym przerwaniu i w jakim celu? Zle zrozumiałeś SEI nie na końcu przerwania ale na początku. Z mojego doświadczenia TWI w przerwaniach (szcególnie w C) bedzie zabierało wiecej czasu niz programowe wysyłanie jednego bitu. To miałeś źle napisany kod.
Witam wszystkich progrmistów w asemblerze... mam wielki problem, dostałem zadanie ( w zasadzie to dwa, treśc drugiego w innym poście) do zrobienia z czegoś z czego jestem zielony i potrzebuje pomocy w rozwiązaniu i zrozumieniu problemu... Za wszelką pomoc bardzo dziękuje Zaprojektować i uruchomic system generujący przerwanie czasowe, spełniający następujące...
64 takty to o połowę krócej. :) W każdym razie, rzeczywiście obsługa tego przerwania w asemblerze powinna się spokojnie zmieścić poniżej 2us. Ewentualnie można jeszcze dodać bramkę AND sterowaną z drugiego timera i załatwić to sprzętowo.
Po drodze na stosie zachowuje aktualny adres licznika programu zeby wiedzial w ktore miejsce ma wrocic po wykonaniu instrukcji reti informujacej o zakonczeniu obslugi przerwania.Dexter W procku nic się nie dzieje "po drodze" tylko po kolei. Jak układ przerwań odbięrze przerwanie, które jest aktywne to w pierwszej kolejności na stos odkładany jest licznik...
Ja rozumiem to tak, choć zaznaczam z góry że nie mam pojęcia o St7Lite i na oczy go nie widziałem,że: .spi, .lt2, .srt .... - to są raczej dyrektywy assemblera. DC.W - to jest "Data Constatnt, Word" czyli deklaracja stałej we flashu która ma dwa bajty a jej wartość to etykieta np. it_ret (bo etykieta to poprostu symboliczna liczba - adres w pamięci)....
Z tą dowlnością w używaniu rejestrów byłbym bardzo ostrożny. Nieodpowiednia zmiana - program się wysypie. Nie wolno używać w trybie zapisu bez wcześniejszego zapamiętania: Y ( soft stack pointer ), R4:R5 ( frame stack pointer ), R6 ( status register ), R8:R9 ( data pointer ), R23 ( translate register ), R12:R13:R14:R15 ( fp calculator ). W sumie można...
Z załączonego przez Ciebie programu wynika, że cała procedura zawiera się w obsłudze przerwania od T0. Nie wiem natomiast jakie są rzeczywiste adresy tej procedury. Czy jest ona umieszczona pod adresem 000BH (wektor przerw. od T0) - jeżeli tak, to zachodzi na adres procedury obsługi RS'a - 0023H. To może być powodem dziwnego zachowania. Poza tym fizycznie...
Mało danych. Chcesz, żeby dioda migała na przerwaniach? Czyli przerwanie włącza, następne wyłącza - tak to zrozumiałem. Co do obsługi T0 musisz zrobić obsługę przerwania od adresu 0x0BH (czyli wyzwalanie przez flagę TF0). Wstaw coś takiego po LJMP start na początku: [syntax=text]ORG 0Bh ; start przerwania CLR TF0 CPL P1.4 ; zmiana stanu wyjścia sterującego...
Jestem dyslektykiem to dla twojej wiadomości. Ale chodzi mi czy po przepełnieniu licznika to przez ten rozkaz on skacze do timer0.Możesz mi wytłumaczyć jak to sie dzieje i jakie są zasady tego działania. chodzi mi tylko o tę czesc kiedy licznik sie przepełnia i wykonuje ten fragment programu.
Co do roznicy to nie bardzo wiem ale co do stosu: -jest to specjalny "kawalek" pamieci RAM ktory sluzy do odkladania informacji przez procesor. Jest to pamiec typu LIFO (last in first out) Taki przyklad: wykonywany jest program podczas ktorego zostaje wywolane przerwanie. W tym momecie procesor odklada adres w ktorym program zostal przerwany na STOS....
A czy w BASCOMie komenda 'wait 1' przy dyrektywie $crystal=<fosc> nie załatwi wszystkiego ?? A jeśli chodzi o precyzyjne odmierzanie czasu to polecam asembler i obsługe timera w przerwaniu. To jest chyba najdokładniejszy sposób. Pozdrawiam.
uC rozpoczyna wykonywanie programu od adresu 0h. Pierwszą komendą jaką uC wykona jest skok do właściwej części programu, zaczynającej się od adresu 100h (ORG 100h), na który wskazuje etykieta START. Skok ten omija obszar wektorów przerwań.
Masz 2 wyjścia. 1. Funkcji obsługi przerwania trzeba ustawić atrybut : __attribute__ ((interrupt ("IRQ"))) który dodaje prolog i epilog funkcji obsługi przerwania. Ale podobno nie zawsze dziala... 2. Piszesz sam prolog i epilog funkcji obsługi przerwania w asemblerze. I zamiast skoku pod AIC skaczesz do etykiety obsługi przerwania która powinna zachowywać...
;... start: ;jmp delay rcall delay ;lub call delay ;... haslo2: ;jmp delay rcall delay ;lub call delay ;... ;---------------------- delay: ;... ;clr r31 ldi r31,255 ;... in r17,pina ; cp r17,r31 brne exit_delay ;... exit_delay: pop r23 ;... pop r16 ret ;---------------------- Niestety nie wszystko działa tak jak powinno Powyżej masz...
Racja przepełni się, jeszcze lepiej. :D
Czy przerwania są kolejkowane i po obsłużeniu komunikacji wykona kod przypisany do drugiego przerwania, czy informacja zostanie utracona? Może się tak zdarzyć, jeśli obsługa jednego przerwania będzie na tyle długa, że w czasie jej trwania jakieś przerwanie zostanie wywołane dwa razy (lub więcej). Czy komunikacja USB będzie działać stabilnie gdy podłączę...
Może pokaż na początek jak jest zrobione zasilane awaryjne. Aby korzystać z przetrwania musisz: - odblokować przerwanie INT0 w rejestrze GIMSK (ustawienie bitu INT0 w stan 0) - skonfigurować kiedy ma być zgłaszane INT0 , bity konfiguracyjne ISC00,ISC01 w rejestrze MCUCR - zainicjować vektor przerwania od INT0 (jeżeli nie robi tego kompilator) - odblokować...
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ą...
Skorzystaj z przerwań generowanych przez licznik TIMER1 (lub TIMER2 jeśli jest dostępny).
Jestem na O0, breakpointy mam w pierwszych liniach main, program działa tak: Przede wszystkim przejdź do widoku asemblera i tam zobacz jak wygląda wykonywanie programu. Breakpointy też postaw na instrukcjach asemblera, przed main. Czasami informacje o debugowaniu, pomiędzy C a asemblerem się rozjeżdżają, chociaż dla O0 nie powinno mieć to miejsca....
Czy w obsłudze przerwania wyłączasz globalna obsługę przerwań do czasu zakończenia obsługi przerwania ? Czy czasem nie jest tak ze przyjecie jakiegokolwiek przerwania blokuje globalne? I dopiero wstawienie SEI odblokuj globalne spowoduje odblokowanie? Dokladnie tak jest, dlatego nie wiem po kiego grzyba koledzy wczesniej chcieli je wylaczac :>
Ja tylko pisze w asm - bascom to g.....o!!! Niewiem jakim cudem stwierdziłes że to bascom ldi, ret <- te jest asembler a te nazwy to poprostu rejestry
Jak Waszym zdaniem powinno się robić? Kod danej funkcji w przerwaniu, czy w przerwaniu tylko ustawianie flagi uruchamiającej tą część kodu. Dziękuję za dotychczasowe cenne wskazówki!! To drugie, zasadą jest aby przerwania były szybkie, wtedy sobie najmniej przeszkadzają, oczywiście są wyjątki jak np falownik gdzie w przerwaniu PWM musisz obliczyć nową...
Witaj kompilator Ci krzyczy, że adres do którego chcesz skoczyć jest za daleko (dla tej instrukcji) Jeśli zmienisz "out" na "sts" to wyskoczy Ci inny błąd, że nie znajduje komendy takiej to a takiej. Program jest zlepiony z kilku i nie mówię, że nie wygląda fachowo, tylko tak lekko dziwnie... Po za tym nie pisałeś go sam prawda? Użyłeś wielu zapożyczeń...
Witam Powstawiaj odpowiednie instrukcje tam gdzie napisałem zapal, zgaś itp. Powinien program zadziałać nie daję gwarancji że się nie machnołem. Niemniej idea chyba będzie widoczna i powinieneś w razie czego uruchomić ten program. Pozdrawiam ledequp1.7 buzerequp1.5 licznikequ21h ; licznik przerwań czas_led22h czas_buz23h czy_sequ1 ; czy sekunda org0000h...
Zamiast robić tam opóźnienie można policzyć ile taktów zajmie uartowi wysłanie ostatniej ramki i robić sobie inne potrzebne operacje ,które zajmują czas a po odpowiedniej ich liczbie zmienić stan porty i tyle . Asembler daje wiele możliwości wykorzystania czegoś co się nazywa opóźnieniem . A jak masz wolny licznik to można na nim zrealizować opóźnienie...
Zawsze zostaje Ci w zapasie przerwanie od komparatora analogowego które tez jest na oba zbocza, dodatkowo ma zaletę ustawienia poziomu np. odcina szumy. Ale ja bym się Bascomem za to nie brał - precyzyjne zależności czasowe tylko asembler. Pozdr. N.
asembler- wydaje mi się że mój pomysł był odwrotny- wyłączamy przerwania na czas ustawiania/odebrania sygnałów z DS na jakimś pinie. Ale może Twój pomysł jest lepszy.
Niczym szczególnym się nie różni, poza tym, że wektory obsługi przerwania mogą być trochę inne i ilość instrukcji może być troszkę większa, jeżeli chodzi o asembler. Nie wpływa to jednak na zapis programu, jeżeli zamiast konkretnych adresów używasz nazw symbolicznych definiowanych w plikach nagłówkowych, najczęściej dostarczanych razem z kompilatorem,...
No dobrze - o matko (sorki) moja kurza ślepota ale zwrócę uwagę na coś innego mocno niepokojącego w twoim kodzie. On się cały czas resetuje po przerwaniu. Po pierwsz po co ci cli() i sei() w przerwaniu (przecież wyłączenie innych przerwań po wejściu w każde przerwanie dzieje się z automatu) ale już wplecenie rozkazu: reti(); to wyciągnięcie dywanika...
Czy są jakieś znaczące róznice tak aby program napisany na 1284 nie chodzil na 644P? Np. M1284p ma 4 timery, a mniejsze siostry tylko 3 :D Wiąże się to więc, z 4 dodatkowymi źródłami przerwań i większym o 16 bajtów obszarem wektorów przerwań.
Dlaczego nie Timer ? Obsługa przerwania TIMER0_OVR w niczym nie przeszkadza w działaniu PWM, a mamy w ten sposób jakąś podstawę czasu, który można sobie odliczać w tym przerwaniu. Dokładność co do 3 miejsc po przecinku nie jest taka istotna przy dekodowaniu RC5... Co do kodu - to nie ma prawa tak działać, obsługa przerwania powinna być jak najkrótsza,...
W C kompilator dba o reti, nie programista. Stad wiec nie ma zadnego odpowiednika. BF
To taki mały offtop. wykorzystanie compare to bardzo dobry nawyk może odblokuj globalnie system przerwań, a nie tylko w jednej konkretnej funkcji? To wytłumacz mi jak to działa bo sie zamuliłem chyba. Przerwanie przyjdzie raz na 65536 czyli de facto dziala jak dzielnik przez tą liczbe. Gdzie tu w powyższym przykładzie mozliwosc ustawienia żadanej czestotliwości....
Witam '51 + asembler. Zbudowałem zegar (na przerwaniu), chcę teraz dopisać kod umożliwiający sterowanie urządzeniem zewnętrznym za jego pomocą. Załaczanie i wyłączanie o określonej godzinie/minucie z uwzględnieniem przełomu (np. załączanie o 20:10, wyłączanie o 20:00). Usiłuję opracować algorytm obsługi, jednak napotykam poważne problemy, jedynym sensownym...
Generalnie port jest zatrzaskiem więc nie ma sensu się martwić czy dana informacja się zmieni czy nie do czasu kolejnego zapisu do portu :) To daje ci sytuację taką korzystną sytuację że nie musisz się martwić o to co rozbi procek w tym czasie. Pytanie jak bardzo zależy ci na dokładności odmierzenia czasu w przypadku zapalania diody na około 1s lub...
Zarzekałem sie że nie zrobie obsługi bez przerwania bo to strata czasu procesora ale w końcu musiałem. Podaje moje wypociny.
Zamieszcze zrodlo jutro, bo nie mam go na tym komputerze. Co do wlaczenia bitow GIE i T0IE to mam je wlaczone i wlaczane sa za kazdym razem po zakonczeniu przerwania. Wyglada mi to na to ze program sie uruchamia i po wykonaniu przerwania gubi sie. Chyba ze to wina kompilatora gpasm. Pozdrawiam Adam
Przerwanie oparlem o wywolania DOS-owe XOR_BX,BX -> zerowanie BX XOR_CL,CL -> zerowanie CL POCZATEK: MOV_AH,08H -> ustawia ze odczyt klawiatury INT_21H -> wywolanie przerwania odczyty klawiatury MOV_CH,AL -> do CH znak ASCII klawisza nacisnietego CMP_AL,13 ->sprawdzenie czy ENTER JNE_DALEJ ->jak nie ENTER to skacz dalej CMP_CL,1...
Hej, Mam pewną wątpliwość co do sposobu działanie przerwań w avr`ach i ich obsługi przez avr-libc 1.4.4. Co się stanie jeżeli w momencie, w którym procesor obsługuje jakieś przerwanie zostanie zgłoszone następne przerwanie. Z dokumentacji zrozumiałem że nie zostanie ono obsłużone od razu ponieważ ISR albo Signal mają wyłączone globalne zezwolenie na...
Nie polecam rozwiązywać tego na jednym uC - jeśli chciał byś generować sygnał programowo, to synchronizację odbioru masz niechcący gratis (chyba, żeby się wysilić i robić transmisję w kodzie głównym a odbiór w przerwaniach lub na odwrót, ale to komplikuje całość). Wykorzystanie układów peryferyjnych chyba nie ma sensu, chyba, że chodzi tylko o wykazanie...
No tak, rejestr B muszę wrzucić na stos żeby odzyskać stan B.0 po wyjściu z przerwania. To w którym momencie powinienem odczytać B ze stosu ?
Łańcuch z diod LED. Może podpowiecie, jak napisać taką wstawkę w asemblerze do przerwania od Timera. Zmienna globalna pwm jest porównywana ze zmienną licznik (zwiększana w przerwaniu). Jeżeli większa, to LATX HI else LATX LO. Zmienna globalna będzie normalnie widziana w stawce asemblerowej?
Do przemyślenia, co miałoby się stać gdybyś miał włączone przerwanie ale nie miał jego obsługi?
Z mojej dość długiej praktyki wynika jeden wniosek : nie da się napisać dobrego i optymalnego programu bez znajomości asemblera. Procedury obsługi przerwań napisane w kodzie działają zupełnie inaczej niż procedury napisane np. w C. Wynika to z ograniczeń i kompromisów które przyjęli twórcy kompilatora. pozdrowienia T
Litości... Najpierw przeczytaj, co to takiego jest przerwanie. Potem spróbuj napisać całość w C (znajdziesz w sieci parę tysięcy gotowców). Potem (jeśli musisz, choć sensu to nie ma) kleć kod w asemblerze.
WITAM Mam podobny problem, ale chodziło by mi o obsługę przerwania w asemblerze. Czy ktoś może mi naświetlic temat. Przyznam, że zaczynam dopiero i przerwań omijam jak wody święconej. :sm19: Jakiego asemblera używasz? IAR czy AVR? A może jakiś inny?
Jedna uwaga. Jak piszesz program który ma działać na przerwaniach to nie powinno się stosować pętli opóźniających, ponieważ przedłuża to proces trwania obsługi przerwania i jednocześnie nic nie robi a w tym czasie może być potrzeba obsługi innego przerwania. Generalnie program w obsłudze przerwania powinien być jak najkrótszy robił tylko to co jest...
Witam. Sposób wykonania niezbędnych połączeń elektrycznych jest opisany w PDF’ie (Multipleksowany wyświetlacz LED). Załóżmy chwilowo, że są już połączenia: - uaktywniony bufor (JP1 1-2), - bufor podłączony kablem (1 do 1) do portu np. P1 (JP2>>JP4), - sterowanie wspólnymi katodami wyświetlaczy podłączone do portu np. P2(JP3>>JP5). Zastosowane...
Nawet standardowe funkcje _delay_ms i _delay_us z boblioteki delay.h nie blokują przerwań więc podobnie jak Twoje są narażone na to o czym pisze Asembler. Czasami dokładność nie ma aż takiego znaczenia np. mruganie diodami, czy generowanie dźwięku, itp. Ale jeżeli ma, to albo timery albo blokada przerwań.
Mogę spróbować. Nie jest to priorytetowe, ale i tak, chyba pokuszę się na przepisanie procedury przerwania FIQ z języka C na asembler. Nie obiecuję, że wcześnie wrzucę tu moje wypociny. Procedura ta korzysta z zmiennych globalnych z czego jedna jest tablicą. Najpierw muszę właśnie opanować manipulowanie takimi zmiennymi w asemblerze. PS. A czy jest...
(at)bluedraco - ac6 nie uzywalem ale to az trudno uwierzyc zeby byla taka lipa przy standardowo utworzonym projekcie. To fakt i dopiero początek tej lipy.... Poza tym ST deklaruje wektor w asemblerze.
Pierwsze co przychodzi mi na myśl to obsługa przerwań: cli, sei oczywiście nie potrzebne, natomiast nie odkładasz i nie przywracasz SREG. Daj na początek przerwań in <rejestr>, SREG push <rejestr> i na koniec przerwań pop <rejestr> i out SREG, <rejestr>
Może trzeba dać SEI przed uśpieniem procka? Przecież włącza SEI tyle że wszystko wg najgorszych praktyk programistycznch. SREG |= 0x80; --------------------------------- W nocie PDF ATtiny2313 wprawdzie napisano w uwadze, że tylko INT0 reaguje na wybudzanie poziomem, ale to słówko tylko (Only) tyczy się poziomu a nie samego przerwania. Powinno być...
Witam Jeżeli masz wyświetlić wszystkie polskie naraz na wyświetlaczu, w przerwaniu spróbuj zmieniać w banku tylko jednen znak np ż na ź i odwrotnie. Nie robiłem takiego doświadczenia ale myślę że może się udać, niewiele się różnią od siebie, nie będzie zabardzo migało. Dobrać tylko czas przerwania i może się uda. Jak będziesz wyświetlał ż to spacja...
Fajnym i szybkim sposobem jest podpięcie czujnika do przerwania zewnętrznego. no właśnie o tym pisałem... Wykryte w ten sposób zbocza opadające i odpowiedni licznik programowy (to są wolne przebiegi) pozwala jednoznacznie odczytać kod. mierząc tylko i wyłącznie zbocza opadające będzie trzeba domniemac że jezeli w czasie trwania bitu nie zostanie wywołane...
hmm czy C nie jest bardziej czytelny niż asembler? z tego co wiem to chyba wszystko co sie robi w asm mozna i w c :)
spróbuj tak: mov ax,13h int 10h tak sie zapisuje to w dev: asm ("movw $0x13,%ax "); asm ("int $0x10"); Dodano po 6 tyle ze pod windowsem nie dzialac moga przerwania nie wienm jak jest z wysyłaniem na porty
Przerwan wcale nie trzeba wylaczac i wylaczac (moim zdaniem nawet nie powinno sie tego robic) Wlasnie tak to sie robi we wspolbieznych systemach operacyjnych do synchronizacji wiec twoje zdanie jest bledne. Oczywiscie musi to byc ograniczone do absolutnego minimum ale musi byc. Oczywiscie jezyk C z niczym sobie sam nie radzi a juz napewno nie z synchronizacja...
(at)R-MIK Jeśli dasz NAKED i wstawkę w ASM, to ta wstawka może przecież zapisać i odczytać rejestr. A jaki to wiesz, bo sam go wybrałeś :) Możesz też użyć składni gcc do operacji w asemblerze, wtedy nie operujesz na rejestrach, tylko wskazujesz grupę, a kompilator sam sobie to tłumaczy na konkretne instrukcje. W tym przypadku IMHO lepiej po prostu...
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...
zerknij na ten projekt http://www.mcselec.com/index.php?option=... cała idea pomiaru jest zawarta w procedurze obsługi przerwania Interrupt Service Routine , jest to w Bascomie ale myślę że bez problemu przeniesiesz to na asembler
Witam! Jak dla mnie to program jest dla samej linijki trochu rozbudowany a samej zasady dzialania nie widac. Przed wyjściem z podprogramu przerwania nalażałoby skopiować dane z akumulatora (i tu masz błąd!) bo o ile sie nie myle to po wyjsciu z podprogramu stan acc nie jest zapisywany i może być utracony. Poniżej skrócona wersja programu do linijki:...
Poprawka zegarkowy po tosc1/2 gdyz nie w kazdym jest to rownoznaczne z xtial1/2 Fakt. :cry:
I zwykle zostawia się na ostatnią chwilę. A odpowiedzi na te pytania są trywialne dla każdego kto kiedykolwiek pisał cokolwiek w 51 w asemblerze...
1) Skoro przykład z książki więc pewnie jakiś fachman ją pisał, ja bym się czepił tego że zamiast ciągnąć dane z flasha to sa przepisywane do sram. Rakiety nie budujesz a program dałoby się uprościć i mniejsze ryzyko że coś ci te dane zamaże. Ja np rejestrów Y nigdy nie używam. 2) Nie wiem o co ci chodzi ale: inc R24 cpi R24, 10 brlo petla2 po CPI R24...
A nie mogą oba przerwania od liczników 0 i 2 działać niezależnie ? ldi R16, SYS_FREQ*1 out OCR2, R16 ldi R16, SYS_FREQ*2 out OCR0, R16 w rejestrze OCR0 mam wartość dwa razy większą niż w OCR2. Jeśli zakomentarzuje ustawienia jednego licznika i jego przerwania to drugi działa i na odwrot . Próbuje korzystać z dwóch liczników na raz i juz nie wychodzi...
Jako autor zacytowanego zdania wyjaśniam: Programuję w C od ponad 30 lat. Nie wiem, skąd pojawił Ci się pomysł, że nie znam języków asemblerowych - ja nic takiego nie napisałem. Programowałem i programuję (coraz mniej) w kilkunastu asemblerach, o 3 lata dłużej niż w C. Napisałem w tym czasie kilkaset tysięcy linii kodu asemblerowego, w tym dwa projekty...
;sampel dla 10 s mov eax,10 call Delay_seconds extrn Seconds_today:proc Delay_seconds proc pusha mov ecx,eax call Seconds_today mov ebx,eax DLY1: call Seconds_today sub eax,ebx cmp eax,ecx jb DLY1 popa ret Delay_seconds endp uffff :idea: sampel z ksiazki Asembler dla procesorow intel
Przyszedł czas na wybór topologii przetwornicy w kontrolerze MPPT. Zastanawiam się nad 3 opcjami: 1. LT8705 z czterema kluczami. Zalety: - Sprawdzone, stabilne rozwiązanie. - Latwość konfiguracji. - Gotowy projekt PCB z noty katalogowej. Wady: - Koszt układu scalonego - Konieczność zastosowania układu ograniczającego napięcie wejściowe do 80V (może...
Ja nie znając asemblera ARM'a skorzystałem z najłatwiejszego rozwiązania. Ściągnąłem ze strony http://www.siwawi.arubi.uni-kl.de/avr_pr... przykład razem z StartUpem z działającą obsługą jakiegoś timera (ja potrzebowałem PIT) i powklejałem do tego swój kod. Chwila roboty i nie trzeba się wgłębiać w asemblera.
Tanie chińskie wyświetlacze niestety są czułe na timing. Jako że została wykorzystana 4bitowa magistrala, newralgiczne timingi to: 1) od deaktywacji E do aktywacji E między kolejnymi nibblami tego samego bajtu 2) czas trwania aktywnego E Krzaki na wyświetlaczu mogą wynikać z zakłócenia defaultowych timingów bascoma przez często występujące przerwania....
Witam, ma problem z obsluga przerwan w tym procesorze. Bez systemu to zrobic to jest prosto ale jestem poczatkujacym developerem linuxowym i nie wiem jak w driverze zrobic obsluge przerwania (powiedzmy z pinu IRQ3). Czy ktos moze mi w tym pomoc ?
Jeśli tak to można go budzić przerwaniem od licznika, sprawdzać warunki i uruchamiać układ na czas pracy urządzenia w przeciwnym wypadku usypiać go ponownie. Nie wiem czy jest tryb uśpienia ,który nie spowoduję po jego wprowadzeniu wyłączenia tranzystora wiec możliwe że w czasie pracy układy będzie musiał on funkcjonować bez usypiania. Dla oszczędzania...
asembler przycisk przerwania asembler sortowanie diody asembler
plamy ekranie podgląd rejestrator blokada mastercook
electrolux esl74300ro inwerter hybrydowy
Samsung UE32D5500 NAND Dump File – K9GAG08U0E, Main Board BN41-01660A/B, Boot Loop Fix Mercedes Actros MP5 – dźwięki zaworów przy ruszaniu rano, syczenie pneumatyki, ECAS, E-APU