Ustaw znacznik gotowości w jakimś nieużywanym peryferialu albo załaduj timer wartością sprzed końca okresu i go włącz.
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...
Już wiem co powoduje wyświetlanie komunikatu błędu. Jak zaremowałem wszystkie linijki treści: "Getrc5(address , Command)" - jest ok. TIMER0 jest wolny, tylko Getrc5 domyślnie z niego korzysta. Wykorzystuję jedynie TIMER2 do multipleksowania. Kod jest bardzo długi bo jest tam sporo zbędnych bajerów. Trudno będzie Wam w nim się doszukać błędu. Zrobiłem...
Poszukaj software pwm. Na elektrodzie znajdziesz o sterowaniu serwami tematy. Można to zrobić na kilka sposobów,np możesz uruchomić timer co ułamek 20ms i sprawdzać jak do tej pory, ew każde serwo osobno z licznikiem liczącym do np 4ms. Zobacz: http://www.elektroda.pl/rtvforum/topic30...
Potencjometr się nie przyda, przyda się przetwornik cyfrowo-analogowy. Taki przetwornik znajdziesz np. w mikrokontrolerze umieszczonym na płytce STM32F0DISCOVERY, że do znudzenia powtórzę... Timer i UART zresztą też, w dodatku jak się uprzesz, to bez żadnych dodatkowych układów możesz ten UART przypiąć do RS232 w komputerze, tylko jeden rezystor będzie...
W helpie jest napisane, że domyślnie Timer0, opcjonalnie Timer2. Czyli zostaje odbiór RC5 z dodatkowej płytki. A już myślałem, że Atmega644 jest jakaś trudniejsza w opanowaniu - są z nią większe problemy. Przyznam, że jeśli przy tej samej konfiguracji sprzętowej można uzyskać ten sam efekt a nawet "wyciągnąć" więcej to C staje się co raz bardziej kuszące....
Witam państwa. Mam szybkie pytanie. Skonstruowałem układ na atmega16 podłączyłem wszystko wgrałem program(90% zajętości pamięci) lecz przejście całego programu trwa koło sekundy, to zdecydowanie za długo szczególnie ze chce jeszce dodać TIMER i strasznie go muli. Zwykłe dodanie na końcu programu n++ i wyświetlenie n, inkrementuje go co sekundę. (nie...
Witam Po tym jak zacząłem korzystać z zmiennej DCF_Status.7 działa jak trzeba. Przedtem nie maiłem problemu z synchronizacją, ale z wyłączeniem odbiornika w przypadku jej braku ( u mnie włączenie odbiornika DCF77 powoduje blokadę wywoływania innych funkcji - wywołanie czujników DS18B20 oraz wysyłanie przez RFM12 blokuje przerwania, a tego nie lubi biblioteka...
Chciałbym się upewnić - czy dobrze rozumiem, że chcąc skorzystać z odbioru po RC5 ( http://avrhelp.mcselec.com/index.html?ge... ) przy konfiguracji BACKGROUND mode ( http://avrhelp.mcselec.com/index.html?co... ) muszę mieć odbiornik podłączony do ICP (czy to w tym wypadku noga (PCINT30/OC2B/ICP) PD6) czyli pin 20 mikrokontrolera Atmega...
Witam Korzystając kodu Tuxgraphics zmodyfikowanego przez Kolegę Mundi1970 , chciałem również postawić prosty serwer pokazujący temperatury z kilku czujników oraz wilgotność i ciśnienie. Po zmianach regfile i pinu CS nie mogę go jednak skompilować. Występują trzy błędy: Error 46 Line: 363 Assignment Error Enc28j60_linkup Erroe 229 Line: 450 End Sub or...
Witam. Trochę inny procek ATmega644 [syntax=c] TCCR1B |= (1 << WGM12); // Mode 4, CTC on OCR1A TIMSK1 |= (1 << OCIE1A); //Set interrupt on compare match TCCR1B |= (1 << CS12) | (1 << CS10); // set prescaler to 1024 and start the timer| (1 << CS11);// OCR1A = 976*8; //wartość do której zlicza licznik [/syntax]
I sobie nie poradzisz, bo ten typ tak ma, można zmienić tryb generowania PWM i wtedy nie będziesz miał 100% wypełnienia, ale za to będzie 0%. Potrzebujesz mieć bez szpilek - skorzystaj z XMEGA - to tańszy niż ATMega644 AVR i ma bardziej elastyczny timer.
Dla ćwiczeń - jak najbardziej. Edit: Edytowałeś post więc dodam: Jeśli musisz oszczędzić piny PWM lub timery do innych celów, to oczywiście rób PWM programowo. Ale wtedy musisz zadbać, by każde przerwanie wykonywało się szybko, by PWM się wyrabiał, bo znowu serwa będą drgać :)
Podejrzewałem, że coś zajmuje czas uC, myślałem, że to może printf, ale skoro ujawniłeś, że uC "robi mnóstwo innych rzeczy", to tam szukaj przyczyny. po prostu coś zajmuje mu te 200 ms.
Dzięki wielkie- ale to nie do mnie pisałeś. O Atomic_Block dowiedziałem się w czwartek- sprawdziłem- od czwartku jest to pierwsza wiadomość na ten temat. A wracając do tematu Fir3man- wymyśliłem taki schemat programu: #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> volatile uint8_t dol;...
Dla konfiguracji resetowania się watchDoga po 4 sekundach : Mcusr = &B00000000 'Zerowanie rejestru aby wyłączyć bit 3 czyli WDRF. 'Dokonywanie jakichkolwiek zmian w WatchDogu musi dokonywać się w ściśle określonej sekwencji wpisów do rejestru 'WDTCSR. Jako pierwszy krok trzeba zrobić wpisanie wartości 1 do bitu numer 4 nazywanego WDCE.Pozostałe bity...
Jeśli wartość OKRES nic nie zmienia, to masz gdzieś gruby błąd. Prawdopodobnie skrzyżowałaś różne kawałki kodu i wyszło coś, nad czym nie panujesz. W moim kodzie 3 kanały są ciągle mierzone przez ADC, a wartość OKRES reguluje tylko to, jak często czytasz/przetwarzasz te pomiary. Tak to się robi w rzeczywistych zastosowaniach, gdzie zwykle musisz mieć...
Czyli uszkodzony ...
Wydaje się, że najlepiej zwiększać zmienną tak jak pojawiają się impulsy dzięki INT0, i po ustalonym czasie (Timer) ilość zliczonch impulsów dzielić przez określony czas i masz częstotliwość. A tu już łatwo do przekształcenia tego na prędkość. To jedna z prostszych metod pomiaru. Aktualnie ja sobie zrobiłem licznik impulsów by sprawdzić np. ile impulsów...
Chyba znalazłem AVRa, który się nada do tego projektu. Otóż ATmega644 może pracować z częstotliwością 20MHz, ma 40 pinów w wersji DIP, 4 timery itd. Kosztuje tylko 20zł, więc chyba skorzystam z tego rozwiązania, chyba że ktoś ma lepszy pomysł... :wink: Pozdrawiam
Dzięki już program śmiga. Zastanawia mnie jeszcze jena rzecz dotycząca kolejnego TIMER-a TC1 w 644. W dokumentacji opisany jest bit od przerwań : TOIE w TMESK1, podczas gdy ja muszę zapalić TOIE1 (podobnie jak w 32) bo inaczej kompilator wyrzuca błąd. Niedopatrzenie w dokumentacji czy różnice w Toolchain którego użuwam (w Linux-ie)?
Cześć wszystkim! Projektuję właśnie prostą konsolę do gier wykorzystującą monitor VGA i opartą na ATmedze644PA. Tak tak, wiem że generowanie sygnału VGA to zadanie dla układów typu FPGA, ale odrobina szaleństwa jeszcze nikomu nie zaszkodziła :) Tak więc, ATmega644 służy do generowania sygnału VGA. Klatki są przechowywane w pamięci RAM (układ AS6C1008)....
Możesz zastosować-oczywiście. ATmega644 dopuszcza rezonatory do 20MHz. Niemniej jednak zastosowany kwarc musisz później uwzględnić przy późniejszych obliczeniach by uzyskać żądane interwały czasowe. Tak na marginesie-nie wiem do czego potrzebujesz tego sygnału 1Hz ale jeżeli z tego tupu zabiegów chcesz uzyskać zegar to nie jest to najlepszy pomysł....
Witam!!! Mam problem z uruchomieniem PWM w trybie fast PWM top=OC2A. Wszystkie inne tryby uruchamiają mi się do strzału. Ten coś nie bardzo chce działać. Na wyjściu z proca mam ciszę. Oto kod wygenerowany przez CodeVisionAVR // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: 62,500 kHz // Mode: Fast PWM top=OCR2A...
Witam Chciałem przedstawić projekt prostego oscyloskopu, który wykonałem jako pracę inżynierską. Założeniem było wykonanie prototypu urządzenie pomiarowego, dzięki któremu będzie można podejrzeć wygląd sygnałów o częstotliwościach akustycznych. Urządzenie zbudowane zostało przy użyciu procesora Atmega644 połaczonego z wyświetlaczem z telefonu siemens...
Witam serdecznie! Mam problem z prawidłową konfiguracją timera1 w tej atmedze. Czy da się skonfigurować 1 wyjście (Pwm1b) aby na nim rozjaśniać i ściemniać diodę ? Config Timer1 = Pwm , Pwm = 8 ,Compare A Pwm=???, Compare B Pwm = ??? , Prescale = 1 może na innym timerze jest to możliwe?
http://obrazki.elektroda.pl/1784240100_1... Projekt wykonany przez dwójkę studentów integruje 3 rodzaje pomiarów: pomiar ilości przebytych kilometrów, pomiar szybkości kroków oraz prawidłowości chodu poprzez analizę nacisku na poszczególne punkty na stopie, wykrywając przy tym skrzywienie stopy i kilka innych parametrów, które mogą...
Właśnie o to mi chodziło. Przeglądałem to polecenie w wersji [syntax=c] Config Clock = soft [/syntax] ale tam była informacja, że potrzebny jest Timer, a ja już wolnego nie mam. Wystarczyła zmiana nazwy podprogramu do odczytu czasu i dopisanie zmiennych tak, jak Kolega podał i już. Działa jak trzeba, czyli przy odczycie karty SD w komputerze jest poprawna...
Nie mam w tej cwili czasu na dokładniejszą analizę, ale zauważ że w celu uzyskania bardziej znaczącego bajtu zmiennej typu uint16_t należy podzielić przez 256, a nie przez 255. Zwiększ też wartość zmiennej ac_adder na 256, bo przy 24 otrzymasz przebieg poniżej 5Hz. Błąd jest na pewno w algorytmie bo np. to działa bez problemu (sprawdziłem dla pewności):...
Tak, widziałem ten temat. W sumie skorzystam z sprawdzania, czy modem jest włączony. Oczywiście kod ładnie opisany, z powodu małej ilości wolnego czasu dopiero próbuję go ogarnąć i wyciągnąć co potrzebne. Natomiast mam obawę, czy to się sprawdzi w całym projekcie. Otóż oprócz odbierania i wysyłania SMS, Atmega obsługuje jeszcze 7 czujników DS, 1 czujnik...
Można to zrealizować w pętli głównej programu. Deklarujesz zmienna "nr_programu". Dla każdego podprogramu wstawiasz instrukcje warunkową która w zależności od wartości zmiennej "nr_programu" realizuje odpowiednią sekwencje czyli dla nr_programu = 1 -> program 1 nr_programu = 2 -> program 2 nr_programu = 5 -> program 5 itd.. Zostawiasz 1 przycisk którym...
Mam poważne wątpliwości czy kombinacja softwareowego USB i synchronicznego (busy waits!) TWI ma szansę zadziałać. Chyba faktycznie te synchroniczne i2c nie działa, bo mi się rozłącza z usb. już się bawię z isr: nwm o co chodzi z tym attiny ale mi hardware nie działał choćbym się zesrał, ostatecznie na scl dałem mniej więcej taki https://obrazki.elektroda.pl/1633124600_...
Podłączyłem impusator(do każdego pinu kondensator do masy) i zastosowałem kod kolegi tmf . Impulsator to ED161120 [url=http://www.song-huei.com.tw/pdfimag... Niestety nie odczytuje on stanu przy szybszym kręceniu , za mała częstotliwość sprawdzania stanu? [syntax=c] /* * Impulstor.c * * Created: 2011-04-24 17:24:36 * Author: Jacek */...
Procka wybudza przerwanie z PCF8583 czyli zegarka. Oczywiście zegarek ma własną baterię. Jaki otrzymałem prąd to ciężko powiedzieć, gdyż mam procek w układzie z kilkoma rzeczami i wszystko lutowane SMD więc ciężko powiedzieć ile ciągnie sam procek. Ogólnie wyszło mi 10,9mA. W układzie jest rzeczony PCF, jest pamięć EEPROM I2C, wyświetlacz 44780 i 24...
Dzięki, szczerze powiem że nie przyszło mi to do głowy. Diody mam 3,3V. Niestety ale na diodach 3,6V jest to samo. Jakieś inne pomysły? http://obrazki.elektroda.pl/7658833200_1... Programator USB ISP działa bezproblemowo na tej płycie, a tez jest na wirtualnym USB. O co kaman? Znalazłem problem, problem stwarza biblioteka "IRremote.h"...
Witam Otóż mam mały problem. Pisze sobie szybkie przerwanie dla timera na Atmega644, to co mi kompilator z C przetłumaczył na assembler wrzuciłem do wstawki assemblerowej a przerwanie zadeklarowałem z argumentem ISR_NAKED, rejestry używane w przerwaniu zarezerwowałem przez: register uint16_t licznik asm("r30"); register uint16_t temp...
A proszę bardzo wersję: Compiler version: 2.0.2.1 Compiler build: 2.0.2.1.0 IDE version: 2.0.2.0 Windows OS: Windows 7 Proffesional SP1 Oryginał legalny nie ma się czego wstydzić. Timera używam tylko jednego z odmierzaniem około 5 sekund. 'konfigurujemy timer wywoływany co jakiś czas (patrz procedura) Config Timer0 = Counter , Prescale = 1024...
Podłączyłem impusator(do każdego pinu kondensator do masy) i zastosowałem kod kolegi tmf . Niestety nie odczytuje on stanu przy szybszym kręceniu , za mała częstotliwość próbkowania ? Drugie pytanie - jak wyczyścić część ekranu tak bym nie musiał całości ? Kod ks0108Puts(" "); niestety nie działa. [syntax=c] /* * Impulstor.c * * Created: 2011-04-24...
Wybierasz timer, który Ci pasuje, a który ustawiłaś na stały okres. Ustawiasz przerwanie od przepełnienia tego timera, a w przerwaniu za pomocą lokalnej zmiennej static zliczasz czas i reagujesz wtedy, gdy uznasz za stosowne. ... albo kombinujesz jak zwolnić któryś z timerów.
Witam. Pokaż schemat (at)Hypno . Uważam że powinieneś zrezygnować całkowicie z przerwań i zrobić to całkowicie inaczej. Na samych Timer-ach.
Witam, kolejną częścią mojej pracy inżynierskiej jest sterowanie czasowe lampy sodowej. Chciałbym Was prosić o jakieś bardziej sensowne sugestie i propozycje wykonania takiego sterowania. Ma wyglądać to tak: - aplikacja C# posiada funkcję gdzie ustawiam sobie czas włączenia i wyłączenia lampy, następnie po ustawieniu wysyłamy przez UART te dane do procka...
Witam. Udało mi się zrobić miernik czestotliwości na Atmega644p dzieki dwóm timerą pierwszy timer 8- bitowy, drugi 16-bitowy. Pierwszy timer(timer0) ma za zadanie sprawdzac czy nie pojawił się impuls na pinie t0, natomiast timer drugi(timer1)ma za zadanie odmierzac czas. Całość taktuje kwarcem 16 000 000 Mhz. Jednak dokładność tego miernika czestotliwosci...
o kurde faktycznie to może dlatego dioda nie funkcjonuje tak jak powinna.. przerobiłam i świeci słabiutko jednolicie, zaraz coś przekombinuję moze będzie się rozjaśniać :D Dodano po 2 DDRD |= 0xFF; PORTD |= (1<<PD5); W mainie jest :D Obsługi przerwań nie deklaruje się wywołaniem sei(); ? Dodano po 6 DZIAŁA :D Dziękuję dziękuję dziękuję :* :* Wywaliłam...
Toś się atom1477 uwziął no:> Będzie to, że tak powiem, softwareowy rest, teraz pasuje?;) No jest to oczywiste że jak timer liczył to i będzie dalej liczyć itp. A zmienne akurat przyjmą wartości początkowe. Sam program wykona się całkowicie poprawnie od początku, kolega chciał usłyszeć alternatywę, jakaś to na pewno jest, czy jest dobra? Od początku...
Ty nie chcesz zwolnić AVRa, lecz go przyśpieszyć, a konkretnie przyśpieszyć taktowanie timera. Czyli taktuj go 20 MHz, a konkretnie tak, abyś miał wielokrotność częstotliwości 44.1 kHz. Przy czym 8-bitowy PWM brzmi tak sobie.
Racja, wracam honor, ale moim zdaniem do tego wystarczy w zupełności sposób zaproponowany przeze mnie i kol. tmf. W Atmega644p masz przerwania PCINT na wszystkich pinach, więc też można wykorzystać.
Depresja.... Dodano po 1 Tak się zastanawiam czemu tu jest to: 'The GETRC5 function uses TIMER0 and the TIMER0 interrupt. a w helpie że Timer=2
... Jak ustawić timer aby w poniższym programie aby robił pomiar ciśnienia co minutę ?... Przy taktowaniu 16MHz raczej musiał skorzystać z dodatkowego licznika programowego w przerwaniu, bo nawet Timer1 (16-o bitowy) z preskalerem 1024 to nadal będzie 15625 tyknięć na sekundę i bezpośrednio mógłbyś uzyskać co najwyżej lekko ponad 4-o sekundowy interwał.
Tak kolego piotrva, nie jestem jego autorem - powinienem zaznaczyć, przepraszam. Kod pochodzi z kursu Bascoma And-Tech. 2. Ponadto - rozmawiamy od ATMega32, tymczasem w kodzie załączonym w 1. poście regfile podany jest dla ATMega644p - a to zupełnie inna seria procesorów Pierwotnie miałem ustawione poprawnie na A32 - tutaj przypadkiem usunąłem nie ten...
Dzięki wielkie Dondu :) Wiele Twoich artykułów czytam. Miło mi :) A teraz.... Fujara jestem.... Poprawiłem kod: [syntax=c] /* * main.c * * Created on: 11 maj 2015 * Author: Radek */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define KEY1 (1<<PA0) // definicja przycików #define KEY2 (1<<PA1) #define...
atmega644 timer przerwanie atmega644 programowanie atmega644 arduino
matiz czujnik optyczny laptop 500zl monitor flatron 795ft
Zablokowane funkcje BIOS w komputerach ASUS - jak odblokować? Migomat 505W przerywa spawanie po 1 minucie - przyczyny