Tak wiem że należy odpalić timer na początku i zatrzymać na końcu i odczytać jego wartość.. no nic. Dziękuję za wypowiedzi tak czy inaczej.. Odp. kol. Draco była troche sarkastyczna, bo na tak prostą procedurę nikt, kto ma choć troche rozeznania w tej dziedzinie chyba (!) nie szuka pomocy. Mopzesz to zrobić na kilka sposobów: 1. mierzyc czas metodą...
Albo Config- albo str.112 pdf.- i poprzednie i następne. Polecam to drugie rozwiązanie. "tak by była możliwość dodania czasu martwego. " Nie da się z automatu. Mają to ATtiny 25/26/45/85- o ATMega nic mi nie wiadomo. W ATtiny25/45/85 znajduje się układ DTG-Dead Time Generator- to o co Ci chodzi.
Do takich timerów jest przeznaczony CD4541 i zrobi to dużo lepiej od NE555. Ale może ATmega ma jakiś wewnętrzny timer, który by dał się użyć?
.... W pętli głównej sprawdzam na okrągło bit 0 rejestru 0 układu ( sprawdzam flagę alarmu timera). .... "Additionally, a timer alarm can be programmed by setting the timer alarm enable (bit6 of the alarm control register). When the value of the timer equals a pre-programmed value in the alarm timer register (location0F), the alarm flag is set ( bit1...
Jak np mam kilka innych procedur które zabierają dużo czasu. Np pomiar ds18b20 albo wyświetlanie na LCD a chciałbym je wykonywać co pewien ściśle określony czas.
Config pind.2 = input
Czyli zrobić zewnętrzne przerwanie na te funkcje??
Zamiast delay() możesz użyć millis(). Biblioteki dla wielowątkowości też znajdzesz. Dla krokowców możesz użyć biblioteki AccelStepper: http://www.airspayce.com/mikem/arduino/A... Dostępne biblioteki możesz przeglądać w menadżerze: https://www.arduino.cc/en/Guide/Librarie...
1. Owszem poprzez dodanie np. dzielnika rezystorowego. 2. Mogą jeżeli timer nie zostanie skonfigurowany do PWM.
Wiem ale jakbyś zobaczył pełny kod to tam jest 5 metod inicjalizacji timera i tak mi było wygodniej kontrolować czy nie zrobię błędu przy TCCR0 Pytanie dodatkowe. W przerwaniu RXC_vect od USART kiedy "przychodzi" 0x80 (128) to zacznij pobieranie - Transmit=1; Jeżeli w obsłudze przerwania dodam ifa ze sprawdzaniem czy Transmit==1 to nie wysyła nigdy...
Tojmak987123 pomyliłeś pojęcia: Szerokości wypełnienia nie mierzy się w Hz tylko w procentach lub jednostkach czasu (np. mikrosekundach). Twój program wywołuje przerwanie Timera0 co (256-194)*64 cykli zegara, Timer1 jest ustawiany 5 razy rzadziej czyli co 19840 cykli zegara tylko tyle możesz nim odmierzyć (a nawet trochę mniej ze względu na czas ustawiania)....
Przychodzi Tobie prostokąt o wypełnieniu ok. 1-2ms co kilkadziesiąt ms. Musisz podłączyć ten sygnał pod przerwanie w atmega i timerem mierzyć czas pomiędzy zmianą sygnału z "0" na "1" a zmianą z "1" na "0". Z tej informacji generujesz odpowiednie PWM. PS. Ze względu na to, że nowsze atmegi mają więcej wyjść PWM polecam np. atmega88 zamiast atmega8.
Też na początku myślałem o rezystorze tylko nie wiedziałem czy to bedzie bezpieczne. Jak dodasz diodę zenera to będzie bezpieczne. Teraz myśle jak wysterować lampke może jakimś mosfetem tylko jak to zrobić aby powoli sie lampka gasiła ? Poczytaj o PWM. Czyli sterowanie szerokością impulsu. W ATmega robisz to na timerze i nie obciąża Ci programu. Choć...
8Mhz /256 daje 31 250. 31250/125 daje 250 (ms) (250 -125ms) * 8 (co ósme przerwanie) = 1s.
Dziękuje za pomoc. Zrobiłem najpierw jak radził technics6 - dodałem linie kodu i sprawdziłem projekcik ale nie pomogło. OSC jest zdeklarowane bo uzywam w całym duzym programie go (tak jak powiedziałem zamieściłem fragment sprawiający problem). Rozwiązaniem problemu okazała się rada Freddie Chopina ze zmienna typu volitile. Dziękuje Wam za help
Chciałbym się upewnić w pewnej sprawie. Przeszkadza mi konieczność oczekiwania na konwersję tmperatury przez DSa nawet te ~100us przy rozdzielczości 9 bitowej to za dużo. Czy można zamiast waitus wykorzystać timer i zrobić odpowiednią procedurę z warunkami gdzie odczyt będzie realizowany po iluś tam przepełnieniach timera i tak w kółko ?
Witam, Wykorzystałem w swoim projekcie timer PWM i chciałbym dokonywać pomiarów napięcia po jakimś czasie od zmiany stanu z 0 na 1. Czy zrobić to za pomocą dodatkowego Timera? Może jakieś inne rozwiązania? Projekt na ATmega 168PA
Witam! FµC=8 MHz , prescaler = 1024. Timer 0. Wychodzi częstotliwość: 7812.5 Hz = 7.8125 kHz. Wyświetlacz 7 segmentowy 4 cyfrowy migocze właśnie przy takiej częstotliwości. Dopiero przy preescalerze 64 jest OK. Czy to jest normalne? Przecież już przy 4 * 50 Hz = 200 Hz nie powinno migotać. :/
A jak uzyje IR bez modulacji to co moze sie stac? Pomiar to bedzie maksimum 15cm i nie ma byc super dokladny. Sam ze zwykłych diod i fotodiod/tranzystorów nie zrobisz pomiaru odległości, co najwyżej cos na zasadzie "jest? nie ma?" Żeby mierzyć odleglość za pomocą światła potrzebne jest zastowowanie układów z pewnego rodzaju linijkami CCD. Generalnie...
To rozwiązanie chcę użyć do zliczania sygnałów z czujnika. Na chwilę obecną zliczam impulsy na zmiennej i jest taki efekt, że w trakcie zliczania program wykonuje zliczanie i nie mam możliwości przełączać innych wyjść. (zliczanie jest jednym etapem gdzie musi zostać wykonana określona liczba obrotów)
zobacz na stronę http://www.avrbeginners.net/ Dobrze udokumentowane przykłady i opis dziania AT90S i ATMEGA Timery,UART,rejestry itp.
4. Podłączenie sygnału z wyjścia PWM do ADC1 aby ponownie spróbkować sygnał PWM A po co? Po to aby odczytać ile kroków wykonał silnik. Sygnał PWM niski wysoki niski to jeden krok na wejście STEP. I chce żeby pwm był jakoś ogarniczony. Aby silnik wykonał na przykład 20 kroków - nie więcej. Na ATMega możesz to zrobić tak jak ci napisał kol. piotrva....
Uruchomić timer w trybie CTC. Tryb CTC [syntax=vbnet]CONFIG TIMER1 = ..... CLEAR TIMER = 1[/syntax]
Chciałem zobaczyć czy po książce "Mikrokontrolery dla początkujących" p. Piotra Góreckiego, coś zostało mi w głowie. Chyba jednak mało Kolega zapamiętał. W książce autor pisze wyraźnie aby jak najmniej używać poleceń wait. A kolega zrobił na nich Zegar! A od czego atmega ma timery?
Nie przesadzaj nie jest tak źle, o ile przeliczniki da się łatwo ogarnąć. Tak najwięcej pracy jest z wyświetlaczem bo o ile to wyświetlacz segmentowy czy tft w postaci liczb to jakoś pójdzie tak wyświetlacz graficzny będzie najwięcej pracy i tu chyba lepiej by było sięgnąć po jakieś "HMI" Atmega 328P jest złym wyborem bo ma jeden timer w ICP ale da...
Jedyne co da się zrobić to odpowiednio operując bezpośrednio na rejestrach zwolnić piny PC0-PC1 jako normalne piny I/O. Timer2 tak czy inaczej nie nadaje się do użycia...
Ok, Czy na Atmega też się da? Oczywiście, to zrobisz i na starym '51. Atmegi są bardzo różne - Atmega8 i ATmega4809 to dwa różne światy. Ale generalnie, każda ma timer, który może działać w trybie capture, w którym możesz mierzyć częstotliwość lub wypełnienie. Każda potrafi także sprzętowo generować PWM. Aczkolwiek przy podanych przez ciebie częstotliwościach...
Witaj. 1. Nie znam VMLAB, ale czy prawidłowo definiujesz F_CPU? 2. Czy symulator nie potrzebuje osobnej definicji częstotliwości do prawidłowego określania czasów symulacji? Tak jest w symulatorze w Atmel Studio. 3. Volatile: http://mikrokontrolery.blogspot.com/2011... Posklejałeś ten program z kilku - no ale każdy kiedyś zaczyna...
W dokumentacji niestety dla licznika 1 nie występuje preskaler 128. Występuje natomiast 256. Zakładając, że licznik pracuje w trybie CTC (WGM12 =1) i zakładając 8MHz źródło sygnału zegarowego (tak jak jest w komentarzu w kodzie) należy wpisać do OCR1A= 31249 oraz ustawić preskaler na 256 czyli CS12=1 A tak na przyszłość ...nota katalogowa. Tam wszystko...
Tak. Tylko mniej świadomość że procek będzie odrywany od pracy wieloma nieprzydatnymi impulsami. Ewentualnie po pierwszym impulsie na INT, wyłącz przerwania na czas drgań. Jak teraz masz podłączony kontrakton ? INT podciągnięty pod +5V ? Jak INT wyzwalasz ? W docelowym projekcie koniecznie czujnik kontraktonowy zamień na jakiś halotron albo transoptor...
Tak cały czas pozostaje w środowisku eclipse z winavr. Właśnie skończyłem przeinstalowywanie całego pakietu od początku z nowym projektem włącznie i wciąż to samo. Zastanawiam się czy mogą mieć na to wpływ jakieś elementy sprzętowe.. (at)alagner U mnie też warningów brak, tylko w układzie nie działa tak jak powinno. Generalnie to zrobię kilka flag i...
Witam, Niedawno zrobiłem programik, który generuje 3przebiegi przesunięte w fazie. Triggerem dla pierwszego przebiegu jest detektor zera sieci na INT0. Chciałem całą obsługę generowania sygnałów zrobić na przerwaniu Timera. Ale mój ból jak wywołać przerwanie Timera natychmiast po otrzymaniu sygnału na INT0 Wykombinowałem sobie takie o to rzeczy tuż...
To chyba za dużo kombinacji zrobiłem na Atmega 328, analog wykorzystałem jako reg czasu potencjometrem.
Tylko że problem leży w bascomie a nie w mikrokontrolerze. Gdyż bascom nie widzi timera 3 jako źródła generowania sygnału PWM. Można to chyba zrobić zapisując odpowiednie bity do rejestrów, ale dokładnie co i jak to nie wiem, dlatego proszę o pomoc.
Proszę o informacje, gdzie w nocie katalogowej można znaleźć informacje na temat priorytetów wykonywania przerwań, jeżeli wystąpią w tym samym czasie. Nie można, ale ten co ma niższy adres w tablicy wektorów wykona się pierwszy jak przyjdą w tym samym czasie. Co najwyżej możesz właczyć przerwania na początku obsługi aby umożliwić obsługę kolejnych...
Witam Mam problem z zaprogramowaniem uC. W którym miejscu masz problem? Pierwsze, co musisz zrobić to zadecydować, który z timerów skonfigurujesz do liczenia czasu. W jakim trybie ten timer ma pracować (nie wszystkie wbudowane w "mega" timery posiadają te same opcje do wyboru i są ponadto różnej 'długości'). W zależności od taktowania procesora, wybranego...
No to żeby już wyczerpać temat ostatecznie to chciałem jeszcze wykorzystać tryb porównania licznika i zrobić PWM. I tutaj nasuwa mi się pewna wątpliwość a mianowicie np. w procesorze atmega mam wyprowadzenia typu OC0, OC1A itp. i te wyjścia są związane z timerami i do nich mogę podłączyć np.diodę i płynnie ją rozjaśniać i ściemniać. W nucleo patrząc...
Drogi rfhzcx : Chyba tak właśnie zrobię. Skoryguję lekko kwarc pod miernikiem częstotliwości za pomocą trymera. Po dopasowaniu timera na 1kHz mój UART powinien nadal chodzić na 115kbps. Dzięki, pozdrawiam.
Przede wszystkim przeczytaj datasheeta. ATmega posiada timer z trybem PWM. No i sprecyzuj w jakim języku chcesz to napisać.
Takie pytanie mi się urodziło... czy da się w jakiś sposób zmienić piny wyjścia dla timera (OC1A, OC1B)? Oczywiście................., że się nie da. Chyba, że sobie zrobisz programowy PWM to wtedy możesz mieć nie dość, że więcej kanałów to jeszcze na tych pinach, na których ci się żywnie spodoba.
Niezależnie od tego, jak to zrobisz, do zliczania czasu należy użyć sprzętowego timera. Start i stop, czy też odczyt czasu timera można zrobić na wiele sposobów, zapewne w przypadku ATmega najłatwiej będzie przy użyciu przerwań od wejść.
No to trzeba od razu pisać, że zestaw :) Zamiast Timera, przestudiuj ADC - zrobimy wszystko na nim w trybie Free Running. Timery zostaną Ci do innych celów na przyszłość.
Witam, Jak kolega chce wszytko zrobić na uP to wskazana przez kolegę ATmega starczy, uP raczej sobie nie poradzi ze wszystkim na kwarcu zegarkowym będzie zbyt wolny więc kombinacja kwarc zegarkowy + wewnętrzny oscylator RC jest konieczna. Większość ATmeg posiada tylko 2 timery dlatego też trzeba by rozwiązać pomiar czasu i multipleksowanie wyświetlaczy...
Oj lepiej dokładnie zapoznaj się z dokumentacją zanim zaczniesz takie herezje pisać... Nie jestem "debeściakiem" wystarczy dokładniej przejrzeć dokumentację i trochę pogłówkować... ATmega posiada 3 timery z czego timer2 (8-bit) posiada możliwość pracy z kwarcem 32,768kHz... Kwarc taki podpina się pod wejścia TOSC1 i TOSC2... Co prawda są one wspólne...
Witam Nie bardzo rozumiem po co do tego zadania aż trzy timery. Da się to wszystko zrobić na jednym !!! -- pozdrawiam
Musisz zrobić połączenie pomiędzy sygnałem WN i wejściem ATmega. Musisz znaleźć sposób aby połączyć dwa obwody o różnym napięciu, sposobów jest wiele: transoptor, hallotronowy czujnik prądu do Arduino itd. Polecam pisać program na Arduino, będzie znacznie łatwiej niż innymi sposobami. A Basica to chyba mało kto używa, teraz programuje sie głównie w...
Nie ,nie ma takiej możliwości ,żeby zmienić w prosty sposób priorytety przerwań. Można to zrobić przez zabiegi programowe lub zastosować mikrokontroler z rodziny x-mega ,który ma znacznie bardziej rozbudowany mechanizm przerwań i możliwość ustawienia priorytetów .Poza tym może warto przemyśleć sens takiego zabiegu ,bo to rzadka sytuacja kiedy uart miał...
janbernat jak najbardziej cię rozumiem, jednak nie poruszam tu kwestii bezpieczeństwa, większość czasu sam operuję to windą więc zdaję sobie sprawę z zagrożeń, jednak też nie jestem bezmyślnym człowiekiem i teren wokół windy zawsze mam zabezpieczony na całej linii, na dole zawsze są tablice ostrzegawcze i bariery dla osób postronnych, jednak wypadki...
Sam widzisz, że musisz odmierzać czas. Każdy projekt z mikrokontrolerem zaczyna się od przerwania timera. Bez tego nie da się zrobić prawie nic.
Czy RTC (zegar czasu rzeczywistego) używający Timera 2 w trybie asunchronicznym , działa nawet wtedy gdy wyłączone sa przerwania globalne ? ... kwarc, preskaler oraz Timer2 nie potrzebuje przerwań ale to nie wystarcza do zrobienia całego RTC to wystarcza do zrobienia przerwania co 1 sekundę a reszta zegara musisz zrobić programowo i to właśnie na przerwaniu...
No to bez problemu, wykorzystaj SPI/USART w trybie SPI, wtedy dane musisz podawać 8 razy rzadziej niż pixelclock (a nawet rzadziej, bo USART ma bufor), czemu podoła zwykła ATMega. XMEGA to nawet może spać podczas generowania obrazu, bo generacją linii zajmuje sie DMA, a synchronizacji timery :)
Niekoniecznie musi być XMEGA. To co musisz zrobić to nadać dwom sygnałom marker czasowy. Ponieważ jeden timer w ATMega ma tylko jedno wejście ICP, to musisz wykorzystać dwa timery. Wtedy każdy z nich będzie przechwytywał impuls z jednego wejścia. Ponieważ w ATMega tylko większe procki mają dwa 16 bitowe timery będzie to pewien przerost formy. Dlatego...
Witam, chciałbym zrobić nietypowy nadajnik IR na Atmega 8. Nie Sony nie RC5, nietypowy. Sygnał ma mieć 38kHz, kluczowanie znam. Pytanie: czy te 38kHz mogę uzyskać za pomocą timera w trybie PWM 50%? Czy mogę ustawić dowolną częstotliwość, bo wydaje mi się że nie. Chciałbym jednym timerem generować falę prostokątną a drugim kluczować ją komendami START...
Chwila. Timer bez preskalera, częstotliwość procesora nieznana, załóżmy, że 1 MHz (nieistotne). Timer zgłasza przerwanie co 21 cykli zegara, czyli ATmega zajmuje się na okrągło obsługą przerwań timera, nie mając szans obsłużyć żadnych przerwań o niższym priorytecie (ADC).
Owszem, wykorzystać AVR z rodziny XMEGA - tam timer jest o wiele bardziej elastyczny, można go też taktować z innego timera, w efekcie uzystać dowolny preskaler zegara. W ATMega 64 timer też może mieć zewnętrzny zegar, możesz więc zewnętrznie połączyć wyjście jednego timera, który będzie preskalerem z wejściem zegarowym innego timera. CLK/2 w ten sposób...
Witam, nie znam Bascom i dość słabo Atmega. Podejrzewam jednak, że problemem jest realizowane w przerwaniu ładowanie timera nową wartością. Przyjęcie przerwania wymaga jakiegoś czasu, a timer cały czas "cyka". Kiedy ładujesz go obliczoną wartością (250) zdążył już coś naliczyć, w związku z tym Twój zegar się późni. W efekcie dobierasz eksperymentalnie...
Diody masz podpięte bezpośrednio pod porty ATmega? Jeśli tak to lepiej dołóż sobie oporniki aby nie spalić wyjść ATmegi. Bezpośrednio przy procku daj kondensator 100nF. Przed stabilizatorem np. 1000uF, a za stabilizatorem 100u (to i tak za dużo, ale lepiej więcej niż za mało). Zliczanie zrealizowałbym w taki sposób: - Odpalić któryś z wewnętrznych timerów...
Dzięki za odp. na razie udalo mi sie to zrobić przy użyciu polecenia _delay_ms() ze standardowej biblioteki, ale wiem, że to pójście na łatwiznę ;). Obsługe minut i wyświetlania juz w zasadzie skończyłem. Nie wiem, czy coś będę musiał zmieniać przy przejściu na timery.
Potrzebujesz tylko jednego przerwania - timera. Jeśli zrobisz PID z danymi typu float, to chyba nie ma szans, żeby to zadziałało na AVR.
Bardzo dziękuję, ale jeszcze dopytam. Czy symulację należy wywołać poprzez Alt+F5 (Start Debugging and Break) bez zaznaczania punktu "break", a następnie wcisnąć pauzę w dowolnym momencie? Co znaczy kliknąć na flagę? W AVRStudio 4 jest to czerwona chorągiewka, podobnie jak w MS Outlook, ale w symulatorze AVRStudio 5 nic jej nie przypomina. Moim zamiarem...
Skoro projekt dobiegał końca a pojawił sie pomysł overdrive to gdzie zasadność wymiany procka i w praktyce piszanie wszystkiego prawie od nowa? Właśnie tu jest taka zasadność, skoro i tak musisz robić nową wersję sprzętu. Błędnym założeniem projektowym jest dodawanie do danej wersji urządzenia/kodu funkcjonalności której nie jest on w stanie obsłużyć...
atmega 16 ma liczniki/timery na innych portach
Trzeba było od razu napisać iż chcesz coś dorobić do istniejącego układu. Sądziłem z wypowiedzi iż chcesz zachować obudowę oraz tarczę a elektronikę wstawić swoją. Na upartego musiał byś czytać kolumny i wiersze. Nie sterować nic atmegą. Odpal timer i w nim czytaj stan na kolumnach (20 wyprowadzeń). Po zmianie stanu wysokiego lub niskiego w zależności...
Dodam że w programie poprawiłem błędy składni a nie popatrzyłem na schemat i nie poprawiłem błedów logiki. Na schemacie podłączone masz tylko wyjście OC1A więc odwoływanie się w programie do PWM1B jest całkowicie bezcelowe. Do tego DC_on_off to alias pinu OC1A czyli Timera1 który został ustawiony w tryb generowania sygnału PWM. W takim trybie Timer...
A ja proponuję sięgnąć w takim razie po jakąś książkę o mikrokontrolerach - jest ich pełno - albo poczytać w necie i chociaż zdobyć jakąś podstawową wiedzę bo jak będziesz zadawał na elektrodzie do ilu może zliczyć 8bitowy timer itp - to hoo ho - zadasz ich chyba ze 2 miliardy zanim zrobisz pierwszy program do migania diodą LED Tymczasem pierwszy lepszy...
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...
Witam, Chciałbym zrobić sobie zegarek i nie wiem jaka metoda będzie dokładniejsza: 1. wykorzystując RTC atmegi z kwarcem 32,768kHz (Atmega na 8MHz z RC) 2. zewn kwarc 16 MHz i zrobić to na timerze np 2 Czy też inne wyjścia jak DS1307, PCF8583. Chodzi mi o dokładność Do układy będą też dopinane m.in. DS18B20 (2x) Pozdrawiam.
Wg. mnie te 4 takty obejmują również czas wykonania przerywanego rozkazu. Przynajmniej tak pokazuje symulator w AVR Studio. Oczywiście jeżeli przerywamy rozkaz dwucyklowy (np SBI) to opóźnienie wyniesie 5 taktów. Jeszcze dla pełnej poprawności to piszesz o ATEMGA16 i ATMEGA644P więc Twój przykładowy program zawiera błędy: - dla ATMEGA rejestry Timera...
ISP, przetwornik A/C, timery, sporo pamięci i duża szybkość - Atmega już od kilku zł za sztukę. Programowanie przez WinAVR, wystarczy znać podstawy C. Ogółem można zrobić bardzo wiele na takim 'maleństwie' bez zewnętrznych przetworników.
W ostatecznym rozrachunku wyjdzie na to samo... Niestety nie, Bity są kodowane w 3 cyklach Te 1: --_ 0: -__ (minus = stan wysoki, podkreślenie stan niski) czyli znaczenie ma czas trwania stanu wysokiego, zaś w preambule znaczenie ma czas trwania stanu niskiego co do zegara masz rację, ale na razie chodzi o oszacowanie czy da się zrobić software'owo...
Nie podoba mi się twoje rozwiązanie. Ja bym to zrobił tak - timer odmierzający takty w rytm podstawowego okresu PWM (czyli przerwania np. 1kHz). Teraz zamiast tych porównań z licznikami, wrzuć wartość licznika do rejestru compare register. Dzięki temu masz przerwanie po przepełnieniu timera (nowy okres) - w tym przerwaniu inicjujesz wysyłkę danych po...
Bardzo dziękuje myślę ze rozumiem i będę ćwiczył Poustawiam timery na podstawę czasu np. 10ms,1s wtedy będę mógł zrobić czasówki o różnych długościach czasu.
Atmega 8 ma 3 timery więc który timer Ty wykorzystujesz?
Yyyy Atmega (surowa) czy Arduino?
Jeśli w przerwaniu wyświetlania będzie tylko zatrzaśnięcie danych w HC585 i wybór kolumny, to nie ma problemu. Do OW najlepiej jednak będzie użyć UARTa, bo na przerwaniach timera na ATmega raczej się zarżniesz. OW na UART, ładowanie danych wiersza w pętli głównej i jakoś to poleci nawet na cienkim ATmega.
Problem jest taki że sama ramkę danych wysyłam po UART tak jak Rs232 i jest ok, ale żeby nadać resztę to muszę zrobić przerwanie i załączyć wtedy np timer. No i nie wiem jak to wykonać w praktyce by to się tak przełączało miedzy sobą. Przełączanie (przerwania) realizuje sprzętowo Atmega, nie wiem więc o co chodzi? Chcesz aby w momencie transmisji wywołać...
SIGNAL(SIG_OVERFLOW0){ straznik = 0; cli(); } #1 Skoro 'straznik' przyjmuje tylko wartości 0 lub 1, to po co 16-bitowy typ 'int'. Wystarczy w zupełności 'uint8_t'. Ta sama uwaga dotyczy również zmiennych 'i' oraz 'j' w pętli 'for'. #2 Jeżeli używasz zmiennej 'straznik' zarówno wewnątrz procedury obsługi przerwania i w programie...
Możesz to zrobić tak jak zrobiłeś, potrzebujesz tylko jeszcze 3 timer do odmierzania okresu czasu w któym zliczasz impulsy. Albo możesz wszystko zrobić na jednym timerze, licząc nie ilość impulsów lecz ich szerokość. Do tego celu można wykorzystać rejestry ICP. Zaleta jest taka, że mierzone wartości masz na bieżąco uaktualniane.
Pojutrze rok szkolny się zacznie to ze szkoły coś wypożyczę, więc nauka pójdzie od przodu, a co może być nie tak, że nadal timer nie działa? Jak zrobiłem tak jak mi tadzik kazał to działał drugi a 0 już nie ;/
Jeśli chodzi o ppm (parts per milion) to nie wiem. Sam kwarc konstrukcyjnie ma około 50ppm. Zgadzam się z kolegą R-MIK, że dokładny zegar lepiej jest zbudować na Atmega 8 z wyżej wymienionym trybie Timera 2. Nie zależało mi na bardzo dokładnych wskazaniach ani na podtrzymaniu awaryjnym. Te, które uzyskałem są moim zdaniem na dobrym poziomie. Dowolny...
Jest możliwość zrobienia stopera/minutnika z poczwórnym wyświetlaczem 7-segmentowym używając mikrokontrolera z rodziny atmega? Wyświetlacze najlepiej multipleksować w przerwaniach timera, żeby mieć pewność, że każda cyfra będzie wyświetlana jednakową ilość czasu. Odmierzanie czasu dla stopera/minutnika oczywiście też trzeba oprzeć na przerwaniach timera....
Tak zrobię, ale tu zrodziły się kolejne pytania: 1) Jako napięcie odniesienia lepiej wybrać 5V zasilania procka i te 5V podpiąć do AREF, czy AREF kondensatorem 100uF do masy i jako odniesienie wewnętrzne zasilanie procka 1.1V? 2) Przedział liczbowy wyniku pomiaru ADC ile wynosi? 0 - 255? Czy jest on związany z preskalerem ADC? 3) Mógłbyś mi wyjaśnić...
Całkiem błędna sugestia - sygnał pochodzi ze styków, a ATmega nie ma sprzętowego filtrowania wejść timera. Tu sprawdzi się tylko zliczanie programowe w przerwaniu timera. Proponuję na początek częstotliwość ok. 50..100 Hz - powinieneś w ten sposób bezpiecznie ominąć drgania styków. Jeśli styki to ja bym zrobił na przerwaniu INT a w nim: [syntax=c]...
dzięki Panowie za pomoc - trochę mi rozjaśniło drgania styków są mi znane - można załatwić sprawę programowo lub sprzętowo jak zrobię to wyjdzie w praniu reasumując: - ustawiam pin timera jako wejście i podciągam go do plusa wewnętrznym rezystorem - konfiguruję timer jako licznik - ustawiam zmienną ( nazwa ) do przechowywania sumy impulsów i ..... powinno...
To co opisał excray jest widoczne także na schemacie timera, a tutaj znajomość angielskiego nie jest potrzebna :) http://obrazki.elektroda.pl/1695037200_1... Czy teraz już widzisz jak TCNT1 jest porównywany z OCR1A i/lub OCR1B, i których pinów OCn dotyczą? No dobra ale skąd wiadomo że np. w trybie CTC procesor ma porównać TCNT1 z jakim...
dondu pisał o zerowaniu preskalera timera nie zapomnij wyzerować licznika timera.
Zrobiłem tak jak napisał kolega M.S,troche wstawiania miałem ale działo ok,teraz mam nastepny problem doszedłem do wniosku,że wyswietlacz nie musi byc podswietlany cały czas podczas pracy urządzenia bo po co ma sie swiecic kiedy na niego nie patrze i chce zrobić coś takiego aby sie zapalał kiedy nacisne jeden z 4 przycisków i gasł gdy nie nacisne żadnego...
Ale nie podoba mi się twierdzenie o eliminacji wpływu opóźnienia DMA przez zewnętrzny rejestr. DMA pracuje z interwałem clk_PER i jeżeli się zatrzyma, to na całkowitą liczbę cykli, co oznacza przesunięcie w całych pikselach (widać to na podlinkowanym filmie) i moim zdaniem tylko FIFO taktowany stabilnym zegarem może to anulować. Przy okazji można szybciej...
A z wyświetlaczami LED też można sobie poradzić. Zawsze można zrobić multipleksowanie potrójne - tj. wykorzystujemy 3x8 linii i łączymy 3 wspólne końce wyświetlaczy i wtedy w jednym obiegu zapalamy cyfrę na 3 wyświetlaczach. Dodatkowo wszystko możemy podłączyć za pomocą rejestrów przesuwnych (74HC595 lub ich dedykowane odpowiedniki będące driverami...
\ 1. Rozumiem, że ustawienie odpowiedniej częstotliwości da mi czas, który jest mi potrzebny? Tak, program z tego postu demonstruje rejestry i bity których odpowiednie ustawienie spowoduje daną częstotliwość przerwać timerów, a w konsekwencji odpowiednią częstotliwość wysyłania tekstu / migania diodą, jednak obecny ustawiony czas jest przykładowy, nawet...
Masz najnowszą wersję 2080? Czasem gdzieś się czai jakiś błąd i wtedy warto sobie zrobić taki ekspresowy kodzik który najpierw konfiguruje licznik a potem od razu odczytaj rejestry i sobie wyświetl w postaci binarnej. Można wtedy sprawdzić z notą czy wszystko ustawione tak jak powinno. Nie wszystkie tryby licznika da się do końca skonfigurować Bascomowymi...
Wiedza sprawdzona pazurami, klucz do telegrafii zrobiony na Atmega 8 C++ Atmel Studio 7 Potrzebny timer wyznaczający rytm próbkowania (9600/s do 20000/s) , i drugi zatrudnić do PWM (chyba że chip ma C/A), przerwania, te rzeczy. Naiwny kod w arduino trzeba sobie wybić z głowy 1. Arytmetyka sinusa jest wiele bardziej skomplikowana niż piły, prostokąta...
No dobra, czas napisać, jak to zrobić prosto i efektywnie: Używamy jednego przerwania - timera, zgłaszanego kilkadziesiąt..kilkaset razy na sekundę (w typ przypadku, o ile nie ma multipleksowania LED, może być np. 100 Hz). żadna pętla główna nie jest do niczego potrzebna. W procedurze obsługi przerwania odczytujemy wynik ADC, "robimy filtr dolnoprzepustowy",...
Timer2 nie ma 'edge detektora', więc na którym zboczu miałby zlicza impulsy? Timery działają, dlaczego miałyby nie działać? Widocznie jakoś producent zrealizował tę możliwość. Rzecz w tym że w tym trybie, wejście dostosowane jest do typowego oscylatora 32,768Hz, więc pozostałe parametry są niezbyt istotne, i mogą się dziać różne rzeczy. ;) Zrobiłem...
Witam Chodzi o prosty zegarek bez wodotrysków, zastosowac pcf z awaryjnym podtrzymaniem bateryjnym czy moze rtc w atmega przy uzyciu timera i kwarcu zegarkowego, ale boje sie ze jesli atmega sie przypadkowo zresetuje lub recznie to zegarek mi sie zresetuje, a zapisywanie co minute do eepromu to troche lipa....czy moze zmienne po resecie pozostane nie...
Dzięki ;P wszystko hula jak należy. Teraz zrobię PWM :)
jeżeli zrobię tak jak powiedział emarcus to wynik będzie skakał po częstotliwości obecnie w przerwaniu od przepełnienia Tam chodziło istotnie o interrupt przy CTC . e marcus
W przerwaniu timera kolejno: 1. odczytujesz poprzedni pomiar ADC i przetwarzasz wyniki 2. startujesz kolejny pomiar, którego wynik odczytasz przy następnym wejściu w przerwanie timera
Po pierwsze, zastosuj multipleksowanie, np. na 3 lub 4 fazy. Po drugie, weź mikrokontroler, który ma właściwą liczbę wyjść PWM i przy okazji jesz zapewne tańszy od zabytkowej ATmegi. Ostatecznie da się to zrobić i na ATmega, poprawnie implementując programowy PWM wg. noty aplikacyjnej Atmela sprzed wielu lat. Nie da się tego zrobić przez żadne opóźnienia...
Obsługa WS2812 na AVR nie może działać przy aktywnych przerwaniach z jakiegokolwiek źródła. Obsługa DMX korzysta z przerwania UART i masz jeszcze przerwanie timera. Proste? Zmień mikrokontroler.... Z ATmega WS2812 DOBRZE nie popędzisz.
atmega dziać timer timer atmega przerwanie atmega timer assembler
alarm ds512 pralka połowa załadunek suzuki wagon
gdzie kupić materiały budowlane elektroniczny licznik przepływu
Jak zabezpieczyć aluminiową komorę wycieraczek przed wilgocią? Jak otworzyć nową butelkę z klejem PVC/CPVC?