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...
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...
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...
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...
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...
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...
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...
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]
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...
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...
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...
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.
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...
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,...
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...
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...
Ma pytanko Czy podczas pracy timera można mu zmienić prescaler mianiowicie do jakiegos pinu podłacze sobie klawisz i jezeli on jest wcisniety to zmieniam rejest TCCR1B|=(1<<WGM13)|(1<<WGM12... i w nim prescaler na inny. Jesli tak to moje pytanie czy musze wpisywać WGM ?? bo tylko CS odpowiada za prescaler to może pozostałe...
Konfiguracja portu C nie ruszona. Zaraz zobaczę, jak zachowa się po podzieleniu na 1023 tylko. Dodano po 8 Zmieniłem konfigurację: Config Adc = Free , Prescaler = Auto , Reference = avcc Wynik podzieliłem przez 1023 i na każdym kanale otrzymuję 0,25V
Użyj przetwornika A/C do mierzenia napięcia a potem to tylko przetwórz jak ci pasuje. Przykładowy program do miernika napięcia: Config Adc = Single , Prescaler = Auto Start Adc Dim W As Word do W = Getadc(0) Loop End
Ostateczeni zrobiłem to w ten sposób: //ustawienie przerwania cli ldi r16,(1<<CS11) ;ustawienie preskalera na 8 out TCCR0,r16 ldi r16,(1<<TOIE0);ustawienie przerwania gdy licznik taki sam jak A out TIMSK,r16 ldir16, 0xff out TCNT0, r16 sei // nop bo prescaler i trzeba poczekac kilka cyklow w zaleznosci od niego nop nop nop...
Jesli dasz prescaler 64 to okolo 2 razy przepelni ci sie timer czyli 2 razy na sekunde wywali ci przerwanie.... dlasz szybszego oliczania wrzucam programik.
jest taki prosty wzór: TOVck = (F_CPU/MAX.VAL)/PRESCALER gdzie: F_CPU - częstotliwość podłączonego kwarcu MAX.VAL - maxymalna wartość timera (dla 8-mio bitowego to 256) PRESCALER - wartość na jaką ustawiono prescaler przy pomocy odpowiedniego rejestru Timera (odsyłam do tabelki w manualu ;)) i TOVck - to ilość przerwań na/w ciągu jednej sekundy...
Witam Mam pytanie : Czy procek Atmega8 można tak skonfigurować i napisać program, aby jednocześnie można było obsługiwać następujące sygnały na porcie PC: - AC0(adc0), AC1(adc1) - czytać wartości analogowe, - na AC2 - zrobić obsługę 1Wire, - na AC4(SDA) i AC5(SCL) obsłużyć komunikacje I2C. może znacie linki przykładów, gdzie tak procek jest skonfigurowany....
Mam jeszcze jedno pytanie Jak chciał bym zmierzyć prędkość impulsów np: w m/s , to muszę użyć Timera - ale jak... pomożecie? Nie mierzy się prędkości impulsów. Impulsy nie poruszają się, lecz trwają; mozesz zatem zmierzyc czas trwania takiego impulsu (co w tym przypadku jest bez większego znaczenia), oraz częstotliwośc ich występowania (F); gdzie F...
Jak w temacie. Po prostu nie mam pojęcia co zrobić żeby to dziadostwo działało. Próbowałem wielu rzeczy, nic nie dało skutku. Chcę na początek po prostu podpiąć potencjometr do PC5(ADC5) i diodę do PB1 no i zaświecić ją jak będzie powyżej połowy(około) albo zgasić. Tak najzwyczajniej w świecie. Nie wiem, dlaczego nie działa, zamieszczam kod. Na płytce...
| = (1<<CS00). Jednak ja wciąż polecam użyć Timera1 i jego trybu CTC, wtedy na wyjściu OC1A. Nie potrzeba wtedy obsługiwać żadnego przerwania, ustawiasz wyjście OC1A w tryb TOGGLE ( rejestr TCCR1A ) i będzie ono zmieniało stan w rytm przepełnień timera. A timer będzi liczył (przez prescaler jaki ustawisz) do wartości jaka sobie ustawisz w OCR1A....
Ten RTC ma wyjscie 32768Hz, a ja potrzebuję mierzyć jednostki czasu nie koniecznie związane z minutami i godzinami, musiałbym dorabiać obsługe I2C, przekalkulować zmienne, sporo niepotrzebnej roboty, a tak puszczm megę na wewnętrznym i Timer2 liczy z generatora DS3231 dając przerwanie. Takie wyjscie jest mozliwe dla uC z rodziny 8051; "Timer2 can be...
Config Adc = Single , Prescaler = Auto , Reference = ' Tu co należy wpisać ???? Nie znam BASCOM, ale po 15 sekundach w google znalazłem: 'Config Adc = Single , Prescaler = Auto, Reference = Internal 'The reference param may be : ' OFF : AREF, internal reference turned off ' AVCC : AVCC, with external capacitor at AREF pin ' INTERNAL : Internal 2.56...
Walczę dalej: układ roboczo zasilany z USB z PC przez programator MKII. Kody przerwań roboczo uproszczone do: [syntax=c] #define TRIAK_ON PORTD &=~_BV(2) #define TRIAK_OFF PORTD |= _BV(2) #define TIMER1A_START TCCR1B |= ((1<<CS10) | (1<<CS12))// prescaler=1024 #define TIMER1A_STOP TCCR1B &= ~((1<<CS10) | (1<<CS11) | (1<<CS12))...
wymieniłem procesor i zamieniłem kolejność kodu z: [syntax=basic4gl] Config Portc = Input DDRC = &B0000000 PORTC = 0 Config Adc = Single , Prescaler = Auto , Reference = Avcc[/syntax] na: [syntax=basic4gl] Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Portc = Input DDRC = &B0000000 PORTC = 0 [/syntax] coś pomogło :) chyba zmiana kodu...
Jeżeli korzystasz z makr Lighta'I to musisz być konsekwenty. W oryginalnym kodzie jest TCCR0=T0div; gdzie T0div jest odpowiednikiem preskalera 256. W Twojej funkcji widze TCCR0=0x02; co ustawia prescaler na 8. Oczywiście zakłądam że masz właściwą wartosć F_CPU. Dla kwarcu 11,0592MHz do TCCR0=0x04 a do TCNT0=0xD4 i powinno działać.
Czy ten program ma prawo działać? $regfile = "m8def.dat" ' $crystal = 8000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Portb.1 = Output Dim Wart_ac As Word Dim V As Single Dim Wart_nap As String * 3 Start Adc Do Wart_ac = Getadc(1) Cls Lcd "wartosc napiecia" Lowerline V = Wart_ac * 0.0049 Wart_nap...
Zrobiłem wskaźnik wysterowania audio. Był on dostosowany do LCD 20x4 , przerobiłem kod i dodałem drugi LCD 16x2. Nie wiem dlaczego druga linijka pierwszej linii E posiada błąd. Sprawdzałem LCD , oraz wyświetlałem napisy na obu wyświetlaczach i wszystko jest dobrze, tylko pod tym kodem do obsługi VU meter lcd wariuje. http://obrazki.elektroda.pl/8972835800_1...
Zegar procka masz 1MHz, prescaler 256, czyli zegar timera wynosi: TCLK = 1e+6/256 = 3906,25Hz Teraz chcesz mieć przerwanie co 10ms, więc: OCR1A = TCLK * 10ms = 3906,25 * 0,01 = 39,06, co po zaokrągleniu daje 39. Mam nadzieję, że wszystko jasne.
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...
Dziękuję panowie za odpowiedzi, zrobiłem to nieco inaczej i na wyświetlaczu pokazuje sie nieco zawyżony wynik... Podaję 2.5V z rezystorowego dzielnika napięcia, w programie mnożę to przez 2 a ostatecznie ukazuje mi się 5.6V. Oto konfiguracja ADC: [syntax=vbnet] Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc[/syntax] A tak to przeliczam:...
Najpierw musisz skonfigurować przetwornik: Config Adc = Single|Free, Prescaler = dzielnik|Auto, Reference = Off|Avcc|Internal A odczytujesz to tak zmienna = Getadc(nr_kanału) Czym sie różnią single i free i ustawienia Uref poczytaj w dokumentacji
Podczas programowania układu natrafiłem na problem dotyczący sterowaniem PWM przy pomowy wewnętrznego timera. Port wyjściowy timera steruje kluczem tranzystorowym do którego podłączony jest wentylator 12V. Oto moja funkcja ustawiająca rejestry timera. void pwm() { //OC1A as output DDRB |= _BV(PB1); //PWM Phase, frequency correct...
Witam robię projekt tzw przełącznika akustycznego (clapper) na atmega8 i proszę o sprawdzenie poprawności kodu ?jesli zły dział to proszę o przeniesienie http://obrazki.elektroda.pl/9114142600_1... [code][syntax=c]#include <avr/io.h> #include <avr/delay.h> int i = 100; void adc_init() { ADCSRA = 0x8F; //enable adc, prescaler...
Witam, potrzebuję wygenerować przerwanie analogicznie do stworzonego w atmega8. W Atmega8 użyłem Timer1 tryb CTC, teraz chcę osiągnąć podobny efekt na pic16f1716. Może ktoś pomóc? [syntax=c] void Init_Timer1A(void) { TCCR1A = 0x00; TCCR1B =(1<<CS11) | (1<<CS10) | (1 << WGM12); //tryb CTC (WGM12), Prescaler = 64 (CS11,cs10) clk = 8Mhz...
ok, wybacz. Po prostu miałem otwarty jakiś help do timerów atmega8 a nie całą atmege i tam nie bylo napisane który to pin. Zatem załączam bit wywołujący przerwanie od przechwycenia i tryb przechwycenia TIMSK |= ((1<<TICIE1) | (1<<TOIE1)) Podłączam generator impulsów pod PB0(ICP1). w rejestrze TCCR1B określam prescaler i programuję ICES1...
Dzięki za dotychczasowe odpowiedzi :) Mam kolejny problem, tym razem z ADC, kod programu mam chyba dobrze napisany(tak mi sie wydaje) lecz nie wiem jak podłączyć np. potencjometr lub fotorezystor? Mój program wygląda tak: [syntax=basic4gl]'ustawienia procesora $regfile = "m8def.dat" $crystal = 1000000 Config Adc = Single , Prescaler = Auto , Reference...
Witam, Potrzebuję zrobić na TDA1543A i Atmega8 regulowane napięcie stałe w zakresie napięc podawanych przez TDA1543A. Znalazłem przykładowy program i zmontowałem układ, atmega wysyła dane lecz na wyjściach TDA mam jedynie napięcie stałe bliskie napięciu zasilania. Atmega8A taktowana kwarcem 12MHz. Próbowałem także 1MHz i 8MHz i nic to nie zmieniało....
Nie wiem jak w Timerze ustawić prescaler do Atmegi8a, tak żeby przerwania były co 1 sekundę ; < Jakie jest taktowanie atmegi? Druga sprawa w projekcie jest również taki schemat: http://extremeelectronics.co.in/avrproje... nie wiem jak mam zaintepretować tą strzałkę do góry która idzie od buzzera, gdzie to mam podłączyć? Strzałka...
[syntax=c]#include <avr/io.h> #include <util/delay.h> #define led1 PB0 //defincja diody podłaczonej do PB0 int main(void){ unsigned int adc_value; DDRB|=0xff;//ddrb jako wyjscie PORTB = 0x00; ADCSRA |=(1<<ADEN);//właczenie adc ADCSRA |= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // prescaler 128 ADMUX |=(1<<REFS1)|(1<<REFS0);...
Mam 2 atmegi. Jedna to atmega8 a druga atmega16. Używam Uart programowy i nie wiem dlaczego nie działa. Poniżej kod programu w bascomie dla nadajnika Config Adc = Single , Prescaler = Auto , Reference = Internal Config Pinb.0 = Output Config Pind.6 = Output Config Pind.7 = Output Config Pind.3 = Input Config Pind.4 = Output Portd.3 = 1 Open "Comd.3:1200,8,n,1"...
Odczytywałem kiedyś 3 potencjometry na ATmega8535 Podłączone było zewnętrzne Uref = Uzas = 4,98V konfiguracja Config Adc = Single , Prescaler = 16 port w procku jako wej "pływające" czyli u Ciebie byłoby: Config Portc = &B0000000 Portc = &B0000000 Odczyt u mnie Pot_1 = Getadc(7) Pot_2 = Getadc(6) Pot_3 = Getadc(5) zmienne Pot_x...
Dziękuje bardzo za pomoc, jak tylko przyjadę z pracy poprawie kod i dam znać czy i jak wprowadzone zmiany wpłyną na działanie programu. przetestowane - jedna uwaga zapis [syntax=c]TCNT1 = 0xFFFF - 100/7372800[/syntax] daje wpis o wartości ok 65534,99999 - obliczone na szybko w calc. potrzebną wartość jeśli się nie mylę uzyskam po wprowadzeniu: [syntax=c]...
Witam ! Mam kod odczytujacy dane z ADC wbudowanego w Atmege8 Config Adc = Single , Prescaler = Auto , Reference = Internal Dim Temperatura As Word Dim V As Single Dim Nap As String * 3 Start ADC wait 1 Do Temperatura = Getadc(1) V = Program * 0.0025 Nap = Fusing(v , "#.&&") Print Nap waitms 100 loop end Na wejsciu ADC1 podaje...
Witam Forumowiczów Jeśli dział niewłaściwy proszę o przeniesienie;) Mój problem polega na tym iż chciałbym za pomocą pwm-a zawartego w mikroprocesorze Atmega8 wysterować powiedzmy żarówkę (lub cokolwiek innego) ze zmiennym napięciem regulowanym pwm. A mianowicie wszystko gotowe poskładane i tu mały problem. Atmega kwarc 16MHz, timer 8bit , prescaler...
Więc Twój zegar ma 8MHz = 8000khz = 8000000 Hz. Ustawiłeś prescaler na 256, więc timer0 jest taktowany zegarem 31250Hz. Oznacza to, że tyle naliczy w ciągu sekundy. Ponieważ Twój timer jest 8 bitowy, jego max wynosi 255. To znaczy, że w ciągu sekundy będziesz miał 122 przerwania. Możesz do tylu inkrementować zmienną, po czym zmieniać stan na PORTD (póki...
Udało mi się między czasie rozwiązać samemu problem. 3 PWMy takie same potrzebne mi są do regulacji oświetlenia RGB. Oto funkcja inicjująca PWMy: [syntax=c]void PWM_Init(void) { _1(TCCR1A,COM1A1);//Clear OC1A on Compare Match, set OC1A at BOTTOM _1(TCCR1A,COM1B1);//Clear OC1B on Compare Match, set OC1B at BOTTOM _1(TCCR1A,WGM10);// _1(TCCR1B,WGM12);//Fast-PWM,...
Witam. Czy załączona aplikacja z procesorem ATmega8 jest prawidłowa aby krótki testowy program którego kod dodałem poniżej zadziałał z nią prawidłowo? http://obrazki.elektroda.net/26_12223708... $regfile "m8def.dat" 'deklaracja procesora ATmega8 $crystal = 8000000 'deklaracja częstotliwości kwarca Config Lcd = 16 * 2 Config Lcdpin...
Witam! Takie pytanie. Mam przebieg 1MHz za pomocą CTC na PB3. Teraz jak go modulować? [syntax=c]/* * OC2_PWM_1MHz.c * * Created: 2013-02-14 15:12:54 * Author: */ #include <avr/io.h> #ifndef F_CPU #warning "nie zdefiniowano F_CPU" #define F_CPU 8000000UL #endif int main(void) { TCCR2|=(1<<WGM21);//CTC Mode TCCR2|=(1<<COM20);//toogle...
Troche jeszcze posiedziałem i napisałem taki działający kod [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Portb = Output Config Portc = Input Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down Config Adc = Free , Prescaler = 8 , Reference = Avcc 'tu próbowalem także reference = internal ; avcc; on Dim U As...
Witam serdecznie. Mam pewien problem ze zrozumieniem sterowania serwonapędów. Próbuję zaprogramować ruch serwa ( Tower Pro SG-5010) przez sprzętowe PWM. Żyła sygnałowa serwa podpięta do PB1/OC1A , zasilanie 5V, masa wspólna z mikrokontrolerem. Częstotliwość taktowania to 8MHz. Oto mój kod: [syntax=c]#include <avr/io.h> int main() { DDRB = (1<<PB1);...
Witam. Szukałem na forum i niestety nie znalazłem jednoznacznej odpowiedzi na mój problem (tak czasami bywa). Tak więc atmega8 to tego wykorzystany wewnętrzny ADC, kanał 0, wpięty lm335+4k7 do VCC, kwarc 11059200, zasilanie przez dławik 10uH do AVCC, 10uF pomiędzy AREF i GND zgodnie z opisem z helpa, configuracja ADC: Config Adc = Single , Prescaler...
Kolego (at)emarcus autorowi tematu raczej chodziło o attiny 13 bo na atmega8 kod jest już na poprzedniej stronie piotrva który poprawił po mnie kod z atmega16. Widziałem to.... Mój post nie miał na celu tworzenia czegoś co jest gotowe, lecz zwrócic autorowi uwagę na koncept konfiguracji timerów i koniecznośc konsekwentnego edytowania odpowiednich rejestrów...
no masz racje sory zle napisalem, poprawnie to sie nazwya przetwornik analogowo cyfrowa. To co chce autor zrobic nie da sie na jednym komparatorze osiagnac . Najlepiej zastosowac tutaj wejscie adc atmega8. (a tak poza tym crazy_phisic nie wnosisz nic nowego do tematu procz jechania na mnie, moze przesadzilem z tym ze wszyscy pisza bzdury sory) oto kod:...
Przy kompilacji kodu na atmega8 wychodzą mi błędy;ADC_MUX entry not found in dat file. Ten sam kod działa na atmega16 oczywiście po zmianie wyprowadzeń. $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.0 Config Lcd = 16 * 2 Cls Cursor Off...
Zrobiłem tak jak mi poradziliście i zacząlem używać przerwań. Poniżej zamieszczam kod źrodłowy. No i mam standardowe pytanie: czy program bedzie działał jako komparator częstotliwości tzn zapali led1 jeżeli f>38Hz i led2 gdy f<38Hz. Częstotliwość policzyłem jako 10/(1024*256)*1000 000Hz=38Hz. 1024 to prescaler licznika TC0 a 256 to jego pojemność....
Witam serdecznie Pomoże mi ktoś poprawić kod niżej. Chciałbym uzyskać możliwość sterowania zmienną Y, ale nie dział mi ten ADC [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 Ddrb = &B11011111 : Portb = &B00000000 Ddrc = &B11111111 : Portc = &B00000000 Ddrd = &B11111110 : Portd = &B00000001 Dim X As Byte Dim Y As Byte Dim W As Word Config...
Sorry za OT ale chyba nie wszyscy z was umieja czytac ale gdy po pierwszym resecie nie zadziała to się wiesza na dobre i nawet ręczny reset nie działa tylko odpięcie zasilania pomaga. Jak to sie ma do waszych wszystkich dywagacji ? Z drugiej strony sam przeszukalem manual do Atmega8 i nie potrafie odpowiedziec na to pytanie takze chetnie sie dowiem...
Hej, Spróbuj tego: #include<avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> #define F_CPU 1000000 unsigned int c=0, s=0; int main(void) { TCCR0 = 0x05; //(1 << CS02) | (1 << CS00); prescaler na 1024 // TIFR |= (1 << TOV0); TIMSK |= (1...
Witam, Symulacja przesyłania/odbioru przez SPI działa w debugerze AVR Studio 4 gdy nie jest czynna obsługa przerwania przepełnienia licznika1 ISR(TIMER1_COMPA_vect), ale po przepełnieniu licznika zerują się wszystkie zmienne. Jeżeli obsługa przerwania jest aktywna (nawet pusta) to symulacja interface SPI nie działa. Brak wtedy sygnału zegarowego na...
Witam wszystkich Wielka prośba o pomoc - czytam i czytam forum i już mi oczyska siadają chciałem wykorzystać wewnętrzne źródło odniesienia m8 i mam duże problemy Zbudowane woltomierze na ATtiny26 hulają aż miło Zakres wejściowy do 20V (dzielnik - procek-masa 10k -- procek-pomiar-30k) Po konfiguracji przetwornika Config Adc = Single , Prescaler = Auto...
prescaler atmega8 prescaler atmega prescaler bascom
falownik v1000 zapchany ekspres benzynę ekstrakcyjną
wf60f4efw2w szczotki wf60f4efw2w szczotki
Ładowarka do akumulatora VIP-ów BAT 1134 Intercept: Jaką wybrać? Nierówna praca silnika na zimnym Mazda 323p