Sam byś chciał zrobić ale zacząłeś od bardzo złej strony robić bo zamiast robić sam to prosisz nas o to abyśmy Ci znaleźli zestaw pod Twoje możliwości. Proponuję więc rozwiązać ten dylemat w ten sposób że albo rzeczywiście sam poszukasz sobie projektu pod swój poziom i sam go zrobisz, albo lepiej posłuchaj rad kolegów że to trochę za głęboka woda a...
Timer będzie odliczał np. sekundy tak jak Waitms 1000, tylko dokładniej. Dobra rada: Odinstaluj BASCOM i zacznij się uczyć C dlatego: http://mikrokontrolery.blogspot.com/2011... Kurs C: http://mikrokontrolery.blogspot.com/2011... Kurs AVR w C: http://mikrokontrolery.blogspot.com/2011...
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...
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ł...
Co do samego prędkościomierza to sprawa nie jest skomplikowana. Podstawowe założenie zapewne będzie takie: jeden obrót koła = 1impuls. Procek natomiast niech zajmie się pomiarem czasu pomiędzy tymi impulsami (uruchamiasz sobie TIMER na czas pomiędzy kolejnymi imulsami). Mając te dane jesteś w stanie obliczyć prędkość oraz przejechane kilometry. Potrzebujesz...
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...
w momencie wystąpienia przerwania program powinen wykonać to co jest na końcu kodu,od linii czas:(nie wiem czy o to chodzi) . Próbowałem kopiować kody działających rozwiązań(oczywiście dopasowując do uC) ale nic to nie dawało :|
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
https://obrazki.elektroda.pl/1047348400_... Do wykonania tego zegara skłonił mnie mój słabnący wzrok - leżąc w łóżku bez okularów nie mogłem odczytać godziny na zagarkach wbudowanych w sprzęt RTV - cyfry wyświetlaczy są po prostu dla mnie zbyt małe. Miałem w zapasach 4 czerwone wyświetlacze LED z cyframi o wysokości 20mm (po nieużywanym...
http://obrazki.elektroda.pl/4373549900_1... Witam wszystkich forumowiczów. Dziś Wam przedstawię zegar który wykonałem głównie z ciekawości, jest to projekt który został już opublikowany na elektrodzie przez użytkownika "Mariusz Wiśniewski" poniżej link do tematu. http://www.elektroda.pl/rtvforum/topic45... Prawdę mówiąc zegar...
Witam. Napisałem sobie prosty kod: /** * Timer - test */ #include <avr/io.h> #include <avr/interrupt.h> #define T0_INIT 0xFF //Wartość początkowa timera volatile uint32_t timer; //Odliczanie czasu przez timer /** * Przerwanie przepełnienia timera */ SIGNAL ( SIG_OVERFLOW0 ) { TCNT0 = T0_INIT; if ( timer > 0 ) timer--;...
Dzień dobry, chciałbym opisać zegar szachowy mej konstrukcji. http://obrazki.elektroda.pl/2838677600_1... http://obrazki.elektroda.pl/4442183300_1... http://obrazki.elektroda.pl/1402313500_1... Pomysł zbudowania takiego zegara zrodził się w mej głowie, kiedy w okresie zainteresowania mikrokontrolerami...
No to daj na zliczanie zewnętrznych impulsów timer2(?). Może po jakimś preskalerze- nie liczyłem. Timer jako counter.
Przerwanie od przepełnienia (co 1 sek.) Jeśli masz taką potrzebę możesz co 1 sekundę, ale jeśli nie musisz, to wykorzystaj timer do końca i wybudzaj co 8 sekund :) Czy poza Atmegą8 i Atmegą32 jest jeszcze jakiś inny AVR mający taką fajną funkcję jak możliwość podpięcia kwarcu zegarkowego oraz to aby pracował na nim w trybie asynchronicznym ? ... nie...
Zastosuj dostępny kwarc zegarowy 4194304Hz. Config Timer1 = Timer , Prescale = 64 Timer przepełni się co 1 s bez wartości początkowej! Włączasz go i zapominasz, że istnieje. W przerwaniu tylko Incr sekunda. Mam zegar na ATMEGA8 z budzikiem ustawiany z pilota RC5. Chodzi ok.
Pokaż, jak w przerwaniu przeładowujesz timer wartością początkową. Pozdrawiam Mariusz
DZIALA. podsumowanie: oczywiscie ze wszystko poustawialem z dokumentacja. nie wiem o jakie fuse'y chodzi - chyba, ze o te co ustawiaja zegar na wewnetrzny RC - ale to juz napisalem. Pomogla pierwsza rada - czyli kondensatory. opcja z trymerem tez pewnie by zadzialala - bo juz przy wlutowaniu jednego uklad zaczal dzialac - no ale dalem dwa. teraz robie...
http://obrazki.elektroda.pl/5457627400_1... Witam! Na wstępie muszę powiedzieć że to moja pierwsza tego typu konstrukcja, więc proszę o wyrozumiałość :) Chciałbym przedstawić konstrukcję nad którą ostatnio pracowałem. Jest to prosty zegar bazujący na mikrokontrolerze Atmega8 oraz RTC PCF8563P. Na pomysł stworzenia takiego urządzenia...
Witam Jestem w trakcie robienia zagara nixie ze strony http://mirley.firlej.org/zegar_nixie Mikrokontrolerem jest Atmega8 a wkład zrobiony na Bascomie. Potrzebuję dodać opcję chwilowego wyłączenia lamp, w celu zabezpieczenia lamp przed zatruciem. Bardzo proszę o pomoc. To kod: '************* Konfiguracja uC ***************** '***************************************...
[syntax=c]int main(void) { // ustawienie końcówki OC1A (PB1) sprzętowy PWM jako WYJŚCIE DDRB |= (1<<PB1) ; // ustawienia TIMER1 OCR1A = 499; //500 TCCR1A = (1<<COM1A0);//toggle TCCR1B = (1<<WGM12) | (1<<CS10); // tryb CTC + zegar 1MHz while(1); } [/syntax] Nie musisz uruchamiać przerwania bo licznik sam będzie machać nogą z częstotliwością...
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...
Witam Walczę od jakiegoś czasu z timerem, próbuję odmierzać czas, no i niestety zegar mi się delikatnie "rozjeżdża". Moglibyście Panowie podpowiedzieć mi, gdzie robię błąd. atmega8 z kwarcem 8Mhz. [syntax=c] #include <avr/io.h> #include "lcd_lib.c" #include <avr/interrupt.h> volatile char time_s=0; volatile char time_m=0; volatile char time_h=0;...
Można i tak lecz chciałem zamknąć wszystko w jednym uC i wykorzystać wewnętrzny RTC Atmegi. Żeby zwolnić któryś timer wystarczyło by, odbiór Rc5 zrealizować w przerwaniu INT0 albo INT1 jak wcześniej wspomniał kolega Mariuszek15 pozdrawiam
Masz tak- zegar odmierzający 1s. A co by szkodziło gdyby odmierzał co 100ms. Albo co 10ms czy 1ms. Wtedy w każdym przerwaniu można zwiększać jakieś zmienne i dopiero gdy osiągną zadaną wartość wykonywać jakieś funkcje. Wtedy zamiast _delay() możesz sprawdzić czy zmienna osiągnęła jakąś wartość i dopiero wtedy wykonać jakąś funkcję. Bo _delay() to jest...
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...
To prawda, na zewnątrz prezentuje się ok, a ponieważ do środka się nie zagląda więc w czym problem? Ja bym dodał jedną rzecz - podtrzymywanie bateryjne. W piekarniku mam fabryczny zegar bez podtrzymywania i wiem jakie to jest wkurzające jak na chwilę zabraknie zasilania. W takiej obudowie z pewnością jakaś bateria się zmieści. Warto też mu dodać jakiś...
Dopiero uczę się pisać w bscomie, a o tym ponownym ładowaniu timera pisało w pomocy. Timer przeładowuje się 125 razy na sekundę. Dodaje przeładowania timera i kiedy mam 125 dodaje 1 sekunde. To że wewnętrzny oscylator jest niedokładny wiem, ale aż takie przekłamania chyba nie powinny wystąpić.
[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....
Przeglądając Twój program mam takie małe spostrzeżenie, a mianowicie w pętli głównej masz wywołaną procedurę Gettime - ' Call Gettime' - która działa na I2C. Co się stanie gdy podczas wykonywania procedury Gettime zostanie zgłoszone przerwanie od Timer'a?? Program przerywa wykonywanie procedury Gettime i skacze do obsługi Timera a tam jest wywoływana...
Tak sobie właśnie liczę.... i nie wiem czy dobrze myślę, ale: Skoro mamy $crystal = 16000000 i mamy ustawione Config Timer0 = Timer , Prescale = 64 to czy przypadkiem nie wychodzi nam, że przerwanie jest co 4us? W kodzie programu jest podane 4ms.
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...
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...
Nie przesadzaj. Być może zablokowałeś tylko pozornie, bo przy programowaniu ISP, częstotliwość taktowania procesora musi być co najmniej 4x większa niż częstotliwość sygnału SCK z ISP. Czyli dla kwarcu 32768Hz nie może przekraczać 8kHz, wiele programatorów ma do tego specjalną zworkę, ale nie wszystkie i stąd problem. Swoją drogą przy asynchronicznym...
Załóżmy: Zegar = 8MHz Preskaler = 64 Obliczenia: 1 / (8MHz / 64) przerwanie , a w nim zwiększać niezależny licznik (jakąś zmienną). Wtedy wynik: CZAS timer nie zdążył się przepełnić , to od startu do teraz minęło 8 x 120 = 960us...
Raczej wina kwarca. Ale wpływów jest więcej. Jeśli nie chcesz laborować z kwarcami a kondensatorami około niego, zrób tak: $crystal = 10000000 'kwarc 10MHz Config Timer1 = Timer , Prescale = 1 , Compare A = Disconnect , Clear Timer = 1 Compare1a = 50000 'przerwanie co 5 ms On Compare1a P_czas Enable Interrupts Enable Compare1a . . ....itd... W obsłudze...
Jak w temacie nie mogę poradzić sobie z obsługą timer0 ciągle coś nie tak a kontrola składni nie wyrzuca mi żadnych błędów i na ile sprawdzam kod wszystko powinno być ok. Program załączony to prosty zegar gdzie dodatkowo generuje sygnał 125kHz dalej do obsługi PWM (ta procedura jeszcze nie dopisana). [syntax=basic4gl]$regfile = "m8def.dat" $crystal...
[syntax=basic4gl] $regfile = "m8def.dat" $crystal = 4000000 Dim Co4ms As Byte Dim Flaga As Bit Config Pinb.1 = Output Config Timer0 = Timer , Prescale = 256 On Timer0 Zegar Enable Timer0 Start Timer0 Co4ms = 0 Flaga = 0 Portb.1 = 0 Do If Flaga = 1 Then Flaga = 0 Incr Co4ms End If If Co4ms = 250 Then Co4ms = 0 Toggle Portb.1 End If Loop Zegar: Set Flaga...
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);...
GienekS - a ilość przepełnien timera nie mozna zliczac sobie w jakims rejestrze/zmiennej? delta85 - jeżeli timer zlicza zegar procesora i jest 8 (nie wiem) bitowy, to kazdy takt to jest 1/4000000 sekundy. W 8 bitowym masz 256wartosci, czyli co 256*1/4000000sek (lub mniej niż 256 - to sobie dobierasz) masz przerwanie. Teraz liczysz sobie ile było przerwan...
witam, napisałem prosty zegar który niestety spóźnia się około 4sek na dobe, program pracuje na Atmega8 z zewnętrznym kwarcem i kondensatorami 33pF, próbowałem ten sam program z dwoma kwarcami 8MHz i 7,3728MHz z takim samym efektem, kwarce są w metalowych obudowach, kondensatory podpięte do masy, oczywiście Atmega8 przestawiony jest na prace z zewnętrznym...
Witam Piszę program (bascom) i nadziałem się na problem z którym nie mogę sobie poradzić. Timer 1 pracuje jako zegar i po spełnieniu warunku , ma załączyć przekaźnik który ma być załączony na czas_pracy i po odliczeniu czasu pracy ma wyłączyć się na czas przerwy i zablokować włączenia przekaźnika na ten czas. Tak w skrócie: kod : $regfile = "m8def.DAT"...
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ą...
Dzięki za podpowiedzi. To żeby nie zaczynać nowego wątku jeszcze jedna prośba. W datasheet pisze, że ten procek ma zegar czasu rzeczywistego. Myślałem, że będzie to jakis osobny układ, a z tego co widzę w necie to nalezy korzystać z jednego z timerów i w sumie ten rtc to taki timer jak każdy inny. Czy może coś przegapiłem i są jakieś osobne rejestry...
Mam taki problem: chcę w programie wykorzystywać przerwania od przepełnienia dwóch timerów (0 i 1). W timer0 mam obsługę wyśw. LED i opóźnienie dla klawiatury a w timer1, z założenia wywoływanym co 100ms, coś jakby zegar z minutami i sekundami, choć nie jest to najważniejsze bo to program testowy. Problem w tym, że przerwanie od timer1 wcale się nie...
Witam! Od niedawna męczę się z odebraniem kodu Rc5 w tle działania innego programu. W moim wypadku jest to zegar z budzikiem na LCD który działa bez problemu lecz jak tylko dorzucę do programu procedurę odbierania Ir to wtedy przestaje mi liczyć czas mój zegar. Niżej zamieszczam przykładowy program z odliczaniem 1 sekundy przez Timer0 i dodanym do tego...
Odniosę się tylko do nadajnika, bo mam wrażenie, że autor wątku w tej chwili właśnie nadajnik próbuje wykonać. Nadajnik możesz to zrobić w oparciu o timer, na którym ustawisz sobie określony zegar - np. te porządane 250 kHz. Być może musisz ustawić 500kHz - aby wyłapywać nie tylko czas cyklu, ale i jego zbocze narastające i opadające. Potem budujesz...
Witam wszystkich, Tak jak w temacie: Poszukuje sprawnego programu aby zrobić zegar LCD na ATMEGA8. Program musi być w języku bascom. Znalazłem coś takiego ale nie działa :/ Opoźnienie sekundy wynois jakies 4s 'Program zegara wykorzystującego przerwania od Timer1 'Przerwanie przepełnienia Timer1 jest generowane co 1 s '8 MHz/256/31250 = 1 s 'Przycisk...
Poszukuję wsadu do AtMega8 umożliwiającego stworzenie zegarka z datą na wyświetlaczu 2x16. Znalazłem kilka ale była też tam obsługa czujników temperatury (bądź pod wyświetlacz led), a ja odczytywać temperatury nie chcę. Czy któryś z forumowiczów dysponuje takim plikiem, lub potrafiłby zmienić ten, tak aby nie było obsługi czujników temperatury: '[syntax=basic4gl]Program...
Witam serdecznie, mam problem który polega na dostosowaniu programu działającego na AT90S8535P do Atmega8. Dokładniej problem polega na tym że Atmega8 nie posiada wyjść tosc1/2. Poradzono mi aby sam uC pracowal na wewn. układzie RC a zegar na zewnetrznym oscylatorze. Szukałem info na temat zmiany konfiguracji ale nie mogę wymyśleć co zmienic w kodzie...
Witam Ostatnio złożyłem z książki Marcina Wiązani-"Programowanie_mikrokontrolerow_... dwa układy zegarka i termometru. Próbowałem połączyć te dwa układ i napisałem taki program $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 ,...
Witam. Żeby się nie rozpisywać, mam taki kod do zegara: '----Zegar nixie LC-531----.' 'opis złącza ISP 'czerwony - "+" 'zielony - RESET 'biały - MISO 'niebieski - SCK 'brązowy - MOSI 'czarny - "-" '------opis podłączenia lamp----.' 'segmenty-sterowanie 74141: 'A-pb.0 'B-pb.1 'C-pb.2 'D-pb.3 'pozycje: 'godziny dziesiatki-pc.0...
No jest w planie kwarc 8MHz bo odcinki są po kawałku nawet do 12 godzin (pomiędzy odszranianiem) ale tu mi chodziło raczej o krótszy czas około 3 min pozwalający sprężarce na wyrównanie ciśnienia, zrobiłem coś takiego podobnego tyle że na timer0 ale za cholere nie mogę dobrać preskalera i ilości impulsów. Zegar wew atmega8 1MHz poza tym nie zauważyłem...
Witam Mój pilot TV ma wiele przycisków, które nie działają bezpośrednio http://obrazki.elektroda.pl/5045240700_1... jak np. A B C D, które mógłbym wykorzystać do sterowania czymś innym, jak np. załączenie światła ipt. Do dekodowania kodu z pilota chciałbym użyć mikrokontrolera Atmega8, ale najpierw muszę zbadać sam kod który wysyła dany...
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...
Posiadam książkę pt. "Programowanie mikrokontrolerów AVR w języku BASCOM" Marcina Wiązania i jest tam przykład zegarka z wykorzystaniem timera. Problem polega na tym że sekunda tak naprawdę trwa "wieki" prawie 8s prawdziwych. Połączyłem układ zgodnie ze schematem w książce i tak samo, odłączyłem rezonator nic się nie zmieniało, zmieniałem taktowanie...
Witam. Mam straszny problem z ATMEGA8 (zresztą podobne rzeczy działy się w ATMEGA16). Mianowicie, robię sobie prosty sterownik. Posiada on m.in. 4 przyciski, zrobione w ten sposób, że są one z jednej strony podłączone do wejść PIND.0 – PIND.3. Wejścia te podłączyłem również przez rezystory 4,7k do masy, oraz równolegle do tych rezystorów dałem...
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?...
Przesyłam fragment kodu dla "paluch_gda" jedną cewką zapłonową na dwa obroty wału (pełny cykl pracy) na jednej cewce generowane są 4 takie "odcinki czasu" (iskra przeskakuje po raz na każdej ze świec), więc na 1 obrót wału przypadają 2 "odcinki czasu". Dzielimy więc wartość Nr (liczba "odcinków czasu" w 1 minucie) przez dwa i otrzymujemy prędkość obrotową...
Trochę dziwnie napisałeś ten program, pozwoliłem go sobie trochę przerobić. Sprawdź konfigurację portów żebyś nie uwalił sobie procka, i napisz czy poniższy program rozwiązał Twój problem. Kod: [syntax=basic4gl] 'Tester napiecia na AVR ' ' - zegar wewnetrzny 1 MHz ' - górny fuse bit D9 ' - dolny fuse bit E1 'procesor ATMEGA8 $regfile = "m8def.dat" $crystal...
Witam. Chciałbym sobie wykonać zegar z tego tematu [url=http://www.elektroda.pl/rtvforum/to... ale chciałbym dodać do tego zegar RTC. Myślałem żeby użyć DS1307 lub PCF8583, do obsługi tego drugiego znalazłem taki oto fragment kodu: [syntax=basic4gl]Config Sda = P3.5 'konfiguracja linii SDA magistrali I2C Config Scl = P3.7 'konfiguracja...
Witam Chcę zrobić w miarę dokładny timer na ATMega8. Ten na którym wykonuje prototypowe projekty działa ale się bardzo późni. Otóż przedstawiam problem: Wykonałem układ zapalający diodę LED przy pomocy ATMega8 ( nic więcej - taki prościutki układ). DO tego napisałem program w C o treści jak ponieżej: ****************************************...
Poczytałem trochę bo właściwie nie wiedziałem nic, na temat timerów i napisałem ich subrutyny. Podczas liczenia prędkości zmienne czas_s/czas_ch będę mnożył przez 0.004 i dzielił przez podaną drogę. Co ty na to? KOD: '***********PROGRAM POMIAR PREDKOSCI************ '*************** Konfiguracja uC *************** $regfile = "m8def.dat" $crystal...
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...
Witam Próbuje zrobić zegar z książki Marcina Wiązania "Programowanie mikro kontrolerów avr w języku Bascom" Przepisałem cały program z książki, podłączyłem według schematu http://obrazki.elektroda.pl/8287318100_1... , i niestety na lcd pojawiają się kwadraciki. Programator mam usbasp, i program mkAVRCalculator. W zakładce fusy uproszczone...
Witam jestem początkujący w programowaniu i mam taki problem, że po załadowaniu pliku na przykład prosty stoper: [syntax=basic4gl][/syntax ... Bardzo prosty zegar bez możliwości ustawiania Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Migaj As Bit...
Żeby pisać na mikrokontrolery w C++ trzeba znać ten język bardzo dobrze. Niestety mikrokontroler to nie PC i nie "wybacza" nieprzemyślanych konstrukcji, które kończą się alokacją ogromnych ilości pamięci. Tak konkretniej to chodzi mi o nieprzemyślane używanie klas. C na mikrokontrolery jest znacznie łatwiejszy. A mógłby ktoś napisać w C++ i w C program...
Po podpięciu PCF mogę ustawiać / pobierać czas, niestety nie jest on w inny sposób zmieniany przez ten układ. w skrócie : PFC nie odmierza czasu. Kwarc 32k, kondensator 33piko. Zegar podłączony na płytce stykowej tak jak na schemacie, tylko pod ATmege8. Kod : w mainie w nieskonczonej petli jest pobierany czas i wrzucany na wyswietlacz. rtc.h [syntax=c]...
Witam Walczę z programem w Bascomie (coraz mniej mi się on podoba) listing poniżej. Docelowo będzie to zegar na lampach nixe. Projekt bazujący na mirley, ale zmianę ustawień chcę zrobić na impulsatorze. Dlaczego funkcja Zmiana_godziny i Zmiana_minuty nie zwraca mi wartości? Edytowałem post umieszczając w tytule znacznik
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...
co napisaliscie jako swoj pierwszy program na dany uC w danym jezyku (rozbudowy sie licza, byle by wciaz byla to ta sama baza) n. n. - literka, cyferke z przodu dodam sam. zachowujcie chronologie w swoich dokonaniach na roznych platformach jezykowych i sprzetowych, tak aby to mialo sens! ____________________ 0x1-a. Freddie Chopin - migacz diodkami o...
Jeśli chodzi o sprzętowego PWMa to chyba pokuszę się o AVR136, tylko zamiast atmegi wykorzystam attiny2313. Zasymulowałem sobie to na razie tylko w proteusie i całkiem ładnie to śmiga :) ________________________________________... Ok. Potrzebuje Waszej pomocy. PWMy ładnie działąją (12 kanałów), ale nie wiem jak zwiększyć częstotliwość tego PWMa....
No to temat troszke ruszam, korzystam oczywiscie z kawalkow gotowych kodów co by nie klepac od nowa. W zwiazku z tym iz czekam dopiero na plytki w ktorych bedzie i RTC i podtrzymanie zasilania bawie sie na tym co mam , czyli atmega8 i zegar obsluguje na nim. '8 MHz/256/31250 = 1 s $regfile = "m8def.dat" $crystal = 8000000 Config Pinb.3 = Input...
Witam po raz sto pierwszy. Stali bywalcy elektrody pewnie mają już dosyć tych tematów (i mnie zapewne też :D), ale powróciłem do tego zagadnienia. Żeby nie było, poświęciłem dwa dni na szperaniu po elektrodzie w poszukiwaniu postów o tej tematyce; znalazło się troche (oj troche :)), ba...nawet znalazłem kod źródłowy w C/C++ który co prawda kompilował...
Zaznacze na początku, że nie jestem jeszcze zbyt mocny jeśli chodzi o mikrokontrolery. Napisałem (na podstawie kodów znalezionych w sieci) programik, który za pomocą przycisków pozwala zwiększać/zmniejszać wypełnienie sygnału (PWM) i traktuje nim diodę. Chciałbym za pomocą dwóch innych przycisków traktować drugim sygnałem PWM drugą diodę. Jak to zrobić?...
Witam, próbuje wykonać prosty odtwarzacz midi w oparciu o mikrokontroler atmega8535. Bazując na przykładach z internetu udało mi się temat jakoś wstępnie ogarnąć. Niestety na atmedze nie uruchamia mi się zegar o który oparte mają być programy. Wszystko jakby "wisi". Dodam że programuję w C w środowisku Code Vision AVR. W celu zlokalizowania problemu...
Znacznie lepiej (i zdecydowanie dokładniej) byłoby wykonywać to w przerwaniu timer-a pędzonego rezonatorem zegarkowym, lub cały uC z niego taktować. Skrócenie okresu możnaby chociażby, realizować ładując odpowiednią liczbę do timer-a po przepełnieniu. Pozdrawiam, GSM
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...
1. Volatile: http://mikrokontrolery.blogspot.com/2011... 2. Tryb asynchroniczny: 1. Disable the Timer/Counter2 interrupts by clearing OCIE2 and TOIE2. 2. Select clock source by setting AS2 as appropriate. 3. Write new values to TCNT2, OCR2, and TCCR2. 4. To switch to asynchronous operation: Wait for TCN2UB, OCR2UB, and TCR2UB...
Kolega czytał opis w helpie o Config RC5 ? jest tam napisane, że GETRC5 korzysta z Timera 0 , a tego samego timera używasz do multipleksowania.
Na forum timerów jest zapewne sporo - użyj wyszukiwarki. Podobnie w sieci. Pisząc "odlicznie czasu" masz na myśli zegar czasu rzeczywistego (sek, min, godz), czy jakąś inną jednostkę np. mikrosekundy, itp? WinAVR - jeśli możesz zainstaluj AVR Studio 4 i nie męcz się więcej.
Kosmo Timer1=34285 wyszło z prostej kalkulacj. przy zegarze 8000000 i preskalerze 256, timer uP'a zliczy 8000000/256= 31250 "impulsów". Czyli aby licznik sie przepelnil nalezy zaczasc zliczanie od 65535-31250=34285.
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)...
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
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).
TCCR0 = _BV(x<<CS00); Źle użyłeś makra _BV. _BV(x) jest równoznaczne z ( 1 << x ), czyli w Twoim przypadku próbujesz wykonać podwójnie przesunięcie bitowe. Jeżeli x = 3 (CS00=0): _BV(3<<CS00) = _BV(3) = (1<<3) = 0b00001000 czyli TCCR0 będzie równe 0b00001000 . Innymi słowy, próbujesz ustawić bit tylko do odczytu, zamiast...
Tak na szybkiego możesz sprawdzić to: Wstaw w odpowiednich miejscach w swoim programie. int second=0; SIGNAL (SIG_OVERFLOW2) { second++; } int main(void) { LCD_Initalize(); LCD_Clear(); while(1) { char t1[2]; itoa(second,t1,10); LCD_WriteText(t1); } }
Wycinek z datasheet atmega8a: "The Asynchronous Timer/Counter uses the same XTAL pins as the CPU main clock but requires a CPU main clock frequency of more than four times the Oscillator frequency. Thus, asynchronous operation is only available while the chip is clocked on the Internal Oscillator." Niestety do poprawnego działania potrzebny jest oscylator...
Jak zerkniesz do dokumentacji to się dowiesz że może też być taktowany zegarem systemowym. Zerknij w rejestr ASSR bit AS2
Witam. Tak na szybko analizując kod: Dla Timer0 włączasz dwa przerwania od porównania: http://obrazki.elektroda.pl/6165324400_1...
w tym te od 16-31 z możliwością wpisywania zmiennej jako wartości (ldi r16,0x12 ) Ja uhm... Bardzo zmienna... "Load Data Immediate" czyli albo natychmiastowa albo stała jak dla mnie ze zmienną to ma tyle wspólnego co... Co do portów to jest PINx jest do odczytu realnego stanu na porcie. Ja kolego proponuję ksiażkę Baranowskiego uC avr Atmega w praktyce...
delay w przerwaniu?! Nie przesadzasz? Dlaczego 2 razy ustawiasz TOIE2? Po co zerujesz TCNT2? Po co ustawiasz TOV2? Spróbuj najpierw sprawdzić ten kod z taktowaniem timera z podstawowego zegara, nie z kwarcu zegarkowego. Wtedy będziesz wiedział, czy problem leży w oprogramowaniu, czy w braku oscylacji.
przydalo by sie gdzies dopisac START TIMER1 no i przydaloby sie dokladniej opisywac problem. Bo moj telewizor tez nei chodzi, a swietnie oglada sie w nim program TV.
takie pytanie dodatkowe jeszcze mam, jaka najnizsza czestotliwosc mozna ustawic (na wew zegarze) ? W opisie rejestru OSCCAL (nota od ATmega8) jest napisane, ze można zjechać do 50% wartości nominalnej, czyli teoretycznie ok. 500 kHz.W niektórych nowszych AVR można i 128kHz.
t2 może pracować taktowany z CLKio (AS2 w ASSR skasowany) lub zegarem pochodzącym z pinu TOSC1 (który pracuje łącznie z TOSC2). Asynchroniczość polega na tym, że oscylator na TOSC może pracować na innej częstotliwości niż zegar procesora. Np procesor może iść na zegarze 8MHz (wew.RC), podczas gdy do pinów TOSC jest podłączony kwarc zegarkowy i z taką...
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...
Bo tym kwarcem nie odmierzysz 1s. w taki prosty sposób. Bęziesz musiał ładować wartość początkową do timera. Z kawrcem 2²²Hz wartość początkową trzeba by ustawić na 0 czyli tyle na ile timer wskakuje po przepełnieniu. Jednym słowem z tym kwarcem timer samoczynnie generuje przerwania co sekundę. Jak nie wierzysz to sobie policz. Kwarc ten był...
Proszę bardzo ;) Timer napędzany jest od systemowego taktowania. Jeśli każę mu policzyc do jeden i odwrócić pin to w pierwszym takcie zegara licznik Compare1a ma zero i pin nie jest odwracany ;) Dopiero za drugim razem pin jest odwracany. Z tego powodu że żeby mieć częstotliwość na pinie trzeba go raz mieć w stanie wysokim a raz niskim, a da się to...
No, tak dobrze to nie jest. AVR-y (a w nich timery) nie mogą poprawnie zliczać impulsów o częstotliwości większej niż połowa częstotliwości zegara zakladając na wejsciu wypełnienie przebiegu 50%. Niezbędne będzie zatem zastosowanie preskalera. Proponowałbym ATMEGA8 z kwarcem 16MHz i z prescalerem /4 zbudowanym np z cyfrówki 74F74. Mamy zatem poniżej...
Ma być External Cristal Oscilator 3.0-8.0MHz w/g doc2502.pdf (s.24), czyli CKSEL0-3 niezaprogramowane (1111). Fusebit KL(SUT1:SUT2) też najlepiej dać na "11". Fusebit "F" (CKOPT) z Fusebits High można dla stabilniejszego zegara zaprogramować (czyli 0).
atmel.com nie działa ? ;-) http://atmel.com/dyn/resources/prod_docu... TOIE0: Timer/Counter0 Overflow Interrupt Enable When the TOIE0 bit is written to one, and the I-bit in the Status Register is set (one), the Timer/Counter0 Overflow interrupt is enabled. The corresponding interrupt is executed if an overflow in Timer/Counter0 occurs,...
timer atmega8 zegar timer timer zegar
zbiornik zmywarka schemat elektryczny avensis serial online online
wzmacniacz głośnik buczy creative t3130
Audi A6 Tiptronic - Szarpanie skrzyni a pompa wspomagania Wentylacja odciągowa do wanien HCl 1600x3200 mm – projekt dla 6 sztuk, szczeliny 35 mm, skruber NaOH