AVR studio (asembler) to nie Bascom... tu nie ma czegoś takiego jak komendy do obsługi sprzętowych liczników, musisz używać rozkazów uP i konfigurować odpowiednie rejestry i przede wszystkim odpowiednio używać przerwań, bo one są chyba najważniejszym elementem, którego używa się przy pracy z licznikami. Musisz wziąć notkę katalogową tego atmelka i przejrzeć,...
Witam po krótkiej przerwie, Czy dobrze rozumiem, że najpierw konfiguruję wejście CAP0.0 (pin P1.26), oraz Timer0 jako wejście, czyli licznik. Potem ustalam na drugim timerze tj. na Timerze1 odliczanie np. 100 ms, w czasie których Timer0 na wejściu CAP0.0 zlicza liczbę impulsów (w zasadzie liczbę zboczy opadających) i przechowuje je w rejestrze TC Timera0....
Witam !!! Nie moge nic zapisać do żadnego rejsstru pcf8583p, układ został połączony do linii SDA i SCL mikrokontrolera i portu int0 + rezystory podciągające i kwarc 32,768 kHz. Przerwanie nastepuje standardowo co 1 s i tego nie moge zmienić bo nic do rejestrow pcf-a nie trafia. Ponizej przedstawiam listing kodu podejrzewam że wina jest w kodzie prosze...
Chcę napisac własny program z wykorzystaniem Timerów. Na początek proszę o wytłumaczenie dlaczego w poniższym programie: 1. wykorzystano podzial częstotliwości zegara (po preskalerze 256) 250/125 zamiast wykonac jedno dzialanie? 2. uzyto wartość początkową Timera0 = 250 przed Petlą do Loop End . O ile wyjaśnienie podane przez Tomq jest błędne(!) Load...
Witam wszystkich Elektrodowiczów! Otóż stoję przed problemem szybkiego rejestrowania stanu wejść cyfrowych. Problem wygląda następująco: - jest to układ 10 analogowych komparatorów napięcia (10 kanałów), który może pracować z rzeczywistą prędkością próbkowania/porównywania sygnału ok. 10 ns każdy, - układ ten (10 komparatorów) posiada wejście zatrzaskujące,...
Witam. Mam kłopot tego typu, że potrzebuje zrobić nastawny timer z dokładnością do 0,01s w zakresie od 40s-2min. Procesorek ma w kółko ustawiać na jednym z portów 1 co zaprogramowany czas. Port w czasie liczenia jest zerowany. Chciałem wykorzystać do tego celu PCF8583 w którym wybrałem funkcje timera. Wszystkie rejestry ustawilem jak trzeba i w rejestrze...
Arduino wymyślono po to abyś nie musiał grzebać w rejestrach. Jeśli to potrafisz nie nie używaj arduino. Oczywiście możesz zmieniać rejestry timerów ale przez to niektóre funkcje mogą przestać działać: Napisz co chcesz osiągnąć a nie jakimi metodami to będzie można coś podpowiedzieć.
Przerwanie ma być co 800ms. Timer0 prawidłowo generuje to przerwanie: 1/8000000=0,000000125 => 0,000000125*256=0,000032 => 0,000032*250=0,008s => 0,008*100=0,8s i tyle jest odliczane. Dla timera1 rachunek jest analogiczny, ale niestety nie generuje przerwania po tym czasie, tylko kilkakrotnie później. Timery ładowane są początkową wartością w programie...
Witajcie, Potrzebuję konfiguracji timera 1 dla atmega8 aby wykonywał funkcję z częstotliwością ~244Hz (zegar 16MHz i preskaler 2^16) . Chciałbym uniknąć używania dodatkowych bibliotek. Będę wdzięczny za przykładowy kod :) jakąś Przy okazji; jeśli użyję do tego celu timera 1, mogę równocześnie używać wyjść OC1A oraz OC1B jako zwykłe wyjścia I/O? Timer1...
Po wyzerowaniu licznika należy wyzerować bit zerowania. Nie miałbyś tego problemu, gdybyś zamiast bezsensownych |= używał podstawień do operacji na rejestrach timera.
Witam, muszę zrobić mini-rejestrator dźwięków na płytce Olimex SAM7-EX256 (mikrokontroler AT91SAM7X256). W tym celu próbowałem skonfigurować układ ADC aby próbkował dane z częstotliwością 44.1KHz z 10-bitową rozdzielczością. Przetwornik ma być wzbudzany timerem T0 i po wykonaniu pomiaru ma wywołać przerwanie. Plik adc.c z funkcją inicjująca ADC i Timer:...
Chciałem zapytać jak on działa. Załóżmy że do ICR1 wpisywana jest wartość przy zboczu narastającym. Zbocze wystąpiło przy wartości 100 w ICR1 a kolejne przy wartości 1100, różnica między nimi to 1000. Czy ta wartość 1000 to 1000 taktów zegara procesora?
np. chce uzyskać przerwanie co 100 cykli timera: static void interrupt isr() { if (T0IF) { TMR0 = 155; //255 - 100 cykli T0IF = 0; // kod przerwania } } problem w tym że powyższy kod nie uwzględnia: 1) czasu na zapisanie kontekstu przy przewaniu, 2) czasu wykonywania instrukcji przed TMR0 = XX. 3) czasu po jakim...
Witam, ja na początek zareklamuję kolegę _ImPuLs_ z elektrody i jego portal. Mnie osobiście przy programowaniu AVR-ków jest przydatny. Link główny to: Kolejne linki to do rejestrów ATMega8 i ich opisów: [url=]REJESTRY ; [url=]OPISY Na stronie jest naprawdę bardzo wiele fajnych rzeczy. Pozdrawiam Damian.
Witam Piszę program, który będzie musiał się synchronizować z siecią 230V. konfiguracja Timera: [syntax=c] TIM8->PSC = 168-1; TIM8->CR1 |= TIM_CR1_ARPE; TIM8->ARR = rotor_period; //20000-1+5000; TIM8->DIER |= TIM_DIER_UIE | TIM_DIER_CC1IE; TIM8->EGR |= TIM_EGR_UG; // update generate TIM8->CCMR1 = 1; TIM8->CCER = TIM_CCER_CC1E; TIM8->CR1...
Witam, studiuję Automatykę i na jednym z laboratoriów dostałem zadanie zaprogramowania sterownika CompactLogix w języku drabinkowym. Program po wciśnięciu przełącznika dźwigniowego miał wypchnąć tłok siłownika po określonym czasie, następnie po wyłączeniu przełącznika miał również odczekać określony czas ( czas inny niż przy wypychaniu) i cofnąć tłok....
Przepisuj na bieżąco stany timer-ów do rejestrów podtrzymywanych (HR). Po włączeniu zasilania przepisuj te rejestry do timer-ów. Jako triggera do przepisania po włączeniu zasilania użyj np. bitu pomocniczego P_First_Cycle na zbocze narastające.
Chciałbym zrealizować sterowanie diodą led rgb. Atmega8535 ma w sumie 4 kanały PWM Na razie udało mi się wykorzystać tylko jeden kanał pwm z zegara t1. Ale sterowanie dioda rgb nie było dokładnie takie jak chciałem. Ogólnie chciałem zrobić tak aby móc wybrać kolor w standardzie rgb (czyli dla każdego segmentu wartość od 0 do 255). jednak uznałem, że...
Pomyśl, skąd bierze się przerwanie timer? Stąd, że w rejestrze timera został sprzętowo ustawiony znacznik, który można odczytać programowo. Ustawiając w przerwaniu timera znacznik programowy bezsensownie dublujesz znacznik sprzętowy - wystarczyłoby bez żadnego przerwania sprawdzać znacznik sprzętowy zamiast tego programowego. Dobre rozwiązanie polega...
Witam, czy przy inicjacji Timera 1 który ma pracować w trybie PWM Center-aligned, powinienem "ręcznie" dokonać zdarzenia Update Generation poprzez ustawienie bitu Dodano po 2 Spróbuję trochę bardziej sprecyzować o co mi chodzi. Na stronie 314 RM www.st.com/internet/com/TECHNICAL_RESOUR... napisano:...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
Jestem obecnie w trakcie nauki programowania AVR-ów w języku C. Jednocześnie składam w kawałki kod, który mam zamiar wykorzystać w moim pierwszym, poważniejszym projekcie z tej dziedziny. W tej chwili jednak pojawiła się pewna wątpliwość, której nie rozwiała lektura kilku tutoriali. Mianowicie w jednym miejscu muszę zmierzyć czas, jaki upłynął od ostatniej...
Witam ! Przenosze program (który pisze pod LPC2364) z Keila do CrossStudio (niestety 16kb mi nie wystarczy:(. Jednak zatrzymałem się na przerwaniu od Timera0. Zanim ,soft załaduje na płytkę chce go przetestować na symulatorze. Jednak po uaktywnieniu przerwania i postawieniu pułapki w funkcji obsługującej przerwanie od Timera0, program się nie zatrzymuje...
Hmm, czy ATmega32 na pewno ma timer3? Rzecz w tym, że mam już gotowy układ, w którym są wykorzystane nóżki procka OCR1A i OCR1B (outputy timera1) - gdybym teraz do PWM wykorzystał inny timer, musiałbym wprowadzać zmiany w układzie, czego chciałbym uniknąć (a do tego timer2 też mam zajęty, a silniki są dwa). Mówisz, że logiczne jest, że praca timera...
1) Tak, zmieniając taktowanie timera zmieniają się także liczby, które należy wpisać do jego rejestrów. 2) każdy timer ma kilka kanałów PWM i skojarzone z nimi rejestry. Konfigurujesz wyłącznie wartość określającą wypełnienie, konfigurację samego timera już masz. Co do tych 6 PWM - zauważ, że drugi timer, któym dysponujesz jest tylko 8-bitowy i w zależności...
Witam Szanownych Forumowiczów, w aktualnym projekcie muszę wygenerować trzy interwały czasowe z regulowaną długością. Poglądowy rysunek dołączony jest jako załącznik. T1ON powinien mieć regulację 1-100us, T2OFF (możliwie krótko - 5us), T3ON (możliwie krótko - 5us). Wykorzystywana przeze mnie Atmega taktowana jest zewnętrznym zegarem 20MHz. Wynika z...
Pokażę tu jak uruchomić z Arduino czterocyfrowy wyświetlacz 7-segmentowy sterowany poprzez rejestr przesuwny 74HCT164 i cztery tranzystory BC546. Płytka z wyświetlaczem znów będzie odzyskana z elektrośmieci. Będzie to już kolejny temat, w którym uruchamiam wyświetlacz, gdyż omawiałem już krok po kroku , dodatkowo w dość uproszczony sposób, stroniąc...
Mam mikrokontroler 8051 i licznik T0 który jest częścią tego mikrokontrolera. TO pracuje w trybie 1 (czyli jako 16-bitowy licznik) i ma on zliczać impulsy wewnętrzne (czyli pracować jako timer). Częstotliwość rezonatora kwarcowego podłączonego do mikrokontrolera wynosi 12Mhz. Wiadomo, że TO będzie zliczał impulsy 12Mhz/12(albo odwrotnie). I tutaj nie...
Mam problem z przerwaniem od Timera0. Chodzi o to by Timer0 zgłaszał przerwanie w trybie pracy z porównaniem. Jest to tryb Clear Timer on Compare Match (CTC). Licznik zlicza zdarzenia zewnętrzne i w momencie zliczenia do zadanej wartości ma zgłosić przerwanie i zacząc liczyć od zera. Aby to osiągnąć do rejestru OCR0 wpisuję wartość do której licznik...
Tu uruchamiasz timer0 z preskalerem ... [syntax=c] //######## konfiguracja timera1 ############## TIMSK |= (1<<TOIE0); //Przerwanie overflow (przepełnienie timera) TCCR0 |= (1<<CS02) | (1<<CS00); // źródłem CLK, preskaler 1024 TCNT0 = timer_start;// //Początkowa wartość licznika //######################################... [/syntax]...
Tak co jeden cykl. Prescale jest 64 wiec nie tu chyba problem. Nic sie nie dzieje na wyswietlaczu a w symulatorze tez nie pokazuje zmian zmiennych. To nie jest jeden cykl, ani też 64 jakby wynikało z podziału prescalera. Wszystko można odczytac w symulatorze, tylko musisz potrafic posługiwac się jego ustawieniami i funkcjami. Poniżej masz przykład...
CO do stanu timera pobierasz bezpośrednio z rejestru, nie znam tego mikrokontrolera (pracuje na AVR'ach), a jeśli chodzi o przerwanie po odpowiednim ustawieniu rejestrw przeskok nastapi sam do odpowiedniej funkcji, podobnie jak powyżej nie podam nazwy funkcji - skłonności do pracy AVR'ach :D
Witam wszystkich Elektrodowiczów! Chcę uruchomić Timer na ARMie LPC11C24. Zrobiłem standardową inicjalizację Timera, jak w każdym przypadku, ale on nie chce ruszyć za żadne skarby. Zegar magistral AHB jest ustawiony na 48 MHz (kwarc zewnętrzny 12 MHz, dzielnik PLL P = 2, M = 4 i dzielnik AHB = 1). Prosty programik, który będzie migał diodą LED co 1...
Witam, niestety to już mój drugi watek w związku z miernikiem ultradźwiękowym który robię. Najpierw próbowałem z przetwornikiem a/c ale nie dawało to żadnych odczytów i teraz spróbowałem z komparatorem a/c i timerem. Do atmegi podłączyłem nadajnik ultradźwiękowy przeciwsobnie. Włączam timer1 z przerwaniem od przechwytywania. Programowo wysyłam paczkę...
Chce przenieść kod obsługi dotykowych guzików z PIC18F46j50 na PIC18F47J53. Za obsługe mTouch odpowiada ADC i CTMU. Z tego co sie doczytałem różnica polega na tym że ADC w 47j53 posiada jeszcze triggery, które trzeba ustawić dla wyzwalania przez CTMU. Robię to tak: ADCTRIGbits.TRIGSEL0 = 1; ADCTRIGbits.TRIGSEL1 = 0; I włączyć obsługe zdarzenia dla CTMU...
Chwile sie pobawiłem i zastanawiałem sie czemu mi zle działa dioda podpięta do PORTB.3 a to jest związane z OCR1A dlatego zle działała. Nie dlatego, nie ma tu żadnego związku. OCR1A jest to wpis do rejestru, który służy do określenia górnej granicy (TOP) do jakiej ma liczyc Timer1 co odpowiada upływowi czasu tu akutat 1 sec., zaczym się wyzeruje. Jeżeli...
Panowie nie wiem czy w dobrym to dziale pisze jak nie prosze o przeniesienie ale prosze rowniez o pomoc mam w poniedzialek spr. prawie calo roczny i musze to miec conajmiej na niedziele 1.Na czym polega multipleksowanie 2.Jakie podstawowe funkcje pełni rejestr 3.Zamień cyfrę w zapisie 10 tnym na bierna i heks. 4.co to jest akumulator i jaka pelni funkcje...
Otóż zliczam czas na timerze 2 i co 1 sekundę generuje mi przerwanie obsługiwane w procedurze signal. Jednak gdy jestem w menu które wywoływane jest za pomocą przerwania: ISR_BLOCK, czas nie jest liczony. Jak zrobić by priorytet przerwania Timera2 był większy niż przerwania zewnętrznego. Nie mogę ustawić ISR_NOBLOCK bo zapcham szybko stos. Czy w AVR...
Witam kolegów. Mam pytanie, czy ktoś z Was orientuje się, który rejestrator miałby możliwość [oprócz standardowej stałej rejestracji obrazu z kamer na HDD] robienia zdjęcia z jednej z kamer o określonej porze i wysyłania tego zdjęcia na e-mail lub na serwer FTP? Monitoring ma spełniać 2 funkcje: - standardowa rejestracja na HDD - zrobienie zdjęcia raz...
Noo, wiedziałem, że coś mam źle:). Miałem ustawione wyjścia jako General purpose output PP, po zmianie na Alternate jak ręką odjął... A wczoraj kilka godzin szukałem błędu w rejestrach timera:D Powinno być: Freddie Chopin . Czasem zapomni się oczywistych rzeczy... Jednak te uC nie są takie straszne bez bibliotek:). Trochę czasu i manuale i działa......
Ostatnio trafiłem na czujnik tętna oparty o element fotoelektryczny. Testując czujnik UV z cyfrowym interfejsem Ostrzeżenie: Tego typu tanie czujniki "medyczne" nie mają nic wspólnego z prawdziwą elektroniką medyczną, prezentuję tutaj efekty własnych prób podejmowanych na własne ryzyko, osoby które chciałby podjąć podobne próby wykonują je na własne...
A moglbym otrzymac namiary na tego timera co przyjmuje wartości float??Nie moge znalesc na w/w stronie... Juże zapodaje........ bo na programmersheaven był link do tej stronki. Na moje krzywe oko to działa ma tylko jedem malutki problemik :( a mianowicie pod Builderem działa OK, ale jak Buildera wyłączysz to dobija się o rejestrację.( koszt 50 EUR...
Czy ktoś zajmował się timerami w ADuC7128? Zapis dowolnej wartości do rejestru TxICLR powinien przeładowywać zawartość rejestru licznikowego wartością początkową z rejestru TxLD. Tymczasem nic takiego się nie dzieje. Rzeczywiście, następuje przeładowanie, ale tylko wtedy, gdy zapis do TxICLR dokonywany jest w ramach obsługi przerwania od danego timera....
Witam . Kiedyś pisałem w asemblerze obsługę DS 1990 i była ona rozwiązana z uwzględnieniem przerwania od timera. Działało to w następujący sposób. Jest sobie rejestr statusu DS-a każdy bit sygnalizuje inny stan w trakcie odczytu.Na przykład ustawiony bit 0 oznacza reset_on. bit 1 reset_off i tak po kolei.W przerwaniu jest podprogram który sprawdza rejestr...
Chyba tak to miało by wyglądać: Niestety nie. Masz źle wyliczoną wartość rejestru porównania - otrzymujesz 9,98ms a nie 20ms, tutaj nie ma zastosowania dual-slope operation ! Po co też ustawiasz tryb wyjściowy OC1A i OC1B - one do niczego nie są Ci potrzebne. Licznik ma się sam nakręcać i tyle w tym temacie: Compare1A = 625 Config Timer1 = Timer, Prescale...
Witam, walczę z tym cały dzień i nie potrafię zrozumieć dlaczego program nie działa. Próbuje poprostu "uruchomić" przerwanie podczas przepełnienia timera0. Jak widać niżej jest bardzo prosty kod który powinien zapalać i gasić diodę. Preskaler ustawiony na 1024, ustawiona odpowiednia flaga w rejestrze TIMSK ...i nei działa. Jeśli w pętli while wrzuce...
OK, rozumiem. Napisałem coś takiego, prosta sekwencja na liczniku do sterowania silnikiem krokowym. Przyciski zwiększają lub zmniejszają prędkość sekwencji, tylko mam taki problem. Muszę zrobić tak, aby jedno wciśnięcie przycisku powodowało przyspieszenie, potem drugie wciśnięcie przycisku kolejne przyspieszenie itd. Z tego co wyczytałem, to najlepiej...
Witam, zacząłem ostatnio zabawę z arm'ami a dokładniej z procesorem lpc1768, przeczytałem już trochę dokumentacji jednak niektóre aspekty są dla mnie niejasne i byłbym wdzięczny gdyby ktoś obyty z tematem wytłumaczył mi co nieco, ale do rzeczy, na stronie znalazłem fajny opis dotyczący wysyłania danych na port z wykorzystaniem układu dma i timera, program...
Witam Jak rozumiem z dokumentacji, Timer1 ma możliwość takiego ustawienia rejestrów aby można było wywołać dwa przerwania. I owszem przerwania występują , pierwsze mniej więcej co 1 sek. tak jak było planowane, natomiast drugie występuje naprzemiennie z przerwaniem pierwszym (z niewielkim przesunięciem czasowym) bez względu na to jaką wartość wpiszę...
Witam, dziekuję za odpowiedzi. (at)yokoon Dlaczego load timer miałby być w programie głównym? W głównym być nie może a w przerwaniu jest niezbędny. (at)M. S. Tak, tryb CTC to alternatywne rozwiązanie. Spróbuję czy to coś zmieni. (at)emarcus nie masz co robić? To poczytaj ze zrozumieniem. Tu pytam o możliwość skrócenia pojedynczego cyklu, a w drugim...
teraz postanowiłem uruchomić timer 2 i w żadnych plikach nie widzę funkcji do tego timera. To poszukaj dobrze - musi być w pliku w którym jest tablica wektorów, być może jest to ten sam plik w którym jest startup.
Witam Z nudy czy też z unikania zgromadzeń, siedząc w domu wpadłem na pomysł aby zbudować timer kuchenny (minutnik). Kod źródłowy zaczerpnąłem z Elektrody. Problem polega na tym,że: Timer późni się 15 sek. na 5 min. (przy kwarcu 11,0592 MHz (2x33pF)) i śpieszy 5 sek na 5 min (przy kwarcu 12MHz (2 x 39pF)) Kod w bascom. Ustawienie wartości początkowej...
ograniczenie jest takie same, jak dla timera pracującego z wewnętrznym zegarem - 1/24 częstotliwości kwarcu, czyli np. 0.5MHz dla kwarcu 12MHz W dół ograniczenie nie istnieje, czyli od 0Hz :D To jest ograniczenie fizyczne, wynikające ze sposobu "pobierania" sygnału z wejść T0/T1. Wejścia te nie są połączone bezpośrednio z wejściami zegarowymi timerów,...
Dzieki serdeczne!! Teraz troche bardziej zrozumialem o co w tym wszystkim chodzi. No coz jestem czystym bascomowcem i odkladanie odpowiednich rejestrow na stos to dla mnie czarna magia.Chociaz juz tyle wiem,ze bascom odklada wszystkie rejestry specjalne na stos. Coraz czesciej tego zaluje,ze nie znam podstaw...no coz bascom... Sprytnie skrociles kod....
Jako ze nie przepadam za pisaniem na maile, to odpowiem tutaj... Musisz skonfigurowac odpowiedni timer i przy przerwaniu, jakie generuje int czas=0; int timer0=131; SIGNAL (SIG_OVERFLOW0) { czas++; if (czas==5000) BUUM(); //jezeli czas osiagnal 5000ms, to wywolaj funkcje BUUM(); TCNT0 = timer0; // zaladowanie do...
globalny rejestr zmieniasz swoim makrem enableIRQ - jest to jeden bit w CPSR, ktory zezwala na przerwania IRQ. 0x41 0x56 0x45!!
mariuszklo: Mariusz, nie wiem jak Ty, ale ja już "stary" jestem i moja wiedza sięga okresu gdy używano germanowych tranzystorów ASY34. Dla mnie counter i timer to dwa różne układy, gdzie counter jest częścią składową timer'a. Sam counter jest układem zliczającym impulsy, natomiast timer to układ zawierający generator impulsów, counter oraz układ porównywania...
A stan Timera0 się zmienia? Ja też mam problemy z tym. Ale pod pojęciem "tym" kryje się nie Timer, lecz BASCOM. W BASCOMie niektóre rzeczy nie działają z niektórymi procesorami (np. Timery w ATMEBA88 nie działają, w ATMEGA8 już tak. BASCOM ma źle przypisane adresy rejestrów IO).
Rozpatrz opis działania polecenia SLEEP: "Rozkaz ten wprowadza procesor w jeden z trybów obniżonego poboru energii, określony przez nastawę specjalnego rejestru. Układ może wyjść ze stanu uśpienia tylko w skutek wystąpnienia przerwania lub zdarzenia zerowania. Jeśli do wybudzenia procesora wykorzystane mają być przerwania, należy pamiętać by wcześniej...
zerpo --> dlatego dodałem, że to nie przesada - bo każde rozwiązanie , które działa poprawnie jest ok ;) i wcale się nie kłócę które lepsze. Pewnie, że to , które podałeś spokojnie zadziała z tym wentylem. Jednak polemizowałbym ostro co do tego, że rozwiązanie podane przez ciebie zmniejsza obciążenie procesora. Być może zapominasz o tym, że każde przerwanie...
Ad2. Tak, tabela 30 strona 70 Datasheeta. Ad4. Generalnie wszystkie nazwy biorą się z datasheeta. Skoro chcesz skorzystać z timer1, to szukasz w DS informacji na jego temat (od strony 108). Tryby pracy, a raczej ich podsumowanie jest na stronie 133 tabela 61. W cały rozdziale, tj 108 do 143 są opisane wszystkie rejestry, do czego służą i jakie ustawienia...
Nie włączyłeś zezwolenia na przerwania Timer'a0, czyli: TIMSK |= 1<<TOIE0; Osobiście nie używam makra _BV(), dlatego napisałem z 1<<. Próbowałeś chyba to zrobić poprzez rejestr TIFR, ale on służy do sprawdzania, czy nastąpiło przerwanie (przepełnienie). Mała wskazówka: zamiast w dwóch linijkach: TCCR0|=_BV(0); TCCR0|=_BV(2);...
Witam wszystkich ;) Czy ktoś może mi udzielić jakiejś wskazówki jak w procesorze Atmega2560 wpisać do rejestru TIMSK0 wartość 0x01. Chcę zrobić układ w którym po przepełnieniu Timera występuje przerwanie. I wszystko działa dobrze tylko muszę ręcznie (poprzez kliknięcie myszką) ustawiać ten rejestr. Próbowałem już wpisywać do niego wartość poleceniami...
Dokumentacja mówi WYRAŹNIE: najpierw należy ładować wartość do TCNT1H (który zostaje zapisany do rejestru TEMP), a dopiero potem do TCNT1L, co pociąga za sobą wpisanie do TCNT1 aktualnej części jako dół i wartości TEMP jako góra (przy odczycie najpierw należy odczytać dół, potem górę). Ciągu skutków powodujących takie zachowanie a inne nie chce mi się...
A po co wogóle komunikacja z timerem? Timerem przełączaj anody, w mainie katody na przykład. I nie dawaj nigdzie żadnych waitów czy sleepów. Jedyne co możesz sprawdzać odnośnie timera to moment kasowania żeby wiedzieć gdzie jest początek linijki - bo zakładam że dodasz więcej wyświetlaczy. Musisz dokonać odczytu rejestru albo ustawiać jakąś flagę /...
Timer 0 w atmedze8 nie ma pwm. Powinieneś użyć Timera 2, czyli rejestrów TCCR2 i OCR2.
Zaraz sprawdzę. tak mam ustawioną konfigurację TIM15, 16, 17: Dodano po 9 Nie pomogło. Ogólnie timery pracują poprawnie jezeli chodzi o częstotliwość, wypełnienie, poza tym chwilowym zatrzymaniem podczas startu, najczesciej dwukrotne na ok. 0.2-0.3 sek. Nie dzieje się to też podczas normalnego włączania timera z ustaloną czestotliwoscią, ale tylko podczas...
Witam. Mam standardowy enkoder dwa kanały A,B przesunięte o 90st. Próbuje skonfigurować timer 2 do pracy z tym enkoderem jednak licznik ani drgnie. Próbowałem skonfigurować na różne sposoby i w końcu nie wiem czy coś jest fizycznie uszkodzone czy po prostu źle skonfigurowałem rejestry. Oto mój program: [syntax=c] RCC->APB1RSTR|=RCC_APB1RSTR_TIM2RST;....
Mam prośbę. Po pierwsze zrób małą zmianę. w pętli Do Loop napisz zamiast tamtego kodu ( który wyrzucił zumek) następujący kod[syntax=basic4gl] wait 1 TCCR1B=&B00000000 'Zatrzymanie Timera wait 1 TCCR1B=&B00000010 'Uruchomienie Timera [/syntax] Jeśli zadziała to sprawdź czy działa instrukcja if. Wstaw w jej wnętrze po if załączanie diody na jakimś wyjściu...
Witam serdecznie wszystkich, jestem stosunkowo nowy w dziedzinie mikrokontrolerów, ale postaram się przybliżyć problem najprościej jak się da. Sama idea jest taka, aby wykorzystać Sonar HC-SR04 od Arduino i przy pomocy atmegi16 wyliczyć odległość i wyświetlić to na ekranie. Jest użyty kwarc 16MHz i fusebity poprawnie ustawione. Problem polega na tym,...
I bardzo dobrze, że na Politechnice Lubelskiej jest dsm wiem na własnym przykładzie ze jest to super sprawa. Zaczynając zabawę z mikroprocesorami należy poznać podstawę czyli strukturę mikroprocesora oraz zagłębić się w rejestry. Po takim przejściu przez DSM51 oraz wymagającego prowadzącego nie mam problemów z innymi mikroprocesorami.
Pomysł ze zgłaszaniem przerwań sto tysięcy razy na sekundę jest zpełnie chybiony, to po pierwsze. Mierz czas timerem. Po drugie, sprawdź w manualu, jaka jest minimalna wartość rejestru ARR umożliwiający poprawną pracę timera. U Ciebie wartość ta wynosi prawopodobnie 0. Po trzecie, jest w języku C takie słowo kluczowe na literę 'v', o którym co chwila...
Kiedyś napisałem prosty przykład użycia Timera w trybie CTC dla AVR w AVR Studio w języku C. W załączniku znajduje się ten gotowy kompletny program powodujący przerwanie od porównania (Compare) co około 250 ms i generujący przy okazji falę prostokątną na wyjściu OC0A. Otrzymujemy w ten sposób przebieg prostokątny na tej nóżce o okresie 2 Hz (2x250 ms...
Witam, Mam problem z konfiguracją ADC. Chcę skanować 3 kanały, 5, 8 i 9. W momencie przerwania Timera chciałbym wysłać poprzez DMA wartości 3 kanałów ADC do bufora Adc, jest to tablica 3 elementowa. Coś jest nie tak bo jak wysyłam te wartości do terminala to otrzymuje losowe wartości, podczas gdy kanał 5 jest podłączony do masy, 8 do zasilania a 9 wisi...
Witam wszystkich kolegów Mam prawdopodobnie dość trywialny problem. Chce zliczać impulsy na jednym z pinów uC (częstotliwość 100-200kHz) w czasie kiedy na innym pinie uC jest stan wysoki. Mój pomysł wygląda tak: Ustawiam timer w 16 bitowy tryb prosty Przerwanie wyzwalane zboczem narastającym zeruje 0 16 bitowy timer Przerwaniem zboczem opadającym przepisuje...
Dałeś mi(początkującemu) dużo do myślenia i szukania w manualu. Bardzo dobrze. Sądziłem, że TimerInterval to częstotliwość TIMER0. I skąd te30000000. Dzięki temu dowiedziałem się co to PCLKSEL0 i jak go odczytać. PCLKSEL0 ma wartość Binary:11000000000000000000 i stąd TIMER0 ma CCLK/4. Przy okazji, mój 1769 w dokumentacji ma 120MHz,a praktycznie wynika...
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
Powinieneś mieć trzy ODDZIELNE procedury - main, obsługę przerwania INT0 i obsługę przerwania timera. W kodzie powyżej z main przchodzisz do obsługi int - błąd pierwszy. Obsługa obu przerwań zamazuje rejestr R16, którego używa main - błąd drugi. Przycisków nie obsługuje się na przerwaniach int, a w przerwaniu timera (który to temat powraca tu kilka...
może dałoby się ustawić timer tak żeby wyzwalał transmisję tylko jednego bajtu na raz, tylko ciężko chyba byłoby zrobić dokładnie 9 takich transmisji. Przy takim rozwiazaniu jak piszesz ze timer wyzwala transmisje pojedynczych bajtow musialbym pozostawic sobie jakis zapas czasu po zakonczeniu kazdej takiej transmisji a to wygeneruje sumarycznie calkiem...
Spójrz do noty. Sprawdź sobie jak się nazywa rejestr Timera0 i czytaj z niego.
czy też muszę użyć trzech liczników? Procesor mam na płytce typu STM32F100RB. Nasuwa mi się pytanie czy w ogóle potrzebujesz to zrobić na timerach. A nie po prostu użyć przerwań od zboczy na pinach (EXTI). Typowo czas martwy G-M podawany jest rzędu 100µs, czyli nawet jak na wolny F100 jest to mnóstwo czasu i nie ma ryzyka zgubienia impulsów. Co...
Witam, Działam na STM 32F100C6, środowisko System Workbench for STM32, program pisany w C w oparciu o działanie bezpośrednio na rejestrach. Opieram się w dużym stopniu na poradniku sz. kol. Szczywronek. Problem: Na początku programu uruchamiam wszystkie peryferia i generalnie wszystko działa, tak jak powinno. Gdy w głównej pętli programu, przed rozpoczęciem...
Witam piszę aplikację obsługującą silnik krokowy. Wykorzystuje do tego PWM ( Nie pytać dlaczego, tak chciał prowadzący). Na początku robiłem to na przerwaniach, ale się nie spodobało. Miałem wykorzystać do tego DMA + PWM i ładować z DMA wartości do periodu, tak aby okres ten był zmienny. Napisałem aplikację, ale niestety nie zmienia się period jest...
Witam Wszystkich Niedawno wszedłem w posiadanie układu do pomiaru EMG takiego jak ten : Jednak przy pomiarze ADC coś jest nie tak więc bardzo proszę Was o pomoc Ułożyłem sobie taki kod a w zasadzie przerobiłem dostępne biblioteki z Arduino na kod dla mikrokontrolera (używam Eclipse): [syntax=c]* EMGFilters.cpp * * Created on: 17 mar 2018 * Author: Arkadiusz...
Cześć, Pozwól, że przejdę do konkretów. 1. Możesz napisać program tak, żeby aktywować timer tylko wtedy, kiedy masz aktywny klawisz. 2. Dlaczego chcesz mieć klawisz na tym samym pinie co wyjście timera? 3. Jeśli chcesz liczyć, ile razy klawisz został aktywowany (naciśnięty), potrzebujesz zdefiniować zmienną, którą będziesz zwiększać o 1 przy każdym...
Witam, Przerwanie to "impuls" pojawiający się raz na określony czas (ustawiasz to inicjalizując przerwanie, przykładowo Time to rodzaj licznika, który ma pewną wartość wstępną, którą ty wpisujesz. Jego wartość zmienia się z taktem zegara, a jak szybko, też ty decydujesz, a jak doliczy do zera, to zgłasza przerwanie). Obsługa przerwania to procedura/funkcja,...
Witam. Dzięke za programik :-). Mam takie pytanko: Z tego co zauważyłem go ten programik zaokrągla wartości rejestrów. A mozna by było zrobic tak aby to zaokrąglanie było opcjonalne? No i jak dla mnie to bardziej przydatna byłaby wartość w HEX a nie w DEC, bo w HEX to odrazu bym widział jak duży licznik mi potrzeba. Dodano po 1 A co sie tyczy Tutoriala...
Nie podales jeszcze waznego parametru czyli f taktowania timera. Zakladajac ze mowisz o '51 to wynosi ono 1MHz (f taktowania/12) to inkrementacja rejestru zachodzi co 1s/1000000 czyli 1uss. Jesli mowisz o rodzinie '51 to w trybie 0 (mode 0) zlicza on do 8192 (13bit). Czyli maksymalny czas (nie wliczajac obslugi przerwan) to 8192*1us a minimalny to 1us.
Albo może lepiej wyzwalanie DMA zdarzeniem Timera. ADC pracuje ciągle, Gdyby DMA przepisywało wartości próbek w określonych timerem momentach mogłoby to jakoś działać.
Wasz kod nie działa głównie z tego powodu, że rejestry timera są 16-bitowe, więc liczba 83999 raczej się w nich nie zmieści No ale kto by czytał te BEZSENSOWNE i ZŁOŚLIWIE ostrzeżenia kompilatora... 4\/3!!
Potrzebuję wygenerować trzy sygnały do sterowania rejestrem: 1MHz, impulsy co 64. okres z 1MHz i podobnie 128. Mniej więcej wyglada to tak: __ __ __ __ __ __ __ __ __ | |__| |__| |__| |__| |__| |__| |__| |__| |__ 1MHz __ __ | |__<-- przez 64 okresy poziom niski -->| |__ __ __ | |__<-- przez 128 okresy poziom niski -->| |__ Wykorzystałem...
Robię mierzenie częstotliwości za pomocą STM32. TIM1 ustawiony mam na taktowanie z zewnątrz przez TI2 (CCR2, TI2FP2). Co pewien okres (100ms) w innym liczniku, w przerwaniu odczytuję CCR2 żeby odczytać liczbę impulsów, zresetować i tak dalej. Wszystko ok, ale w przerwaniu innego timera, nie mogę zresetować CCR2, czyli wpisać 0 do tego rejestru. Próbowałem...
Witam, poniżej program, którego celem jest zliczanie impulsów zewnętrznych. Problem polega na tym, że po skonfigurowaniu rejestru TCCR0B, program się blokuje ( nie ma komunikacji z monitorem portu). Jeśli ktoś ma pomysł na to, to będę wdzięczny. void setup () { TCCR0B |= (1 << CS02) | (1 << CS01) | (1 << CS00); Serial.begin(9600);...
Właśnie dotarłem do tych ustawień ale okazało się, że to nie one. W każdym bądź razie ielkie dzięki za podpowiedzi. Dla potomnych jak wiadomo TIM1 i TIM8 są znacznie bardziej rozbudowane więc wykorzystując StdPeriph STM-a należy poczytać o wspomnianym rejestrze, których ustawienia znajdą się pod hasłem TIM_BDTRInitTypeDef, służy on do ustawiania konfiguracji...
Witam, Kilka tygodni temu zrobiłem sobie matrycę LED 5x8. Użyłem do tego 13 linii uC Port C(pin 0-4) służył do zapalania/wygaszania wierszy Port D Do włączania/wyłączania kolumn. Aby zdefiniować znaki zrobiłem sobie specjalną tablicę i tam podawałem w kodzie dziesiątkowym ( które diody w kolumnie mają się oświecić) Napisałem taki kodzik: Chciałbym teraz...
Witam, robię rejestrator parametrów pieca C. O. z rejestracją wyników na sd. Obsługę karty zrobiłem jak u _ducha (dziękuję) natomiast mam kłopot. Po zapisie ok 1000-2000 wyników (co 1 min) układ zapisu wiesza się. Błąd zapisu i koniec. Wystarczy zrestarowac układ i działa dalej ale jest to kłopotliwe. Używam: 1. ds18b20 -5 szt do pomiaru temp w roznych...
Witam wszystkich, mam problem z przerwaniem od przepelnienia, timer1. Siedze nad ta prosta rzecza któryś dzień z kolei i nie moge sobię poradzić. Prosiłbym o sprawdzenie kodu. [syntax=jezyk_C] #include<avr/io.h> #include <avr/interrupt.h> #define F_CPU 1000000 // czestotliwosc zegara 1MHz #include<util/delay.h> int main() { DDRA =...
Odpowiedź jest "idiotycznie" prosta W pętli porównujesz pracujący licznik z wartością 62500 i to że trafisz na taką wartość w momencie odczytywania rejestrów TCNT1 , jest jak podrapanie latającej muchy po brzuszku , przy 1-szej próbie - mało prawdopodobne Zmień warunek z Timer1=62500 na Timer1=>62500 , lub Timer1>62499. nie do konca sie zgadzam z kolega...
Witam, mam taki problem. Procek -Atmega8, chwilowo taktowana wewnetrzym 8mGHz. bascom Ogólnie program działa nastepująca: Korzystam z INT0 ustawiam go na zbocze opadjaące. konfiuguruje timer0 z parametrem Compare A = disconnect ustawiam flage na 0 do loop przerwanie int0: czesc1: sprawdza flage jak 0 to uruchamia tajmer , zmienia sie na zbocze rosnące...
Witam Mam pewien problem z timerami, jesli dobrze rozumiem dokumentacje to przy kazdym przejsciu wartosci rejestru TMR z 0xFFFF na 0x0000 powinno wystapic przerwanie. Napialem prosty program wywolujacy przerwanie przy pomocy timera0 i niestety wartosc ta musi przjesc przez zero kilkaset razy zanim wystapi przerwanie. Korzystam ze sprzetowaego debuggera,...