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...
Witam, Pewnie sprawa będzie dla was banalna ale ja się z nią zmagam już jakiś czas. Poniższy kod steruje 5 serwami: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define KEY1 (1<<PA0) // definicja przycików #define KEY2 (1<<PA1) #define KEY3 (1<<PA3) #define KEY1_DOWN ( !(PINA &...
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 ...
Witam mam problem z ustawieniem timera w mojej atmedze. Oto kod: [syntax=c] #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/interrupt.h> #include "LCD/lcd44780.h" volatile int a=1; int main(void) { TCCR1A |= (1<<WGM12); TCCR1B |= (1<<CS12)|(1<<CS10); OCR1AH = (unsigned char) 1800; TIMSK1 |= (1<<OCIE1A);...
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)?
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>...
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!!! 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...
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...
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 */...
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"...
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...
to co innego - jak odnajdziesz zmiane - zaininclalizuj lub zapamietaj wartosc licznika zmienianego w przerwaniu timera - a kiedy znajdziesz druga zmianę zobacz jak mocno sie zmienił i na podstawie tego obliczysz szerokosc tego korytarza
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...
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...
Kolego tmf w sumie masz rację ;) Nawet jak opóźnienie będzie trwało kilka minut no to nie robi to żadnej różnicy... ma być po prostu mniej więcej ileś tam godzin włączenia i wyłączenia lampy. OK - spróbuję na dniach zrobić tego timera, pobawię się nieco. Trochę mam innej roboty także dam znać na forum jak coś naskrobię.
Cześć Uczę sie obsługi PWM na mikrokontrolerze Atmega644pa, chcę w prosty sposób sterować obrotami silnika za pomocą PWM. Na początek próbuję sterować jasnością diody, co potem chcę analogicznie zaimplementować dla silnika aby uzyskać sterowanie obrotami. Napisałam poniższy program i modyfikowałam go przez dwa dni z zerowym sukcesem, bardzo proszę o...
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. 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...
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.
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...
... 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ł.
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
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...
jak włączam płytkę to kombinacje od razu się uruchamiają Na to pomoże taka zmiana: Dim Flaga As Byte Flaga=0 Do If PinA.0=0 Then Flaga=1 If PinA.1=0 Then Flaga=2 If Flaga=1 Then Gosub Sciezka If Flaga=2 Then Gosub Odliczanka Loop Próbowałem return ale to nie pomaga. Returny są konieczne, nie zauważyłem poprzednio że ich nie ma. układ nie reaguje wtedy...
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 enc28j60
huawei hasło zmiana taśma zablokowana zasilacz scanjet
bateria macallister bateria hilti
Sterownik pieca Zebiec piszczy, monitor nie działa Silnik bramy Maxgate grzeje się podczas postoju