Sciagnij, z jego pomoca powinienes zrozumiec o co chodzi kalkulator avr: http://www.edw.com.pl/ftp/kalkavr.zip
To wyświetl wartość podzieloną przez 10, przecinek i resztę z dzielenia przez 10. :)
Witam Mam następujący problem: Mój program ma robić coś takiego. T0 zlicza impulsy z zewnątrz, T1 mierzy czas, w przypadku przepełnienia T0 przepisujemy wartość T1 do tablicy #include <avr/io.h> #include <compat/deprecated.h> #include <util/delay.h> #include "lcd.h" #include <avr/io.h> #include <stdlib.h> #include...
Sugestia jest jedna, cóż to za silniki, że potrzebujesz aż 3 timerów ??? Jeśli chodzi ci o to aby wykorzystać je do sprzętowych PWM - to wystarczy zrobić sobie programowe wyjścia PWM w oparciu o tylko jeden timer a dwa pozostaną wolne do twojej dyspozycji. Zatem w oparciu o kolejny Timer zrobisz sobie RC5 a jeszcze jeden zostanie ci wolny.
zapewne to wina wewnętrznego kwarcu i liczenia zmiennoprzecinkowego. A propos ta obsługa przerwania jest zdecydowanie za długa. I zmiennoprzecinkowe po co? PS. taką metodą RTC nie wyjdzie najlepszej jakości. Timer 2 asynchronicznie z kwarcem 32,786.
Może się pomyliłem, ale chyba przerywasz sobie odbiór co 2ms. Dlaczego nie użyjesz wyższego preskalera? Np. 1024? Możesz nawet po ustawieniu Flagi wyłączyc Timer i po odbiorze włączyć ;) Timery można dowolnie konfigurować podczas pracy programu. Druga sprawa ustaw sobie odbiór do bufora w tle (Config Serialin = Buffered, Size..)
Tak jak myślałem. Za pierwszym razem ładujesz 65536-wartość jaką Timer ma zliczyć. A za drugim razem wartość jaką Timer ma zliczyć. W pierwszym przypadku wpisz: Load Timer1 = 49911 I będzie dobrze.
A propos: zapoznaj się z tym: http://mikrokontrolery.blogspot.com/2011...
Witam, Chcę zrobić prosty licznik impulsów na mikrokontrolerze Atmega16 i wyświetlać ilość impulsów na wyświetlaczu LCD. Impulsy prostokątne będą doprowadzone z zewnątrz z generatora zbudowanego np: na kostce NE555... Pozdrawiam, Rafał Czy masz jakiś specjalny powód budowy zewnętrznego generatora impulsów na 555 mając do dyspozycji 3 timery (T0,T2...
Z jaką częstotliwością rezonatora pracujesz? Wszystko co dotyczy konfiguracji liczników masz w help'ie (również w b. dobrym polskim tłumaczeniu autorstwa Zbigniewa Gibka) przykład: CONFIG TIMER0=TIMER, PRESCALE=64 'ustaw timer/licznik0 jako timer z podziałem częstotliwości zegara /64 (...) ON TIMER0 wyswietl 'po przepełnieniu licznika skocz...
Oj, przejrzałem pobieżnie kod - uwierz mi - skasuj go. W C jest coś takiego jak funkcje - wykorzystaj to, kod, który masz jest kompletnie nieczytelny. Każdy normalny promotor by to coś uwalił chociażby za to. Co do szybkości działania - pokaż kod funkcji odpowiedzialnych za komunikację z czujnikami. Z kodu, który masz: - funkcjie piszące do LCD są zapewne...
Podłączyłem go do pinów portu B (t1, t0) To podłącz go do PC6, PC7. [syntax=basic4gl]Config Timer2 = Timer , Async = 1 , Prescale = 128 On Timer2 Myisr Enable Interrupts Enable Timer2 Do Loop Myisr: 'procesor będzie tu "wskakiwać" co sekundę przy kwarcu 32768Hz Return[/syntax] Można to znaleźć w helpie.
Przedstawię Ci kolego przykład zastosowania Pulsein żebyś miał jaśniej. Myślę że będzie "rzeczowiej". To przykład dla dekodowania transmisji pilotów podczerwieni. Sygnał podłaczony jest do zewnetrznego przerwania INTx i w momencie zmiany na pinie program skacze do tej procedury. Mierzy impuls i poddaje rozwadze jego długość. [syntax=basic4gl]Int_1isr:...
Wiesz, mam książkę Baranowskiego 'ATmega w praktyce'. A to co było??? oczywiście mi pomylił się autor ale tytuł ten sam ;) więc ją masz Co do wydajności prądowej to chyba też dostałeś już odpowiedzi różne, albo drivery ULN albo zwykłe tranzystory żeby ją zwiększyć i po ptakach Żeby nie robić na jednej nodze jednej diody nawet przez te tranzystory to...
Najprościej odpalić timer i w przerwaniu wystawiać dane i przełączać segmenty przykład: ISR(TIMER1_COMPA_vect) { switch(wysw) { case 0: PORTD = 0b1111110; PORTB=cyfra[jednosci]; wysw++; break; case 1: PORTD = 0b1111101; PORTB = cyfra[dziesiatki]; wysw++; break; case 2: PORTD = 0b1111011; PORTB =...
I wcale nie trzeba go zaraz fusami wyłączać bo po co? ... Wyłączyć go po prostu trzeba programowo. W takim razie nie bardzo rozumiem treści tabelki ze strony 53 Safety Level 2 In this mode, the Watchdog Timer is always enabled, and the WDE bit will always read as one. A timed sequence is needed when changing the Watchdog Time-out period. Ja to rozumiem...
Mówisz masz na timerze. $regfile = "m16def.dat" $crystal = 1000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Timer1 = Timer , Prescale = 1024 Enable Interrupts Enable Timer1 Start Timer1 On Timer1 Odmierz_czas Const T = 6942 Config Portb.1 = Output : Portb.1 = 1 : Led Alias Portb.1 Config Portb.2 = Input : Portb.2 = 1 :...
--> kolejne PWMy znajdują się z tego co pamiętam na PD7 i PB3. Proszę o odzew i dziękuję za ew. pomoc. Podobnie jak te na T1 tylko dotyczą odpowiednio T2 i T0 A to przykładowe inicjacje /******************************** Init timer T2 */ void InitT2 (void) { TCCR2 = (0<<FOC2) | //forsowanie (0<<WGM21)|(1<<W...
To może się okazać bardziej skomplikowane, niż się wydaje. Wszystko zależy od tego, jaki jest algorytm wyświetlania w tym częstościomierzu. W każdym razie, w najprostszym przypadku można próbować coś w tym rodzaju: 1. utworzyć tablicę na 7 cyfr wyświetlacza. 2. ustawić timer na generowanie przerwań z prędkością > 100 razy na sekundę. Lepiej nawet rzędu...
Różnica będzie taka że w trybie 14 nie uzyskasz zerowego wypełnienia, a w trybie 15 nie uzyskasz maksymalnego wypełnienia. Jakiś czas temu sam się na to naciąłem The procedure for updating ICR1 differs from updating OCR1A when used for defining the TOP value. The ICR1 Register is not double buffered. This means that if ICR1 is changed to a low value...
a jesli powiem ze tak tez próbowałem tylko ze odczyt z kodów z rc5 trwa z przerwą 600ms która musi byc pomiedzy odczytem a konwersją temperatury z ds1820 :( Jakoś nie widzę problemu. Przecież Int0 ma wyższy priorytet niż DS. Jerśli istnieją jakieś konflikty to należy zablokować przerwanie Int0 na czas inicjacji DS'a i odczytu temperatury. W trakcie...
Witam! Chcę ustawić TIMER1 w atmedze 16 tak aby generował przerwania mniej więcej co sekundę w trybie CTC (dodam, że nie zależy mi na aptekarskiej precyzji). W tym celu ustawiłem następujące rejestry: TCCR1A |= (1<<WGM12); //tryb ctc , timer1 TCCR1B |= (1<<CS12)|(1<<CS10); //prescaler 1024 / OCR1A = 7813; // 8MHz/1024 TIMSK |= (1<<OCIE1A);...
Witam. Projektuję ładowarkę akumulatorów i jak najprościej zaimplementować odliczanie czasu (powiedzmy 16 godzin)? Zegarek nie musi być dokładny co do sekundy (wyświetlane będą tylko minuty) ale chciałbym w trakcie ładowania wyświetlać ile czasu zostało do naładowania ogniwa. Program piszę na ATmega16 w C. Z góry dzięki za odpowiedzi.
Witam, Napisałem całkiem złożony programik w C, ale wykrzacza mi się w prostym fragmencie main'a, tzn. obsługa przerwań z timera działa, ale uC nie chce wejść do nieskończonej petli while(1). Nie działa ani w debugerze ani w rzeczywistym układzie. Pomóżcie co tu jest źle... Oto fragment Kodu w AVRStudio #include <avr/io.h> #include <avr/interrupt.h>...
Witam Jak w temacie,sprawdzałem kod kilka razy i wszystko wydaje się w porządku a jednak nie działa tak jak powinno. ziel_on to włączenie wskazówki sekund w zegarze widmowym. Według mnie powinno działać,mam 10 000 przerwań na sekundę,wynik mnożę razy 100 i dzielę przez 60 tak by wstawić do pętli z _delay_us. Działa tak że wskazówka mignie od czasu do...
Witam, mam nastepujacy problem - napisalem timer(uzywajac timera 0) do kontroli czasu w programie(glownie serw). Ustawilem prescaler na 64, co przy kwarcu 16MHz daje 250kHz, czyli jeden takt timera odlicza 1/250000 s. czyli 0,000004s. Potem "timer pomocniczny" sumuje wszystkie przepelnienia do 1 sekundy (czyli tysiac razy). // Ustawienie licznika 0...
Witam serdecznie potrzebuję zrobić odmierzanie czasu 1250us i drugie zależne od zmiennej. Chodzi mi o to, że w moim programie odwoływał bym się do przerwania które odmierzało by 1250us i po tym czasie nastąpił by powrót i wykonanie dalszych instrukcji, w drugim odwoływał bym się z parametrem ile ms ma zostać zliczone i też nastąpił by powrót po tym...
Mam problem z uzyskaniem oczekiwanego działania przerwań INT0 i INT1. Procesor to ATMEGA 16 z zewnętrznym taktowaniem 16MHz. PD2, PD3 są skonfigurowane jako wejścia z podciągnięciem do 1. W obu przerwaniach jedyną czynnością jest inkrementowanie zmiennych zdefiniowanych jako volatile uint32_t. ISR(INT0_vect) { N_T++; } ISR(INT1_vect) { N_F++; } Przerwania...
Witam! Dopiero zaczynam i nie mogę sobie poradzić z poprawnym zliczaniem w przerwaniu pochodzącym od Timera2 w trybie CTC. Chciałem wykorzystać programowe Timery, które są pomysłem Pana Kardasia (korzystam z jego książki) do tego aby jeden z nich tykał co 1sek. Zacząłem, więc tak: 16MHz/1024/125/125 daje teoretycznie "cyknięcie" co sekundę, a u mnie...
Taki prosty multiplekser można zrobić na dowolnych bramkach logicznych, wyjdą 2*3, na sygnał, więc np. 2x74xxx00, lub 4 jeśli zastosujesz bramki z wyjściem OC i zrobisz wired and.
a ten bufor na ktory wskazujesz to ma jakis rozmiar? <: to ze ci to dziala to tylko przypadek [; ciekawi mnie tez, dlaczego deklaracja w jakims tam stylu od razu odpada... 4\/3!!
http://obrazki.elektroda.pl/7114210100_1... Witam wszystkich serdecznie ! Z racji tego, że zbliżają się święta postanowiłem podzielić się z wami projektem elektronicznego drzewka szczęścia. Urządzenie powstało prawie rok temu i było prezentem urodzinowym dla mojej dziewczyny którą serdecznie pozdrawiam !!! :D Założenia do projektu:...
tylko z tym wklejaniem jest tak że mi strasznie miga na ekranie a zrobiłem wyświetlanie od flagi TOV1 poniżej wrzucam kod programu [syntax=cpp] int main(void) { TCCR0 |=(1<<CS00)|(1<<CS01)|(1<... //ustawienie timera 0 na zliczanie impulsów zewnętrznych TCCR1B |=(1<<CS12); //ustawienie źródła zegara timera 1 z preskalerem...
Witam Ucze sie programować mikrokontrolery, używam Vmlab'a i Winavr. Mikrokontroler to atmega16. Napotkałem następujący błąd: Program teoretycznie powinien dodawać do wyświetlacza co 300ms nowy znak. Wszystko jest ok dopóki nie włącze Timera. Jeżeli go uruchomię to znaki zamiast się dodawać zaczynają się nadpisywać (pojawia się tylko jeden znak na 1...
Jedyne ostrzeżenie to W Lini 98 /uart.c:98:10: warning: variable 'status' set but not used volatile int timestamp =0; void Timer0_init() { TCCR0 = 0x03; // = 64 TCNT0 = 256 - 115; // 1ms TIMSK |= _BV(TOIE0); } ISR (TIMER0_OVF_vect) { TCNT0 = 256 - 115; // 1ms timestamp++; }
nie jestem pewien bo dawno porzuciłem bascoma ale aby coś wygenerować timer musi być chyba skonfigurowany jako pwm a nie timer pozdrawiam
Witam. W pewnym sofcie dla Atmega16 wykorzystałem już: - Timer1 (16 bit) do odliczania 0,0001s odcinków czasu - Timer2 (8 bit) jest wykorzystywany przez odbiornik podczerwieni (instrukcja getrc5) Timer 0 niby jest wolny, ale nie wiem / nie jestem pewien czy nie jest on wykorzystywany przez jakieś używane przeze mnie instrukcje (np. print dla sprzętowego...
czy wykonywalne jest uruchomić 2 Timery w jednym czasie, podczas moich prób problem pojawił się przy wpisywaniu danych w rejestr TIMSK, w najlepszym wypadku jeden timer rusza a drugi nie
Poszedłem w ślady kolegi xtream007 i zakupiłem moduł odbiornika GPS wraz z aktywną anteną. Testuje układ już od dwóch dni i zauważyłem, że odbiornik łapie fixa, zegar się synchronizuje i po chwili jakby odbiornik gubi kontakt z satelitą - co skutkuje mryganiem neonówek. Takie mruganie trwa niekiedy nawet 30-45 min, zanim złapie znowu fixa. Antenę przyczepiłem...
Nie. Bo to po ustawieniu fuse jest właśnie wraz z wewnętrzną logiką generator sygnału bazowego całego proca (w tym timerów).
Nie prościej generować przerwanie co np 1s od timera?
Nie wiem na które pcb patrzysz , to ostatnie do pełnej wersji z pomiarem prądu i napięcia ,patrzę i widzę że jest OK . pin40 i pin39 są podpięte do dzielnika kondensator żeby nie pływał pomiar zbytnio. nie widzę tego o czym piszesz . Wieczorem sprawdzę jeszcze raz i podam zaktualizowane . Ok jest wieczór więc zamieściłem na 2 str. schemat i pcb w eagle...
A te pozostałe peryferia śmigają na przerwaniach?? Minimalny czas przerwania powinien być tak dobrany aby zanim przepełni się Timer zdążyło się wykonać jego przerwanie. U mnie tylko działał UART podczas pracy z serwami więc żadnych problemów nie było.
Jak sprawdzasz, czy Timer działa/niedziała? I czy masz kwarc 1 MHz?
uczę się programowania AVR w c i na ATMEGA16 napisałem prosty programik mający zliczać impulsy w czasie 1 sekundy timer 1 odmierza czas 1 sekundy timer 0 zlicza impulsy i przy przepełnieniu inkrementuje zmienną do wyświetlenia wyniku zmienna jest przemnażana przez 256 a do wyniku dodawana jest bieżąca wartość rejestru TCNT0 do celów ćwiczenia, jako...
Kwarc 1,8432MHz, prescaler 1024, timer w trybie CTC na 180 taktów. Kwarc 2,4576MHz, prescaler 1024, timer w trybie CTC na 240 taktów.
Jeżeli Ci PCF niepotrzebny/oszczędzasz na płytce to zerknij do DSa zamiast do poradników. Tam jest to logicznie wszystko wytłumaczone. Ja podpowiem, że możesz uruchomić timer w trybie CTC z preskalerem np 8, który będzie generował przerwania gdy doliczy do 10 000. To da odcinek czasu 10ms. W przerwaniu możesz inkrementować zmienną odpowiedzialną za...
Zbudowałem sobie taki oto układ termometru i zegara oparty na atmega16 i wyświetlaczu lcd. I wszystko działa jak należy ale nie do końca. Temperatura wyświetlana na lcd strasznie skacze po różnych wartościach w przeciągu paru sekund tzn. jak np. w pokoju jest 20 stopni to on wskazuje raz właśnie te 20 raz 19 czasami 21 albo 14 15 czy 16 stopni celcjusza....
Witam :) Mam problem, zegarek na Timer0 nie chodzi poprawnie natomiast na Timer 1 pracuje poprawnie. Pwm działa tylko na Timer1. Co zrobić aby zegarek pracował na Timer1 a Pwm na Timer0? Config Timer1 = Timer , Prescale = 64 Enable Interrupts Enable Timer1 On Timer1 Mierzymy Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down ,...
W nowszych Megach EEPROM ma własny timer niezależny od zegara systemowego. Pzdr. N.
TOSC1
ewentualnie na jakims innym mikrokontrolerze? W atmegach robisz to bardzo prosto. Podłączasz kwarc zegarkowy do wejść timera asynchronicznego - TOSC1, TOSC2. Np. w atmega16 ustawiasz preskaler timera2 na 128. Timer jest 8-bitowy więc przepełniać się będzie co 1s ;)
gdyby ten wątek czytał ktoś kto akurat przypadkiem nie ma właściwej książki ;) to przykłady zastosowania input capture na atmedze można często znaleźć w projektach gdzie odbierane są sygnały z pilota na podczerwień bo tam właśnie mierzy się czasy impulsów i przerw między nimi hm, właściwie to odpowiedzi są banalne: 1. tak 2. no przecież to proste skoro...
Po pierwsze OCR0 nie jest 16b tylko 8b ... zapisując 499 do rejestru trafia 243... Reszte sprawdzam... //Dla porównania czyścisz wyjście, więc zakładam, że pamiętałeś o włączeniu podciągania na tym pinie. ////Nie konfigurując bitów WGM00 i WGM01 timer zlicza do 255, a przy 243 czyści wyjście ... to nie jest 50% duty(wypełnienia). //////PS. Twój miernik...
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. Każdy timer ma swój prescaler. [syntax=c] OCR1A = 0x0000; OCR1B = 0xFFFF; TCCR1A |= (1 << COM1A1)|(1 << COM1B1); TCCR1A |= (1 << WGM11); TCCR1B |= (1 << WGM12)|(1 << WGM13); TCCR1B |= (1 << CS10); [/syntax]
(at)tmf No a z tym moim delay co jest źle? Jeśli chodzi Ci o jakieś przepełnienie albo coś to ja nawet nie wiem ilu bitowy tam jest timer :D to taki pseudo kod tylko.
A najlepiej wykorzystać sam timer i pin ICP - wtedy pomiar będzie całkowicie sprzętowo dokonywany. Pomiary lubią też pływać w sytuacji w której odbierany sygnał ma niską amplitudę, ew. powoli narasta. Akurat wyjście komparatora można skierować na ICP timera 1, to chyba najlepsza konfiguracja do takiego zastosowania.
atmega16 timer timer atmega16 bascom atmega16 eeprom
dotyczyć rezystor czarny monitora hyundai wieże philips
Kod DTC 7E140F w Iveco Daily - usterka SCR Amica Eco Baggio - brak mocy ssącej, przyczyny i rozwiązania