Może użyj timera?
Jak napisać program w asemblerze dla DDM-51, który po naciśnięciu przycisku góra powoduje maksymalne świecenie diody, po naciśnięciu dół minimalne świecenie diody, po naciśnięciu lewo powoduje zmniejszanie jasności diody za pomocą timerów, po naciśnięciu prawo zwiększa jasność świecenia diody za pomocą timerów. Z góry dziękuję
Ok, SPL <> SPH... i podłącz AVcc, skoro uzywasz PORTC. Tak w ogóle to poczytaj notę katalogową (oczywiście nie staraj się zapamiętać wszystkiego, raczej gdzie co jest omówione), bez tego to jak bez mapy na nieznanej drodze...
Witam Pierwsze linie kodu to deklaracja ustawień liczników T0 i T1. Konfiguracja dla ułatwienia została rozpisana na poszczególne bity, dlatego póżniej trzeba je przemnożyć x4 i x8 aby bity były na swoich miejscach. Dla licznika T0: CT0 EQU 0 M0 EQU 1 G0 EQU 0 T0S EQU M0 + 4*CT0 + 8*G0 oraz dla licznka T1: CT1 EQU 0 M1 EQU 0 G1 EQU 0 T1S EQU M1 + 4*CT1...
Witam wszystkich, powoli kończę swój projekt robocika zwiadowczego do wykrywania metalu, elektronika jak i 90% programu działa OK, niestety mam problem z obsługą timera w PIC16F84A który ma pracować w roli licznika, jeżeli chodzi o zliczanie impulsów z wewnętrznego oscylatora, to wszystko jest jak najbardziej OK, jednak jeżeli chce mu podawać impulsy...
Dziekuje za pomoc musze sam popracować. Bez pracy nad asemblerem do niczego nie dojdę Pozdrawiam tych którzy pospieszyli z pomocą. Zamykam temat.
myślę że to wszystko wyjaśni http://www.edw.com.pl/pdf/k09/29_08.pdf
Witajcie :) Czy dobrze napisałem program przesuwający bity na porcie P1 co ok 1s ? Taktowanie 6MHz. ; poczatek programu ORG 0000h MOV ACC, #00000001b LJMP START ;tablica wektorow ORG 000Bh ; tu skacze w razie przerwania T0 RETI ;petl glowna START: SETB ET0 ;zalaczenie przerwanie z T0 SETB EA ;zalaczenie przerwan MOV TMOD, #0001b ;T0 jako 16bitowy...
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ą...
Jakie komendy obsługują timer i counter w procku 90s2313 pod Asemblerem?? Proszę o pomoc!
code at 000Bh ljmp timer mov TMOD, #00000001b mov TH0, #0EAh mov TL0, #60h setb TR0 setb ET0 timer: RETI Musi uruchomić timer 0.
Witam Brakuje dyrektyw "equ" :D . Pozdrawiam
jesli wystarczy ci 18,2*/s to napisz obsluge przerwania 1Ch. w necie znajdziesz wiele o tym ;)
Z opisu funkcji wynika, że pętla używa 8-bitowego licznika. Gdzie w tej funkcji jest odniesienie do licznika.? W tej linii: dec %0 Po prostu jeden z rejestrów jest używany do odliczania opóźnienia i dlatego został "przezwany" licznikiem. Nie ma to nic wspólnego z fizycznymi licznikami/timerami. O wstawkach assemblerowych możesz przeczytać w manualu...
Przy takich odpowiedziach na moje 2 pytania, nie musisz używać timera tylko zrobić tak jak proponuje asembler lub filtr RC o którym wspomniałem na początku. Kondensator dobierzesz eksperymentalnie i będzie ok.
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...
W instrukcji piszą(str. 34): "Consequently, the high byte OCR1AH must be written first for a full 16-bit register write operation. Najpierw H, potem L. A w programie jest: out OCR1AL,ZL out OCR1AH,ZH Najpierw L, potem H. Mogę się mylić. Sprawdź.
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.
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ń.
czas co jaki zostanie zdeklementowany rejestr R0 banku 1 jest określony przez szybkość wykorzystanego kwarcu i ilości cykli wykonywanych przez timer, możesz na przykład uruchomić timer mają w nim zapisaną już jakąś wartość, symulatory nie oddają rzeczywistego czasu pracy mikrokontrolera, musisz dopasować wartość rozpoczęcia pracy timera eksperymentalnie
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 ;..........................................
trzeba zrobic petle, ale to nie bedzie dokladne. lepiej uzyc timera. 0x41 0x56 0x45!!
Jeśli wyrazisz taką ochotę to napiszę Ci pod asemblerem kawałek kodu, podaj tylko rejestry w które chcesz wklepywać dane Pozdro
vector timer0 w atega8 jest pod adresem 0x0009 a nie 0x001C mysle ze to wlasnie to
Jeśli piszesz w WinAVR i otworzysz plik w asemblerze to zobaczysz, że każde nie używane przerwanie prowadzi do resetu. Nieużywane tzn. nie posiada funkcji obsługi przerwania. Przerwanie takie od np. przepełnienia timera może nastąpić jeśli zostanie odblokowane, ale jak mówisz w tym przypadku to nie to. Możesz po prostu wyłączyć watchdoga i upewnić się...
Nie wiem dokładnie o co Ci chodzi. Jeśli chcesz samemu zbudować timer lub zegar to wydaje mi się że to zadanie Cie troszke przerośnie. Ale z tego co sie orientuje to 8051 jest tylko mikroprocesorem który jest zawarty w urządzeniu DSM - 51 i prawdopodobnie na tym masz napisać program realizujący funkcje timera i zegara w języku programowania jakim jest...
http://web.ukonline.co.uk/j.winpenny/ http://www.microchipc.com/sourcecode/ http://www.phanderson.com/PIC/PICC/index... http://mikro.e-technik.uni-ulm.de/resear... Tak wogóle to polecałbym jednak zapoznać się z jezykiem C. Sam poczatkowo użwałem asemblera do do procesorków MCS51, pózniej zainteresowałem sie C i juz nigdy nie napisałem programu...
Zobacz jak to robi Microchip. Potrzebny jest ADC, Timer i kawałek pola miedzi. http://ww1.microchip.com/downloads/en/Ap...
A czy sam timer2 pracuje bo w tych procesorach należy przed inicjowaniem peryferii włączyć do nich zegar (dla timera TIM2 w rejestrze PCKENR1). Chyba że wykonuje to timer_init.
Co robi program jest napisane w komentarzu. Jak to robi w większości widać z kodu tyle że trzeba wiedzieć jak działa timer. A więc weź sobie datasheet procesora: https://ww1.microchip.com/downloads/en/D... i przeczytaj rozdział "8-bit Timer/Counter0 with PWM" a w szczególności podrozdzał "Register Description".
asembler lub bascom(z tym ze bascom dla 8xxx51) ewentulanie c
nie powiem.. ciekawe :) to asembler czy jakieś instrukcje bascoma? może ma ktoś wątli w C pod AVR?
Ja znalazłem u Atmela. Nota aplikacyjna AVR410 o ile dobrze pamiętam. Ale nie wiem czy to pójdzie na tiny15. Procedura opiera się na Timerach.
Prędkość transmisji przy SMOD=1 wyliczamy ze wzoru: Vtr=Fxtal/(192*(256-wartT1)). A wartość wpisywaną do T1 za wzoru: wartT1=256-(Fxtal/(192*Vtr)). W Twoim przypadku (Fxtal=12000000 i Vtr=300) do T1 należy wpisywać wartość 47, czyli: TH1_SET EQU 256-209 TL1_SET EQU 256-209 bo 256-209 to jest właśnie 47. Da Ci to prędkość transmisji 299.043 , co mieści...
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,...
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...
Zgadzam się wykonanie kiepskie bo podczas lutowania z tego co pamiętam moja lutownica marki topex zepsuła się chyba w połowie wykonania więc musiałem sięgnąć po lutownice transformatorową którą na poważnie lutowałem pierwszy raz stąd te efekty pompy do betonu:D. Ta płytka to był mój pierwszy poważny projekt - jedyne co wcześniej lutowałem to ze dwa...
Witam, każdy popularny procesor możesz oprogramować korzystając z innych języków niż asembler (np. C). Także większość posiada wewnętrzne pamięci, więc niczego nie musisz doklejać na zewnątrz, a jak konkretny procesor będzie jej miał za mało, to zawsze możesz wybrać większego brata z wybranej przez Ciebie rodziny. A wybór konkretnej kostki musisz uzależnić...
Napisałem to w asmie od początku i skompilowałem innym kompilatorem (nie Bascomem) tylko poprostu asemblerem i zadziałało. Mój wniosek jest taki że bascom coś kopie z timerami i tyle. Nie wiem a może ktoś odpali ten kod bascomowy i powie czy u niego chodzi dobrze? Sam ciekaw jestem.
Wystarczy jeden timer. Okres decyduje o czestotliwosci a dlugosc trwania dzwieku zrealizujesz zliczajac w jakiejs zmiennej liczbe tych okresow. W 8051 sa tylko 2 timery wiec szkoda ich marnowac na cos co nie jest konieczne. Lub najprosciej: while(1){ PIN = !PIN; delay_us(1000); } Wyjdzie 1kHz. BF
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...
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...
Skorzystaj z przerwań generowanych przez licznik TIMER1 (lub TIMER2 jeśli jest dostępny). To raczej wyższa szkoła jazdy, bo program będzie przypominać sheduler w systemie operacyjnym, a autor nie wygląda na tyle zorientowanego żeby samemu grzebać w stosie. Ja bym w każdej funkcji zastosował pętlę testującą pojawienie się flagi przepełnienia timera...
Kolega chyba odleciał w tym asemblerowym samouwielbieniu. Gdzie ty tam widzisz asembler?
Zumek zaproponował nam prace timera w trybie CTC (Clear Timer on Compare match) - zerowanie licznika (i wywołanie przerwania OC1A) po wykryciu zgodności rejestru TCNTn z OCRn. Można w ten sposób "skrócić" timer do potrzebnej wielkości. Odpowiada to mniej więcej "skracaniu" zakresu liczenia timera przez wprowadzenie wartości początkowej tyle, że licznik...
(at)dondu W takim razie korzystam z tego co zaproponowałeś + flagi które opisał (at)asembler Jeżeli ten projekt jest połączony z poprzednim Twoim tematem, to może timer już masz ?
Trzeba by to napisać w asemblerze.
Z pakietu wchodzącego w skład DSM-51: ;***************************************... ;LEKCJA 13- STEROWNIK TRANSMISJI SZEREGOWEJ ;PRZYKŁAD 1- NADAWANIE ;***************************************... ;********* Ustawienie TIMERów ********* ;TIMER 0 T0_GEQU0;GATE T0_CEQU0;COUNTER/-TIMER T0_MEQU0;MODE (0..3) TIM0EQUT0_M+T0_C*4+T0_G*8 ;TIMER...
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...
Witam!!! Częśc programu która cie interesuje to: TEMPLOOP: MOV ADCMODE, #12H ; INITIATE A SINGLE AUX CONV JNB RDY1,$ ; Wait for conversion results ; conversion result ready ; a value of 80h in AD1H=0degC MOV A, ADC1H ; 80h=0, FFh=+127, 00h=-128 CLR C SUBB A, #80H ; convert to 2's comp ; FFh=-1, 80h=-128, 00h=0, 7Fh=+127 W akumulatorze pozostaje temperatura...
Może powinieneś pisać w C? Jest dostepny kompilator na '51 nazywa się SDCC. Dla C znajdziesz przykłady obsługi klawiatury. Tak po krótce to w tym co napisałeś nie ma podstawowego elementu czyli skonfigurowanego timera odmierzającego 10ms okresy. Co przerwanie porównujesz aktualny stan klawiatury z poprzednia. Jeżeli nadal jest wciśnięty ten sam klawisz...
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...
Kilka pytań i spraw, ktore być mogą okazać się pomocne: Z wartości przeładowania T0 (D8EF) i faktu że przerwanie chodzi 100 razy/sek domyślam sie ze używasz kwarcu 12MHz . Jednak jesli ma to byc równo 100Hz to zauważ że podana u ciebie wartosć początkowa jest za mała o 1, bo powinno byc: T0pocz = FFFFh - (Fxtal / 12 / Fto) + 1 = D8F0h (a nie D8EFh)...
Timer to dobry pomysł a w ogóle juz nie wspomne o łatwosci jego obsługi w BASCOM'ie, jeśli nie robiłeś tego jeszcze to nie martw sie przyjdzie Ci to napewno bez problemu. Jeżeli chodzi o dwa kanały no to po prostu wykozystasz dwa timery. Gorzej z odmierzaniem czasu bo timery się skończyły (no chyba że 89c52), w tym przypadku bez problem można by poradzić...
Załóżmy, że to też błąd przy wklejaniu kodu (inaczej asembler zgłosiłby błąd). Powinno być R21 , a nie R121 . Być może to też błąd przy wklejaniu. Bity WGM12 , CS12 oraz CS10 nie znajdują się w rejestrze TCCR1A tylko w TCCR1B . Istotne jest jednak to, że ustawiając tylko bit WGM12 ustawiasz TIMER1 w tryb 4, czyli tryb CTC, w którym timer liczy od 0...
Witam serdecznie. Taki zegar był kiedyś opisany przez pana Surowińskiego w edw przy okazji kursu asemblera 8051 i opisu komputerka 2250 (rok 97-98). Pozdrawiam Krzych
To się mylisz, konflikt może być. Zapisz tego fora tak: [syntax=c] for(;;) { int tmp = TIM9->CNT; if((tmp> 5000) && (zapalona)) { GPIOD->ODR |= (1 << 15); // gasi LED zapalona = 0; } } } [/syntax] Co będzie, kiedy tmp będzie > 5000 (np. ==ARR), w międzyczasie przyjdzie przerwanie i wyzeruje timer oraz zapali diodę? Ew. zaglądnij...
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...
2 zmiennych dokładnie w tym samym czasie ( A nie prościej wyłaczyć przerwania na te 4 takty zegara. Zamiast systicka zastosuj inny timer np 32 bitowy. Wtedy przepełnienie będzie następować przy 72MHz co ok 60 sekund. Powinno wystarczyć. Masz tez specjalny rejestr co liczy cykle zegara przy wykonaniu programu (proponuję zapoznać się z DWT). Dlatego...
Nie da się napisać .global TIMER0_COMP_vect bo jest błąd,że taka nazwa jest zdefiniowana już. .extern TIMER0_COMP_vect tez mi nie działa jak potrzeba. Nie wiem już co zrobić. Czy mógłbyś to napisać tak jak powinno być?
Asembler procesora Motoroli 680x0. Moze nie dziedzina a dział. Generalnie jest taka kwestia, ze musze zaprogramowac timer, tak aby mierzył mi czas pomiedzy dwoma wcisnieciami klawisza. Trzeba uzyc przerwań.
Program nie może robić przerw - sterownik interpoluje ruch w wielu osiach i zakłócenie spowoduje zmianę krztałtu - np 2 silniki X i Y tną po okręgu i nagle jeden staje. Ta zasada dzialania to nie muj wymysł - tak działają inne takie układy, sa gotowe projekty ale oparte na starych kostkach np dodatkowe cpld lub wszystko nadgonione asemblerem. [url=https://en.cs-lab.eu/product/csmioi...
Błądzisz. 0. Dlaczego wybrałeś muzealny mikrokontroler, dla którego informacji trzeba szukać w skanowanych artykułach z gazet wydawanych w latach 80-tych i 90-tych zeszłego wieku? 1. Dlaczego nie chcesz korzystać z timera? To jest najlepszy i najpewniejszy sposób odmierzania czasu. 2. Czy program w którym potrzebujesz opóźnienie 5ms nie robi nic innego...
A no dla tego, że pomiar temperatury jest częścią większego projektu, gdzie procesor odmierza czasy rzędu pojedynczych do 30 minut. A przy jednym MHz z timera 16 bit, przy preskalerze 1024 można uzyskać około 60 s co idealnie pasuje do innych procedur. Stąd mam narzucony taki wymóg zegara.
Witam, Musze zrobic szybkie przerwanie od timera w atmega162. W związku z tym nie moge sobie pozwolic na korzystanie z pamięci SRAM i stosu, więc zostają tylko rejestry, wystarczą 3, w tym dwa wskaźnikowe np. X. No więc w właściwym programie te rejesrty nie mogą byc użyte, ani modyfikowane. Czy da się to zrobic w AVG-GCC? Przepisywanie dużego fragmentu...
Pracowicie rozwiązujemy XY problem. Ni i co? Nawet delaye z GCC to NOP-y a przy takich timingach (0.2us) jaki timer czy też układ peryferyjny transmisji szeregowej chcesz zaprzęgnąć do tego ? Bez podwyższania częstotliwości mikrokontrolera? To prosta transmisja, więc po co tu wymyślać "wodotryski". Bez przesady... Robert
No tak ty wiesz jak zachowuje sie C. Ja wiem że z poziomu asemblera panuję na nad wszystkim co robię łącznie z długością kodu. Ale mam takie wrażenie ze jak coś zapisane w asemblerze to mniej więcej wiem ile to w hexa, Przy C to już dużo więcej (śmieci). W Basic to dużo za dużo. Ale się może mylę tak było kiedyś dla aplikacji. Tylko asembler AVR jest...
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ń.
TO BEDĘ ZGADYWAŁ:-) Wyłączyłes przerwanie od timer0 jak uzywasz timere 2? moze po wrzuceniu w atmege wykonują sie obydwa przerwana wiec bedzie efeakt jakby chodził zegar dwa razy szybciej. W asemblerze nie do pomyślenia taka sytuacja nie wiem jak w C ustawia kompilator warinki poczatkowe? moze musisz zadeklaraowc wszystko? wrzuc sobie na ekran LCD...
Witam, Mam taki problem... Kolega mnie prosił o pomoc przy napisaniu programu na 8051 [zestaw DSM`51]... no i ja nie bardzo wiem jak się do tego zabrać bo z asemblerem u mnie trucho, więc zwracam się do was. Temat brzmi: "MIERNIK REFLEKSU - WYKORZYSTAC UKLAD WEWNETRZNY TIMERA"... To ma wyglądać tak że program losuje cyfrę z zakresu 0-9 i wyświetla na...
... delayadc nie jest po to aby czekać na koniec konwersji, po za tym co to ma wspólnego z moim pytaniem? ... Timer uruchomiłbym chyba dla ozdoby;) Ano może mieć. Jaką masz gwarancję, że tak napisane delayadc w ogóle zajmuje jakiś czas procesora? Zwłaszcza, że zmienna k nie jest volatile, a to oznacza, że takie cudo: [syntax=c] { k++; k--; } [/syntax]...
Parę uwag ogólnych: 1. Istnieje rodzina procesorów, których jedyny dostępny asembler ma składnię zbliżoną do C. Co na to kol. Kamyczek? 2. Asembler jest kompilatorem, a asemblacja - kompilacją. Asembler MIPS zamienia jedną instrukcję symboliczną w 1..4 instrukcji maszynowych. Język maszynowy (zapis binarny) to też język. 3. Kompilacja języka wysokiego...
Można to zrobić w każdym języku i w którym dokładnie będzie zależało jedynie od tego, czy podstawy któregoś z języków opanowałaś. Najłatwiej bedzie zapewne w c ale i w asemblerze nie będzie to zbyt skomplikowane. Prostym rozwiązaniem będzie użycie timera do odmierzania czasu a w pętli głównej sprawdzanie wartości zmiennej incrementowanej przez ten timer...
To co w takim razie robie źle z tym timer'em?
Jedna uwaga. Jak piszesz program który ma działać na przerwaniach to nie powinno się stosować pętli opóźniających,... GienekS :arrow: W którym miejscu są te pętle :?: zbyszekp22 :arrow: Do "pomrygania" diodą , nie są potrzebna aż dwa timery. Jeden w zupełności wystarczy ;) Piotrek PS Czy Twój kompiltor nie protestuje , dla 2 x etykieta DALEJ: ;)
Witam! Mam problem z liczba stałoprzecinkowymi i 89S8252 Buduje manipulator i przy zadawaniu wartości np. 270 stopni z silnika otrzymam 432 impulsów. Około 1,6 impulsa na stopień z enkoderów. Jak teraz przy zadawaniu watrości w stopnich zapisywać w rejestrze ile impulsów ma odliczyć timer aby wyłączyć silnik?? Programuje w asemblerze Pozdrawiam
Czy to gdzieś w manualu powinienem szukać czy może w kodzie asm? Zrobiłem tez taki test że w main'e miałem: [syntax=c]AT91F_PIO_SetOutput(AT91C_BASE... AT91C_PIO_PC6); AT91F_PIO_ClearOutput(AT91C_BASE_PIOC, AT91C_PIO_PC6); licznik++; if(nHzTicker) { printf(licznik); }[/syntax] sam Timer szedł 1000Hz. Licznik naliczał zaledwie do około 279900, podczas...
W przypadku Bascoma jest najgorsza sytuacja Nie do końca. CONFIG RC5 = PINx.y Koledze najwyraźniej sprzętu brakło, a na to nie poradzi nawet asembler.
Ja mam coś takiego: w programie głównym jest deklaracja: void KLAWISZ(void) interrupt 1 using 2 { PRZERW_T0(); } z tym że przewanie jest wykonywane w asemblerze: PRZERW_T0: .............instrukcje............. RET
Znalazłem, na razie, dwa sposoby: Pierwszy, to używanie w przerwaniu wartości wpisywanej w rejestry Osccal lub Tcnt0 , oczywiście niewłaściwe, ale przydatne ;-) Drugi, to zerowanie w przerwaniu flagi komendą Cli , a potem powrót z przerwania nie komendą Reti , ale skok do poczatku programu gdzie ustawiam parametry przerwań i je odblokowuję. Nie rozumiem...
Zapewne, dlatego też mądrzy ludzie dawno temu wymyśili w c delay.h. A że precyzyjne opóźnienia można zrobić albo na timerze albo w asemblerze, stąd też nie jest dziwne, że mimo, że to c to opóźnienia są napisane w assemblerze.
Dzisiaj na stronie elportalu znalazłem komentarz na temat bascoma i ATtiny. Bascom nie obsługuje prawidłowo ATtiny. Start Timer0 czy stop Timer0 nie działa (przynajmniej dla ATtiny2313). Trzeba wpisać do odpowiedniego rejestru właściwą wartość żeby timer wystartował itp. Trzeba się zapoznać z dokumentacją. Rejestry sterujące timerami są podzielone na...
Ł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?
Hmmm..Moze i myle asembler bo pisalem kilka prostych programow na 8051 ale wydaje mi sie ze trzeba obliczyc cos przeciez. Przeciez timer i jegoprescale, zlicza do ilus tam i jest przerwanie. Iles przerwan daje nam sek jak chcemy. Itd... Przynajmniej mi sie tak wydaje. Co do RTC to fajnie ze mozna ale jak to uruchomic w BASCOM`ie. No i jak z tym liczeniem...
Polecenie w skrócie brzmi: Napisz program w asemblerze i w C, który wczytuje z tablicy kolejne liczby (bajty) i wyświetla je na diodach bit po bicie. Po każdym kolejnym bicie należy odczekać 5ms, dodatkowo po każdym bajcie należy odczekać 50ms. Wykorzystać przerwania licznika (timera). W asemblerze już napisałem i działa, natomiast w C zdziwiło mnie...
tazit - profesor ma tutaj rację, bo łamiesz tzw. mov tl0, <liczba mov th0, >liczba Alternatywnie: mov tl0, liczba % 256 mov th0, liczba / 256 Pozdrawiam, Dr.Vee
Chyba za ogolnie zadales temat. Zechciej doprecyzowac jak wielkie opoznienie, jaki zegar, czy na przerwaniach czy tez programowo i w jakim jezyku. Na poczatek podpowiem, ze z punktu widzenia celu czyli opoznienia 8086 nie rozni sie od innych procesorow, stad robi sie to tak samo jak w 68k czy w ARM. W mikrokontrolerach masz dodatkowo sprzetowe timery,...
Witam. Zająłem sie tworzeniem prostego generatora DDS na ATmega16. Przetwornik to drabinka R-2R. Rozdzielczość 8 bitów, kwarc 8MHz (oczywiście możliwa zamiana na 16MHz). W pamięci mikroprocesora przechowuje 256 próbek sygnałów (np. sinus, piła). Poprzez tryb CTC Timer1 (preskaler ustawiony na 1) obsługuje przerwanie. Niestety napotkałem na problem -...
Chciałbym dostać rady do rozwiązania pewnego zadania z asemblera: "Do izolowanego wejścia I1 podlaczonego do P3.4 doprowadzony zostal sygnal synchronizacji poziomej monitora SVGA (zakres częstotliwości 17 khz ... 70 Khz). Należy dokonać pomiaru częstotlowości sygnału i wyświetlić ją na wyświetlaczu". Wiem tylko, że trzeba użyć w zadaniu timery.
Jeżeli używasz winavr to masz tam przecież gotowe funkcje. Jak ich dokładność jest niewystarczająca polecam asemblera, lub ewentualnie timer.
jeśli Wy macie problemy z tym to zostaje mi nauczyć się asemblera bądź tych timerów dzięki za wyjaśnienie
Witam :) Czy ktos programuje moze w asemblerze i moze podpowiedziec w jaki sposob obslugiwac przerwania od TMR0. Probowalem zrobic prosty timer (po zalaczeniu zasilania liczy sekundy) z wyswietlaczem LCD korzystajac z przerwan od timera. Niestety nigdy nie udalo mi sie osiagnac takiego efektu, ktory sobie zalozylem. Zmiana wartosci poczatkowych dla...
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ń.
hmm może wkleje cały flik, a systick co ma z tym wspólnego i ma być w ogóle podzielony? przez 1? ------------edit A już chyba widze, po drodzę brakuje mi[syntax=c] LPC_SYSCON->SYSAHBCLKCTRL |= 1<<TIMER_SYSAHBCLKCTRL_BIT;[/synta... ------------edit2 Ok, lata :) teraz moja zwłoka wygląda jak poniżej, oczywiście trzeba jeszcze doszlifować bo funkcja...
Ja do tej pory programowałem tylko AVRy Atmela ale z tego co czytałem to PICe też mają rozbudowane Timery sprzętowe. Musisz wziąć notę katalogową w ręce - zaczytać dobrze o konfiguracji timerów i odrazu ci się rozjaśni. Jeśli chodzi o C to nie pomogę ci bo ja z kolei wszystko piszę w asemblerze. Aby użyć timera sprzętowego z procka nie potrzeba żadnego...
ATmega8 posiada trzy liczniki/timery, z których dwa (T0 i T1) mają możliwość zliczania zewnętrznych impulsów, dołączanych do pinów 6 i 11. Wg atmelowskiego pdf'a częstotliwość zliczanych impulsów nie może być wyższa niż połowa częstotliwości zegara ATmegi. Dla bezpieczeństwa i zapewnienia prawidłowej synchronizacji podają wartość fclk/2.5 - co w Twoim...
Potrzebuje zmierzyc za pomoca AVR i do tego najlepiej BASCOMA liczbe impulsow i czas trwania kazdego z nich w okreslonym czasie oczywiscie lub sam czas trwania wszystkich impulsow. Podobno AVR ma jakas mozliwosc mierzenia etgo sprzetowo wejscie ICP? jesli tak prosze o konfiguracje timera/licznika do tego. Nie moglem znalezc sensownego tematu jesli ktos...
Ile się wykonuje zależy od typu procesora.. Nie każda instrukcja wykonuje się tyle samo razy Przykładowo: DJNZ jak wykonuje skok - wykonuje się dłużej (zabiera więcej cykli taktów CPU) - niż jak skoku nie wykonuje. Wszystko zależy od typu procka (i częstotliwości). Do tego zależy - czy czasem nie masz włączonych przerwań. Jak wiadomo - przerwanie przerywa...
A ja znowu nie wyobrazam sobie tego abym muial angazowac program głowny który przewaznie słuzy w innym celu jak tylko pomiar temp. W przerwaniu to wychodzi elegancko a ilosc czujników jak moze byc obsłuzona jest dowolna. W programie głownym umieszczam tylko procedure odczytu uzyskanych wartosci z przerwan i ewentualne sprawdzenie CRC co zajmuje ułamiki...
Witam! Mniej więcej tak: ORG 0BH LJMP PRZERWANIE_OD_T0 ORG 100H WARUNKI_POCZATKOWE: MOV IE,#82H MOV TCON,#10H MOV TMOD,#01H MOV TH0,#03CH MOV TL0,#0B0H MOV R2,#2 PETLA_GLOWNA: NOP SJMP PETLA_GLOWNA PRZERWANIE_OD_T0: DJNZ R2,EXIT ;----------------------- TU PISZESZ CO MA SIE WYKONYWAC PO 100ms MOV R2,#2 EXIT: MOV TH0,#03CH MOV TL0,#0B0H RETI END Program...
asembler timer asembler sortowanie diody asembler
emulator android sterownik sciezek licznik błędów komórki
Mercedes Actros MP3 – głośnik kierunkowskazów, lokalizacja i naprawa piezobuzzera INS Saeco Exspres czerwony klucz 07 – błąd mikroprzełącznika bloku zaparzającego