ADTS2:0 dla trzech 0 jest free running mode. Dodano po 2 Doczytałem, że konwersja jest wykonywana wtedy gdy jest odczytywany ADC. Dodałem zmienną volatile int w main i w pętli głównej zapisuję do niej rejestr ADC. Teraz zadziałało. Czy to jest dobre rozwiązanie? [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #define LED1 PC0 int...
Robisz prosty błąd w składni. Poczytaj w helpie o Load. Nie tak: [syntax=basic4gl]Load Timer1 = jakas_wartosc[/syntax] tylko tak: [syntax=basic4gl]Load Timer1 , jakas_wartosc[/syntax] Z tego co pamiętam można również tak. przykładowo: [syntax=basic4gl]Timer0 = 249[/syntax] co jest równoważne: [syntax=basic4gl]Load Timer0 , 6[/syntax] Ale to sobie musisz...
Witam. Programuję w AVR Studio-Gcc ATMege 16 i muszę wykoszystać Timer1. Potrzebuję żeby liczył on od 0 do max (65535?) z jak największą częstotliwością, np z częstotliwością procesora (preskaler na 1? czy w ogóle się go nie ustawia). I co jakiś czas będę potrzebował odczytywać jego wartość i zapisywać do zmiennej/tablicy (nie potrzebuje używać tutaj...
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.
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 :...
Najpierw dajesz Config INT0=Falling Wprowadzasz zmienną opisującą wybrane zbocze wyzwalające przerwanie (Edge_) i w procedurze obsługi tego przerwania: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End If Niektóre AVR'y umożliwiają konfigurację typu Config INT0= Change Wtedy przerwanie wywoływane będzie po stwierdzeniu...
A wiec pwm masz na oc1a i oc1b to jest timer1 (jak sie nie myle). Poza tym masz 3 pwm oc2 na timerze2. Wiec jak bys chcial jeszcze czas liczyc lepiej uzyj jakis zew. ukladu, bo zostal ci tylko timer0, na ktorym bedzie ciezko to osiagnac. Na timerze1 i 2 mozesz zrobic sterowanie diodami rgb. Wlasnie widze ze ten czujnik wilgotnosci nie ma mozliwosci...
Witam, 1. W postach używaj znaczników kodu tak aby kod był czytelny i wyróżniony 2. W programie brak inicjalizacji stosu. 3. Rozkaz skoku do obsługi przerwania od SPI masz pod złym adresem. Adresy wektorów przerwań są co 2 słowa (4 bajty), a rozkaz RJMP zajmuje tylko 1 słowo (2 bajty) tym samym RJMP SPIIntVecror znajduje się pod adresem 0x000A (0x0014...
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...
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:...
rzeczywiscie nie doczytałem, juz dziala i najpierw odczytuje TCNT1L , a pozniej TCNTH1, w odwrotnej kolejnosci zawsze 0 pokazuje
Mam problem aby zmienić taktowanie timera z wew. generatora atmegi na zew. kwarc zegarkowy (timer 1). Po podłączeniu kwarcu do wejść TOSC1 i TOSC2, ustawiłem flagę CS12 i zmieniłem liczbę zliczanych cykli. Po tych zmianach nic się nie dzieje (nie są zliczane sekundy itd.). Co jeszcze trzeba zrobić? Szukałem, ale niby nic więcej nie trzeba było ustawiać...
Kolego, byś się zdecydował... albo: SIGNAL (SIG_OUTPUT_COMPARE1A ) albo: ISR (TIMER1_COMPA_vect) a nie: SIGNAL(TIMER1_COMPA_vect) Z tym, że SIGNAL już się nie powinno stosować. A tak to każdy xxxx ma swój strój... Konfiguracja Timera jest ok. Ja bym delikatnie jeszcze zmienił kod. np: TIMSK = 0b00000000; // WYLACZENIE TIMER1...
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...
Witam Przekopałem całe forum manuala i mam kłopot bo nie znalazłem odpowiedzi na moje pytania. Polecam Ci , jeszcze jeden manual : [url=http://pierwszeliceum.bedzin.pl/ftp... Opis i zasada działania TIMER1 w ATMega16 , rozpoczyna sie od strony 23.Jeśli zrozumiesz - a powinieneś...
witam jest zrodełko w bascom z obsługą Timer1 ale niepotrzebuję aby timer1 obsługiwał mi port zewnetrzny T1 (portb.1) w atmega16 ,jak mozna wyłaczyć go z obsługi przez timer1 w Bascom ? poniewarz potrzebuję go do sterowania lcd i chce go z tego powodu wykluczyć :(
Wydaje mi się że problem został "zamieciony pod dywan" Atmel podaje żeby nie stosować ATMega163 w nowych projektach tylko ATMega16 http://www.atmel.com/atmel/acrobat/doc11... Którą wersję Bascoma używasz? A jak zamiast start TIMER0- wpiszesz do rejestru TCCR0 CS02=1, CS01=1 a CS00=0-to będziesz miał lepiej. Dodano po 7 Tak to jest jak się pisze w...
Witam! Od kilku dni siedze i nie mogę nic wymyśleć :( Bez ogrudek - podaje źródło: $regfile = "m16def.dat" $crystal = 8000000 'definiowanie zmiennych i stałych Dim T As Integer Dim Licznik_przerwan As Byte Dim Dioda As Bit 'konfigurowanie interfejsu 1Wire Config 1wire = Portd.1 'konfiguracja wyświetlacza Config Lcdpin = Pin , Db4 = Portc.6...
U mnie w ATMega16 wyglądało tak: Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down Oczywiście działa. Mam wersję Bascoma 1.11.7.7 Pozdrawiam.
Taki bubel całkowicie krzyżuje mi plany Masz rację, zrobiłeś bubel ;) który na szczęście można naprawić na kilka sposobów, z których najprostszy to wywołanie sei() w funkcji obsługującej przerwanie. Dlaczego tak się dzieje - po prostu dlatego, że na początku obsługi przerwania samo z siebie wywołuje się cli(). Najczęściej unika się tak długo trwających...
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?
Witam, Opiszę może krótko sytuację: mam atmega16, na timer1 mam ustawiony tryb pracy pwm, używam kilku pinów na PORTD i PORTA do sterowania mostkamiH. Potrzebuję odmierzanie czasu 10ms i chciałem to zrealizować przy pomocy przepełnienie od timera0 lub timera2. Niestety kiedy chcę obsługiwać przerwanie od przepełnienia T0 lub T2, to całkowicie psuje...
Chodzi mi konkretnie o tryb 14 i 15, który dostępny jest wyłącznie w Timer1
Wiem że atmega16 ma tryb CTC który próbowałem bezskutecznie włączyć. Kolega Zumek napisał że bascom ma w tym miejscu błąd i nawet po zastosowaniu jego wskazówek nie mogłem tego trybu uruchomić a było by to najlepsze rozwiązanie. Męczę się już z tym przebiegiem strasznie i nic mi nie wychodzi. Może ktoś by mi napisał gotowca do bascoma jak skonfigurować...
The Fuse Bits has nothing to do with a PWM. but in this page write Procesor taktowany jest kwarcem 16MHz. Odtwarzanie stereo obsługiwane jest za pomocą dwóch wyjść PWM od Timera1 czyli OC1A oraz OC1B. Na wyjściach pinów podłączyłem kondensatory 100uF. And whats meaning in this quote terms timer1 OC1A and OC1B, what is timer1 ?
nie bardzo rozumiem:/ Chodziło o to że, poprzednio błędnie wstawiłem wykorzystanie OVF1. Jeżeli Timer1 pracuje w CTC mode, to wcześniej się wyzeruje przy Compare ustawionej wartości i nie dojdzie do OVF1. Odnośnie fragmentu codu: W jakim celu w ogóle zatrzymujesz licznik0 ? Zatrzymanie, odczytanie zawartości, zerowanie stanu i ponowne uruchomienie...
dzięki za odpowiedź, chcę uruchomić na początek timer2 i timer1 w trybie przepełnienia tylko że nie bardzo daję radę,
Witam ! Tworzę projekt stacji pogodowej za pomocą ATMEGI16 + LCD 2x16. Tworzę licznik impulsów który zliczałby mi czas pomiędzy zboczami impulsów (prędkość obrotowa wiatru) Znalazłem w sieci program który działa na Atmega8 + 16MHZ kwarc. [url=http://mikrokontrolery.blogspot.com... Chciałbym go przerobić na Atmega16 na...
Musisz to tylko dopasować Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1
zmieniłem kod programu: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include "hd44780.h" #include "stdlib.h" char Buffer[20]; int TCNT0_WART=0; volatile unsigned long imp_curr=0; volatile unsigned long imp_prev=0; uint32_t displ=0; int main(void) { //TCCR0 |=(1<<CS00)|(1<<CS01)|(1<...
Nie tak nerwowo, na stronie 94 z ATmega16 jest fajny rysuneczek Timera1 z układem przechwytywania oraz co może być źródłem przechwytywania. Jak widać są dwa, jedno to komparator a drugie to wejście ICP. Co do wektora przerwania od przechwytywania to jest chyba adres $ooA a nie $00C ! Ten jest wektorem od układu porównania A z licznikiem Timer1
temat rozwiązałemprzy pomocy kolegi Dr_DEAD ,zastosowałem Timer1 do zliczania impulsów i wszystko chodzi jak nalezy, sprawdzałem do 1000obr, więc dzięki wszystkim za pomoc B.
Przycisk powiadasz. Wg. mnie przyciski najlepiej obsługiwać w polling-u, załatwiając od razu kwestię eliminacji odbić styków. W tym, konkretnym przypadku, może w przerwaniu TIMER1 najpierw wykonywać rzeczy krytyczne czasowo, a potem sprawdzać przycisk?
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...
A tak to by to zadziałało ?? Config Timer0 = Timer , Prescale = 64 Config Timer1 = Timer , Prescale = 64 Dim W As Byte W = 10 Do If P_gora = 0 Then Incr W End If If P_dol = 0 Then Decr W End If If Ped1 = 1 Then Start Timer0 Start Timer1 Set Silnik1 Set Silnik2 End If If Ped2 = 1 Then Set Silnik2 End If If Sens = 0 Then Reset Silnik1 End If If Kran1...
witam. znalazłem na forum taki programik pod bascom , który miał sciemniać i rozjaśniać diodę. Kod: $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1 Dim I As Byte Do For I = 1 To 255 Pwm1a = I Waitms 50 Next I For I = 255 To 1 Step -1 Pwm1a = I Waitms 50...
Możesz wykorzystać timer1 i trzy zmienne... sekundy, minuty, godziny... Przy częstotliwości 8MHz prescalerze 256 i warotści początkowej 34286 teoretycznie przepełenienie następuje dokładnie co sekundę...
Witam Mam nadzieję że doświadczeni fachowcy pomogą. Potrzebuję zmierzyć ile impulsów z Timer1 mieści się w zewnętrznym impulsie. Doczytałem informacje że można to zrobić poprzez przechwycenie zawartości Compare1a po podaniu tego zewnętrznego impulsu na pin. ICP1. Pewno są na to też inne sposoby , o których nie pisze w pomocy i w googlach. Nie wiem od...
Zrób tak żeby w przerwaniu zatrzymywało tylko licznik i startowało go na nowo i zapisywało to do jakiejś zmiennej. Potem w pętli głównej robisz obliczanie obrotów na bierząco = cały czas. do tego można użyć jeszcze tajmer0 aby co jakiś czas odświerzyć wynik na jakimś wyswietlaczu. W ten sposób procek cały czas będzie coś robił. A swoją drogą to chyba...
Witam Chciałem zrealizować program do odmierzania czasu na kwarcu zegarowym. Podłączyłem go do pinów portu B (t1, t0). Program wyglada następująco: [syntax=basic4gl]$regfile = "m16def.dat" $crystal = 8000000 Config Timer1 = Timer 'Oscylator wewnętrzny Enable Interrupts Enable Timer1 Dim Czas As Byte 'On Timer1 Odmierz Do On Timer1 Odmierz Locate 1 ,...
Może coś takiego $crystal = 11059200 Dim Czestotliwosc As Long 'w twoim przypadku może być Byte Const Licznik = 22336 ' aby Timer1 przepelniał sie co sekundę Config Timer1 = Timer , Prescale = 256 Config Timer0 = Counter , Edge = Falling On Timer1 Czas 'On Timer0 Zlicz Enable Interrupts Enable Timer1 'Enable Timer0 'Pomiar czasu Counter1 = Licznik Cls...
Zajmiemy się na początek faktem, że ATmega16 posiada trzy przerwania zewnętrzne. Na pinach: D2 - INTO 0 D3 - INTO 1 B2 - INTO 2 Więc Podłącz PCF pod pin B2. Natomiast Timer1 pozostaw do ciekawszych rozwiązań. Dokładniej do ominięcia Waitms. Podłącz PCF i się Odezwij, będziemy kontynuować.
$regfile = "M16def.DAT" $crystal = 8000000 $baud = 57600 Dim Czestotliwosc As Long Config Timer1 = Counter , Edge = Rising Print "Licznik" Enable Interrupts Enable Timer1 Do Start Timer1 Wait 1 Stop Timer1 Czestotliwosc = Counter1 Print "Freq: " ; Czestotliwosc Counter1 = 0 Loop Sygnał podaję na portb.1 i wszystko śmiga. Nie wiem tylko dlaczego nie...
Witam, podczas budowania dalmierza ultradźwiękowego natrafiłem na problem którego nie potrafię rozwiązać, a nawet lokalizować jego przyczyny. Sama procedura pomiarowa, tj, generacja fali i odebranie wygląda dobrze. Problemem jest, że np. mierząc wciąż jedną i tą samą odległość dostaję wyniki typu 43cm, 43cm, 38cm, 39cm, 43cm, itd. [syntax=c]#define...
Pozwalam sobie zamieścić 'żyjący' przykład korzystający z przerwań: Zakładam że zegar w mojej atmedze ma 16MHz :) Program na przerwaniach timera0 robi 'pracę' programu, konkretnie konwersję A/D z portu A0, i robi to około 60 razy na sekundę Na przerwaniach timer1 odświeżany jest ekran LCD (przerwanie wywoływane 30 razy na sekundę) Na porcie A znajduje...
Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Up Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Pwm = 8 Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Up , Pwm = 8 Ocr2 = wart Ocr0 = wart Pwm1a = wart Pwm1b = wart
Co do zliczania ilości przerwań w ciągu 1s, to zadeklaruj sobie jakąś zmienną globalną (+volatile) którą inkrementujesz przy wywołaniu przerwania INT, puszczasz timer i po przekroczeniu 1s odczytujesz tą zmienną i wiesz ile razy nastąpiło przerwanie INT, a następnie zerujesz tą zmienna itd. Adekwatnie tak _BV(1) itd. :) Biblioteka do LCD 4bit, też...
Witam. Z definicji liczba instrukcji w obsłudze przerwania powinna być minimalna, by mogło się ono maksymalnie szybko wykonać. Tymczasem w przypadku mojego programu liczba instrukcji w obsłudze przerwania była stosunkowo duża. By wybrnąć z tego problemu zamierzam w przerwaniu ustawić flagę która oznacza, że przerwanie zostało wygenerowane, natomiast...
Witam :) Po kilku dniach zabawy udało mi się zbudować układ składający się z ATMEGA16 (kwarc zewnętrzny 8 MHZ, rs232) i: - czujnika podającego na pin A1 napięcie 0.2-4.7V - czujinka podającego częstotliwość 4-40kHz na pin PBO. Po przestudiowaniu podstaw BASCOMu i lekturze forum udało mi się napisać oddzielne programy do obsługi tych czujników. Jednak...
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...
Mam pewien problem, mianowicie zrobiłem sobie komputer do samochodu, liczy mi spalanie, predkosc, przejechany dystans, na ile starczy jeszcze paliwa, spalanie chwilowe temp i jeszcze pare innych rzeczy. I mam 2 problemy: 1 - kiedy włącze światła wszystko sie zawiesza....(musze odpalac auto z włączonymi swiatłami wtedy komp się uruchamia bez problemu)...
timer1 winavr timer1 licznik timer1 odlicza
transit instrukcja metal topić piła silnik
schemat peugeot boxer signum xenon
Świergot w panelu klimatyzacji Renault Laguna 3 2.0 Najlepszy pasek napędowy do Aprilia SR 50 AC 2016