No i jeszcze trzeba ustawić Fusebity na kwarc zegarkowy. No akurat nie :D
Mam problem z TIMER2 - odmierzanie czasu , najlepiej 1s. Wartość b będzie zmieniała się - tylko co jaki odstep czasu. Może ktoś poratować? Albo ma może jakiś swój przykładowy programik na Timer2 z wywoływanym przerwaniem? Radzio // Testowanie timera 2 #define F_CPU 8000000UL #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h>...
Witam. Nie wiem na ile Ci to pomoże. Tak robię dla 328 z kwarcem 32k i działa poprawnie. [syntax=c] TIMSK2 = 0; ASSR &= ~(1 << EXCLK); ASSR |= (1<<AS2); TCNT2=0; TCCR2B |= (1<<CS22) | (1<<CS21) | (1<<CS20); while (ASSR & ((1<<TCN2UB)|(1<<TCR2BUB))); TIFR2 = (1<<TOV2); TIMSK2 = (1<<TOIE2);...
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.
Uzupełniając to co napisał kol. niveasoft dodam, że zastosowanie kwarcu 32,769kHz ma sens w wielu przypadkach, jednakże nie jest lekiem na całe zło :) Można bowiem do taktowania mikrokontrolera zastosować kwarce, których podstawą (jak w przypadku kwarcu 32,768kHz) jest liczba dwa np. 1,8432MHz, 3,2768MHz ... 8,192MHz, ... 16,384MHz itd. Wtedy nie ma...
Jeśli nie wykorzystujesz tych samych pinów co kwarc zegarkowy to nic się nie będzie gryzło... O ile dobrze pamiętam wystarczy podpiąć kwarc 32,768kHz bez kondensatorów pod TOSC1 i TOSC2... Raz po uruchomieniu uC odpalasz timer2 w trybie asynchronicznym i tylko włączasz albo wyłączasz przerwanie od przepełnienia... Ustawiasz preskaler tak żeby przepełnienie...
Witam. Uczę się obsługi Timera 0 w Atmega16. Napisałem sobie prosty kod który ma co ~ 2µs zmieniać stan piny na porcie D. Zegar przyjąłem 14,7456MHz. Oczywiście wszystko robię symulacyjnie w Proteus 7.8. Więc tak, preskaler ustawiłem na 0 i do rejestru TCNT0 wpisuję liczbę 225. A wzięła mi się ona stąd że: 14 745 600 : 30 = 491520 czyli prawie...
Tu nie ma żadnej filozofii. Ja co prawda programuję na ATmega16 i procedura wygląda tak: void generator_PWM(unsigned int wypelnienie) { TCCR2 =0x69; //tryb FAST PWM, bez preskalera, zeruj OC0 gdy porownanie = TRUE; f = 16M/256 = 62,5kHz OCR2 = wypelnienie; //wartosc porownywana 0..255 } Jak zrobiłeś PWM na ATmega32 to z tego co wiem...
Witam. Prawdopodobnie jest jeszcze jakaś instrukcja która też używa tego timera np. wait
Schemat ?
Przecież ze schematu (np Figure 64) jasno wynika że preskaler odnosi się zarówno do zewnętrznego oscylatora (tryb asynchroniczny) jak również do sygnału zegarowego. Wybór dokonujesz w rejestrze ASSR.
Polecam "Mikrokontrolery AVR ATmega w praktyce" Rafała Baranowskiego.Własnie uczę się z niej.Autor odwołuje sie też do danych ze strony Atmela dot. konkretnych typów kontrolerów(wiele zmian!).Książka bazuje na ATmega16 .Pozdrawiam.
Próbowałem Fast, CTC nie, ale podejrzewam że i tak CTC nic nie zmieni, zresztą dziwne że 2 tryby nie działają które są wymienione w dokumentacji :roll: Dodano po 12 http://xs222.xs.to/xs222/07500/timer0.JP... Mniej wiecej tak wyglada przebieg na OC0. Mam jeszcze pytanie czy jeżeli wykorzystuje timer2 to czy istnieje możliwość regulacji częstotliwości...
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....
No tak wiem o tym, że timer0 jest 8 bitowy, a timer1 16 bitowy. Tak chodzi mi o zegarek czasu rzeczywistego. A pwm da się zrobic na innych timerach timer2 timer3?
Problem dalej istnieje, zakreskowuję obsługę przerwania ISR(TIMER0_COMP_vect}, poprostu je wywalam i w momencie startu timera 0 wiesza się program, a wtedy przecież nie robi żadnych obliczeń. Bo nadal masz włączone to przerwanie, a nie masz funkcji jego obsługi.
dzięki za odpowiedź, chcę uruchomić na początek timer2 i timer1 w trybie przepełnienia tylko że nie bardzo daję radę,
ustawiasz bit AS2 w rejestrze ASSR wowczas Timer2 jest nim taktowany ( nie jestem pewien)
Witam, Od kilku dni próbuję za pomocą ATMega16 zmierzyć czasy: - opóźnienia jednego impulsu w stosunku do drugiego (czasy 70-100µs) - czas drugiego impulsu (czasy są 10-500µs) I wyniki są niezbyt dobre - kilka pomiarów daje wyniki całkowicie różne (a czasem nawet wartości ujemne). A próbowałem tak robić: 1. Ustawiam Timer2 na generowanie przerwania...
Spróbowałem dogłębnie zrozumieć Twój program, ale mam z tym duży problem. Timer2 ustawiasz na przerwania w celu pomiaru zadanych potencjometrami wartości. Taktowany jest 16MHz / 1024 preskaler = 15.625Hz W funkcji przerwania od przepełnienia timera2 zmieniasz mu licznik na odczytaną wartość z potencjometru regulującego wypełnienie: [syntax=c]ISR(TIMER2_OVF_vect){...
Kamyczek: "co napisał autor programu w help-ie ?" Strasznie (niechcący) wpuszczasz nas w "maliny". Autor tego programu nie pisał help-a. Autor tego programu nic nie napisał w help-ie. Napisz zamiast: "Może przed pisaniem bzdur warto zerknąc co napisał autor programu w help-ie ? Napisz: "Może w help-ie warto zerknąc? Przed pisaniem bzdur co napisał autor...
rpal ale właśnie mam w kodzie odblokowane przerwania sei(); Zmieniłem zadania Timerow. Teraz Timer1 służy do PWM, a TImer2 do zliczania czasu w dekodowaniu RC5. Proszę jeszcze raz o sprawdzenie kodu //ATmega8L kwarc 4MHZ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> volatile uint16_t g_licznik = 0; ISR (TIMER2_COMP_vect)...
Super dzieki, faktycznie teraz troszke lepiej :-) Dodano po 5 Udało się pójść o krok dalej. Część programu dotycząca licznika wygląda tak: [syntax=basic4gl] $regfile = "m16def.dat" $lib "I2C.LBX" '$lib "mcsbyte.lbx" $lib "Ds1307clock.lib" $crystal = 4000000 Config Timer2 = Timer , Prescale = 64 On Timer2 Irq100ms 'Load Timer2 Enable Timer2 Dim Licz100ms...
OCR2 = 200; A co ma z tym wspólnego timer2 ? "The counter value (TCNT0) increases until a compare match occurs between TCNT0 and OCR0, and then counter (TCNT0) is cleared". e marcus
Wszystkie, czyli 3. Kłopot stanowi jednak fakt, że Timer0 i Timer2 są 8 bitowe zatem w razie dłuższych czasów trzeba je "wydłużać" programowo zliczając odpowiednią ilość generowanych przez nie przerwań. 60s bezpośrednio się nimi nie odliczy tak jak 16 bitowym Timerem1.
Witam Napisałem prosty program używający timera1 i timera 2 do zliczania częstotliwości, Chciałbym użyć dodatkowo serwa do mojego projektu ale używając intrukcji Servo coś nie tak dzieje się z serwem . Servo nie chce ci pracowac bo masz niepoprawnie obliczaną freq., od której (w twoim programie) zależy praca serva. Również niepoprawnie masz skonfigurowane...
Witam, Mam do szanownych kolegów pytanie o niestandardowy, wydaje mi się, sposób wykorzystania timera2. Dokładniej chodzi mi o to, aby używać go w trybie asynchronicznym do zliczania impulsów podanych na wyprowadzenie TOSC1. Potrzebuję rozczaić taką możliwość, ponieważ zmuszony jestem wykorzystać dokładnie to wejście timera2 do zliczania impulsów. Testy...
... EDIT: Niestety nie bardzo to tak działa, próbuje wszystkiego ale nie moge iruchomić pozostałych kanałów. PWM-a na Timer0 nie skonfigurujesz dyrektywą Config Timer0 = Pwm ,... , bo Bascom nie przewiduje takiego trybu pracy dla Timer0(patrz Help). Natomiast PWM dla Timer2 , jak najbardziej tak ;) Config Pinb.3 = Output 'Config Timer0 = Pwm , Prescale...
na oc2 jest config timer2 = pwm , prescale = x , COMPARE PWM = CLEAR UP(dn) i zmienia sie wartość ocr2 ja nie wiem jak zrobić PWM na timerze0 w bascomie .. może ktoś doradzi ?
Wydaje mi się że się da. Oczywiście nie po całkowitym odłączeniu zasilania ale po przejściu na zasilanie bateryjne. Ale musisz dokładnie przestudiować PDF. W trybie power save procesor pobiera kilka uA a Timer2 działa. No i timer2 asynchronicznie z kwarcem zegarkowym- jak napisał tadzik85. Wszystko zależy od pojemności ogniwa. Poza tym zegar wewnętrzny...
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...
Witam. Tworzę sobie programik do sterowania 16 serwami. wykorzystuję 2 timery timer2 generuje przez przerwanie odstępy 2.2ms. każdy impuls to obsługa 2 serwów, więc aby odsłużyć wszystkie mamy 8 impulsów(18.4ms) więc impulsy na serwo powtarzają się częściej niż te 20ms. więc tu jest dobrze. Timer 2 steruje timerem1, blok A obsługuje pierwszą 8 serw,...
nie wiem czy dobrze myślę, ale to nie ma szans działać, bo procesor jednocześnie nie nadaje i odbiera... Ma szanse działać ;) zapewniam cię. Tylko trzeba to dobrze oprogramować. Wprawdzie sam kiedyś tak myślałem ale ostatnio aż się zdziwiłem że kody wygenerowane w podczerwieni z diody IR (za pomocą zresztą programu z PC'ta, który przez USART wysyłał...
Podepnę się... Wcześniej bawiłem się na ATMedze8. Tam był taki szczwany chłyt, że podłączenie 32,768 kHz do XTALi oraz ustawienie wewnętrznego RC 8 MHz dawało działanie zegara. Tak też zrobiłem w 16 i rozczarowanko. Zegar stoi... Jak już przeczytałem powinienem podłączyć kwarc zegarkowy pomiędzy TOSC1 i TOSC2 oraz skorzystać z timera2. Tylko teraz tak....
Używasz INT0 i INT1 do zliczania impulsów na linii A impulsatorów, ustawiasz generację przerwań na opadające zbocze. W przerwaniu sprawdzasz linię B danego impulsatora, jeśli B jest w stanie wysokim, to masz impuls "w lewo", jeśli B jest w stanie niskim, to masz impuls "w prawo". Pozostaje jeszcze eliminacja drgań styków... ;) Timer1 wykorzystujesz...
Jeszcze jedno pytanko: Config Timer0 = Timer , Prescale = 64 Powyzsza linijka generuje mi nastepujacy blad: Error : 96 Line : 33 Prescale value must be 1,8,64,256 or 1024 $regfile = "m16def.dat" 'dyrektywa dla mikrokontrolera ATmega16 $crystal = 8000000 'częstotliwość taktowania 8 MHz Ddra = &B11110000 'PA.7-4 wyjscia wybierajace wyswietlacz,...
PWM Timera może mieć tylko coś wspólnego z PD4 i PD5. Timer2 z PD7 a Timer0 z PB3 - zajrzyj sobie do PDF'a - to są wyjścia OC1A, OC1B , OC0 i OC2. Mogą mieć tyle wspólnego - że są właśnie wyjściami PWM - jeśli więc podłączyłeś je do mostków to nie dziwota że coś nie tak - jeśli tego nie zamierzałeś wcześniej - no ale to można tylko zgadywać - bo pytanie...
Witam Testując kod Kolegi pusiek1974 do odbioru czasu i daty NTP, chciałem go rozbudować i dostosować do swoich potrzeb. Na początek jako, że kod używa Wait'ów, których chciałem się pozbyć, chciałem dodać wywołanie przez flagę od Timer'a. [syntax=vbnet]$regfile = "m16def.dat" $crystal = 8000000 $hwstack = 64 $swstack = 64 $framesize = 64 Baud = 19200...
Wstawiam kod po sformatowaniu. ctrl+a, ctrl+i [syntax=c]/* * main.c * * Created on: 26 sty 2016 * Author: WUJEK */ #include <avr/io.h> // dołączenie głównego systemowego pliku nagłówkowego #include <avr/interrupt.h>// dołączenie pl. nagłówkowego potrzebnego do obsł. przerwań #include <avr/pgmspace.h>// dołączenie pl. nagłówkowego potrzebnego...
Ponizej przedstawiam swoj kod: #include <avr/io.h> #define F_CPU 16000000UL #include <util/delay.h> #include <avr/interrupt.h> //#include <avr/iom16.h> #include "lcd.h" #include "usart.h" #define Timer2_start TCNT2 = 0x63; TCCR2 = 0x07; //0x63 - poczatkowa 99, preskaler 1024 0x07 #define Timer2_stop TCCR2...
Ja osobiście jak narazie pisze w Bascomie. W Bascomie wygląda to tak: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 ' Konfiguracja Timera1 dla Pwm1a i Pwm1b Config Timer2 = Pwm , Async = Off , Pwm = On , Compare Pwm = Clear Down , Prescale = 1 ' Konfiguracja Timera2 dla Ocr2 Config Pinb.3 = Output...
Na poczatek zasugeruję aby kolega napisał co ma ustawione w opcjach kompilatora. Mam ten produkt (legalnie kupiłem) i niestety musze stwierdzić że zachowanie zmiennych mocno zalezy od opcji kompilatora. A może rzecz najwazniejsza. Gdzie się podziało zainicjowanie licznika podczas wejścia w procedurę przerwania, drogi kolego ? W ogóle to nie bardzo rozumiem...
Witam chcę zrobić lampke rgb sterowaną na pilota rc5, jednak napotykam pewien problem: kod programu $regfile = "m16def.dat" $crystal = 8000000 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Config Timer2 = Pwm , Async = Off , Pwm = On , Compare Pwm = Clear Down , Prescale = 1 Pwm1a = 0 Pwm1b...
Zwarcie Vcc do GND pomogło, ale dopiero takie dłuższe zwarcie ( 5 sek). Wyświetlacz ocnkął się, wyświetla dane, ale !!! ciekawostka, zegar stoi. Załaczam kod, taki wprost z Eclipsa, bez bibliotek. Jestem w trakcie przeróbki z innego projektu, proszę o wyrozumiałość. /* * main.c * * Created on: 2010-09-25 * * * PD7 - 1WIRE * PA0..PA7 - LD0..LD7 -...
W pierwszej wersji programu jak możesz to zobaczyć w pierwszym moim poście miałem niekończącą się pętle Main. To zamiast tej bez funkcyjnej pętli chciałem go usypiać. A co do sleep na koniec przerwań to robie tak ponieważ, jak daje reti to on nie usypia się ponownie tylko skacze do instrukcji po sleep :/ Edit: Znalazłem następujący bład: kończenie przerwania...
nie pamiętam bardzo testowałem to na konkretnej pompie dotąd aż za bardzo sie nie grzała a podawała prawidłowo paliwo podaje kod jakiś znalazłem z pierwszych prób może się ktoś pokusi o poprawki jeszcze kilku zapaleńców i można by wrócić do projektu chociaż czasu brak Dodano po 16 Jednak teraz bym pozmieniał elektronikę gdyż dużo zależny od tranzystorów...
Witam kolegów, mam dość dziwny kłopot. Poniższy program zawiera jedynie procedury służące do komunikacji Atmega16 z PC. Jest tu obsługa wejściowego i wyjsciowego bufora kołowego o pojemności 255znaków. Pętla główna jest w zasadzie pusta. W celu przetestowania każdy przychodzacy znak jest dodawany do bufora wyjściowego i odsyłany (echo). Program testuje...
Witam, czy jest ktoś może tu na forum, kto używał I2CSlave w Bascom'ie??? wiem, że ta biblioteka jest płatna i z chęcią bym ją kupił ale ... dobrze, że narazie miałem okazję ją przetestować. Otóż okazuje się, że wszystko teortetycznie działa świetnie, dorobiłem nawet własne rozwinięcia procedur _Master_has_data i Master_needs_data tak aby można było...
Zedytuj swój temat i napisz go jeszcze raz, tyle że tym razem po polsku. Przy okazji pamiętaj, że po kropce jest spacja, a przecinek stawia się za wyrazem, a nie przed. Ale najważniejszy jest sens i czytelny przekaz. A tak przy okazji, to jedną z podstawowych rzeczy w przerwaniu jest odłożenie a później zdjęcie rejestru SREG oraz wszystkich rejestrów...
Ależ on to ma na timerze chyba, ta flaga flag_timer2, to jest pewnie globalna dla przerwania i funkcji.
Witam. Nie bardzo rozumiem uzyskania 1sek z kwarcu 32768Hz i prescaler 128. Liczę w ten sposób : 32768Hz / 128 = 256Hz = około 4ms
przerwania timer2 przerwa timer2 atmega timer2
kineskop świecić reset elektronik akumulator budowa subwoofer aktywny tonsil
Range Rover Sport 3.0 V6 2013 – typowe usterki, DPF, LED, zawieszenie pneumatyczne Mercedes W220 S320 – ograniczenie do 3000 obrotów, tryb awaryjny, MAF, DPF, conductor plate 722.6