Tego nie widziałem. Znalazłem za to informację że dotyczy to rezonatora pracującego jako generator wytwarzający główny sygnał zegarowy: http://obrazki.elektroda.net/9_123515576... A po drugie, akurat w ATMega8 jest błąd w krzemie i te wewnętrzne kondensatory nie działają (tzn. FuseBit ich nie włącza). Użycie rezonatora jako źródła sygnału dla...
Zegarek oprócz funkcji wyświetlania czasu ma pokazywać temperaturę i mieć możliwość sterowania z pilota (RC5). Normalnie (by default) Bascom używa Timer0 dla RC5. Jeżeli Timer0 masz zajęty do inego celu, więc potrzebujesz skonfigurować Timer2 dla RC5. e marcus
Witam serdecznie. Zazwyczaj większość problemów udaje mi się rozwiązać bez pisania na forum, jednak ten doprowadza mnie już do szewskiej pasji. Chcę zrobić zegarek na Atmega8A taktowanym wewnętrznym oscylatorem, z podłączonym kwarcem zegarkowym do wejść TOSC1/TOSC2 -bez powodzenia. Zawsze program staje na pętli http://obrazki.elektroda.pl/2670817700_1...
Specyfika tego mikrokontrolera, zmusza Ciebie do zastosowania Timera2 w trybie asynchronicznym, a mikrokontroler powinien być taktowany wewnętrznym generatorem RC, czyli tak jak radzi kol. wyżej. Przy takim rozwiązaniu korzystać możesz ze specjalnego trybu oszczędzania energii: POWER SAVE. Niestety nie da się w tym mikrokontrolerze taktować kwarcem...
Sprawdzałem Twój kod inicjalizacji timera + przerwanie -> wszystko jest ok. Musisz mieć błąd w zliczaniu sekund lub w wyświetlaniu. Tak na marginesie to po co ustawiasz bit OCF2 w TIFR? Nie korzystasz z porównania (compare match), więc nie potrzebnie robisz to ustawienie. Wystarczy TIFR=(1 << TOV2);
Fuse bitów nie zmienia się z poziomu środowiska, ale z poziomu programu wgrywającego kod na mikrokontroler, wyjątkiem jest, kiedy środowisko ma zintegrowany program wgrywający, albo przynajmniej obsługę jako zewnętrznego narzędzia. Pomocną stroną do konfiguracji fuse bitów jest np. http://www.engbedded.com/fusecalc/ , chyba, że program wgrywający, którego...
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...
Wykorzystaj Timer2 w trybie asynchronicznym z kwarcem 32,768kHz.
Jeśli nie potrafisz to zrób to prościej. Podłącz zewnętrzny kwarc 32,768kHz (zegarkowy); Config Clock = Soft Procedura zegara używa specjalnych zmiennych: _day , _month, _year , _sec, _hour, _min Wszystkie są typu Byte. Można je modyfikować bezpośrednio: _sec = 1 Sprawdź, o ile się spieszy (opóźnia). Różnicę koryguj warunkiem któregoś dnia np o północy.
Myślę o czymś innym: Timer2 dekrementuje do zera stan jakiegoś licznika, aby odmierzać 180s, potem znowu wpisuje pierwotną wartosc i tak w koło. Timer1, taktowany 100Hz sieci, po przepełnieniu zeruje wartość licznika timera2 i wpisuje wartośc pierwotną, skracając lub wydłużając cykl timera2, jak nie ma 100Hz, nie ma synchronizacji, ale timer2 działa.
procek jedzie na 1MHz wew. zegarze. Rzecz w tym, że nie jest to sobie takie równe 1MHz, tym bardziej bez kalibracji. Jak chcesz dokładniej, to użyj Timer2 w trybie asynchronicznym z dodatkowym rezonatorem kwarcowym 32768Hz. Przejrzyj noty aplikacyjne AVR134 i AVR055.
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
timer2 w ciągu 10 minut późni się o jakieś 12 sekund, a timer0 zdaje się nie reagować na wartość początkową wpisaną do rejestru TCNT0 Z zegarem wewnętrznym 12/600 = 2% porównaj z DS. A timer 0 reaguje, tylko Ty nie dostrzegasz różnicy 131 cykli na 10 minut -) Tą wartość to jakby nie tylko raz trzeba było wpisać. Albert
Czemu korzystasz z timer2 jako counter ? Zrób to na CTC na timer 2 a kwarc podłączyć jako zwykły. W takim układzie Wszystko działa na wewnętrznym oscylatorze a do zegara dochodza impulsy z kwarcu zegarkowego. Pozbadz się instrukcji Config timer2 = counter a kwarc podłącz pod xtal Pozdrawiam
Kondensator tantalowy pasuje jak najbardziej i jest znacznie mniejszy. Soldermaska lepiej zabezpiecza; lakier uniemożliwi serwis zegarka STK200 i tak trzeba zasilać; programujesz bez baterii Wybudzanie poprzez SW1 to głównie jak jest napisany program. Po cynowane ścieżki - utlenia się cyna - powinna być soldetmaska 2k2 to zbyt duża wartość, to ok 600uA...
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...
wyłączanie zegara i konfigurowanie go w przerwaniu - to nie wygląda za dobrze...Szczególnie jeśli chodzi o rejestry MCUCR
zastosowalem driver na bc557 układ ożył ;] jednak nie odmierza czasu :/ ustawiam zegar stoi w miejscu..... jak wchodzę do menu P1, P2 itp to po 5 sekundach powinien powrócić ale nic sie nei dzieje... sprawdziłem podłączenie kwarcu jest OK wymieniłem kwarce na inny i albo bardzo mi się wydawało albo zegar przeskoczył i 1 min z 12:43 na 12:44 i znów stoi......
Witam Potrzebuję zrobić zegar na ATMEGA8535 i nie mogę uruchomić pracy asynchronicznej. Kwarc zegarkowy podłączony do XTAL1/2. Program wstępny poniżej. Analogiczny program (ze zmianą ASSR.5 = 1) dla ATMEGA88 działa poprawnie. Proszę o pomoc. Pozdrawiam Jacek Program napisany w "BASCOM AVR" [syntax=basic4gl][/syntax] $regfile = "m8535.dat" $crystal =...
Witam , postanowiłem zrobic swój pierwszy zegarek na zew,kwarcu zegarkowym . kwarc podłaczyłem do tosc1 i tosc2 , wyswietlacz led do portów D i zasilanie wyswietlacza do portów C a do portów B przyciski , wyswietlacz jest dobrze podłączony jak i przyciski , ale pojawia sie problem z przerwaniem , program nie wykonuje przerywania(kod z niego działa testowałem...
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...
Jako wzorzec dla zegara rezonator 32.768kHz (TIMER2), a mikrokontroler taktowany RC. Lub jako wzorzec zegara DS1307 + 32.768kHz lub PCF8583 + 32.768kHz, lub inne tego typu układy, które magistralą komunikują się z AT8a
(...) timer1 wykorzystałem do multipleksowania wyświetlaczy, timer2 odpowiedzialny jest za odliczanie czasu asynchronicznie a timer0 służy do odbioru komend w RC5. Gdyby użyć jakiś zewnętrzny zegar RTC to by zwolnił ci sie jeden timer2. Zaś jako czujnik oświetlenia można by było użyć którejś z diod LED, wykorzystująć ją jako FOTODIODĘ. Pozdrawiam
Timer2 nie ma 'edge detektora', więc na którym zboczu miałby zlicza impulsy? Timery działają, dlaczego miałyby nie działać? Widocznie jakoś producent zrealizował tę możliwość. Rzecz w tym że w tym trybie, wejście dostosowane jest do typowego oscylatora 32,768Hz, więc pozostałe parametry są niezbyt istotne, i mogą się dziać różne rzeczy. ;) Zrobiłem...
Kod w tagach umieszczaj, bo to nie jest czytelne. Ten kod nie ma obsługi termometru oraz daty. Nie sprawdzałem na poprawność kodu. Jeżeli ma to być na Atmega8 lepiej wykorzystać Timer2 na kwarc 32,768kHz jako wzorzec czasu. Data powinna mieć dzień tygodnia w formie całonazwowej oraz wykrywanie 30/31 dnia miesiąca oraz rok przestępny
Wszystko (no prawie wszystko) jest opisane w datasheet'ie. Założenia jak rozumiem są takie: - procesor ATmega88 taktowany kwarcem zegarkowym 32kHz Tutaj masz datasheet do tego procesora: [url=http://www.google.pl/url?sa=t&rct=j...
Witam serdecznie, Doczytałem ostatnio to czego nie doczytałem wcześniej, temat mi się znacznie bardziej rozjaśnił. Potrzebuję aby ktoś lepszy potwierdził co ustaliłem: Do budowy zegara użyję: Timer2 AtMega8 taktowany asynchronicznie z oscylatora wewnętrznego (low freq. osc.) stabilizowanego zewnętrznym kwarcem 32,768kHz podłączanym pod piny TOSC1 i...
Ja to sobie wykonałem w taki sposób ale zredukuj tutaj timer 0 bo jest on zbędny, możesz wykonać go w pętli timera2. [syntax=c] #define P1 (!(PINB & 0x02)) volatile unsigned char push =0; volatile unsigned char time_push =0; void TimerInit(void) { TCCR2 |= (1<<WGM21); //tryb pracy CTC TCCR2 |= (1<<CS22) | (1<<CS21) | (1<<CS20);//prescaler...
Udało mi się odpalić mege8 na 32k ale niestety nie działa RTC. Podstawa Timera asynchronicznego Timer2 ("RTC") działa na innym podłączeniu niż układ zegara systemowego na kwarcu zegarkowym. http://www.elektroda.pl/rtvforum/viewtop...
Niech sie wypowie ktoś, kto dobrze zna Atmega. Odpowiedź została już udzielona w postach moim i niveasoft. Aby rozwinąć temat kwarcu zegarkowego na pinach TOSCx dla Timer2: http://mikrokontrolery.blogspot.com/2011... http://mikrokontrolery.blogspot.com/2011...
W takim razie jak wektor przerwań powinien wyglądać ? tak ? ISR(TIMER2_COMP_vect, ISR_NOBLOCK) {...} Licznik liczy do wartości wpisanej w TCNT2 ?, jeżeli tak to wartość 0-255 wiele mi chyba nie da jak ja potrzebuje tak duże opóźnienia, ale mogę się mylić. znalazłem wzór na wartość tego rejestru Potrzebna ilość cykli = (1 / częstotliwość...
Witam Chciałem uzyskać pracę asynchroniczną (licznik sterowany kwarcem zegarkowym, procesor generatorem wewnętrzym). Napisałem prosty program (miganie diody LED co 1s): $regfile = "m48def.dat" ' plik danego mikrokontrolera $crystal = 8000000 'częstotliwość generatora wewnętrznego Config Portb.0 = 1 'wyjście dla LED Portb.0 = 1 Enable Interrupts 'odblokowanie...
Dodałbym, że Bascom odpowiedzialny jest jeszcze za koklusz i gradobicie. 1. M8 musi być ustawiony na pracę z kwarcu zegarkowego - FUSY. Powoduje to napędzanie M8 z generatora wewnętrznego RC 2. Trzeba skonfigurować Timer2, który jest zdolny do asynchronicznego taktowania z kwarcu 32768Hz - polecam helpa Config Timer2. 3. W przerwaniu od timera2 należy...
Potrzebuje zmierzyć częstotliwość w zakresie do 200kHz(w tym przypadku 3,2MHz) procek: to ATmega8 Kombinuje jak koń pod górę, na czym polega mój błąd ? Timer 2 odmierza czas 1s. Timer 1 w założeniu ma zliczać impulsy z zewnatrz. (wartość 0xFF w OCR1A,-impulsy dochodzą z T1,-po zrównaniu TCNT1H/L zerują się-i cykl się powtarza.) Oróż Timer2 wchodzi w...
Zliczanie sekund odbywa się w przerwaniu (z preskalerem równym 1024). 16 000 000 / 1024 = 15625 65535 to maksymalna wartość timera, ale przerwanie następuje dopiero gdy timer się "przekręci" więc doliczamy jeszcze jeden. 65535 + 1 - 15625 = 49 911 ( wychodzi 49 911 - w praktyce działa dokładniej przy wartości 49 910 i taką też mam aktualnie wgraną...
Fusebity jeżeli to ma działać na zewnętrznym kwarcu to jednak trzeba zmienić... Dziwne, przecież ATmega8 fabrycznie ustawiona jest na wewnętrzny oscylator 1 MHz. Chyba, że automatycznie wykrywa podłączony kwarc, ale nic mi na ten temat nie wiadomo. Atmega nie jest taktowana tym kwarcem dlatego nie zmieniamy fusebitów. Tylko timer wykorzystuje ten kwarc....
Witam serdecznie zrobiłem zegar na w/w procesorze i wyświetlaczach 7 segmentowych led. Sekundę odmierzam z wykorzystaniem Timera 2 w trybie asynchronicznym z dodatkowym kwarcem 32,768Khz. Multipleksowanie wyświetlaczy realizowane jest za pomocą timera0. Do tej pory wszystko działa świetnie, Chciałbym jednak dodać jeszcze zliczanie setnych sekundy i...
no i ponieważ ma to być czasomie rz jak to zresztą napisali potrzebuje jak tak wiedzieć ile ma ten przebieg zegarowy (czyli jego częstotliwość) abym potem mógł sobie to przeliczyć na sekundy minuty itp albo podajcie inny sposób na zmie rz enie pewnego odcinka czasu Na jakiej dokładności tobie zależy ? Jeżeli to miałby być dokładniejszy zegarek, to...
Kolejny problem z moim zegarkiem ;) Układ pracuje na wewnętrznym oscylatorze 1MHz, a pod piny TOSC1 i TOSC2 podpięty kwarc zegarkowy 32.768kHz. Do jednego z nóżek kwarca podpięty kondensator 100nF. (jak go nie dam ma problemy ze startem, muszę go poruszać) Przerwanie wpisujące do zmiennej tick jedynkę jest uruchamiane przez Timer2 pracujący w trybie...
Czy i który timer wykorzystuje 1wire. Chce wyorzystać jeden timer do cyklicznych przerwań, ale jak wykorzystam timer 0 lub timer 1 wysiada transmisja 1wire. ATmega32 nie ma wbudowanego interface 1wire, wiec nie rozumiem problemu, a wróżyc tylko mogę, że o bascom się rozchodzi... Stawiałbym na niezbyt szczęśliwą obsługe przerwań przez Bascom (zapisuje/odczytuje...
http://obrazki.elektroda.pl/2074472200_1... Inspiracją dla tego projektu był Funkcje * zegar czasu rzeczywistego z podtrzymaniem bateryjnym * buzzer * ustawianie czasu za pomocą przycisków lub UART * złącze rozszerzeń (UART, IRQ, GPIO, +5V) * fotorezystor do oceny natężenia oświetlenia * opcjonalna synchronizacja DCF77 Konstrukcja Konstrukcja...
Przytoczę tu słowa z książki Marcina Wiązania. W uC atmega8 jest możliwe taktowanie licznika timer2 w trybie asynchronicznym z zewnętrznym rezonatorem kwarcowym tylko wtedy, gdy sam mikrokontroler jest taktowany sygnałem wewnętrznym oscylatora RC. W takim przypadku precyzja odmierzania czasu przez timer2 zależy od oscylatora kwarcowego 32768 Hz, a nie...
[syntax=basic4gl]Sprawdź ten kod z książki Pana Wiązani. Zegar zaczyna pracować i wskazywać czas i datę od momentu podania napięcia. Czyli należy podać napięcie dziś o godz. 12 : 00 : 00 zgodnie z programem. Pracuje bardzo dokładnie. Rezonator 32.768 pod piny 9 i 10 (XT1 - XT2). Kondensatory 2 * 22pF. 'licznik Timer2 pracujący jako Timer asynchroniczny....
Witam. Stworzyłem na mikrokontrolerze ATMEGA8 zegar RTC. Do procesora został podpięty kwarc zegarkowy - timer2 pracuje w trybie asynchronicznym. Program powstał z wykorzystaniem instrukcji BASCOMOWEJ Config Clock = soft: Kod: "Jeśli w programie użyto instrukcji CONFIG CLOCK, kompilator automatycznie generuje specjalne zmienne nazwane: _sec , _min ,...
Poniższy kod reguluje jasność podświetlenia LCD, więc dla potrzeb silnika musisz go przyspieszyć. timer0 w trybie PWM (do sterowania prędkością silnika): [syntax=c] //Konfiguracja TIMER0 w trybie PWM TCCR0 |= (1<<WGM01) | (1<<WGM00);// TRYB FAST PWM TCCR0 |= (1<<COM01) ; // Clear OC0 on compare match, set OC0 at BOTTOM,(non-inverting...
hmm... ok, chyba zaskoczyłem .... ze 117 strony dokumentacji ATMega8: Kiedy AS2 jest nie jest ustawiony (0), to Timer/Counter 2 is taktowany z I/O zegara. Kiedy AS2 jest ustawiony (1), to Timer/Counter 2 is taktowany z kwarcu połączonego do pinów TOSC. Tak czy inaczej, chce mieć możliwość precyzyjnego odliczania czasu - pojedyncze mikrosekundy - czyli...
Stwierdzenie dotyczące RTC wynika z tego, że timer2 może pracować asynchronicznie z zewnętrznym kwarcem zegarowym. Można mu podać 32768Hz, t2 będzie takim zegarem (lub wynikającym z działania prescalera) taktowany - to jak wykorzystasz timer zależy od ciebie: możesz np ustawić go w trybie CTC przy prescalerze /128, wtedy będzie się przepełniał równo...
ATmwga 8 ma 3 timery... 2x 8-bit i 1x 16bit... Timer2 może pracować z kwarcem zegarkowym... Timer1 jako PWM... A timer0 jako licznik...
więc tak, schemat i fotka: http://obrazki.elektroda.pl/2310798200_1... http://obrazki.elektroda.pl/4708784000_1... wszystko działa, tylko tak jak pisałem z jakiegoś powodu procesor co jakiś czas wraca do początku maina. wszystkie zmienne zostają zresetowane, wpomniany MCUCSR nie rejestruje resetu. i dodam jeszcze kod...
Starannie wykonane projekty zawsze doceniać należy :) Drobne uwagi: - rysuj schematy bez używania bus w ten sposób: http://mikrokontrolery.blogspot.com/2011... - trochę wstyd eliminować drgania styków kondensatorami, skoro wolnej mocy obliczeniowej jest na oko z 95% :) Za odliczanie czasu odpowiada Atmega8, nie...
No to jeszcze dorzucę, to co znalazłem w pewnym pdf-e Motoroli - aplikacja , zresztą bardzo podobna do tej j/w. Legenda : XTAL1 - wejście inwertera generatora XTAL2 - wyjście inwertera generatora Tak przy okazji - AVR - y posiadające wbudowany timer asynchroniczny (np. AT90S8535 , ATmega8535 , ATmega16 , ATmega8 itd.) już są przygotowane do bezpośredniego...
Według niej w trybie idle zatrzymany zostaje zegar CPU, zegar Timerów działa nie przerwanie. Zatem nie będą występowały ŻADNE problemy z stabilnością zegara RTC, gdy: -w pętli głównej procesor będzie wprowadzany do trybu IDLE --w przerwaniu od TIMERA co 4ms odświeżane są wyświetlacze LED - Jest zgłaszane co przerwanie od licznika TIMER2 pracującego...
Może być po $crystal. Dodano po 4 Jak chcesz jeszcze zaprogramować te "zablokowane" procesory to wpisz tutaj: http://obrazki.elektroda.net/20_12357589... Jakąś wielgachną liczbę. Np. 10000. PS. Ale zdajesz sobie sprawę z tego że ten program z kwarcem 32kHz nie będzie demonem prędkości? Dodano po 3 Ja na Twoim miejscu uruchomił bym to na wewnętrznym...
Co do tego kwarcu to jest pewne zamieszanie, bo w tym projekcie procesor pracuje z wewnętrznego generatora RC o częstotliwości 1MHz, ale timer2 procesora użyty do odmierzania czasu pracuje asynchronicznie, i jest taktowany z zewnętrznego kwarcu 32.768kHz podłączonego do wyprowadzeń TOSC1 i TOSC2. Zauważcie że w mega8 nogi TOSC1 i TOSC2 to te same nogi...
Nie zmieści mi się zewnętrzny kwarc, dlatego pytanie dotyczy tego, co oferuje na pokładzie procek. Czyli pytanie brzmi: jakie kombinacje wewnętrznego zegara i preskalerów dadzą mi ( i jakie) najbliższe częstotliwości tej wymaganej tj. 38kHz. L Ale to się bardzo prosto wylicza ;) np ustawiasz sobie taktowanie wen. oscylatorem 8MHz (bo moim zdaniem dodawanie...
http://obrazki.elektroda.pl/7208083000_1... Witam Od dawna przymierzałem się do zbudowania zegara nixie na sześciu lampach. W internecie jest sporo takich projektów, jednak większość z nich nie odpowiadała moim założeniom. Postanowiłem więc zaprojektować i wykonać zegar od podstaw wykorzystując podzespoły, które miałem pod ręką. Założenia...
Witam Mam problem z programem zliczającym przepełnienia timer2. Do lini TOSC1/2 podłączony mam kwarc zegarkowy 32,768kHz, chciałbym wykorzystać przerwanie od przepełnienia tego licznika do odliczania równej sekundy oraz wyświetlić wynik na ekranie LCD. Oto kod programu: long int licz=0; void init_timer(void) //Inicjalizacja timera { TIMSK...
Spróbuj tak (nie testowane:)): [syntax=basic4gl]Config Portb.3 = Output ' OC0A Config Portb.4 = Output ' OC0B Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Pwm0a = 0 Pwm0b = 0 Config Portd.5 = Output ' OC1A Config Portd.4 = Output ' OC1B Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm...
Np. tak: Ustawiasz zegar na 1Mhz W main() ustawiasz: Zezwolenie na obsługę przerwań Zezwolenie na obsługę przerwań od Timer0 (albo Timer2) Prescaler na 1 Sprawdzenie jakiejś flagi A w obsłudze przerwania ovf od Timer0 (albo 2): Do rejestru Timer0 (albo 2) wpisujesz 156. Wtedy przerwanie występuje co 0.1ms i ustawi jakąś flagę. Wtedy w main() decydujesz...
http://obrazki.elektroda.pl/1033615600_1... Witam wszystkich forumowiczów. Chciałbym przedstawić wam moją pierwszą konstrukcję opublikowaną na forum. Jest to prosty zegarek z budzikiem oparty na microkontrolerze atmega8. Pomysł narodził się gdy dostałem do ręki wyświetlacz poczwórny 7-segmentowy (30x15mm). Układ w całości zrobiony z...
[syntax=c]volatile uint8_t num[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; volatile uint8_t time[6] = {0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F}; volatile uint8_t d = 0; volatile uint8_t counter = 0; volatile struct tm* t = 0; volatile uint8_t hour, min, sec, day, month, year;[/syntax] Atmega8, chcę zrobić w głównej pętli obsługę przycisków,...
Witam, Robiłem to kilkanaście razy na innych procesorach, a nie mogę zrobić na ATmega88PA. link do DSa: http://www.atmel.com/images/Atmel-8271-8... opis rejestrów TIMER0 na stronie 105 Timer1 i Timer2 mam ustawione w trybie PWM i działają bez zarzutu. Walczę już...
r"]W... Potrzebował bym by uC generował częstotliwość 250Hz z wypełnieniem 50%... Załóżmy, że uC taktowany jest zegarem 1MHz, a "prostokąt" będzie generowany na wyjściu OC2. 1)PB3 ustawiamy jako wyjście 2)Timer ustawiamy w tryb CTC. 3)Wyjście OC2 ustawiamy w tryb TOGGLE. 4)Do OCR2 wpisujemy wartość 249. 5)Uruchamiamy Timer2 z preskalerem równym 8....
Witam! dymbol1992 : Dzięki za życzenia. Mogę sprzedać Ci cały zegar lub tylko sam zaprogramowany uC. Pisz na PW aby nie zaśmiecać tematu. kiler88 : Jakbyś dokładnie obejrzał film prezentujący zegar to byś wiedział. W pierwszym rzędzie masz godziny, 2 rząd minuty, 3 rząd sekundy. korrus666 : Zgadzam się z tobą w 100%. Tylko jak bym mógł to bym tak zrobił,...
Witam, ostatnio zabrałęm się za projekt prostego zegara. Układ wyświetla godzinę na 4 cyfrach wyświetlacza LED wspólna anoda. Oto wyniki mojej pracy: schemat: http://obrazki.elektroda.pl/9370666700_1... Do mikrokontrolera Atmega8A podłączony jest kwarc 8MHz. A to program [syntax=c]/* * zegar.c *F_CPU 8000000UL zewnetrzny kwarc częstotliwość...
Witam wszystkich, rzadko pisze bo zwykle jakoś sobie radzę, ale po trzech dniach walki jestem zdesperowany i zaczynam szukać pomocy u Was. Zrobiłem emulację odbierania RS232 na nóżce INT0. Zbocze opadające oznacza że mamy bit startu. Tak startuje odbieranie: [syntax=c] ISR(INT0_vect){ // włączenie odbierania znaku na emulowanym UART 600bps GICR&=~(1<<INT0);...
Witam Planuje zrobić sobie miernik częstotliwości różnych kształtów napięcia: sinus, prostokąt, trójkąt. Zamianę sinusa i trójkąta na prostokąt mam już zaplanowaną. Zostało mi tylko zmierzenie częstotliwości sygnału prostokątnego o amplitudzie 5V i przedziale częstotliwości od około 10 kHz do 500 kHz. Chciałbym to zrobić na mikrokontrolerze ATmega8...
Wielkie dzięki pubus! Przerwania ruszyły. Przegryzłem się bardzo dokładnie przez dokumentację i Twój program jako przykład dał mi dobre wskazówki gdzie i czego szukać. Teraz chciałbym posunąć się krok naprzód. Aktualnie umiem ustawić i uruchomić TIMER0 i TIMER2 oraz obsłużyć przerwania pochodzące od przepełnienia tych timerów. Chciałbym pozostawić...
Chwila. Timer bez preskalera, częstotliwość procesora nieznana, załóżmy, że 1 MHz (nieistotne). Timer zgłasza przerwanie co 21 cykli zegara, czyli ATmega zajmuje się na okrągło obsługą przerwań timera, nie mając szans obsłużyć żadnych przerwań o niższym priorytecie (ADC). Tak, timer był ustawiony na 1 MHz (było to wpisane w komentarzu prescalera dla...
Witam Chciałbym zrealizować programowy tryb CTC dla licznika T0. Program testowy zwiększa wartość rejestru OCR2 o jeden co sekundę (licznik T1). Taktowanie zegara 16 MHz. Licznik T0 i T2 mają ustawiony preskaler /1024. [syntax=c] volatile uint16_t licznik = 0; volatile uint16_t licznik1 = 0; volatile uint16_t licznik2 = 0; volatile uint16_t licznik3...
Witam Mam oto taki problem jak ww w temacie. Napisałem program na odmierzanie czasu przerwanie co 1 sekundę i ogólnie po wgraniu programu wszystko działa czas leci i jest wszystko OK. Lecz po chwili a Nie ma potrzeby az tak komplikowac tak wyjatkowo proste zadanje jak odmierzene czasu 1 sek. Po pierwsze: system ci sie blokuje juz po kilku sekundach...
Nie, po prostu pomijasz detekcję przejścia przez zero :) Albo inaczej - w przerwaniu przejścia przez zero olewasz przesunięcie fazowe, a liczysz po prostu okresy/półokresy. W efekcie np. na każe 100 zliczonych przejść ustawiasz włączenie triaka na zadaną liczbę detekcji - np. 50% to będzie 50 przejść przez zero z włączeniem triaka i kolejne 50 bez...
Witam:D Zbudowałem prosty układ z Atmegą8 który mierzy napięcia przez 3 wejścia ADC oraz dokonuje obliczeń i wyświetla je na wyświetlaczu. Układ zasilany jest z baterii i taktowany wewnętrznym zegarem 1Mhz. Jakich funkcje zastosować aby zmniejszyć pobór prądu przez uC? Czytałem o Power Management and Sleep Modes w dokumentacji ale nie wszystko kapuje...
Dokładnie tak. Pytanie z jakiego uP korzystasz? Np.: tiny2313 ma 4 wyjścia OC: OC0A i OC0B dla Timer0 oraz OC1A i OC1B dla Timer1. Dla mega8 masz trzy wyjścia OC: OC1A i OC1B dla Timer1 oraz jedno dla Timer2 (OC2) Co do wejść oznaczonych TOSC1 i TOSC2 - w kontrolerach ATmega służą do podłączenia kwarcu zegarkowego (32kHz). Przy wykorzystaniu licznika...
Tak jak napisał atom1477.W PDF ATmega 32 na stronie 31 jest informacja, że kwarc zegarkowy nalezy podłączyć pod końcówki TOSC1 i TOSC2 (PC6 i PC7). No i jeszcze trzeba ustawić Fusebity na kwarc zegarkowy.
Widzę że nie ja jeden mam problem z odbiorem danych z ds-ów a wszyscy je polecają hm w zamian można dać jakieś np. Lm35 tylko nie wszystkie mają ujemną temperaturę i są droższe. Będę miał jutro czas to posiedzę jeszcze nad tym programem mam nadzieje że dam rade, w razie czego tu jeszcze napisze. Mam książkę M.Wiązania bardzo fajna właśnie fragmenty...
Witam, Mam drobny problem z wyrabianiem się w czasie na Atmedze8 z wewnętrznym zegarem 8MHz (zewnętrzny kwarc niestety nie wchodzi w grę ze względu na ograniczenie miejsca na PCB). Ogółem piszę w C, ale procedury dla których czas wykonania jest ważny napisałem w asmie. Problem jest taki, że nie wiem jak użyć ich jako przerwań, poza rozwiązaniem polegającym...
Witam! Siedzę już drugi dzień nad multipleksem w budziku i tracę już cierpliwość. Podejrzewam, że problem leży w zmiennych. Jednak trudno mi go zlokalizować, bo za długo siedzę nad tym samym. Przydałoby się świeże spojrzenie na ten kod. Pokrótce opiszę problem. Po wstawieniu wartości odpowiadającej za wyświetlenie "--:--" do tablicy "toDisplay" nie...
http://obrazki.elektroda.pl/7355213900_1... Witam, Przedstawiam kolejną wersję zegarka naściennego. Zegarek wyświetla czas w formacie GG.MM, oraz temperaturę w zakresie -9...99°C. Użyte zostały wyświetlacze 7-segmentowe Led o wysokości znaku 56mm. Takie dość duże żeby było z daleka widać która godzina ;) Wyświetlacze mają regulowaną...
Witam! Chciałbym uzyskać przebieg o wypełnieniu 50% i f~33kHz w trybie CTC na pinie PB3 Atmega 8L (OC2). Podpiąłem wyjście OC2 na oscyloskop i ciągle stan wysoki. Pierwszy raz i na szybko potrzebuję wygenerować taki przebieg. Proszę o pomoc. Późno już i coś mnie chyba przyćmiło. Namieszałem coś z ustawieniami portów czy jakiś rejestr nie jest ustawiony?...
Witam! Buduję (na razie wersja teoretyczna) system sterowania 2 silnikami DC z programową regulacją PID. W systemie jest uC ATMega8535. Musze zliczac impulsy z 2 fotokomorek i problem polega na tym, iż Timer1 uzywam do 2-kanalowego PWM, Timer2 jako zegar do odmierzania okresu dyskretyzacji dla PID (0.01s). Pozostał Timer0, który niestety ma tylko jedno...
Witam, mam pytanie czy atmega8 w wersji niskonapięciowej bierze mniej prądu niz wersja 5V? W manualu prądy sa podane tylko dla wersji niskoprądowej (która jak wiadomo jest droższa i niedostępna w wersji temperaturowej -40...+85 - taka muszę zastosować) active 3,6mA; idle 1mA. atmega8-8PI | ||| | ||temp I=-40...+85, C=0...+70 | |wersja obudowy P=dip...
Udało mi się uruchomić tryb asynchroniczny, a zrobiłem to tak: #include <avr/io.h> #include <avr/interrupt.h> int main (void) { ASSR |= (1 << AS2); // tryb asynchroniczny TCCR2 |= (1 << CS22) | (1 << CS20); // preskalery TIMSK |= (1 << TOIE2); // odblokowanie przerwań z...
http://obrazki.elektroda.pl/2212581700_1... Witam, Moze rzeźba to za dużo powiedziane, sami oceńcie. Dwa miesiące, pełno rezystorów, kondensatorów, układów scalonych itp. później http://obrazki.elektroda.pl/3475354500_1... http://obrazki.elektroda.pl/7661925100_1... http://obrazki.elektroda.pl/5777556700_1...
Aby korzystac z rtc musisz podlaczyc kwarc 32,768 kHz do pinow PORTC 6 i 7. Ustawiasz timer2 na prace asynchroniczna i dobierajac prescaler na podzial przez 128 otrzymujesz przerwania co 1 s bez koniecznosci ladowania timera przy kazdym przerwaniu. Ponizej przedstawiam fragment kodu dla at90s8535 . Atmega8535 tez powinno dzialac. Sprawdz tylko czy nie...
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...
prosze oto kod mam problem z ogarnięciem dlaczego nie zlicza mi sygnałów z int0 #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include...
. Deklarując zmienną "dowpisania" jako bajt nic się nie zmienia. W czasie jednej pełnej pętli głównej licznik zwiększa się o 3, więc dla najwyższej możliwej częstotliwości pętla wykona się 16 razy zanim dojdzie do przerwania, nawet zostawiając w głównej pętli wysyłanie ocr2 przez uart, gdyby wywalić tę linijkę, pewnie trwałoby to jeszcze krócej. Nie...
Witam, może Wy mi pomożecie. Mam mały problem odnośnie sterowania prędkością silnika DC przez PWM. Mikrokontroler to atmega8 podłączony przez mostek H do silnika DC. Chcę w prosty sposób zmienić mu prędkość przez wpisanie mu do rejestru OCR2 odpowiednich wartości co się równa z odpowiednim wypełnieniem sygnału. Silnik po podłączeniu zasilania i nadania...
Napisałem, sprawdziłem oscyloskopem. [syntax=c] //zegar 8Mhz, takt co 0.125us #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define PWM0 35 #define PWM1 65 volatile uint16_t pwm0=PWM0; volatile uint16_t pwm1=PWM1; volatile uint16_t pwm2=40; volatile uint16_t pwm3=40; volatile uint16_t pwm4=40; volatile uint16_t...
Jest jeszce asynchroniczna praca licznika TIMER2. Kwarc zegarkowy do nóżek OS1 i OS2 no i fuse bity na wewnętrzny generator.
Lepiej użyj zewnętrznego kwarcu "zegarkowego" 32.768kHz podłączonego pod TOSC1 i TOSC2. Impulsy zliczasz w TIMER2 który jest specjalnie do tego przystosowany. A zyskasz dużą dokładność zegarka.
Witam, Mam następujący problem, buduje sterownik do akwarium i potrzbny jest mi do tego czas. Na początku stworzyłem procedurę przerwania na kwarcu wew taktowanym na 1mhz i t2, oczywście okazało się, że czas jest baaardzo nieprecyzyjny, pomyslałem że przy 16 bitowym t1 będzie to mozna dokładniej ustawić i przepisałem procedurę - efekt taki sam. Więc...
Timer zawsze odmierza do końca swojego zakresu. Timer0 oraz Timer2 są 8-bitowe, czyli liczą do 256, natomiast Timer1 jest 16-bitowy i liczy do 65536. Czyli jak takiemu Timerowi1 ustawisz wartość początkową 5536, to on policzy 60 000 taktów (do 65536) i potem wygeneruje przerwanie, czyli skoczy do odpowiedniego fragmentu kodu który mu zadasz (kod obsługi...
Kolego, przy tym kwarcu strasznie będzie Ci się to wolno rysowało. Nie lepiej podłączyć 16MHz i w przerwaniu od Timera wyliczyć sekundę? Autor postu zapewne będzie wykorzystywał kwarc 32.768kHz do odmierzania czasu w trybie asynchronicznym Timer2, a mikrokontroler ustawi np. na 8MHz z generatora wewnętrznego. Jeżeli tak zrobi, to jest to prawidłowo,...
Wszystko staje się proste i zrozumiałe jak słowo INT0 zmieni się na TIMER2: 1. Licznik Timer2 ma preskaler 128 i możliwośc taktownia z dodatkowego rezonatorka 32,768kHz. Właśnie po podzieleniu tej częstotliwości przez 128 (z preskalera) i 256 (z licznika) otrzymamy dokładnie okres przerwań 1s. Oczywiście rezonator trzeba dołączyć do TOSCx. 2. Brakuje...
Witam Mam banalny program, po włączaniu zasilania startuje licznik czasu, program prawie działa nie do końca dobrze. Atmega8 steruje wyświetlaczem LED (segmenty) z portu D, poszczególne cyfry od najbardziej znaczącej W4,W3,W2,W1 sterowane z portu B, z portu B jest też sterowanie jasnością wyświetlaczy (PWM) i buzerem. Ogólnie licznik liczy ale buzer...
A jeżeli chodzi o obliczenia to zobacz jak jest w przykładzie z timerem1 w pierwszym programie, preskaler ustalony wraz z wpisem do rejestru timera by zgłaszał przerwanie co 1s Napisałem szybki soft do RTC w atmega8, oczywiście timer2 taktowany asynchronicznie z XTAL reonatorem zegarkowym 32768 Nie będę opisywał co jest z czego, sprawdz w help bascoma...
Witam, jestem tu nowy i to mój pierwszy post, jako że czasem korzystam z tego co ludzie tu wrzucają też się czymś podziele: programowe sterowanie serwem w #include<avr/io.h> #include<util/delay.h> #include <avr/interrupt.h> /*void wyslijznak(char znak1) { while(!(UCSRA&(1<<... UDR=znak1;...
Witam serdecznie Napisałem krótki program wykorzystujący asynchroniczny licznik Timer2. Jako rezonator kwarcowy posłużył mi oscylator zegarkowy (32.768kHz). Program ma za zadanie generowanie przebiegu 1Hz na porcie PD1. Program: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define TIMER2_BUSY((ASSR...
timer2 atmega8 atmega8 zegar zegar atmega8
połączenie kapilary mikrotik firewall filter podłączyć domofon tabela
stable diffusion nissan quasquai
Gigaset A400 nie pokazuje numeru dzwoniącego i brak sygnału połączeń Wymiana gum przy lusterkach w Mercedesie W124 na zamienniki