To co napisał kol. Krauser jest bardzo istotne, ponieważ włączasz przerwanie od porównania (1<<OCIE1B), a nie masz funkcji jego obsługi, co de facto powoduje skok do adresu 0000h, czyli rozpoczęcie działania programu od początku.. Drobna uwaga do komentarza: [syntax=c]TCCR1B |= (1<<CS12)|(1<<WGM12) ; // prescaler 512[/syntax] W Atmega8...
A może przyczyną jest nie wyzerowany licznik preskalera (strona 75): Bit 0 PSR10: Prescaler Reset Timer/Counter1 and Timer/Counter0 When this bit is written to one, the Timer/Counter1 and Timer/Counter0 prescaler will be reset. The bit will be cleared by hardware after the operation is performed. Writing a zero to this bit will have no effect. Note...
No to dobrze... uC taktowany jest najniższą dostępną z wewnętrznego RC częstotliwością 1MHz... Ustawiam prescaler na 1 i mam przerwanie co 256us... Czy nadal powinienem coś wpisywać do TCNT0...?.?.?
Równie dobrze można dołączyć dodatkowy zewnętrzny prescaler. Skoro sygnał ma już częstoliwość 256 razy mniejszą, to kolejny prescaler będzie na mniejszą częstotliwość, do procka będzie dochodzić jeszcze wolniejszy sygnał.. jeśli chodzi o pomiar samej częstotliwości, to taki zabieg niczemu nie zaszkodzi, a może nawet sprawić, że będzie można mierzyć...
Prawie. Cytat z datasheet'a: (opis bitu PSR w SFIOR) When this bit is written to one , the Timer/Counter1 and Timer/Counter0 prescaler will be reset. The bit will be cleared by hardware after the operation is performed. Writing a zero to this bit will have no effect.
Udało mi się odpalić program z książki Pana Wiązani, ale tam timet odmierza 1s Jak to przeliczyć? Jest jakiś na to wzór? Rzeczywiście musiało się 'udac odpalić' bo ten program nie jest pozbawiony błędów (!) \ A jak zrobić żeby odmierzał np 10 sekund? Zmiana preskalera wydłużyła max do 2sekund czas. Aby timer1 odmierzył inne/dowolne interwały czasu,...
Witam, chciałbym przy użyciu Atmega8 i zewnętrznego kwarcu odmierzać i zliczać setne części sekund, sekundę mogę łatwo wyłapać z timera1 według przykładowych obliczeń 4000000MHz / 256 = 15625 65536 - 15625 = 49911 lub 8000000Mhz / 256 = 31250 65536 - 31250 = 34286 Nie mam jednak pomysłu jak....... Z góry dziękuję za pomocne wypowiedzi. Aby odmierzac...
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...
Jaka jest maksymalna częstotliwość pracy kwarca wewnętrznego Atmegi8? ATmega nie ma w środku kwarc u , tylko oscylator RC, to tak gwoli ścisłości. Mam ustawione 4Mhz i kiedy ustawiam prescaler w timerze 16bitowym na 64 (TCCR1B|=1<<CS11|1<<CS10;) tak aby przerwanie spowodowane przepełniniem timera było wywoływane mniejwięcej co 1s 4000000/64/2^16...
Ok, a jak to się będzie miało do samego programu napisanego na 1Mhz ? Nigdy jeszcze z zewnętrznym kwarcem do czynienia nie miałem. W jaki sposób należy programowo z niego skorzystać? Normalnie Timer2 jest taktowany z tegosamego zegara co microkontroller. Aby uzyskac taktowanie z rezonatora 'zegarkowego' podłączonego do pinów XTAL1/XTAL2, potrzebujesz...
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...
Znalazlem jakis stary programik.... odczyt 2 kanalów ADC z częstościa 100 razy na sekunde... Analize pozostawiam Tobie...(podpowiem że Help wszystko wyjaśni) Pozdrawiam $regfile = "m8def.dat" $crystal = 11059200 $baud = 19200 Config Adc = Single , Prescaler = Auto , Reference = Off Config Timer1 = Timer , Prescale = 256 On Timer1 Pomiar Enable...
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...
$regfile = "M8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 32 $framesize = 32 '---------------------------------------... Dim Adc_data As Integer Dim S As Single Dim L As Long Dim Text As String * 30 '---------------------------------------... Portb = &B00000000...
Chcę napisac własny program z wykorzystaniem Timerów. Na początek proszę o wytłumaczenie dlaczego w poniższym programie: 1. wykorzystano podzial częstotliwości zegara (po preskalerze 256) 250/125 zamiast wykonac jedno dzialanie? 2. uzyto wartość początkową Timera0 = 250 przed Petlą do Loop End . O ile wyjaśnienie podane przez Tomq jest błędne(!) Load...
] Gdybym chciał jednak mierzyć załóżmy do 1kHz to wymaga aby zliczać przepełnienia? Dlatego napisałem..."Nie znaczy to jednak..." w złym obliczeniu 1 sek wartość wynosiła 61630, przy prawidłowym obliczeniu wynosi 34 286 uwzględniając czas 1sek, częstotliwość taktowania 8MHz i prescaler 256. Przecież czas (1 sec.) odmierzasz timerem0, który jest 8-bitowy...
Niestety nie. Można się o tym przekonać studiując notę katalogową. Prescaler jest ustawiany dla całego licznika ten sam. Mówiąc bardzo prosto jest do dzielnik częstotliwości który dzieląc systemowy sygnał zegarowy obniża częstotliwość sygnału zegarowego podawanego na licznik.
ja bym to zrobił tak: $regfile = "m8def.dat" $crystal = 4000000 Config Lcd = 20 * 2 Config Lcdpin = Pin , Db4 = Pb.2 , Db5 = Pb.3 , Db6 = Pb.4 , Db7 = Pb.5 , E = Pb.1 , Rs = Pb.0 Config Portc = Input Portc = &B000000 Dim Szyba1 As Word Dim Szyba2 As Word Dim Szyba3 As Word Dim Szyba4 As Word Dim Wzor As Word Dim A As Word Config Adc = Single...
PWM PWM'owi nie równy - fast-pwm, pc-pwm.... Tu jest kawalek kodu wygenerowanego ze źródła z C na ATmega8 - myślę, że trzeba zmienić tylko nazwy rejetrów i wartości początkowe void init_timer1_pwm(void){ c4:cf 93 pushr28 c6:df 93 pushr29 c8:cd b7 inr28, 0x3d; 61 ca:de b7 inr29, 0x3e; 62 DDRB |=(1<<PB1); //...
Dlatego, że nie używasz AS masz problem z ustaleniem przyczyny. Wystarczy uruchomić symulator, by zobaczyć, że Twój program wpada w zabezpieczenie dodawane przez kompilator polegające na wyłączeniu przerwań globalnych i zapętleniu się w specjalnie dodanej pętli. Symulator na początku zabawy z mikrokontrolerami, to podstawowe i bezpłatne narzędzie -...
Tutorial do avr taki znalazłem: http://avr.elektroda.eu/?q=node/8 Jak byś czegoś w sieci szukał, to raczej unikaj tutoriala z patron.net, uczy złych nawyków i jest nieco nie na czasie. Pomiar częstotliwośći na AVR realizuje się w miarę łatwo, przy wykorzystaniu timerów, jeden timer pracuje jako licznik impulsów z zewnątrz, a drugi odmierza czas, mozna...
http://obrazki.elektroda.pl/7139682100_1... Witajcie Wlasciwie jest to moj pierwszy temat na forum wiec prosze z gory o wyrozumialosc. Przepraszam rowniez, za brak polskich fontow, ale pomimo prob wielu nie ogarniam wiekszosci ogonkow z racji lokalizacji :/ Przyszly swieta, czas urlopu i odpoczynku... Niestety wraz ze swietami przybyla...
Witam. Prescaler jest to dzielnik częstotliwości. Jeżeli użył byś kwarcu 8 MHz oraz timera 0 przepełnił by ci się on 31250 razy.Aby zmniejszyc częstotliwość wyrzucanych przerwań używa sie prescalera. Np ustawiając prescaler 64 uzyskasz przerwanie co 0,00204800 s. Co do drugiego pytania to w BASCOM'ie licznik się zeruje chyba że wpiszesz mu jakąś wartość....
Search Atmega8 datasheet for clock prescaler information :)
Witam Mam problem z regulacją fazową, a mianowicie żarówka podłączona do układu wykonawczego od czasu do czasu rozbłyśnie maksymalnym światłem tak jakby triak na ułamek sekundy załączył się na max. wcześniej robiłem podobne układy ale na ATmega8 i było wszystko ok. ale teraz zastosowałem Attiny84 i dzieją się cuda ! układ elektrycznie jest dobrze skonstruowany...
Zważywszy na moje ostatnie zainteresowanie radiotechniką postanowiłem wykonać sobie miernik częstotliwości. Wykonałem miernik na atmega8 + prescaler przez 4 na 74LS293. Wszystko działa super jeśli podpinam na wejście sygnał prostokątny. Zbudowałem tez generator z rezonatorem kwarcowym, za nim wtórnik i działa pięknie… ale kiedy podpinam w miejsce...
Zacznijmy od tego, że w Tiny2313 nie ma ADC więc tu pytanie jest bezprzedmiotowe :D W Tiny261 timery są ciut nowsze niż w przypadku Mega8 i Tiny13. Wystepują tam już podwójne rejestry dla Timera0. Są to odpowiednio A i B czyli COMPARE 0 A i COMPARE 0 B. Zero odbosi się właśnie do Timera 0 Ogólnie dla nowszych prockow AVR jest to normą że tych rejestrów...
Witam. Parę lat temu zaprojektowałem i wykonałem tablicę wyników sportowych dla sali gimnastycznej. Sterowanie tablicy było wykonane za pomocą sterownika, który był połączony przewodem z tablicą. Dlaczego przewodem...? Do sterowania tablicy potrzeba aż 107 przycisków i nie miałem pomysłu, jak takie sterowanie wykonać drogą radiową. Po kilku latach postanowiłem...
[syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> /*********************** D I M M E R - U S T A W I E N I A ***************************/ #define LICZBA_KROKOW 200 // czas trwania szpilki (Detekcja ZERA) wyrażony w milisekundach np: 1,2,... albo np: 0.5 #define SZPILKA_MS 1.8 /***********************...
Na dobra sprawe w tym przypadku do compare1a chyba moznaby dac 2x15625 czyli 31250 i tym sposobem procka przerwania bedzie krotsza.
http://obrazki.elektroda.pl/5214176000_1... Witam. Przedstawione rozwiązanie powstało z myślą o zdalnym (radiowym) sterowaniu modelem samochodu. Umożliwia płynne regulacje: kierunku (lewo/prawo) oraz prędkości ruchu (przód/tył). Rozkaz typu "włącz/wyłącz" pozwala np. uruchamiać sygnał dźwiękowy (klakson) lub włączać światła. Spośród...
witam wszystkich Dopiero zacząłem przygodę z programowaniem i pojawił się problem Chciałem zrobić zegar na Atmega8. Przepisem program z książki (wiec domyślam się zę nie ma błędów) Zrobiłem prosty układ na płytce stykowej. Do Atmegi podpiąłem kwarc 8MHz dwa kondensatory po 27pF i i wyświetlacz LCD 2x16. Program ruszył od razu ale za wolno chodzi sekunda...
jeśli ustawie fusy na zewnętrzny kwarc 16MHz czyli tak jak jest w układzie (1111) to wyświetla mi tylko połowę widma tj. 8lini od lewej. Problemem jest przetaktowany przetwornik ADC, widać że w niektórych megach8 daje radę a w niektórych nie... Znajdź w listingu następujący fragment Sample_h: 'pobiera 32 próbki z częstotliwością 44kHz Config Adc...
Witam! Jestem osobą początkującą i chciałabym prosic o pomoc przy zmianie fragmetu kodu, ponieważ nie bardzo wiem gdzie tego szukać w datasheet. Obecnie mam coś takiego: [syntax=c] void Init_Timer() // Inicjalizacja przerwania Timera (co pół sekundy dla 8MHz wewnętrznego) { TCCR1B |= (1<<WGM12)|(1<<CS11)|(1<&... // set prescaler...
Dzięki za szybką odpowiedź. Co do precyzji pomiaru to myslę, że napięcie stabilizowane LM7805 wystarczy. Proszę jeszcze o zweryfikowanie programu do odczytu wartości napięcia. Oczywiście wynik będzie przeliczany na odpowiednią wartość. $regfile = "m8def.dat" $crystal = 8000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Wart_ac...
Nie wiem skąd ten upór w stosowaniu PWM do sterowania serwa. Jeśli ustawimy prescaler tak aby podstawowy interwał był 20ms- a tak wymaga serwo- to rozdzielczość regulacji długości impulsu- zasadniczo 1-2ms jest bardzo kiepska. Zwłaszcza przy kilku serwach. Tu masz "gotowca"- ale dla ATMega32- pewnie ustawienia rejestrów dla ATMega8 mogą się nieco różnić....
Atmega8 Program jest dokładnie taki jak w pierwszym poście, tylko przed ostatnią klamrą dodałem [syntax=c] while(1); [/syntax]
Witajcie, Potrzebuję konfiguracji timera 1 dla atmega8 aby wykonywał funkcję z częstotliwością ~244Hz (zegar 16MHz i preskaler 2^16) . Chciałbym uniknąć używania dodatkowych bibliotek. Będę wdzięczny za przykładowy kod :) jakąś Przy okazji; jeśli użyję do tego celu timera 1, mogę równocześnie używać wyjść OC1A oraz OC1B jako zwykłe wyjścia I/O? Timer1...
Proszę. Pisałeś kiedyś, że przy okazji chciałbyś się czegoś nauczyć, więc masz tu przykład który napisałem przy kawie. Trzy różne czujniki- DS18B20, LM35 i Termistor NTC 10k - podłączone jednocześnie do jednego mikrokontrolera. Dla czujników NTC wyznacza się ich "Betę" czego nie robiłem dlatego wskazywana przez niego temperatura różni się nieco od tych...
TIMSK ^= (1 << OCIE1A); - powoduje zmiane stanu pinu na przeciwny, jesli chcesz wyzerowac to stosuj TIMSK &=~ (1 << OCIE1A); a jesli ustawic to TIMSK |= (1 << OCIE1A); Nastepne - to, ze blokujesz przerwania od timera nie znaczy, ze timer w tym czasie nie liczy - w efekcie pierwsze przerwanie wcale nie nastepuje po 1778 cyklach...
Poniżej obiecany schemat. https://obrazki.elektroda.pl/1485483000_... Narazie nie ma jeszcze tranzystora T1 i wejścia 'Światło'. Do testów jest TxD. Nie ma też jeszcze optotriaka, jest tylko dioda LED1. A tu biblioteka USART. [syntax=c]/* Software ("bit-bang") UART Transmitter (8 data bits, 1 stop bit, no parity) for Attiny24A/44A/84A...
Daj: Config Adc = Single, Prescaler = Auto , Reference = Internal Ale niekoniecznie ot musi byc to.
Spróbuj tak zainicjalizować [syntax=basic4gl]Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc[/syntax] I dorzuć jeszcze [syntax=basic4gl]Ddrc = &B000000[/syntax]
Zmień prescaler dla SPI i po sprawie. Chyba że korzystasz z programowego SPI to wstaw kilka delay_us(x) i również po sprawie...
Config ADC = Single , Prescaler = Auto , Reference = Internal Start ADC LM35 jest bezpośrednio podłączony do ADC0 i oczywiście do zasilania. Na chwilę obecną nie mogę dodać schematu, bo piszę z telefonu...
AT90S2313 nie posiada przetwornika analogowo-cyfrowego więc do mierzenia napięcia stosowano komparator. Ty masz ATmega8 który ma owy przetwornik - nim najlepiej mierzyć napięcie z LM35. Poza tym ATmega8 ma tylko jeden komparator. Dim w As Word 'właczenie przetwornika CONFIG ADC = single, PRESCALER = AUTO, REFERENCE = internal w = Getadc(0) 'odczyt...
Nie mam pojęcia jak zrobić prescaler na tym rejestrze TCCR0 w Bascom. Ale czy tałem że im większy ten prescale tym mniejsza dokładność ,może lepiej zostać przy tym co jest ?
Witam mam probllem z ADC w atmega8 przypadkowo upaliłem PORTC.0 tak konfigurowałem ADC Config Adc = Single , Prescaler = Auto , Reference = Avcc no i mam pytanie co dopisać do konfiguracji zeby poibierał informacje, np. z portc.1 a nie z portc.0 bo jest on chyba uszkodzony wszystko działało ok doputy nie przesadzilem z napięciem...
Witam, Piszę program w C. Procek ATmega8 taktowany zewn kwarcem 16MHz i fusy oczywiście przestawione prawidłowo. 1. Ustawiam sobie Timer2 w tryb CTC 2. Ustawiam preskaler na 8 3. Ustawiam OCR2 na 20 4. Odblokowuję przerwanie CompareMatch dzięki czemu uzyskuję przerwanie co 10us w przerwaniu mam zmienną (licznik) którą inkrementuję do 999 i znowu na...
Rozumiem, że pod tym względem są różnice między ATmega8 i ATtiny25... ? Podstawowa sprawa w przypadku mikrokontrolera ATmega8 jest taka, że on w ogóle nie ma fuse bitu CKOUT, ani wyjścia częstotliwości - pinu CLKO. Jeśli chodzi o modele ATtiny25/45/85 i ATtiny261/461/861, to po zaprogramowaniu fuse bitu CKOUT nie można używać rezonatorów kwarcowych/ceramicznych,...
A jednak da sie w Bascomie zmieniac konfiguracje przetwornika ADC w trakcie wykonywania programu. Oto fragment dzialajacego programu: Do If Pinb.0 = 0 Then Config Adc = Single , Prescaler = Auto , Reference = Avcc '5V Start Adc Wart_ac = Getadc(0) End If If Pinb.1 = 0 Then Config Adc = Single , Prescaler = Auto , Reference = Internal '2.5V Start Adc...
prescaler atmega8 prescaler atmega prescaler bascom
rezystancja czujnik passat zadanie rozwiazania rejestrator napięcia akumulatora
zwarcie światła drogowe schemat podłączenia dwóch buforów kotła
Optymalizacja paneli fotowoltaicznych 420W z Eco Solar Bost 3500pro Niegasnąca lampka immobilizera - przyczyny i diagnostyka