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.
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.
zobacz na stronę http://www.avrbeginners.net/ Dobrze udokumentowane przykłady i opis dziania AT90S i ATMEGA Timery,UART,rejestry itp.
.... 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...
Zanim włączysz konkretne przerwanie włącz przerwania globalne. wpisz tak Enable interrupts Enable int0 Pozdrawiam :)
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ć?
1. Owszem poprzez dodanie np. dzielnika rezystorowego. 2. Mogą jeżeli timer nie zostanie skonfigurowany do PWM.
Uruchomić timer w trybie CTC. Tryb CTC [syntax=vbnet]CONFIG TIMER1 = ..... CLEAR TIMER = 1[/syntax]
8Mhz /256 daje 31 250. 31250/125 daje 250 (ms) (250 -125ms) * 8 (co ósme przerwanie) = 1s.
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)....
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)
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...
Jakoś nie mogę sobie tego wyobrazić. Żeby ISR od Timera zakłócał ISR od UARTA musiałby trwać dłużej niż interwał. Podejrzewam, że raczej program główny nie wyrabia się ze skonsumowaniem zawartości bufora UARTa. Tak czy inaczej pokaż program, a co najmniej procedurę obsługi przerwania timera.
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 :)
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ć. :/
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).
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.
Możesz zrobic tak - zliczać 11059 impulsów w liczniku 16-sto bitowym. Da Ci to częstotliwośći 10000,01 Hz czyli z błędęm w zasadzie do skorygowania kwarcem (kondensatorem, trymerem). Co do RS-a - to błąd całkowicie akceptowalny (dla skorygowanej do 11059000 Hz częstotliwości). P AK
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ż...
kolejny temat, na ktory odpowiedzia jest 'volatile' - bylo o tym milion razy. 4\/3!!
Czyli zrobić zewnętrzne przerwanie na te funkcje??
1. Tak działa każdy Timer 2. Nie ma żadnego modelu AVRa z wyjściami analogowymi 3. Wszystko zależy od rodzaju ogniwa, najbardziej prawdopodobne jest że je zniszczysz całkowicie. Co to za napięcie, co to za prąd? Jak to mierzyłeś? 4.Zależy jaki jest maksymalny prąd. Dla małych prądów można stosować zwykłe TTLki. Dla większych prądów (>50mA) przykładowo:...
Przecież to Ty programujesz timer, a timer może po każdym okresie np. zgłosić przerwanie.
Funkcja delay_ms() nie zależy od timera, więc prescaler nie ma dla niej znaczenia.
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...
dondu pisał o zerowaniu preskalera timera nie zapomnij wyzerować licznika timera.
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...
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.
Jak najbardziej tak.
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ć...
Witam mam pytanie , jak z timera w atmega odczytac impulsy ktore przebiegaja po kablu WN w motoryzacji (chce zrobic obrotomierz) ? Nie znam sie na arduino wiec prosze o pomoc dostalem info zeby nie zaczynac w basicu wiec probuje tu. Pisownie poprawie rano bo pisze z telefonuu;)
Przede wszystkim przeczytaj datasheeta. ATmega posiada timer z trybem PWM. No i sprecyzuj w jakim języku chcesz to napisać.
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
Bascom - wersja 1.11.95 Kod, no jest tego sporo: - zegar PCF8563 - Zapis na SD - dwa czujniki DHT11 - odczyt z PCF8574AP ( klawiatura ) - RC5 - ma być DS18B20 - ma być DCF77, ale nie doszedłem do tego momentu ( tzn testowałem na innym procesorze i działało ) Działa - zegar PCF8563 - dwa czujniki DHT11 - odczyt z PCF8574AP w przerwaniu ( klawiatura )...
Cześć, mam pytanie odnośnie Timerów w uC ATmega. Potrzebuję następujących opcji: - zliczanie impulsów z dwóch enkoderów - generowanie dwóch przebiegów PWM - generowanie przerwania co kilka ms. ..............? Czy są jakieś AVR'y mające 4 timery? ........... Pozdrawiam, Bartek Wystarczy ci Atmega48/88/168 Dla 2-ch sygnałów PWM wystarczyłby 1 timer z...
Dummy_timer nie robi niczego mądrego. Funkcja zwraca zmienną static unsigned int ticks, a wywołana z parametrem TIMER_UPDATE zwiększa jej wartość o 1, wyświetla kropkę w konsoli i czeka 1ms. Do testów jest ok, docelowo można użyć timera.
atmega 16 ma liczniki/timery na innych portach
Atmega 8 ma 3 timery więc który timer Ty wykorzystujesz?
Yyyy Atmega (surowa) czy Arduino?
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...
Programujesz w Atmega timer 16 bitowy. Przy częstotliwości pracy 1MHz i preskalerze 1024 będziesz miał 1024 sygnały do zegara licznika na sekundę. Ustawiając wartość licznika 16 bitowego na 0fff dostaniesz przerwanie co około 1 min. Robisz sobie 2 rejestry jeden praca drugi zwłoka i sprawdzasz przy każdym przerwaniu jaki to tryb i czy liczba przerwań...
Load Timer0 = 625 ?? Mam nadzieję, że kolega sam rozumie błąd w tym miejscu:> Poza tym ładnie jest najpierw włączyć timer a potem zezwolenie na globalne przerwania:>
Podłącz diodę optotriaka pod wyjście OCx procesora, dzięki temu impuls wyzwalający będziesz mógł generować sprzętowo za pomocą timera.
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...
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?
Zieew... Z jakiego to istotnego powodu nie użyjesz mikrokontrolera z wieloma 16- lub 32- bitowymi timerami, tańszego i przy okazji z kilkadziesiąt razy szybszego od ATmega, z którym nie miałbyś żadnych problemów tego typu?
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...
(at)seba_x:A co to za bzdura?:> • Peripheral Features – Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode A co do pytania autora, nie, zliczanie umożliwiają tylko dwa pierwsze timery. Trzeciego można używać jako wewnętrznego. Nie tylko...
Timer w procesorze Ci z taką dokładnością odmierzy spokojnie. 5ms w mikroprocesorach to wieczność ;)
Jest mozliwa taka konfiguracja "Config Rc5 = Pinb.2 , Timer = 2" P.S. przepraszam za moj "Polski jezyk" jestem Czechem :-)
Ewentualnie przy większej liczbie sygnałów - przerwania INT lub PCINT. Ale to już bardziej programowy pomiar, przez co mniej dokładny ale dokładniejszy niż w przerwaniu od timera.
Idea jest zawsze taka sama, bez wzgledu na procesor. Jezeli Verengard nie uzywa zadnego OSa to moze zrobic to na przerwaniu od timera.
timer sobie zostaw do pomiaru czasu, a liczenie impulsów zrób na INT0 lub INT1
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.
Częstotliwość od 15Hz do 80 Hz, przy 15Hz wypełnienie 3-4ms a okres 62ms. Przy 65Hz wypełnienie to 6ms, a okres ok 15ms. Dla podanych przez ciebie warunków, może to być dowolny MCU. Czy wykorzystasz gardware - timery, czy zrobisz to całkowicie programowo, to każdy współczesny MCU da radę. Jeśli pobierzesz sobie darmowe przykłady do książki "Język C"...
Poprawiłem schemat. Czy mógłby mi ktoś wytłumaczyć jak tu mierzyć czas programowo?(nie rozumiem zasady działania i posługiwania się timerami). Okresami zajmę się później, najpierw zwykły przelot kulki. Zdecydowałem się ostatecznie na użycie ATmega 328P-PU.
Czy komuś udało się uruchomić prostą obsługę od przepełnienia TIMERA 2 w Atmedze 8. Mi się udało.
Należy: - zadeklarować zmienną globalną np. LICZNIK i nadać jej wartość zera, - włączyć przerwania od przepełnienia Timer0, - w funkcji przerwania należy zwiększać wartość zmiennej LICZNIK o jeden Aby poznać liczbę impulsów wystarczy pomnożyć LICZNIK*256 i dodać do niego aktualną wartość rejestru licznika timera, czyli jak sądzę counter0 (nie znam BASCOM).
"Od samego początku mam problem ze sterownikiem."...."A jeszcze jedno w kontrolerze jest włączony timer jako counter do zliczania impulsów ślimaka podajnika Przerywasz w programie procedurę wyświetlania na LCD przerwaniem od Timera.
Za ten tryb odpowiada fusebit M103C...
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
Treść Twojego programu nie odpowiada założonej funkcjonalności. Podobno chcesz, żeby silnik śledził położenie potencjometru, a tymczasem robisz coś zupełnie innego - wykonujesz pewną liczbę kroków w zależności od różnicy dwóch kolejnych pomiarów ADC. Zacznij od przerwania timera, zgłaszanego z okresem kroku. W nim odczytaj ADC i przefiltruj (obecnie...
Bardzo dziękuję za wytłumaczenie. A co w kwestii programu? Co dają te przerwania timera?
E tam nie można - aplikacja jest napisana nieoptymalnie i tyle. w ATmega8 są 3 timery...
ATMEGA88 jak i ATMEGA168 ma wewnętrzy preskaler sygnału zegarowego który jest domyślnie włączony. ATMEGA 8 go nie ma.
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...
Faktycznie, teraz wiem że w tym trybie praca PWM nie jest powtarzalna. Jest jak najbardziej powtarzalna i zgodna z dokumentacją. Ogólnie ATMegi stare mają tak zrealizowany PWM, że występuje szpilka o czasie trwania jednego taktu zegara taktującego timer. Jeśli przeszkadza, to należy zmienić tryb pracy timera. Natomiast w ramach trybu efekt ten jest...
Witam Najprościej to: CD4541 (timer długich i bardzo długich czasów) plus CD4017 lub CD4022 (licznik, tzw "Johnson") albo mikrokontroler (Atmega ... ) z napisanym odpowiednim programem, które to będą sterować świeceniem diod. Pozdrawiam.
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...
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...
Witam gdzie jest to co opisałeś na PCB bo nie widzę tego optotriaka - chodzi wyrażnie o odczyt sieci Aha, nie można nie wspomnieć, że w sumie zaryzykowałem i nie dałem tu detekcji zera - zajmuje się tym timer w Atmega i optotriak z przejściem przez zero. Grzesiek
(...)chodziło mi o to, że po co stosować w takiej sytuacji zewnętrzny układ RTC i budzić mikrokontroler przerwaniem jak może on sam się budzić od wewnętrznego przerwania timer'a i obsługiwać (...) Zgodzę się, ale gdy mikrokontroler ma dedykowany do tego celu timer (np timer 2 w atmega) taktowany kwarcem "zegarkowym", a attiny takiego timera nie ma.
To znaczy że litery i wynik temperatury znika na ułamek sekundy i znów ie pojawia Ustaw poprawnie timer. Miałem to samo. Link: http://www.elektroda.pl/rtvforum/topic20...
Jeśli chodzi o wybór podyktowany zwiększeniem ilości pinów to czemu nie ? ATmega64 to dobry wybór. Masz dodatkowo jeszcze jeden Timer 16-bitowy ;) .... a jeśli chodzi o przeniesienie kodu to żadna różnica i to jest fajne w porównaniu do przesiadania się zaraz na Xmega. Poza tym są jeszcze takie jakby nieco większe wersje procków z serii ATmega2560/2561...
Takie pytanie mi się urodziło... czy da się w jakiś sposób zmienić piny wyjścia dla timera (OC1A, OC1B)?
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. Jak zapisać coś co w ATMega jest zapisane tak: "Config Timer1 = Timer , Prescale = 8 " w 89s8252 bo nie bardzo wiem o co chodzi z wartością PRESCALE
(nie mam w tym momencie czasu aby przyjrzeć się temu bliżej, postaram się odpowiedzieć następnym razem pełniej) Masz napisane: TCCR1A = (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0); //8bit PWM, phase correct TCCR1B = (1<<CS12) | (1<<WGM12); 8-bit PWM, phase correct ma wlaczone tylko WGM10. Tak jak Ty masz WGMy ustawione to wynika,...
w TME atmega 8 kosztuje bodajże 5 zeta
Schemat OK. Co do reszty: Każdy timer ma schemat w dokumentacji na początku rozdziału który go opisuje. Porównaj timery na tej podstawie.
Zmień doświadczalnie wartość wpisywaną do timera. Zobacz czy poprawnie wyświetla ci to co chcesz. Ważne jest także żeby przerwanie nie było za długie bo wtedy może grozić to resetem uc.
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ń.
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.
(at)piotrva To miganie diodami to był tylko taki przykład. Watchdoga chcę użyć tak jak ten timer asynchroniczny w power save.
Każdy licznik ma własny preskaler, własne rejestry i własne przerwania - to 7segmentów starczy Ci 8 bitów i preskaler. Zreszta zerknij sobie na: http://www.et06.dk/atmega_timers/
Witam. Na wstępie chciałbym napisać iż szukałem informacji na ten tematu na tym forum a także na google ale nie znalazłem jednoznacznej odpowiedzi. Otóż czy używając sprzętowego PWM w uC blokuje jego timery? tj. o co mi chodzi. Otóż atmega 168 posiada: 6 kanałów PWM 2 timery 8bit 1 timer 16bit z noty katalogowej widzę iż 6 kanałów PWM OC0A - wykorzystuje...
Musisz także uwzględnić, że timer po przepełnieniu musi zbudzić MCU, ten musi wykonać ileśtam operacji i ponownie zasnąć. Oraz to, że Atmega ma te same piny dla oscylatora asynchronicznego i głównego. Ogólnie to kiepski wybór na projekt Low Power. I uwagi GSM też weź pod rozwagę. Albert
Nie powinno ;) The extreme values for the OCR2A Register represent special cases when generating a PWM waveform output in the fast PWM mode. If the OCR2A is set equal to BOTTOM, the output will be a narrow spike for each MAX+1 timer clock cycle. http://www.elektroda.pl/rtvforum/topic31...
Sprzętowo w zwykłej ATMega nie można, w XMEGA tak. Kondensator + rezystor sprawę może załatwić, ale równie dobrze da się to załatwić programowo. Napisz skąd pomysł wykorzystania timera do zliczania naciśnięć?
Pamiętaj, że kwarc zegarkowy nie podłącza się do XTAL1 i XTAL2. Tylko jako generator dla timera. Więcej w nocie.
tadzik85 dziękuję za błyskawiczna odpowiedź. Próbowałem tego rozwiązania i niestety gdy w przerwaniu od SPI umieszczę flagę i bez względu gdzie realizuję odbiór czy w przerwaniu od timera czy w pętli głównej drugi bajt wraca do mastera czyli wydaje mi się, że ATmega nie nadąża z odczytem.
Ślepy zaułek. Obejrzyj kod, który podlinkowałem - dwie linie kodu w przerwaniu timera załatwiają sprawę.
Jak by Ci tu powiedzieć... Popełniłem kilkanaście urządzeń z tymi procesorami i do żadnego z nich nie potrzebowałem więcej niż 2 warstw. 100 MHz jest tylko w środku układu, na zewnątrz wychodzą tylko jakieś SPI na 20..50 MHz i nie ma żadnych problemów z wyprowadzeniem ich po kilka czy kilkanaście cm od procesora. Fakt, żelazkiem takiej płytki nie zrobisz,...
A jak często musisz odświeżać informacje na wyświetlaczu? Może wystarczy raz na np. dwie sekundy? Masz przecież wolny jeszcze timer - możesz wykorzystać go w przerwaniu aby odświeżał wyświetlacz. Taka chwilowa "niedyspozycja" kontroli będzie w zasadzie nie zauważalna dla silnika.
Jaka jest maksymalna częstotliwość pracy kwarca wewnętrznego Atmegi8? ATmega nie ma w środku kwarc u , tylko oscylator RC, to tak gwoli ścisłości. Mam ustawione 4Mhz i kiedy ustawiam prescaler w timerze 16bitowym na 64 (TCCR1B|=1<<CS11|1<<CS10;) tak aby przerwanie spowodowane przepełniniem timera było wywoływane mniejwięcej co 1s 4000000/64/2^16...
No jeżeli jest Phase Correct to ok. To wystarczy zadeklarować przerwanie za pomocą On Timer. A potem je obsługiwać odpowiednio.
OK - software pwm, ale czy wtedy normalnie uC nadąży z obsługą np RC5 (używa timera 0) i RSa?
timery atmega atmega timery assembler integra timery
lexmark reset prawa konsument nawijanie zwojów
New Holland – przepalanie bezpiecznika sieczkarni, zwarcie w wiązce, przekaźnik, TC, CR, CH Podłączenie dwóch wentylatorów kanałowych in-line w okapie kuchennym – Systemair, Vents, EC, AC, przekaźnik