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.
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ć...
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...
Czyli uszkodzony ...
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...
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...
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;...
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)....
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>...
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...
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ą...
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?
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 za bardzo się nadaje. Musisz poszukać rezonatora kwarcowego z częstotliwością która dzieli się przez potęgę 2. Poza tym atmega ma chyba wewnętrzny oscylator ustawiany na 128kHz trochę mało ale zależy co zamierzasz robić.
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...
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...
wracam po krótkiej przerwie. Piotruś dziękuję za odpowiedź :) sęk w tym że wykorzystałam już wszystkie timery procesora i teraz zastanawiam się jak tu zliczyć czas bez timerów, nie wiem czy zwykła inkrementacja zmiennej załatwi sprawę
1. Używasz nowych wektorów przerwań, ale starej funkcji SIGNAL. Zamiast niej używaj ISR(): http://www.nongnu.org/avr-libc/user-manu... 2. Zmienna accumulator jest 16-to bitowa a nie dbasz o sprawdzanie, czy już przekroczyła rozmiar tablicy. 3. Poza tym, jaki sens mają dwa przerwania, skoro przerwanie od Timer2 opiera się o...
W AVR można przyjąc że to pewnik że Timer0 i Timer2 to ośmiobitowe.. Timer1..i jeśłi jest kolejny 16 bitowy to będzie się nazywał Timer3.. i tak do szczęśliwego końca :P ..po prostu co drugi jest osmio lub szesnastobitowy :P
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"...
Hmm , chyba coś żle kombinuję . Teraz w ogóle nie wchodzi do pętli wyświetlania: [syntax=c] while(1) { if (gflaga_impulsatora) { tmf_impulsator(); gflaga_impulsatora=0; } if (NoOfPulses_last!=NoOfPulses) { ks0108ClearScreen(); ks0108GotoXY(1,10); ks0108Puts("T"); itoa(NoOfPulses,buf,10);//NoOfPulses ks0108GotoXY(10,10); ks0108Puts(buf); NoOfPulses_last=NoOfPulses;...
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. Pokaż schemat (at)Hypno . Uważam że powinieneś zrezygnować całkowicie z przerwań i zrobić to całkowicie inaczej. Na samych Timer-ach.
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...
Dobra nie będą Cię więcej męczył tylko powiem. To nie będzie reset. Podczas sprzętowego resetu są asynchronicznie resetowanie wszystkie rejestry specjalne. Czyli piny są ustawiane jako Hi-Z, Timery są zatrzymywane, ADC/I2C/SPI/UART zatrzymywane, przerwania wyłączane itd. itp. Skok pod adres 0 nie zrobi tego. K***a. Nic nie zrobi. Żeby to zrobić trzeba...
Zajrzyj do helpa BASCOM - wszystko jest tam opisane - konfiguracja timerów i zadawanie wartości PWM.
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.
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...
Ale jeśli sobie możesz pozwolić na tą samą ilość pinów co w m32 to zobacz jako alternatywę bardzo dobry PICO powerowy ATmega644PA , którego także z lubością używam - a to dlatego że pinologicznie zgodny z m32 ;) a flasha , RAM'u i EEPROM'a ma tyle samo co ATmega64. Więcej ma nawet dwa UART'y ;) .... tylko niestety nadal jeden Timer16-bit - ale coś za...
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ć.
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...
... 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...
atmega644 timer przerwanie atmega644 programowanie bascom atmega644
lexia sterowniki interfejsu scenic czujnik cisnienia pionieer schemat
expres delonghi napęd bramy zatrzymuje
82C86 Intersil Renesas – nota katalogowa, funkcja, różnice z DC/DC RT8286 SY8286R Powland 60A MPPT - Opis i Funkcje Regulatora Ładowania