symulator bascoma jest bardzo dokładny i liczy co do taktu. jeżeli program opiera sie na przerwaniach timera to należy włączyć okienko "Slim Timers" , wtedy symulacja trwa trochę dłużej ale bierze pod uwagę przerwania timera. co do compare1a to jest to rejestr poruwnawczy timera1. co takt zegara jest on poruwnywany z zawartościa timera (czyli licznika)...
http://obrazki.elektroda.pl/8267947700_1... Ponad 20 lat temu jako amator hobbysta budowałem proste układy elektroniczne. Studia i styczność z informatyką spowodowały, że porzuciłem hobby pod nazwą "składanie elektroniki" na rzecz "składanie programów komputerowych". W bieżącym roku (2011) dzięki uprzejmości kolegi Jacka.M, który okazał...
Udało mi się! 'Przykład generowania fali prostokątnej niezależnie od CPU 'procesor AT Mega8 'zegar wewnętrzny 1 MHz 'piezo pomiędzy PB.1 a +5V 'UWAGA!!!, ATMEGA8 ma domyślnie załączonego Wachdoga!!!. Trzeba wyłączyć bezpiecznik!!! $regfile = "m8def.dat" $crystal = 1000000 Dim I As Byte Ddrb.1 = 1 'port b.1 wyjściowy '---------------------------------------...
potrzebuję zrobić generator na Timer 1 w ATmega 8 1kHz prostokąt. Proszę o sprawdzenie kodu czy może to działać . Siedzę nad pdf atmegi ,przeglądam konfigurację i opisy i nie bardzo rozumiem. Taktowanie wewnętrzne 1Mhz /preskaler =8/ 125 = powinno wyjść 1kHz ,pożniej jeszcze modyfikacja aby można było przełaczyc na 500 i 250 Hz. 15:44:27 ****...
Witam. Jestem poczatkujacym dlatego proszę o błachostkę. Buduje ups-a / przetwornice trafo z starego ups-a a generator 50hz ... Niema dlatego wybor padl na atmege 8 i timer1. Czy ktoś co coś jarzy mógłby mi to sprawdzić ? Byłbym wdzięczny . Oto kod : $regfile = "m8def.dat" 'atmega 8 $crystal = 8000000 '8 mhz 'INNE KONFIGURACJE Config Timer1...
Na pierwszy rzut oka w kwarcu. Nie możliwe żebyś zastosował kwarc 4915.2MHz do taktowania Atmega8 ale tu nie no to chodzi bo (chyba) masz kwarc 4.9152MHz. Sprawdz wartość _freq_time. 1. Timer1 ma tylko albo aż 16 bitów. 2. Nie zna C i nie wiem czy integer może przyjmować taką wartość.
a jak przy pomocy assemblera wyslac np 40 bitow na pin np 0.8 ? bo wlasnie ja mam podobny problem staram sie zrobic generator stanow logicznych ... taki w ktorym moglbym sobie zmieniac co ma generowac procesorek w danym czasie ,ale jestem za slaby w programowaniu pomoze ktos ? ;/
Witam Mam do zrobienia generator na atmedze w którym zadaję częstotliwość oraz wypełnienie sygnału prostokątnego. Udało mi się odpalić i generator i PWM z osobna ale mam problem z ich połączeniem. Chcę taktować Timer2 (na nim robię PWM) z wyjścia Timera1. Czysto teoretycznie wydaje mi się to możliwe ponieważ Timer2 może pracować w trybie asynchronicznym....
Mam problem z przerwaniem od timer1, wywołuje się ok. 64x wolniej niż wynika z obliczeń. Przykładowy prosty program: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Dim 1ms As Word 1ms = 0 Dim A As Byte A = 0 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5...
W Atmega8 masz 3 timery z czego: - 8 bitowy timer0 ma wejście T0, ale nie ma trybu CTC ani PWM , - 16 bitowy timer1 ma tryby CTC i PWM oraz wejście T1 i dwa wyjścia OC1A i OC1B, - 8 bitowy timer 2 z trybem z CTC i PWM, ale bez wejścia T2, ale ma wyjście OC2. Dodatkowo możesz podłączyć kwarc będący potęgą liczby 2, a to pomaga bo timery mają preskalery...
Witaj. Zajrzałem do helpa - Timer1=Czestotliwosc jest prawidłową instrukcją. Wcześniej masz - Dim Czestotliwosc As Byte a później operujesz na 16-bitowym Timerze1. W ATtiny26 Timer1 jest 8-bitowy, ale w Mega8 już 16-bitowy. Zmień na - Dim Czestotliwosc As Word i sprawdź rezultat. teedd
Witam wszystkich serdecznie, używając Timer1 w Atmega8 chciałem wygenerować 2 przebiegi prostokątne na wyjściach OC1A i OC1B (każdy z wypełnieniem 50%). Na razie skonfigurowałem licznik w trybie 4-CTC. Zmieniając wartość w rejestrze OCR1A - zmieniam częstotliwość przebiegu na wyprowadzeniu OC1A - wszystko idzie gładko. A teraz pytanie - jak mogę równolegle...
Witam serdecznie forumowiczów. Od dłuższego czasu nie miałem do czynienia z AVR. Ostatnio zaszła potrzeba wykonania pewnego urządzenia. Do tego celu zaprzęgnąłem Timer1 ustawiony w tryb CTC. W efekcie miało być przerwanie generowane co 1s. Niestety generuje się o wiele rzadziej. Co robię nie tak? OCR1A = 0x7A11; TCCR1A |= (1<< WGM12);...
Witam, potrzebuje zbudować generator z 2 częstotliwosciami rzędu kilku 1-2kHz. Do tego celu przeznaczyłem Timer1 i rejestry OCR1A i OCR1B i tryb CTC. Generator będzie miał dodatkowo zmieniane wypełniania impulsów, wiec zbudowałem sobie taki odo program: [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 64 'Stos Systemowy , Gosub...
Witam joboo proszę podpowiedz mi jak pozmieniać w kodzie żródłowym mam generator kwarcowy 14.3Mhz - czy może być taki ??? Kawałek kodu: $regfile = "m8def.DAT" $crystal = 16000000 / w tym miejscu mam zmienić ?? / Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte , Maxi As Byte Dim Godzjed As Byte , Godzdzies As Byte , Wyswietl...
Proponuję użyć dowolnego uC z dwoma licznikami, ale niekoniecznie atmega8 ;) Pierwszy pracuje w trybie pomiaru częstotliwości lub pomiaru czasu (Input Capture). Drugi pracuje jako generator przebiegu wyjściowego, pędzony np. z zegara systemowego. Wartość zmierzona przez pierwszy licznik jest argumentem funkcji modyfikującej częstotliwość i/lub wypełnienie...
Witam, potrzebny jest mi generator fali PWM o zmiennej częstotliwości i wypełnieniu. Górna częstotliwość wynosi 150kHz, dolna 10kHz. W programie wykorzystuję dwa kanały adc (tj. adc1, adc2) oraz jedno wyjście dla wspomnianej fali (tj. PC5). Atmega8 pracuje z zewnętrznym kwarcem 16MHz. Górna częstotliwość wymaga 106 cykli zegarowych, dolna natomiast...
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...
Witam, Wiem, że podobne tematy były jak mój lecz nie znalazłem rozwiązania a siedzę już ponad tydzień czasu nad tym. Robię czujnik reagujący na odbitą wiązkę z diody IR 920nm. Wykorzystuje atmega8 do generowania nośnej 36kHz lecz mam za mały zasięg. Reaguje dopiero na odległości około 20cm a potrzebuje 1m. Pin B.1 odpowiedzialny jest za podawanie impulsu...
Witam wszystkich, jestem początkujący w AVR i potrzebuje porady. Napisałem program do zliczania czasu (timer0) oraz generacji prostokąta na 40khz (timer1- fast pwn 16bitowy) Ogólnie to atmega pracuje na 1Mhz nie daje kwarcu.. Moje pytanie czy jest możliwość zrobienia generatora na 40kHz na innym timer0 lub timer 1 (8 bitowe) bo timer 1 jest 16-bitowy...
KaJakKrzysztof: W katalogu Bascoma w program files masz katalog Samples. Jest tam o ile się nie mylę zegarek, jakiś bardziej skomplikowany zegarek i mnóstwo innych przykładów zastosowań timerów, przerwań itd. Na pytanie - czy coś takiego będzie działać odpowiedz sobie sam, załaduj program do AVR-ka. Timer od countera różni się tym, że służy do ODLICZANIA...
Chcę uzyskać przerwanie INT0 lub timer od przerwania dokładnie 1kHz. Aktualnie medzia8 pracuje na 16MHz i ni w ząb nie idzie uzyskać precyzyjnie 1kHz wykonując jeszcze chociaż zmienna++ by odliczać czas 1 ms w owym przerwaniu (ctc lub ovf). Świadom jestem niedokładnego kwarcu zewnętrznego dlatego poszedłem w inne rozwiązanie. Wykorzystałem przebieg...
Niestety wychodzi teraz trochę moje lenistwo, uznałem że jeśli zbyt wysoka dokładność nie jest potrzebna to nie ma co się bawić. :arrow: tmf 1. Powinienem go podłączyć tak jak w mojej płytce testowej http://www.elektroda.pl/rtvforum/topic22... . 2. Rzeczywiście z rozpędu podłączyłem AREF do VCC, na szczęście nie stwarza to w tym przypadku problemów...
Witam Od kilku lat bawię się Bascomem i jest to fajny kompilator, ale tylko do pewnego momentu. Helpa można zużyć spokojnie jako papier toaletowy. Publikacje Pana Wiązani są dobre ale tylko na początek zabawy. Ostatnio pracuję nad pilotem RTV który ma obsłużyć 4 urządzenia. No i zaczęły się schody. Pierwszy problem to sprzętowy generator nośnej ok....
Witam, udało mi się coś wyskrobać i zrobiłem na razie sam generator częstotliwości, właściwie jakoś tam działa ale chyba napisałem to dookoła , może ktoś spróbował by to jakoś poprawić. Nie dodałem jeszcze generatora PWM, próbowałem ale nie wychodziło mi, chciałem taktować go z wejścia T1 ale nie udało mi się to, nie wiem jak go zmusic do tego żeby...
Zamieszczony wcześniej kod jest sprawdzony - działa na atmega8 Również po pomyfikacjach portów działa na attiny2313 i zajmuje 65% flash, wiec jest jeszcze miejsce na jakieś "wodotryski". Używam Bascom demo w wersji chyba najnowszej: 1.11.8.7 build 001 MS windows XP SP-2 Program pod attiny2313 na płytce uruchomieniowej ZL11AVR (Płytka ZL2AVR pod megę...
Przecież to jest taka sama metoda jak tutaj opisywana.
Właśnie przed chwilą też uruchomiłem zegar na ATMega8 choć wykorzystujący kwarc 32kHz (tzw. zegarkowy) niezależny od generatora głównego procesora. Jeżeli chcesz pozostać przy swoim pomyśle (równie dobrym) to w BASCOM-mie po kompilacji przejdź do opcji programatora gdzie będziesz miał trzy zakładki FlashROM ,EEPROM i Lock and Fuse Bits. Więc wybierz...
Po pierwsze jakie czasy chcesz obliczać i jakie przerwania po co ??? To jest bascom nie assembler, deklarujesz na wstępie programu prędkość kwarcu a kompilator troszczy się o resztę tj. dajesz deklarację $regfile = "m8def.dat" $crystal = 12000000 Po drugie, procedura obsługi wyświetlaczy LCD (mowa tu o alfanumerycznych HD44780) jest w BASCOM zaimplementowana...
Ja się tam na BASCOMie nie znam, ale ten program to wyglada mi na generator liczb pseudolosowych ;) Weź się skup i zastanów co chcesz uzyskać. Kompletnie nie rozumiem, co Ty robisz z tym T. Co to ma reprezentować? Podpowiem, że jeżeli chcesz wyświetlić liczbę X z zakresu 0..99 na swoim wyświetlaczu, to byłoby to chyba coś takiego (zakładając, że wyświetlacz...
Witam. Na forum jestem nowy, ale Atmege8 gryzę już od roku:). Zakładam że czytałeś datasheet'a od Atmega8 i niestety nie udało Ci się zrozumieć.Jeżeli tak to Ci pomogę. Po pierwsze w Atmega8 masz trzy timery/countery: -Timer0 8bit -Timer1 16bit -Timer2 8bit Timer1 i Timer2 możesz wykorzystać jako PWM,gdyż mają wbudowaną taką funkcje. Wiadomo że 16bitowy...
Jeżeli nie używasz przerwań to ich nie włączasz. Wprawdzie nie włączasz głównego, ale włączasz od timera (TIMSK1), dlaczego? Wzór z dokumentacji dla CTC: F = Fclk / (2 * N * (1+OCR1A)) = 16000 / ( 2 * 8 * 2000 ) = 16000 / 32000 = 0.5Hz Sterowanie pinem OC1A dla CTC: [syntax=c]TCCR1A = 1<<COM1A0[/syntax] .
Witam. Mam takie o to zagadnienie, potrzebuje zrobić regulowany generator 0-15hz. Na wyjściu sygnał prostokątny, albo tylko same impulsy mogą być. Wszystko było by fajnie, ale muszę do tego użyć Timera i przerwania. A nie mam w ogóle pomysłu od czego zacząć i jak to zorganizować. Potrzebuję zrealizować coś takiego aby nie zależnie od głównej pętli...
Jak jest z dokładnością zegarka RTC w Atmega8? Słyszałem plotki, że nie chodzi to zbyt idealnie. Potrzebuję zrobić zegar do zliczania tylko dni i zastanawiam się czy jest sens stosować zewnętrzny układ RTC. Układ musi mieć podtrzymanie zegara z baterii/kondensatora w przypadku zaniku zasilania. Śmiało możesz użyć np. Timer1 w trybie CTC jako generatora...
(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...
W uproszczeniu częstotliwość sprzętowego generatora PWM to następująca zależność: F oscylatora / Prescaler / X, i tak: dla rozdzielczości Pwm=8 bitów X=510, dla rozdzielczości Pwm=9 bitów X=1022, dla rozdzielczości Pwm=10 bitów X=2046. Przykład dla rozjaśnienia: F kwarcu = 8MHz, rozdzielczość generatora PWM=9 bitów (możliwe 8,9 i 10), Prescaler=8 (możliwe...
a ustawiłeś Fuse Bity?? Bo jeśli nie masz ustawionych to ATmega pracuje z częstotliwością 1MHz. Musisz ustawić Fusy na albo 8MHz na wewnętrznym generatorze albo ustawić Fusy na zewnętrzny kwarc. i mniej więcej kod by tak wyglądał: $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1...
Czyli liczy 10x za wolno. A czy dobrze ustawiłeś w programatorze fusebit odpowiedzialny za to z jakiego generatora ma korzystać? Bo wygląda że korzysta z wewnętrznego 1MHz
Witam Wszystkich! Chciałbym się poradzić w temacie pracy PWM(timer1) w ATMega8. Robię układzik który ma sterować obrotami silnika DC i problem polega na tym ze gdy wykonuje procedurę odswierzania LCD (Bus mode - 4bit), generator na czas obsługi LCD przestaje pracować. Czy zna ktoś moze przyczyne takiego zachowania?
Grala1 - Nie wiem czy ta wersja spełni oczekiwania : '$prog &HFF , &HE1 , &HD9 , &H00 ' Fusebity fabryczne !!! $sim ' dyrektywa opuszczania zwłoki (usunąć ten wiersz przy wgrywaniu w chip) $regfile = "m8def.dat" ' dyrektywa kompilatora o rodzaju procka ATMega 8 $crystal = 16000000 ' określenie kwarca 16 MHz Config Pinb.1 = Output...
Witam ! Mam mały problem mianowicie potrzebuję za pomocą procesora Atmega8 wygenerować dwa przebiegi odwrócone w fazie (na wyjściach OC1A i OC1B) Czy jest to możliwe do realizacji programowej ? Pozdrawiam KOD (dwa generatory): Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Compare B = Toggle , Clear Timer = 1 Compare1A=100 Compare1B=100
Cześć jestem nowy na forum więc się przedstawię jestem Kamil mam 14 lat i od niedawna zajmuję się programowaniem. problem w tym że jestem początkujący i w sumie nie rozumiem kilku rzeczy . :| Dlatego proszę o wyrozumiałość. Moje pytanie dotyczy generatora 36 khz napisałem prosty program, ale oczywiście nie działa, ponieważ sedno problemu tkwi w tym...
Dodatkowy wpływ na błąd ma niedokładność częstotliwości generatora kwarcowego. Błąd w sekundach na dobę, wyraża się wzorem: \Delta=86400*(1-\frac{fwzr}{f}) \Delta - błąd w sekundach na dobę (wartość ujemna oznacza spóźnianie się) fwzr - częstotliwość wzorcowa (czyli to co ma być np. 4000000 Hz) f - częstotliwość rzeczywista kwarcu lub generatora kwarcowego...
Nie wiem dlaczego tak jest, ale kiedy zmieniłem jedną linijkę programu program zaczął w miarę poprawnie działać. Chodzi o zbocze wyzwalania funkcji przechwytywania w tej części programu gdzie jest inicjacja Timer1 , należy zainicjować Timer1 tak, aby reagował na zbocze opadające. TCCR1B&=~(1<<ICES1); //wyzwalanie przechwytywania zboczem opadajacym...
Ostatecznie zdecydowałem się na wykorzystanie trybu ICP w liczniku TIMER1. Jest to najlepszy sposób liczenia współczynnika wypełnienia w tym mikrokontrolerza. Kod pomocniczy zaczerpnąłem z tego forum, ktoś nieżle nawet mierzył stan wysoki z generatora. Pozdrawiam. Zamykam temat.
A czy mogę prosić o napisanie programu w BASCOMie generatora 36kHz w przewaniu TIMER1 ?? Dodano po 23 Atmega8 10Mhz - Kwarc
Jeśli to np. timer1 to ustawiasz to bitami w rejestrze TCCR1A (przykład dla ATmega8): http://obrazki.elektroda.pl/3181773500_1... Przykład dla kanału A pin OC1A: [syntax=c]TCCR1A |= (1<<COM1A1) | (1<<COM1B1); //lub TCCR1A |= _BV(COM1A1) | _BV(COM1B1);[/syntax]
Uruchomiłem wszystko zgodnie z tym ale nie wskazuje wyniku gdzie jest błąd Sygnał z generatora na razie podaje na pin D7 $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Dim Wynik As Long Config Timer1 = Counter , Edge...
Witam czy ktoś potrafi podać przyczynę dlaczego zmienna "czas" raz przyjmuje wartość 1000 a raz 768 w tym programie? TO liczy impulsy z generatora LC, T1 natomiast odlicza odcinki 1ms. [syntax=c] #include <avr/io.h> #include "HD44780.h" #include <util/delay.h> #include "Przerwanie_INT0.h" #include <avr/interrupt.h> #include <math.h>...
Witam Napisałem kilka linijek kodu, który ma działać jako generator częstotliwości z częstotliwością regulowaną przez SPI przez inny procesor. Mam zadeklarowaną zmienną globalną: unsigned int tim_reg_Val=3030 i zainicjowany timer1: TIMSK=(1<<TOIE1); TCNT1=tim_reg_Val; TCCR1B=0b011; sei(); Przełączanie stanu wyjścia załatwiam w...
Witam! Potrzebuję wykonać na Atmedze generator przebiegu prostokątnego w zakresie częstotliwości 0-10kHz do współpracy ze sterownikiem silnika krokowego. Nie jestem najlepszy w obsłudze timerów więc stąd prośba o pomoc. Chciałbym aby wybrana częstotliwość mogła być zadawana przy pomocy przycisków "góra", "dół" oraz potencjometra. Udało mi się stworzyć...
Co w tym dziwnego? W czasie 0,1s. generator wykona 400000 taktów. Jeśli przez ten czas pętla zwiększa zmienną o jeden i na końcu wychodzi 9300 to znaczy, że pętla wykonuje się w ok. 43 takty. (niewielki ułamek w wyniku 400000/9300 może pochodzić od Impw = 0 Timer1 = 0, które wykonują się jeden raz po uruchomieniu Timera.)
atmega8 timer1 timer1 atmega8 timer1 generator
volvo silnika dławik składowa symetryczny regulator napięcie wyjścia
zasilacz drukarki brother zasilacz drukarki brother
Samsung Galaxy XCover 5 – zmiana położenia aplikacji na liście i ekranie głównym Instrukcja obsługi Pioneer RT-707 - Gdzie znaleźć?