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...
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...
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)...
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...
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...
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.
myślę że to wszystko wyjaśni http://www.edw.com.pl/pdf/k09/29_08.pdf
nie powiem.. ciekawe :) to asembler czy jakieś instrukcje bascoma? może ma ktoś wątli w C pod AVR?
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...
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...
asembler - to jest C, w dodatku C na AVR, więc zamiast gdybać należy spojrzeć do dokumentacji. W przypadku wywołania przerwania dla którego nie ma procedury obsługi następuje skok pod wektor __bad_interrupt, pod którym to znajduje się instrukcja jmp 0, czyli programowy reset. Także efekt nie będzie do końca taki jak po resecie, bo nie zostaną zainicjalizowane...
Toć to jak zawsze;) W DS'icie na pewno napisali:) Anyway jak już uruchomisz timer, to on Sobie liczy i liczy... Załóżmy, że to timer1. Sam z Siebie zliczy 65536 taktów zanim się przewróci;) Zakładam, że masz 1MHz taktowanie procka -> 1us trwa takt Uruchomiony timer z dzielnikiem 1(no prescale). Musisz zliczyć 15 razy i masz około 1 sekundy :) teraz...
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...
Witam! Na wstępie chciałem zaznaczyć, że od niedawna dopiero poznaję procesory z serii ARM. Bardzo dawno temu miałem styczność z 51- jedynką i keilem. Moje doświadczenie w programowaniu C też nie jest oszałamiające, natomiast asembler na ARM jak na razie jest przeze mnie mało zrozumiany. Proszę o wyrozumiałość przy pisaniu ewentualnych odpowiedzi, za...
Chodziło mnie oto, by po doliczeniu 1s i porownaniu z rejestrem OCR0A wygenerował przerwanie. Do reejstru trzeba wpisać odpowiednia wartośc. Wyliczyłeś, że jest to 146. Mniemma, że musze wpisać tam fizycznie to w Hexie, czyli 0x92, tak? Fizycznie to jest binarnie,a czy wpiszesz dziesietnie, szesnastkowo czy binarnie to nie ma znaczenia, asembler wszystko...
#include "msp430.h" ; #define controlled include file NAME main ; module name PUBLIC main ; make the main label vissible ; outside this module ORG 0FFFEh DC16 init ; set reset vector to 'init' label RSEG CSTACK ; pre-declaration of segment RSEG CODE ; place program in 'CODE' segment init: MOV #SFE(CSTACK), SP ; set up stack main:...
Witam Brakuje dyrektyw "equ" :D . Pozdrawiam
Witam wszystkich majsterkowiczów :D Oto mój jeden z pierwszy programów napisanych na ATMEGE 8. Dotychczas programowanie mikrokontrolerów traktowałem jako zabawę, używając do tego BASCOMA i zestawu Treningowego. Obecnie stoję przed zamiarem budowy pewnego urządzenia ale przed rozpoczęciem prac chciałbym mieć pewność że część programowa będzie ok. Sam...
Kiedyś zrobiłem coś takiego dla s1200, 2313 itp. Jak chcesz to sobie przerób. Program odmierza czas, a po jego upłynięciu zaczyna migać żarówką (np wyłącza ją na 1s, potem zapala na 10s i tak 3 razy), a na koniec gasi żarówkę. Program nie jest jakoś super napisany, ale z tego co pamiętam działał. Do asemblacji radziłbym użyć oryginalnego assemblera...
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ę
co napisaliscie jako swoj pierwszy program na dany uC w danym jezyku (rozbudowy sie licza, byle by wciaz byla to ta sama baza) n. n. - literka, cyferke z przodu dodam sam. zachowujcie chronologie w swoich dokonaniach na roznych platformach jezykowych i sprzetowych, tak aby to mialo sens! ____________________ 0x1-a. Freddie Chopin - migacz diodkami o...
Witam. Buduje sobie pseudo skaner dyskotekowy znalezion w EdW (wiem że tego nie można w stu procentach nazwać skanerem) i mam problem. Potrzebuje pomoc w napisaniu / przepisaniu programu z języka Asembler na C++. Program jest pobrany ze strony EdW, jednak nic z niego nie rozumiem i przystosowany jest do AT89C2051. Ma on być wrzucony na Atmege8. Pinologia...
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...
jesli wystarczy ci 18,2*/s to napisz obsluge przerwania 1Ch. w necie znajdziesz wiele o tym ;)
Zobacz jak to robi Microchip. Potrzebny jest ADC, Timer i kawałek pola miedzi. http://ww1.microchip.com/downloads/en/Ap...
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 ;..........................................
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ą...
Czesc ! Portu B nie musisz ustawiac , po starcie procesora wszystkie porty sa ustawione jako wejscia ponadto : movlw80h movwfTRISB ustawia Ci jako wejscie jedynie RB7, pozostale to wyjscia MOVLW 0 MOVWF TRISA teraz caly porta A ustawiles jako wyjscia, malo tego uzywajac timer 0 i podzielnika 1:256 pamietaj ze aby zwiekszyc jego stan o jeden...
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ć...
Niedopatrzenie. Mój błąd przyznaje. ALe na Forum "Początkujący, Laborki, Teoria, Referaty". Można to wystawić ???
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
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...
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ę...
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...
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...
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...
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...
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...
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...
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...
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.
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
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.
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...
vector timer0 w atega8 jest pod adresem 0x0009 a nie 0x001C mysle ze to wlasnie to
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,...
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
Wiesz, mam książkę Baranowskiego 'ATmega w praktyce'. A to co było??? oczywiście mi pomylił się autor ale tytuł ten sam ;) więc ją masz Co do wydajności prądowej to chyba też dostałeś już odpowiedzi różne, albo drivery ULN albo zwykłe tranzystory żeby ją zwiększyć i po ptakach Żeby nie robić na jednej nodze jednej diody nawet przez te tranzystory to...
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...
asembler timer diody asembler dodawanie asembler
klapa bagażnika laguna epson service ekspres krups konserwacja
podgrzewanie fotela skymaster 32sh1000
Różnice między tranzystorami IRFP460CM a IRFP460DM Rozmiar łożyska korbowego w Oleo-Mac 937