a) Dlaczego nie na przerwaniach? b) Timer wcale nie musi liczyć od zera. c) Da się ustalić górną granicę (CTC). d) Przeczytaj sobie: http://www.avrfreaks.net/index.php?name=... http://maxembedded.com/2011/07/14/avr-ti...
Kiedyś napisałem prosty przykład użycia Timera w trybie CTC dla AVR w AVR Studio w języku C. W załączniku znajduje się ten gotowy kompletny program powodujący przerwanie od porównania (Compare) co około 250 ms i generujący przy okazji falę prostokątną na wyjściu OC0A. Otrzymujemy w ten sposób przebieg prostokątny na tej nóżce o okresie 2 Hz (2x250 ms...
(at)seba_x:A co to za bzdura?:> • Peripheral Features – Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode A co do pytania autora, nie, zliczanie umożliwiają tylko dwa pierwsze timery. Trzeciego można używać jako wewnętrznego. Nie tylko...
Zaglądając do dokumentacji mikrokontrolera i wybierając jedną z dwóch możliwości: 1. preskaler timera - jedno z ustawień preskalera powoduje zatrzymanie timera czyli "No clock source (Timer/Counter stopped)." 2. zerując bit TOIE0 (jeśli użyjesz timer0), czyli Timer/Counter0 Overflow Interrupt Enable
To ja już nie wiem , możesz podrzucić jakiś schemat prosty takiego timera z programem skompilowanym hex , bo ja już nie mam pojęcia
Ja bym zrobił na przerwaniu + timer.
Racja - jeżeli pierwszy timer masz ustawiony na odliczanie jakiejś podwielokrotności sekundy to wtedy wszystko zrobisz na tym samym timerze.
To zależy. Z opisu autora (nie analizowałem kodu) wynika, że timer jest zatrzymany, stąd kolejność nie ma znaczenia. Przy okazji mała poprawka, bo zamiast TCNT0 podałem TCCR0. Zerując TCCR0 zatrzymamy timer ponieważ w tym mikrokontrolerze są tam tylko bity preskalera.
a jak dziala w "realu"? a powiedz mi jeszcze skad wiesz ze on wywoluje przerwanie co 1s?
Zacznij od tego: funkcja wait i pokrewne PRZESTAŁY ISTNIEĆ. Do opóźnień i odmierzania czasu użyj timera i ogólnie poczytaj o timerach.
To co sugerowal Tajwoj - źle ustawiłeś preskaler, powinno być: TCCR0 = 0b00000101;
http://obrazki.elektroda.net/77_12591386... Witam! Chciałem Wam przedstawić jeszcze nieskończony timer kuchenny autorstwa Mirosława Firleja. Ta zabawka powstała jako prezent świąteczny dla mamy. W wakacje postarałem się zrobić taki, ale coś nie chciało działać. Segmenty cyfr się źle wyświetlały, buzzer cały czas dzwonił, jednym słowem porażka....
ad. 1. To znaczy, że jak spojrzysz do noty procka, do opisu wyprowadzeń OCx timera to się okaże, że timer może sterować tym pinem prowadząc do zmiany jego stanu. W efekcie wcale nie musisz tego robić programowo. Ustawiasz w timerze opóźnienie, wyzwalasz go w przerwaniu zera i tyle. ad. 2. Musisz wtedy pamiętać, że wartość tuż po zmianie MUX będzie dotyczyła...
Obsługa przerwania nie ma być "jak najkrótsza", tylko "nie za długa". Odświeżanie wyświetlacza zawsze robi się w przerwaniu, gdyż zajmuje to czasu tyle co nic, a nie zrobienie tego w przerwaniu powodowałoby złe działanie wyświetlacza - nierówną jasność cyfr, zmiany jasności, migotanie, przygasanie itp. To ma być działać ze stałą częstotliwością, a do...
Jakoś nie widzę żebyś tu korzystał z przerwania od Timera... Bo nie musisz ;p mogłbyś pokazać jakiś przykład obsługi przycisku w przerwaniu timera ? Nawet jakiś URL do innego projektu. Więc chyba oczywistym jest że ten fragment kodu należy umieścić w przerwaniu od Timera.
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Nie ma większego znaczenia w jakim środowisku programujesz (Basic albo C). Istotny jest koncept projektu i sposób rachunkowy, reszta to tylko inna forma zapisu programu. Wybrałeś za narzędzia: Timer1 i jeden z interruptów zewnętrznych. Zatem jest tez bez znaczenia...
Dobrze, że uczysz się C ale jeżeli chcesz w pełni wykorzystywać ten język to naucz się jeszcze korzystać z not katalogowych uC. 1. O porcie A już kolega polprzewodnikowy napisał. 2. Timer0 w M8 w przeciwieństwie do M32 nie ma możliwości pracy w trybie CTC. Chcesz CTC to przenieś obsługę na T1 lub T2. Ewentualnie T0, ale w trybie normal z cyklicznym...
no i ok, ja mowilem o dodatkowym podziale czestotliwosci na 2, 4 i 8 (domyslnie 8 ) . no i czas sciagnac nowe wersje, bo we wszystkich jakie mam logo jest niebieskie 4\/3!! No własnie. Domyslnie jest 8. Ustwiasz 8MHz, a to chodzi na 1MHz. I zdziwka. Ja też kiedyś miałem z tym problemy. A jak kolega Robgie programuje? Z BASCOMa? no i ok, ja mowilem...
Klasa TwoWire (której obiektem jest Wire) też używa przerwań. Po wejściu do ISR przerwania są blokowane. Jeżeli chcesz, aby dane ISR nie blokowało innych przerwań można użyć ISR_NOBLOCK:[syntax=c]ISR(TIMER2_OVF_vec... ISR_NOBLOCK) { ... }[/syntax]Byłbym jednak z tym bardzo ostrożny, ponieważ może przydarzyć się przepełnienie stosu. https://www.nongnu.org/avr-libc/user-man...
Najpierw próbowałem z przetwornikiem a/c ale nie dawało to żadnych odczytów i teraz spróbowałem z komparatorem a/c i timerem. Do atmegi podłączyłem nadajnik ultradźwiękowy przeciwsobnie. Jeśli przetwornik podłączyłeś bezpośrednio do pinów mikro-kontrolera to nic dziwnego. Po pierwsze nadajnik ma wtedy bardzo małą sprawność, jak budowałem swój miernik...
Programuję w ASM ale tylko Atmega8/16 więc wklejam ci taki przykład: [syntax=asm] .CSEG .org 0x0000 //poczatek deklaracji skokow dla przerwan rjmp _poczatek reti reti reti reti reti reti reti reti rjmp _150_timer0 //przerwanie overflow timer0 reti reti reti reti reti reti reti reti reti _poczatek: in r16, TIMSK//timer0 overflow interrupt enable ori...
Częstotliwość z jaką taktuję mikrokontroler to 1MHz, język oczywiście to C jak zaznaczyłem w temacie. A przykłady faktycznie są, i wcześniej je znalazłem ale jak dla mnie strasznie skomplikowane. Jak wiedzę sporo nauki jeszcze przede mną :) Nadal bym jednak prosił o super prosty przykład wykorzystania timera. Pozdrawiam
To zależy od konstrukcji reszty programu. Nie ma jedynie słusznych i najlepszych rozwiązań. Ja być timer włączał i wyłączał po prostu w kodzie. Rozwiązanie z flaga też jest ok, tylko wtedy nie do końca wykorzystujesz sprzęt - po co inkrementować zmienną skoro masz licznik timera.
TCCR1B |= (1<WGM12) tu ma być (1<<WGM12) (dwie strzałki)
Jak nie radzisz sobie na razie z tym timerem to przynajmniej nie nadużywaj bezpodstawnie Wait. To co Ci zaproponuję nie zwalnia Cię od ogarnięcia timerów! Ustal sobie jakie dopuszczasz maksymalne opóźnienie pętli i użyj go tylko raz np. 10ms. Za rozwiązanie, może nie do końca eleganckie, zaraz zbiorę burę od fachowców ale w wielu przypadkach to naprawdę...
Posiadam aparaturę zdalnego sterowania, w której podczas maksymalnych wychyleń drążka w lewo i prawo na nadajniku, na odbiorniku na wyjściu sygnałowym napięcia przykładowo 0.26-0.42V. Chciałbym podłączyć ten sygnał do wejścia uC. Czy można programowo odróżnić te wartości napięcia, aby w skrajnych przypadkach podawać napięcie na różne wyjścia uC? Można...
Witam, mam w ukladzie ATmega8 + MAX232 do komunikacji z komputerem. ATmega jest taktowana z zewnetrznego kwarcu 16MHz. Wydaje sie, ze fuse bity sa dobrze ustawione, bo do obliczenia parametru predkosci USART (wpisywanego w UBRR) musze wykorzystywac wlasnie 16000000. Mam jednak problem z timerami. Zarowno _delay_ms(), jak i _delay_loop_2() dzialaja tak,...
OK, już działa. Nie wiem czemu, ale Programmers Notepad i A pisałem abyś zainstalował AVR Studio 4.
Przyznam się, że nie próbowałem pomijać reti skacząc do pętli głównej z ISR, ale już podmieniałem adres powrotu w projekcie minidds. Ale zakładam, że AVR ma to gdzieś i nie obchodzi go, czy ISR jest zapętlone, czy nie. Zresztą gdzieś w nocie pisało, że SEI w obsłudze przerwania może spowodować nadpisanie całego RAMu, jeżeli kod będzie wolny, więc raczej...
Witam Szukam odpowiedzi i nie mogę znaleźć na pytanie jak w temacie. Bawię się od tygodnia z AVR dokładniej z Atmega8 i zrobiłem sobie do samochodu taki mini komputer pokładowy, który narazie podaje temp w 3 punktach na DS1820 i wyświetla to na wyświetlaczu LCD 2 * 16 (który używam do kontroli wyników) bo drugim wyświetlaczem jest HDLX1414, to 4 segmentowa...
Bo tym kwarcem nie odmierzysz 1s. w taki prosty sposób. Bęziesz musiał ładować wartość początkową do timera. Z kawrcem 2²²Hz wartość początkową trzeba by ustawić na 0 czyli tyle na ile timer wskakuje po przepełnieniu. Jednym słowem z tym kwarcem timer samoczynnie generuje przerwania co sekundę. Jak nie wierzysz to sobie policz. Kwarc ten...
........, a podpowiedzcie mi jak mogę obsłuzyc Rc5,serwo i pwm? Pozdraiwam Dla obsługi RC5 i kontroli serva użyłeś w sumie 2-ch timerów... ATMega8 posiada wbudowane 3 timery , zastosuj więc ten trzeci do 'produkcji' PWM''. Jeżeli ten ostatni (dotychczas wolny) jest Timer1, to ma on dwa kanały dla PWM, na których możesz generowac praktycznie dwie różne...
Przerwanie ma być co 800ms. Timer0 prawidłowo generuje to przerwanie: 1/8000000=0,000000125 => 0,000000125*256=0,000032 => 0,000032*250=0,008s => 0,008*100=0,8s i tyle jest odliczane. Dla timera1 rachunek jest analogiczny, ale niestety nie generuje przerwania po tym czasie, tylko kilkakrotnie później. Timery ładowane są początkową wartością w programie...
To nie są przerwania na PB1, 2, 3, a sprzętowe wyjścia timerów. NA ATmega8 masz trzy wyjścia PWM - dwa z T1 i jedno z T2. Nie wiem, ilu w końcu potrzebujesz. Jednego powinieneś użyć do generowania 36 kHz, kolejnego (a może dwóch) do sterowania silnikiem. Czemu mają służyć te zabawy z przerwaniem timera i programowym machaniem nogą uC?
Witam! Trochę mi to zajęło ale uruchomiłem w końcu mój projekt. Okazało się, iż problem leżał w zakłóceniach sieciowych pojawiających się w momencie włączania silnika. Rozwiązanie: rozdzieliłem masy układu wykonawczego oraz sterowania oraz zbudowałem prosty filtr sieciowy. Pozdrawiam i dzięki za pomoc!!!
Przedstawiam timer oparty na ATmega8 i podwójnym multipleksowanym wyświetlaczu 7 segmentowym LED. Układ stworzony do uruchamiania syreny co pewien ustalony czas. Maksymalny czas załączenia to 99 sekund a maksymalny czas zwłoki to 99 minut. Układ zasilany bezpośrednio z sieci 230. Wrzucam schemat układu oraz płytkę układu i wyświetlacza który łączy się...
Witam wszystkich, od razu powiem że przekopałem forum i nie znalazłem podobnych tematów. Mam zamiar zrobić przekaźnik czasowy na attiny2313 lub atmega8, bo to akurat mam pod ręką. Działać ma on na zasadzie takiej, że po naciśnięciu przycisku wentylator ma załączać się raz na godzinę na ok 2-3 min. Po naciśnięciu drugiego przycisku, wentylator powinien...
Rzeczywiście, teraz widze ze to co myslalem bylo kompletna bzdura. Bardzo dziekuje za rozjasnienie
Drodzy urzytkownicy, To moje początki w programowaniu contollerów. Chciałbym zaprogramować timer na ATmega8. Proste logiczne programy udało mi się już napisać. Moim następnym zadaniem jest zaprogramowanie timera z licznikiem, niestety na początek mam problemy nie wiem jak zaprogramować timer. Czy ktoś mógłby mi w tym pomóc. Algorytm mojego programu...
1. Zaprogramuj timer w tryb CTC, np. na częstotliwość 100 Hz. W przerwaniu timera: - sprawdź, czy przycisk naciśnięty; jeśli tak - zapal diodę i załaduj wartość 1000 do zmeinnej - "timera programowego". - jeśli zmienna timera ma wartość różną od zera, zdekrementuj ją, a jeśli zdekrementowała się do 0 - zgaś diodę. Razem daje to 5 linii kodu w przerwaniu...
Laszlo ale jesteś świadomy, że odświeżanie obrotów będziesz miał co sekundę, a jeśli nawet zmniejszysz ten czas to zmniejszy się rozdzielczość. Zresztą nie ma co pisać jak wykonasz to się przekonasz. Wykonaj sobie generator na ne555 i się przekonaj jak to będzie działać, nawet nie trzeba ci czujnika po prostu podaj na nogę timera sygnał z generatora...
Witam. Napisałem sobie prosty kod: /** * Timer - test */ #include <avr/io.h> #include <avr/interrupt.h> #define T0_INIT 0xFF //Wartość początkowa timera volatile uint32_t timer; //Odliczanie czasu przez timer /** * Przerwanie przepełnienia timera */ SIGNAL ( SIG_OVERFLOW0 ) { TCNT0 = T0_INIT; if ( timer > 0 ) timer--;...
Witam, jestem kompletnie zielony w temacie mikrokontrolerów, chciałem jednak zrobić sobie timer lub zegar na atmega8 Szukam porad od podstaw, tzn. co musze kupic, jak wszystko polaczyc, jaki program napisac i jak zaprogramowac. Moze byc to juz gotowy projekt, ktory ktos wykonal, chcialbym po prostu stworzyc sobie cos takiego i wiedziec co robic krok...
Witam! Chciałbym zrobić układ regulacji fazowej na owym procku. Chciałbym obsługiwać przerwania od TIMER-a co 100us. Dodatkowo przerwanie od detekcji zera- wystąpi jak wiadomo co 10mS. Czy układ RS232 będzie obsługiwany równolegle jeśli będzie pracował z prędkością 1200b/s, co odpowiada 1 znakowi/10 ms? Czy prędkość RS232 ma tu coś do rzeczy- czytaj,...
Prosze o pomoc co moze byc zlego w tym "prostym" kodzie na zegarek nie wiem ale nie chce dzialac na mojej Atmedze 8. mam Atmege ktora chodiz na zegarze wewnetrznym Dim G As Byte Dim M As Byte Dim S As Byte Dim X As Byte Dim W As Word Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.4 , Db6 = Porta.5 , Db7 = Porta.6 , E = Porta.2...
A jak wygląda wyświetlacz 3-segmentowy? Nigdy jeszcze takiego nie widziałem... Program napisz od nowa - ten nie ma prawa działać. Zacznij od przerwania timera. Odliczania czasu NIE DA się zrobić bez timera.
Hm, no nie wiem... to zezwolenie na przerwanie timera 1 po przepełnieniu zostało mi z poprzedniego programu, po prostu dopisałem zezwolenia na przerwanie od porównania z rejestrami a i b, który to wektor się zgadza z tym co podałeś. A przecież przerwanie od przepełnienia nigdy się nie wywoła i tak, bo licznik się zeruje, nie? Ciekawostka, jak na końcu...
Oj, słownik i do tłumaczenia... Na Forum nie powinno się pisać rzeczy "oczywistych" i dostępnych w dokumentacji... A tam wszystko dokładnie jest opisane... A dlaczego tyle układów licznikowych? Bo można dowolnie wybrać zastosowanie: - potrzeba timer'a o ośmiu butach? jest timer0 i timer2 - rozdzielczość za mała? potrzeba dokładnego PWM? jest timer1...
Wycinek z datasheet atmega8a: "The Asynchronous Timer/Counter uses the same XTAL pins as the CPU main clock but requires a CPU main clock frequency of more than four times the Oscillator frequency. Thus, asynchronous operation is only available while the chip is clocked on the Internal Oscillator." Niestety do poprawnego działania potrzebny jest oscylator...
Możesz skorzystać z timera lub z zew. RTC jak doradził kolega.
Daruj sobie obsługę przepełnień i przerwanie od przepełnienia timer - kompletnie nic one nie wnosi. Po prostu zapisz wartość timera przy zboczu narastającym, a przy zboczu opadającym odejmij od bieżącej wartości tę zapamiętaną - przewinięcie typu uint16_t przez zakres samo załatwi sprawę. Skąd wiesz, jakie masz wartości, skoro nic z nimi nie robisz?
Witam. Na wstępie chciałbym zaznaczyć, że jestem kompletnym nowicjuszem jeśli chodzi o mikrokontrolery, więc proszę o wyrozumiałość. Chcę wykonać model Jeśli myślałeś o ATMEGA8 to znaczy, że interesują cię AVRy? Można wziąć coś innego z serii ATMega, dzięki czemu będziesz miał więcej kanałów PWM. Lecz timery w ATMega są dosyć niewygodne (sztywny preskaler)...
Na bascomie się nie znam ale w którym miejscu masz obsługę wektora przerwań od timera ?
Oj kolego jest wyraźnie napisane: Jestem początkującym programistą... wiec gotowca nie ma co dawać bo człowiek się nie uczy tylko bezmyślnie go używa. Podejrzewam że nie potrafiłby jeszcze zainicjować odpowiednio timer, skoro nie znalazł odpowiedzi na prosty problem. Tak poza tym z timerem tez procek się kreci bez celu oczekując na wciśniecie przycisku....
O nie na gotowca nie licz :) Ale jeżeli chcesz to mogę Cię naprowadzać i poprawiać błędy w kodzie. To pozwoli Ci nauczyć się czytać i rozumieć datasheet w zakresie timerów i przerwań. Pasuje?
Zamiast delay wykorzystaj inny timer.
To wszystko to jedna wielka prowizorka. Możesz dołożyć do pętli while () oczekującej na zwolnienie przycisku sprawdzenie naciśnięcia drugiego i odpowiednią reakcję. To powinno być zrobione zupełnie inaczej, w przerwaniu timera, z notowaniem stanu przycisków w oddzielnych zmiennych.
A nie możesz wykorzystać zwykłego timera?
midi? To poczytaj najpierw czym jest midi. Implementacja tego wcale nie jest banalna. Natomiast prosty dźwięk uzyskasz przy pomocy timera, można też odtwarzać próbki przy pomocy fastPWM.
Musisz też załadować nową wartość do licznika timera.
Witam. Napisałem prosty programik. Działa on tak że po włączeniu układ generuje impulsy o częstotliwości regulowanej przez ADC2. Teraz nie mam pojęcia jak zrobić aby przycisk podpięty na PD.0 włączał i wyłączał mi ten generator na wyjściu atmegi. [syntax=Basic4GL]$regfile = "m8def.dat" $crystal = 8000000 Config Portd = &B00000000 Config Portb = &B11111111...
A jeżeli jesteś bardzo początkujący to po prostu użyj rezonatora powiedzmy 16MHz i już będzie znacznie dokładniej. Nie będzie to bardzo dokładnie ale dużo lepiej niż wewnętrzny oscylator.
Zacznij (jak w 99% projektów) od przerwania timera. W nim sprawdzaj stan przycisków i wykonuj prawie wszystkie pozostałe czynności.
Oczywiscie wszystko zalezy od kwarcu jaki zastosujesz. I nie ma znaczenia czy bedziesz pracowac w rybue asynchornicznym czy nie. A przepis na jedna sekunde jest prosty: bierzesz 16 bitowy licznik 1, ustawiasz tryb CTC (albo i nie), prescaller dajesz na 64 i odmierzasz wartosc 0x3D09.
Wjęc tak, mi chodzi o coś takiego : Mam 4 przyciski - 2 do ustawiania funkcji (f1 , f2 itd) - 1 reset - 1 do ustawiania czasu określonego przeze mnie, wyświetla się menu ustaw czas i 2 przyciskami do ustawiania funkcji nastawiam czas. Wiem że jest to trochę skomplikowane i dlatego potrzebuje pomocy, Może być to wyświetlane na lcd jak również na wyświetlaczu...
Może ten Twój jakiś dziki jest :P więc spróbuj jeszcze przenieść Sub pod pętlę główną jak ja poniżej. U mnie kompilują się wszystkie wersje wiec w załączniku masz skompilowane Hex i Bin do wyboru. Sprawdź też prywatną wiadomość ;) [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '********* TUTAJ SOBIE...
no dobrze, jest to jakieś rozwiązanie, to jak sie budzi tym timerem?
Debouncing można wykonywać na wiele sposobów. Twój sposób jest jak najbardziej poprawny. Ta bezsensowność jest tylko z pozoru bezsensowna :) - jakoś trzeba poinformować main(). Taka technika jest powszechnie stosowana nie tylko do debouncingu. Pamiętaj także, że zawsze możesz na końcu while() w main() uśpić mikrokontroler do następnego przerwania -...
A czy mógłbym prosić o jakiś konkretny przykład? Albo poprawić ten: Config Timer0 = Timer , Prescale = 1024 On Timer(15) Gosub procedura 'czekaj 15sec. Timer On Do Loop End Procedura: Cls Lcd "ok" Waitms 500 Return Nie wiele tu mozna poprawic bo od poczatku do konca masz bledny koncept pracy z timerami. Po pierwsze: w konfiguracji wartosc 'Prescale'...
Jak zerkniesz do dokumentacji to się dowiesz że może też być taktowany zegarem systemowym. Zerknij w rejestr ASSR bit AS2
Hmmm, ... Możesz wkleić aktualny kod łącznie z zerowaniem preskalera? Czy wcześniej używasz Timera do innych celów?
Ale w tym drugim wariancie nie korzystam z przerwań tylko z timera.
A jak jest w BASCOMIE / uC domyślnie ? Tzn. ja nie ustawiałem żadnego trybu pracy timera.
A co w związku z dziwnie działającym timerem?
Bo jak ma działać? Widać kolega nie do końca rozumie mechanizm przerwań, skoro czeka na przerwanie INT0, a włącza przerwanie przepełnienia Timera0. Adresem przerwania przepełnienia Timera0 jest OVF0addr, a nie INT0addr. Przerwanie od INT0 wyzwalane jest ZEWNĘTRZNIE zboczem lub stanem na fizycznym wejściu INT0 mikrokontrolera, a nie Timerem. Skąd ten...
Timer i zmiana stanu wyjścia w przerwaniu. Długość dźwięku określić innym timerem.
Możesz to zrobić na dwa sposoby. 1. W przerwaniu zmienisz stan tego portu. 2. Przerwanie ustawia ci pewną flagę że nastąpiło odmierzenie 1 sekundy a w pętli głównej programu testujesz tą flagę i jak wystąpi to zmienisz ten port a flagę kasujesz I cała filozofia. Czy to jest jasne ?
A może na zakończenie przerwania załadować wartość do timera???
Tyle że jak z bascoma jestem noga bo programuję pół roku i nie umiem skalibrować timera
Metoda ta sama odnośnie pomijania niektórych próbek .. ale jak mniemam uzyskujesz częstotliwości mniejsze - ze względu na czas potrzebny na obsługę timera.
Witam, Mam mały problem z programem z książki o programowaniu ATmega8 i ARM7 Pawła Borkowskiego tj. cw. 2 z lekcji o przerwaniach. Treść ćwiczenia to takie obsłużenie diód podłączonych do PC0, PC2 i PC4, aby PC4 świeciło po załączeniu przycisku, PC2 ma się zaświecić po 1,5 sekundzie przy wykorzystaniu timera1, a PC1 ma się zaświecić po 170ms przy wykorzystaniu...
Przecież już mówiliśmy o tym. ATmega8 -> 1,4V (zbocze opadające) i 1,9V (zbocze narastające) przy Vcc=5V. Te napięcia dotyczą wszystkiego. Niezależnie czy używasz pinu jako zwykłego IO, jako wejścia przerwania, czy jako wejścia Timera.
Hey ! Właśnie sprawdziłem, działa jak wpisze na twardo zmienna = 1234 znaczy wyświetla 1230 ale to pewnie przez mod 10 - czyli wyświetlanie działa... ale co z tym Timerem ?
Doszedłem, że funkcja Getrtctime() resetuje mi układ. Wcześniej działała. Jaki może mieć związek z deklaracją timera?
Witam serdecznie, chcę taktować timer Atmega8 zewnętrznym kwarcem zegarkowym, a sam uC taktować wewnętrznym oscylatorem RC. Tylko nie wiem jak mam skonfigurowac Atmega8 abz to osiagnac, pewnie trzeba cos w fusebitach zmienic, ale nie wiem co.. Prosze o pomoc. Pozdrawiam!
Free run i ręczny stan konwersji - coś się Koledze pomyliło. Będę nudny - zacznij od przerwania timera.
wiesz... coś mi chodzi po głowie, że przy którejś wersji gcc albo avr-libc nastąpiły jakieś zmiany nazewnictwa procedur obsługi przerwań. Głowy nie dam że tak było, ale w każdym razie u mnie procedura obsługi od przerwania pochodzącego od przepełnienia timera 0 nazywa się: ISR (TIMER0_OVF_vect) { ... } A druga rzecz, to z całą pewnością...
z tego co wiem to delay to komenda to odliczania czasu w mikrosekundach, a do dokładnego odliczania czasu należy używać funkcji Timer.
Moje pytanie brzmi czy mogę pogodzić precyzyjny odczyt z ADC (z uśpieniem) i dokładny timer czy muszę wybrać albo precyzyjne ADC i niedokładny timer albo standardowy odczyt z ADC i dokładny timer? Timer1 jest taktowany przez prescaler z CLK_I/O, a podczas 'ADC Noise Reduction' , ten zegar jest nieaktywny/ wyłączony. Patrz tabela14 w datasheet; w której...
Problem leży wyłącznie w złym oprogramowaniu. Zrób to, co pisałem. Zegar 8MHz w zupełności wystarczy. Zacznij od przerwania timera.
Witam, w tych wszystkich kodach przydałaby się jeszcze nieskończona pętla główna, np.: [syntax=c]while(1) { }[/syntax] po konfiguracji TIMERa.
Ten sposób już kiedyś sprawdzałem i działał. Pamiętam, że kod zwiększający/zmniejszający musiał być w podprogramach. Liczyłem, że da się to zrobić na flagach od Timer.
Kolega czytał opis w helpie o Config RC5 ? jest tam napisane, że GETRC5 korzysta z Timera 0 , a tego samego timera używasz do multipleksowania.
3 us* 69800 = 209,4ms wiec jest to znacząca różnica. Jak za pomocą timera rozumiem poprzez porównanie tego czasu z aktualną zawartością liczka timera?
Wklep na początku przerwania : Enable Interrupts Wywnioskowałem to z pomocy bascoma (polecenie on Interrupt)
Złym pomysłem jest użycie przerwania INT - potrzebny tylko przerwanie timera. W tekócie, który zacytowałeś, napisałem jak to powinno wyglądać. Po prostu tak zrób.
Stosując polecenie Waitms nie moge uzyskać czasu opóźnienia mniejszego niz ok 10ms Więc go nie stosuj. Do tego są Timery.
Przykładów w necie jest od groma. Z częstotliwością co najmniej 50Hz musisz przełączać wyświetlacz i wartość podawana na niego. Najlepiej wykorzystać do tego przerwanie timera.
Masz ATmega8, czyli masz ADC i masz timer połączony z pinami I/O, czyli za pomocą timera możesz generować przebiegi na wyjściu. Rzecz wręcz banalna. Za pomocą ADC wykonujesz pomiar napięcia. przeliczasz go na okres, albo odrazu częstotliwość, nie wiem jak to w bascomie wyglada. W każdym razie częsottliwość ustala się przez zapisanie w odpowiednim rejestrze...
Witam. Mam pytanie dotyczące umieszczenia obsługi przycisków w kodzie, a konkretnie - nie wiem czy zrobić obsługę zegara w timerze, a obsługę przycisków w pętli głównej czy też odwrotnie, a może to i to w timerze.
timer atmega8 prosty timer elektroniczny timer prosty schemat
przycisk pieszych elektrolux zmywarka czujnik szybkie rozładowanie akumulatora
koordynator scania radio 7012b
Junkers Cerastar Smart - głośne dźwięki i stukanie przy ciepłej wodzie Numer MC341641559931 - identyfikacja i znaczenie