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...
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...
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.
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ć?
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.
.... 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.
Przepraszam za długi czas mojej odpowiedzi. Użycie 1 timera jest oczywiście tylko propozycją, ale w mojej opinii upraszcza program. Tak chodzi o osobne zmienne które inkrementujesz (w mojej propozycji było odliczanie do 0, ale to nie zmienia istoty). Oczywiście musisz też uwzględnić czas wykonywania się procedur przerwania obu Timerów przez co faktyczny...
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
zobacz na stronę http://www.avrbeginners.net/ Dobrze udokumentowane przykłady i opis dziania AT90S i ATMEGA Timery,UART,rejestry itp.
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...
Config pind.2 = input
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...
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...
Dodatkową niedogodnością jest to że Atmega2560 ma wspólny układ prescalera dla Timerów 0 1 3 4 5. a to nie wystarczy?: Timer/Counter 0, 1, 3, 4, and 5 share the same prescaler module, but the Timer/Counters can have different prescaler settings . Pytam bez analizy kodu. Nie definiuj F_CPU w kodzie z tych powodów: http://mikrokontrolery.blogspot.com/2011...
1. Owszem poprzez dodanie np. dzielnika rezystorowego. 2. Mogą jeżeli timer nie zostanie skonfigurowany do PWM.
Nie znam dobrze Bascom'a ale moim zdaniem to zapewne kwestia Timerów. Masz w kodzie [syntax=basic4gl]Period = Capture1[/syntax] jest różnica w przypisaniu dla ATMega 8 - ICP1 to pin 14 (PB0) dla ATMega 32 ICP1 to pin 20 (PD6) - zobacz czy ( i ew. co tam masz podłączone ) w załączeniu pinouty:
Proszę tak napisać program by nie było w nim ani jednej instrukcji GOTO, zwłaszcza w podprogramach oraz przytoczyć go w całości .
Uruchomić timer w trybie CTC. Tryb CTC [syntax=vbnet]CONFIG TIMER1 = ..... CLEAR TIMER = 1[/syntax]
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)
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...
(at)piotrva To miganie diodami to był tylko taki przykład. Watchdoga chcę użyć tak jak ten timer asynchroniczny w power save.
Na ATmega 128 posiada sporo pinów. Jeśli 8 z nich ci nie jest potrzebnych to możesz spokojnie taki przetwornik wykonać. Rozdzielczość przetwornika będzie wynosić 8bit, czyli 256 stanów logicznych. Filtr i tak musisz zastosować w celu wygładzenia przebiegu schodkowego. Stosuj rezystorki z zakresu 10-20KOhm ale bardzo zbliżonej zmierzonej rzeczywistej...
Normalny, czyli taki, jaki chcesz, maksymalną prędkość masz na pierwszej stronie karty katalogowej. Resztę odpowiedzi też masz w karcie katalogowej ATmegi32 w rozdziale "System Clock and Clock Options", ustawienia w "Fuse Bits", a zdolność odmierzania czasu w rozdziałach timerów, do których zdaje się nie zaglądasz, jak i w ogóle do samej karty.
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...
Próbowałem 2 sztuki ATMEGA162. Obie pracowały stabilnie na 20MHz. Program pisany w C, niezbyt skomplikowany (operacje logiczne, arytmetyczne, skoki warunkowe, dostęp do pamięci etc, nie wykorzystywałem timerów, przerwań, pamięci EEPROM).
Tak.
Naucz się jednego - żelazna zasada zawsze sięgaj po notę aplikacyjną procka PDF ze strony producenta z niej się wszystko dowiesz w największych szczegółach a już na pierwszej stronie z grubsza masz napisane w nocie każdego procka, ile ma timerów, ilo bitowych, ile pamięci i jakiej, dokładny opis wyprowadzeń itd itd itd bez not PDF zapomnij o elektronice
Czyli w moim przypadku , raczej opcja pierwsza prawda ? Możnaby przekombinować , odmierzać 16-bitowym i wykorzystać dwa PWM'y dwóch timerów no ale ...
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...
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...
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...
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.
Witam. Timer0 8 bitów. 8000000 / 256 /255 = 122 Hz 8000000 / 64 / 255 = 490 Hz Wtym mikrokontrolerze Timer0 może pracować w trybie CTC więc łatwo zaprogramować daną częstoliwość wpisując w rejestrze OCR0. OCR0 = F_cpu / prescal / F_mcz żądane
A co to - timerów w mikrokontrolerze nie masz, że takie placki smażysz ?
Myślę, że dla początkującego istotna jest możliwość "zajrzenia do śrdka" procesora przy uruchamianiu programów - tego nie potrafią tradycyjne ATmega, a w Cortexach jest to rozwiązane b. dobrze. Drugi problem dla początkujących - to architektura Harvard. W poprawnie napisanym programie dla ATmega dłuższe stałe, w tym np. łańcuchy tekstowe, powinny być...
Nie nie rób się kaczką albo sie prześpij ahahahahahaha :D OCIE1B zamieniasz na OCIE1A OCR1B zamieniasz na OCR1A zamieniasz wektor TIMER1_COMPB_vect na TIMER1_COMPA_vect kasujesz wszędzie to TCNT1=0 bo nie ma sensu Dla Timer0, w przerwaniu, pod linijką "dot ++ ; " dopisz TCNT0 = 6; To też można na palcach policzyć: 8MHz to jest na sekundę a sekunda ma...
pewnie, że można - na timerach i bez timerów - do wyboru do koloru - to tylko twórcza inwencja programisty
Z tego co widzę czujnik ten wysyła sygnały PWM (modulacja wypełnieniem pulsu) o częstotliwości 100Hz i wypełnieniu 50% dla 0g. Zmiana wypełnienia o 20% oznacza zmianę o 1g gdzie czujnik ma gwarantowane działanie na +/- 1.7g min. Czyli wypełnienie 50%=0g, 30%=-1g, 70%=1g. Minus tych czujników jest taki, że żeby to dobrze obsłużyć to musisz łapać te zmiany...
Dlaczego przy wypełnieniu 100 % stoi, a przy 0 % coś tam się dzieje ? Co oznacza PWM o wypełnieniu 100%? To już nie są impulsy, to jest napięcie stałe. Dlatego zmieniłem preskaler na 1024 i teraz mam częstotliwość 488 Hz oraz okres 2 Nadal nie rozumiesz. Potrzebujesz częstotliwości ok. 50Hz, a nie 488Hz. Proponuję to zrobić w osobnym projekcie na timerze...
Zacznijmy od tego, że IRFZ44 nie może być poprawnie sterowany przez mikrokontroler. Z kolei poprawnie dobrany MOSFET będzie lepszy od przekaźnika, więc przekaźnik jest całkowicie zbędny. Temat sterowania MOSFET wraca tu co 2 tygodnie, podobnie jak temat sterowania LED PWM, wystarczy przejrzeć archiwum. Opis timerów znajdziesz w Datasheet ATmega.
Piszę ogólnie, bo oczekuje ogólnej odpowiedzi :D Nie tylko do mojego projektu, tylko "ogólnie" :P Niestety dondu, trafiłeś tylko częściowo - będę używał 2 rodzajów timerów a Atmega będzie taktowana 8MHz (spokojnie wystarczy). dasej - nie wiem, chyba źle to opisałem w pierwszym poście, ale "wykluczyłem" tą możliwość. Chcę aby program przerywał pracę...
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, 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ż...
No bo ma wracać. Zostaw to na razie- i naucz się przerwań od Timerów. To wcale nie jest takie trudne do zrozumienia.
Witam, mam dosyć nietypowy problem , otóż gdy chcę zaprogramować sobie Atmegę 8/ 88P (w obu przypadkach dzieje się tak samo) to po próbnym odpaleniu wyświetlacza 7-segmentowego napotkałem problem a mianowicie: Jeśli chcę ustawić jakikolwiek preskaler w Timerze 0 to funkcja delay przestaje działać, obojętnie czy wstawie tam 1ms czy 1000. Po prostu program...
W twoim kodzie nie ma funkcji int main(). W jakim programie wygenerowałeś ten wykres?
Połykanie półokresów wprowadzi składową stałą. Trzeba sterować poprzez wycinanie okresów. Ponieważ okres przy 50 HZ to 20 milisekund trzeba liczyć okresy ( w bardziej zaawansowanych układach). Myślę, że w mniej skomplikowanych wystarczy zmieniać czas załączenia poprzez odmierzanie Timerem wielokrotności 20 milisekund.
kolejny temat, na ktory odpowiedzia jest 'volatile' - bylo o tym milion razy. 4\/3!!
czyli RS musiałby działać z szybkością co najmniej 1 Mb/s Sprawdziłem organoleptycznie: działa stabilnie przy ciągłym strumieniu przesyłanych danych - przynajmniej na Atmega 168PB. Oczywiście połączenie USART -> USB. Pierwotne pytanie było o pomiar częstotliwości. Podana metoda dwóch timerów jest też dla pomiaru częstotliwości. Jak by Kolega sprawdził...
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:...
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...
Programowałem ręcznie, problem jest ten sam. Odczytuje wgrany program do pamięci eeprom i jakiś program się tam znajduje. Dodano po 11 Już zastanawiam się nad innymi przyczynami, czy timery nie wpływają na odczyt lub zapis do pamięci. Po wyłączeniu timerów również jest to samo. Czy jest możliwe, że podczas włączania zasilania procesor nie jest odpowiednio...
Jeżeli chcesz podłączyć buzzer do ATMega, najlepiej podepnij do jedengo z pinów OCxx - wówczas będziesz mógł skorzystać z usług timerów tego mikrokontrolera i piszczeć buzzerem sprzętowo, angażując moc obliczeniową jedynie na zaprogramowanie timera i wyłączenie, kiedy już nie będzie potrzebny
Postanowiłem jednak wykonać zegarek wykorzystując RTC Atmegi 8. Czy podpinając ten kwarc zegarkowy, (36 i cos kHz) bedzie to w miiare dokładne? Czy musze wówczas ustawiać fuse bity? A $crystal musze umiesczać na początku (wydaje mi się ze tak bo procesor jest taktowany wówczas nie z podpinanego kwarcu ale z wewnetrznego RC - dobrze mysle? ). A jak wykorzystam...
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...
Jak sama nazwa wskazuje przy konfiguracji Timer1 masz compareA i compareB. Czyli masz dwa rejestry porowniania które zmieniaja odpowiednie nogi procesora czyli pwm dla tego tajmera są dwa A i B. Noga procka OC1a pierwszy PWM (kanał) i OC1B drugi. Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'regulacja...
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
A jeśli znasz troche angielski to zajrzyj do tutoriala na AVRFreaks - "Part Five - CTC Mode using Interrupts": [url=http://www.avrfreaks.net/index.php?...
Ja doskonale rozumiem, że Atmegi moga pracować na kwarcu zegarkowym, tylko chciałbym wiedzieć na jakiego rzędu dokładność mogę liczyć na zwykłym kwarcu w porównaniu do kwarcu zegarkowego. -- pozdrawiam, demeus Taka sama!.... Wszystkie resonatory kwarcowe maja dokladnosc rzedu +/- 20ppm. Rezonatory zegarkowe jest o wiele wygodniej stosowac do odmierzania...
Witam, niestety ale chyba coś jest nie tak? Na wstępie należałoby wyjaśnić że nie ma czegoś takiego jak "automatyczne przeładowanie timera" (reload/load timer1 powiedzmy). Termin ten jest związany z procedurą konfiguracji timerów występującą tylko w trybie "Normal", gdzie każdorazowo początkowa wartość timera musi być wpisana przez processor. Taka...
Z obecnym kodem dioda miga bardzo szybko. Nie mam pojęcia co robię źle, męczę się z tym od dłuższego czasu. Zamiast korzystać z dodatkowych narzędzi, które też trzeba rozumieć lepiej zajrzeć do noty układu, w której jest wyjaśnione jak to policzyć. Problem w tym, że przy taktowaniu 8 MHz, nawet jeśli użyjesz preskalera 1024, to ciągle w ciągu 1 s masz...
Czy zmienną counter (inkrementowaną prawdopodobnie w przerwaniu) masz zadeklarowaną jako volatile ? Jeśli nie, to kompilator najprawdopodobniej zoptymalizuje porównanie (counter<=nr) jako warunek zawsze spełniony lub zawsze nie spełniony do momentu zakończenia pętli, w której przecież żadna ze zmiennych porównywanych się nie zmienia.
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....
Zacznij od określenia wszystkich wymagań na mikrokontroler, a potem szukaj mikrokontrolera, niekoniecznie musi być to Atmega. Znajdziesz i takie, co mają po kilkanaście wyjść PWM. Z małych i tanich mikrokontrolerów wiele wyjść timerów PWM mają np. LPC81x i STM32F030 - ceny ok. 3..5 zł.
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 ?
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).
A czy mogę skorzystać z któregoś z timerów Jka najbardziej od tego one są. Każdy timerek ma swój preskaler który tak dobierasz aby mieć dla swojego kwarcu częstotliwość będąca twoim minimum czasowym i decydująca o dokładności. Druga sprawa to zmienna licząca te interwały i będąca jednocześnie twoim wynikiem.
w tym wątku Bascom... i nie mam więcej pytań. Przejdź na normalny język (C/C++), bo to Bascom i biblioteka cię ogranicza, a nie Atmega. BTW: Nie raz robiłem zapis na karcie SD w Atmega bez żadnego timera (daty plików nie były dla mnie istotne). Czy Kolega ma na myśli szybką zmianę stanu portu sterującego LCD, stan zmieniałby się po przepełnieniu Timer'a,...
Phase and Frequency Correct PWM - to najbardziej skomplikowany PWM w prostych AVR. Możesz go oczywiście zastosować do sterowania silnikami. Proponuję jednak, byś zaczął od prostego trybu Fast PWM. http://4.bp.blogspot.com/-FA3d0PZczMg/Ta... Przeczytaj o nim w Timer1 i zadaj konkretne pytania czego...
Witam, słabo znam te procesory, musisz więc sprawdzić w dokumentacji, moim zdaniem problem nie bierze się z kolejności wysyłania ale z kolejności odczytu. Generalnie, ośmiobitowe procesory przy dostępie (odczycie i zapisie) do szesnastobitowych timerów wykorzystują (dla zagwarantowania jednoczesności obu bajtów) specyficzny mechanizm. Starszy bajt nie...
Witam. Wyłączenie zgodności z mega103 nie jest przyczyną braku komunikacji z programatorem. W trybie zgodności wyłączone są tylko dodatkowe układy, którymi różnią się te uC. Np. drugi UART, jeden z timerów 16bit, TWI, itp. Być może ustawiłeś fusebity na zawnętrzny zegar, bądź układ RC a nie kwarc? Wydaje się to być jedyną możliwą przyczyną.
Wybrałem tryb 9 (Phase and Frequency Correct) i napisałem następujący kod: Nienajlepszy to wybór, bo akurat w tym trybie wartośc TOP jest ustawiana w rejestrze OCR1A, służąca do kontroli częstotliwości pracy timera , tymsamym elinujesz możliwośc generowania fali kanałem A. W tej sytuacji generowanie fali jest możliwe tylko w kanale B . Patrz ostatni...
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.
Witam, Może wiecie gdzie znajdę opis znaczenia poszczególnych bitów specjalnych rejestrów Atmega8 - chodzi mi przede wszystkim o bity i znaczniki przerwań od USART'a (flagi) i Timerów - w pdf'ie tego nie widziałem? I jeszcze jedno, skoro ta Atmega posiada sprzętowy I2C to czy Bascom korzysta z programowej obsługi tego protokołu tak jak w przypadku 89C2051...
bascom często ma problem z zaawansowanymi trybami pracy przetworników , timerów itp często nie działa to tak jak powinno.
Witam:) mam pytanie do forumowiczów w sprawie pomiaru częstotliwości, sprawa przedstawia się następująco: chciałbym zrealizować pomiar częstotliwości .............. wiem ze należy postąpić w poniższy sposób: 1. zatrzymanie zliczania impulsow z T0 2. zatrzymanie odmierzania czasu bramkowania T1 3. przepisanie zliczonych impulsów do rejestru głównego...
witam, napisałem dwa kody na obsługę i2c master(atmega644p): /* * main.c * * Created on: 16 lut 2018 * Author: Mirosław Kardaś * web: www.atnel.pl */ #include <avr/io.h> #include <avr/interrupt.h> #include <string.h> #include <util/delay.h> #include <avr/wdt.h> #include <avr/pgmspace.h> #include <avr/eeprom.h>...
- czy praca równoległych timerów nie będzie jakoś na siebie wpływać (program przerywa pracę na skutek działania timera1 by precyzyjnie wyznaczyć czas, a tu w tym samym momencie dochodzi kolejne przerwanie od innego timera, i co wtedy) Timery działają niezależnie, ponieważ realizowane są sprzętowo. Nie będą na siebie wpływać. Program niestety (w tym...
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, Mam problemz AtMega z tematu. Ustawiam konfigurację Timerów wg manualki: tryb CNC; prescaler; zezwolenie na przerwania CompareMatch. Po ustawieniu tego odblokowuję przerwania przez "sei();" i.. procesor się resetuje. Dodam też, że taki sam kod działa bez problemów na AtMega 16/32/64. Czy przy pisaniu kodu na te procesory (324/644/1284) trzeba...
Zobacz tutaj: http://www.sbprojects.com/knowledge/ir/n... http://www.ustr.net/infrared/nec.shtml Programowo robisz to tak: Konfigurujesz PWM żeby generował częstotliwość nośną (36kHz dla NEC) Dajesz odpowiednie wypełnienie PWM (od 25% do 35%) W trakcie nadawania kodu włączasz podłączasz wyjście PWM do timera na czas trwania 1, a odłączasz na czas...
Nie wiem o co chodzi, przecież Ty napisałeś ten program :) generalnie to masz zdefiniowaną w programie stałą o nazwie PORTD2 która ma wartość 2 i tyleż o niej wiadomo. Nigdzie jej nie używasz w tym pliku więc nie da się stwierdzić do czego służy. Pusta pętla while jest dlatego, że cały program wykonuje się w przerwaniach. "Normalnie" to pętla while...
Witam, Pomysł dobry ale sypie się najprawdopodobniej z powodu zbyt dużej ilości przerwań. Proponuje projekt sterownika "równoległego", taki wykorzystałem w mojej pracy inżynierskiej. Wprawdzie korzystałem tylko z 8 serw ale 16 też obsłuży po drobnej modyfikacji. Program zabiera większość mocy procesora do obsługi przerwań ale tylko przez czas 2ms potem...
Przede wszystkim przeczytaj datasheeta. ATmega posiada timer z trybem PWM. No i sprecyzuj w jakim języku chcesz to napisać.
tak jak napisał gaskoin , do tego się właśnie sprowadza programowy PWM i to jest właśnie odpowiedź na twoje pytanie a ty piszesz, że nie dostałeś odpowiedzi. Przy czym programowy PWM jeszcze raz podkreślę nie ma nic wspólnego ze sprzętowym więc daruj sobie wtedy rozważania o nodze OCn. Ty możesz zrobić te zmiany stanu na dowolnej nodze jak pisałem....
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
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;)
A nie możesz tej pętli umieścić w jeszcze jednej pętli a potem w jeszcze jednej? Powinno wystarczyć chociaż nie mam praktyki na AVR. Jeśli ma procek tylko generować opóźnienia to będzie ok, ale jeśli w tym czasie ma robić jeszcze coś innego, to trzeba zastanowić się nad użyciem timerów i przerwań.
Kłania się pojęcie funkcji w języku C. setup() i loop() to też są funkcje. Do testowania stanu styków potrzeba tylko jednego przerwania timera, nic więcej. Po co mnożyć przerwania, czy to od zmiany stanu linii, czy to od dodatkowych timerów? Przy jednopoziomowym systemie przerwań, takim, jaki ma ATmega, o ile programista nie udziwnia nic na siłę, zmienna...
Twój sposób odczytywania jest ciekawy ale nie jestem pewny czy praktyczny. Program przy takim przerwaniu i odczytywaniu kodu RC5 dość dużo czasu będzie spędzał na pętlach delay. W związku z tym, że będziesz wykorzystywał też różne inne przerwania nie jestem pewny czy program się nie pogubi i poprawnie odczyta kod RC5.
dondu pisał o zerowaniu preskalera timera nie zapomnij wyzerować licznika timera.
Prędkości transmisji uart 115200 / 9600 Timerów programowych nie jestem pewien ile dokładnie około 6/8 może mniej Jestem dość początkującym i obawiam się większych atmeg jak np. atmega 1280/1281 boje się że nie będę umiał dobrze zaprogramować tych rzeczy, które mam dobrze oprogramowane na atmega32. Zapomniałem jeszcze dodać, że będzie także transmisja...
Potrzebuję czterech PWM i dwóch wejść odmierzających długość impulsu o zakresie od 1 do 2 ms. Pytanie czy atmega 8 się wyrobi czy muszę brać 16 . I jak rozumiem z wszystkich postów muszę pwm zrobić programowo bo potrzebuję pozostałych timerów do pomiaru impulsów. I pytanie o oscylator wewnętrzny czy mogę go użyć czy lepiej kwarc bo zależy mi na wielkości...
W generatorze pewnie użyję AT90USB1287 bo przewidziana była Atmega1281. Sprawdzę tylko czy starczy mi timerów w AT90USB. Jeśli zaś chodzi o inne projekty to w niektórych musi byc Atmega 20MHz więc właściwie tylko M1284 a w innych dużo IO czyli M640/1280. Do nich muszę dodać jakiegoś host'a. VNC2 w sumie fajny ale na razie nie znalazłem firmware obsugującego...
Witam W Atmega 644 mam: EQU not found, probably using functions that are not supported by the selected chip Według noty Timer0 i Timer2 są 8-bitowe, więc można je "zamieniać" i mają oddzielne preskalery.
W ATmega 16 nie ma możliwości zmiany priorytegów przerwań. Ale jest lekarstwo na Twoją bolączkę, możesz poprostu włączyć przerwania zaraz na początku obsługi przerwania od INT0. Przerywanie przerwań wcale nie jest takie niebezpieczne.
Witam Czy zna ktoś z Was link do strony albo posiada ściągę, gdzie można by było porównać parametry (n.p. ilość portów, timerów, prędkość, ilość portów UART itp.) różnych procesorów Atmela (głównie Atmega)? Próbowałem googlować, ale nic konkretnego nie znalazłem. Przy moim łączu (satelitarne z dużym opóźnieniem) otwarcie pojedyńczej strony zajmuje czasem...
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ń...
konfiguracja timerów błędy timerów bascom obsługa timerów
elektrownia wiatrowy śmigło zapalona kontrolka scania kasowanie renault laguna
zawór proporcjonalny lodówka kondensator zwarcie
Ford Transit 2.4 2011 nie odpala po wymianie filtra Brak ciepłej wody z bojlera - przyczyny i rozwiązania