Może to pomoże: http://www.elektroda.pl/rtvforum/downloa...
Prosze bardzo... Powodzenia... Plik sprawdzony programem Avast Anitivirus 4.6 z baza danych sprzed miesiaca...
Witam wszystkich czy ktoś mógłby podpowiedzieć jak uzyskać odliczanie czasu w sek na atmedze? w programie CodevisionAVR uzyskuje taki kod w którym niby jest już jakiś wietrzny timer ustawiam go nawet na 8MHz ale nie wiem jak wyprowadzić to odliczanie sekund np na lcd wystarczy żeby ktoś podpowiedział to a dalsza cześć czyli odliczanie minut i godzin...
Nie przestawialem fusebitów bo jest on taktowany zewnetrznym kwarcem 8Mhz.. A co do tego 10^6.. hmm... zielony jestem jeszcze i tak sobie jakos wymyśliłem, że jak zrobię takie taktowanie to będę mógł sobie dobierać wyższe czestotliwosci co da mi dokładniejsze wyniki... oczywiscie mogę się mylić i dlatego szukam tutaj rozwiazania... Dodano po 58 To jest...
Najprościej to chyba tak: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define TIMERSTART 6 volatile uint8_t FLAGA_50 = 0; volatile uint8_t FLAGA_1000 = 0; // funkcja obslugi przerwania TIMER0_OVF 8MHz / 64 * 250 wychodzi co 2ms // dla innego taktowania nalezy ustawic inny preskaler i/lub inne liczniki stawiania flag ISR(TIMER0_OVF_vect)...
Witam, potrzebuje pomocy przy zrobieniu licznika czasu zwarcia stycznika. Stycznik miałby być wpięty równolegle do napięcia podawanego na silnik elektryczny który dozuje mieszankę paszową dla kur. Atmega odliczała by czas zwarcia stycznika. Zależy mi aby program: 1. Przeliczał czas podanej mieszanki ( czas x ilość mieszanki ) ( przypuśćmy 1 minuta pracy...
Atmega 328 Przerwanie 50hz do sterowania fazowego blokuje odliczanie millis(); , występują opóźnienia w całym programie. Trudno cię zrozumieć, ale sprawdzanie millis() wskazuje na to że nie używasz potencjału jaki jest w sprzęcie, powinieneś ustawić przerwanie tak aby timer wywołał je kiedy jest potrzeba zmiany stanu wyjścia, albo w ogóle bez udziału...
procesor atmega 32 całe to odliczanie czasu w sumie nie będzie widoczne w programie ale bardzo ważne więc chodzi mi bardzie o prostotę kodu Proszę poprawić swoje posty - regulamin p3.1.13 .
Zauważyłem też, że przy zmianie warstwy każda VIA ma blisko przelotki podłączone do masy tak jak to Bogatin inni zalecają 👍 W bibliotece footprintów w dziale "Symbols" są właśnie polaryzacje gniazda BarrelJack. Gabarytowo są wielkie i można coś na szybko namalować wedle własnego uznania. Symbol jest prosty, kilka minut i gotowe. To te dwa duże na obrazku...
Nie wiem jakiej wersji używasz. Poniższy kompiluje się na pewno w 2075 - specjalnie sprawdziłem :D [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '********* TUTAJ SOBIE USTAW JAK CI PASUJE ********** Pin_wyjsciowy Alias Portc.5 Przycisk Alias Pind.2 : Set Portd.2 Const 1_ilosc_minut_do_odliczenia...
Jeśli chcesz gotowy kod to masz go w przykładach do książki do ściągnięcia za darmo z ftp helionu. Możesz sobie tam zrobić dowolną liczbę wyświetlaczy, o ile pamiętam kod jest okomentowany, więc nie powinno być problemów. W powyższym kodzie żeby zwiększyć liczbę cyfr trzeba dodać kolejne case w ISR, co jest pomysłem takim sobie. Warto też wyświetlaną...
Zainteresuj się funkcją Input Capture Unit - opis oraz przykład dla C: http://mikrokontrolery.blogspot.com/2011...
W zasadzie to jest jeszcze nieco bardziej skomplikowane. Można ustawić jakiś tryb CTC-albo od ICR albo od COMP- i po osiągnięciu tej wartości licznik się wyzeruje. Ale jeśli się wyzeruje np. po osiągnięciu wartości wpisanej w ICR to jeśli wartość wpisana w COMP będzie mniejsza niż w ICR to też wygeneruje żądanie obsługi przerwania w TIFR. Jeśli na to...
MADMAX1978 --> hehe ciekawy temat ;) dla grupy para-militarnej . No ale jeśli to tylko zabawa czy tam gra to żaden problem. Tak jak koledzy mówili możesz użyć dowolnego procka nawet ATmega8 jednak tak prostą rzecz spokojnie da się zrobić na jeszcze mniejszym procku - wystarczy np ATtiny2313 Niestety obawiam się, że sama wiedza jaki to procek - nie wystarczy...
Może problem w funkcji opóźnienia... Nie jest to szczególnie dokłądna metoda... Wykorzystaj raczej timer do odliczania czasu...
... potrzebuje tego urządzenia do atrapy bomby która będzie używana do airsoftu ... A taka może być?: [youtube]https://www.youtube.com/watch?v... Jeśli tak, to: http://mikrokontrolery.blogspot.com/2011...
Nie za bardzo się nadaje. Musisz poszukać rezonatora kwarcowego z częstotliwością która dzieli się przez potęgę 2. Poza tym atmega ma chyba wewnętrzny oscylator ustawiany na 128kHz trochę mało ale zależy co zamierzasz robić.
nie wiem w jakim celu są te 2 minusy Operator predekrementacji. Zmniejsza div_1s o jeden. jakiego typu ma być ta zmienna div_1s? volatile? Może być np. unsigned short. Lokalna statyczna w procedurze obsługi przerwania. 50Hz jest wystarczające, aby oko ludzkie, nie wyłapało zmiany. Nie jest wystarczające (no, może dla żarówek... :D ). Jak mam ją zainicjować...
Zrób to tak: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 4000000 Config Timer0 = Timer , Prescale = 256 'onfiguracja timera, przescaler 256 On Timer0 Odmierz_1s 'włączamy timer0 Dim Licz_8ms As Byte 'definiujemy zmienną pomocniczą Dim Sekundy As Byte Enable Interrupts 'włączamy zezwolenie na przerwanie Enable Timer0 Load Timer0 = 125 'ładujemy...
Ramki oddzielone są miedzy sobą przerwą trwającą co najmniej - i tu nie pamiętam 1,5 lub 3,5 znaku. Ramki oddzielone są od siebie na przynajmniej 3,5 *czas nadania znaku i znaki w ramce na nie więcej niż 1,5 *czas nadania znaku. Właśnie nie wiem jak odbierać te ramki w tym wyznaczonym czasie, proszę o jakąś podpowiedz co do tego buforu i sposobu odliczani...
Po zaliczeniu jednego, krótkiego "kliku" można np. ustawić najstarszy bit, a pozostałe mogą służyć do odliczania czasu, zarówno pierwszego(oraz dłuższego) jak i drugiego naciśnięcia.
Nie wiem czy wyjdzie to jako kolejny post lub dodany po czasie :D ..., ale po pierwsze chciałbym byś nie myślał że moje uwagi są złośliwe. Po prostu zapytań o różne aspekty programowania w Bascom jest tak wiele że lepiej jest odpowiedzieć na ogólnodostępnym forum niż musieć sie powtarzać. Jest szansa że jeszcze ktoś to przeczyta :D Zamiast za każdym...
U2008 jest dobrym rozwiązaniem przy silnikach, (EDIT: ale nie transformatorach) (obciążeniach indukcyjnych), przy żarówkach, grzałkach (obc. rezystancyjnych) łatwiej się obyć bez. U2008 sterowany jest napięciem na n. 3 napięcie to można wytworzyć na dwa sposoby: Sterując transoptor sygnałem analogowym, a po stronie U2008 zrobić, zamiast potencjometru,...
A jak wygląda wyświetlacz 3-segmentowy? Nigdy jeszcze takiego nie widziałem... Program napisz od nowa - ten nie ma prawa działać. Zacznij od przerwania timera. Odliczania czasu NIE DA się zrobić bez timera.
Czy mam szanse uzyskać dokładność na poziomie 0,000 001 s? Tak masz. Od zbocza narastającego z sygnału 1 PPS z odbiornika GPS zaczynasz odliczanie. Następne zbocze powinno przyjść po 1000000 odcinków o dł. 1 us. Jeśli teraz został naciśnięty przycisk to sprawdzasz stan licznika i już wiesz kiedy był wciśnięty. Trzeba tylko dobrze napisać kod, aby równo...
:):) I znowu na odwrot:) Jak ustawisz TCCR1B=0xC; Czyli to o co Ci chodzi(tryb CTC) to musisz zostawic makro wywolujace przerwanie takie jakie miales:) SIGNAL(SIG_OUTPUT_COMPARE1A) ale radzilbym zmienic na taka nazwe: ISR(TIMER1_COMPA_vect)
seja4321 Napisałem kilka linii kodu ,jest to jedno z możliwych rozwiązań twojego problemu z przyciskiem . program przetestowałem. Moja rada to testuj program na kilku kilkunastu sekundach. powodzenia. Dodano po 46 Nie rozumiem dlaczego seja4321 został skarcony przez LordBlick, przecież pisze w dziale początkujący? Co do kodu, to jest dziwny, Piszesz...
Każdy wyświetlacz ma 8 didek LED (7 segmentów i ósma kropka) połączonych anodami wszystkie razem a katody oznaczone od A do H wyprowadzone osobno. Masz np. 4 wyświetlacze (4 pojedyncze cyfry) więc łączysz ze sobą katody segmentów A wszystkich wyświetlaczy, katody segmentów B wszystkich wyświetlaczy itd. aż do G. Podłączasz zwarte segmenty kolejno do...
Witam. Zapis (składnia) Load Timer1 jest zły. Sprawdź w pomocy Bascoma.
Timer + przerwania + funkcja obsługi przerwania ISR(), a nie sprawdzanie jego flagi. Zobacz przykład: http://mikrokontrolery.blogspot.com/2011... A ode mnie w prezencie 25pkt, bo masz zero, ale używasz języka C :)
Piszesz, że masz doświadczenie z LCD i Atmega8. Więc mogę Ci pomóc to zrobić.
1. To stary wektor przerwań, a nowa funkcja ISR(). Musisz zastosować nowy wektor do tej funkcji. Znajdziesz go w tabelce szukając starego: http://www.nongnu.org/avr-libc/user-manu... 2. Drgania trwają od kilku do kilkudziesięciu milisekund. Możesz na przykład wykorzystać jakiś timer do odliczania tego czasu począwszy od pierwszego...
Mam problem z przełączaniem bitów Założenia programu są następujące Program przez określony czas ma włączyć 2 diody oznaczone Pompka1 i Pompka2 oraz wyłączyć Napowietrzacz po upływie czasu ma przełączyć tz: wyłączyć Pompka1 i Pompka2 oraz włączyć Napowietrzacz po upływie drugiego czasu znowu ma przełączyć. Niestety program nie działa dobrze Diody działają...
ad 1:Podaj F rezonatora np. 8mhz config timer1 = timer,prescale 256 'konfiguracja timera load timer1 , 31250 'załadowanie timera 1s on timer1 odliczanie 'określenie która procedura ma byc wykonana co 1s enable interrupts 'właczenie przerwań enable timer1 'właczenie timera1 dim twoja_zmienna as long ' twoja pętla do "jakis tam twój program" loop odliczanie:...
Potrzeba jeszcze potencjometr 10k do kontrastu, atmega może być 16PU jak i 8PU. A czy dobro odlicza czas to nie wiem u mnie nie ,ale to może była wina procesora narazię ten projekt poszedł w odstawkę bo robiłem stacje meteo w smd ale zawsze możesz dać ds1307 lub pcf8583 zamiast odliczania w programie
To teraz troszkę mi namieszałeś, ATmega 16 ma ICP1 przy nóżce Timera 1, ja odmierzam impulsy 2-ch sygnałów... Co do sposobu zliczania impulsów za pomocą T0/T1 to po co używać 3 timer do odmierzania okresu czasu. Przecież okres jest odmierzany na przemian. Gdy T1 zlicza impulsy obrotomierza to T0 odlicza okres, po tym okresie T0 zaczyna zliczać impulsy...
Twoje obliczenia są (z grubsza) OK, jednak w mikrokontrolerze ATmega328 rejestr TCCR0A nie posiada bitów CS00 oraz CS02. Bity te znajdują się w rejestrze TCCR0B. Notabene, bitów WGM0n nie musisz zerować. W trakcie Power on Reset zostają one ustawione na wartość 0. Zerowanie może być konieczne tylko wtedy, kiedy wcześniej sam ustawisz je na wartość...
Skróć to odliczanie w przerwaniu. i*j==800 - po co aż tyle.
Więc zostają 2 możliwości, albo program coś mieszał w odliczaniu czasu(może przerywałem timer0 timerem1 ale to powinno powodować opóźnienia!)albo atmega zła :P Mniejsza, teraz zrobiłem go na pcfie, wystarczy program dopieścić :P
Proponuję poczytać : http://www.atmel.com/dyn/resources/prod_... oraz http://www.atmel.com/dyn/resources/prod_... Co prawda można napisać wszystko samemu (np. żeby się czegoś nauczyć) Projekt z załączników dotyczy procesora ATMega 103, ale pewnie łatwo to zaadaptować na inne maszyny (ja robiłem trochę bardziej skomplikowaną...
Niestety ale częściej się ją wymienia. Sama jej żywotność to 6-7 lat wg. noty katalogowej. A biorąc pod uwagę zużycie energii elektrycznej to wymienia się ją między 2-gim a 5-tym rokiem użytkowania. Jeżeli dobrze ustawisz kwarc sprzętowo (trymer) lub programowo (korekta czasu co 24h) to nie będziesz musiał często zmieniać godziny ale jeżeli trafisz...
http://obrazki.elektroda.pl/3637756900_1... http://obrazki.elektroda.pl/6313868300_1... Zrealizowałem w tym roku swoje postanowienie jeszcze sprzed zeszłej zimy i zrobiłem sobie wreszcie własny sterownik pieca CO. Na początek pytanie "dlaczego"? Otóż oryginalny dostarczony z piecem przede wszystkim miał 6 poziomów nadmuchu...
Bo gdy tam jest stała, to kompilator wykonuje dużo programistycznej magii podczas optymalizacji na podstawie tej wartości oraz częstotliwości zegara tak, żeby procesor odczekał dokładnie tyle, ile trzeba. Jeśli tam jest zmienna, to wartość nie jest znana (potencjalnie może tam się znaleźć cokolwiek w czasie wykonywania programu) i wtedy kompilator nie...
Myślałem o tym ale to mało elegancko (wg mnie:D). Masz kolego pomysł jak odróżniać w przerwaniu czy jest z odliczania w dół czy w górę?
Spróbuj od-komentować tę za-komentowaną część kodu. DS jeśli nie został zainicjowany prawidłowymi danymi ustawia flagę chfl. Oznacza to, że zawartość RAM w obszarze pamięci zegara zawiera śmieci i należy ją zainicjować poprawnymi danymi. Nie pamiętam dokładnie, ale wydaje mi się, że wtedy zegar nie odlicza czasu dopóki się go nie zainicjuje. PS> Jakbyś...
Co do Twojego pierwszego problemu to prawdę mówiąc nie wiem, ale zwróć uwagę na to że po zakończeniu obsługi przerwania zawartośc R16 i R17 jest zamieniona: ... .org 0x0012 rjmp t1Ovf ... t1Ovf: push r16 push r17 in R16, PORTC ldi R17, 0b00000011 eor R16, R17 out PORTC, R16 pop r16 ; R17 pop r17 ; R16 reti ... Może to wina własnie tego. Co do Towjego...
Dziękuje, faktycznie działa. Myślałem że wartość, którą wpisuję do timera on później odlicza, a tu okazuje się, że nie. No cóż...początki. Serdecznie dziękuję.
Tojmak987123 pomyliłeś pojęcia: Szerokości wypełnienia nie mierzy się w Hz tylko w procentach lub jednostkach czasu (np. mikrosekundach). Twój program wywołuje przerwanie Timera0 co (256-194)*64 cykli zegara, Timer1 jest ustawiany 5 razy rzadziej czyli co 19840 cykli zegara tylko tyle możesz nim odmierzyć (a nawet trochę mniej ze względu na czas ustawiania)....
Wykorzystanie timera do odliczanie czasu impulsów. Tablica z z wszystkimi krokami silnika, zmieniany indeks tablicy po przepełnieniu licznika.
Wartość dla 1 sekundy: OCR1A=((częstotliwość procesora)/preskaler)-1 Wartość dla 4 sekund OCR1A=((częstotliwość procesora)/preskaler)-4 Jedynka w podanym przeze mnie wzorze nie oznacza 1 sekundy. Jeden trzeba odjąć z innych względów. Po prostu licznik nie zaczyna liczyć od 1 tylko od 0, więc odliczanie np. do 5 oznacza (0 1 2 3 4 5), czyli 6 impulsów....
Odpowiem tak: Jeśli nie możesz kupić to zrób sam. Proponuję atmega 8, wyświetlacz LED 2x16, 1 lub 2 czujniki temperatury. Mógłby wyglądać np tak: https://www.youtube.com/watch?v=v5dm9jn-... Program sterujący jest dowolny, można napisać samemu od podstaw lub zmodyfikować znalezione w sieci. Do testów można na płytce uniwersalnej zmontować lub na stykowej.
Nie chcę grać roli lokalnego guru (zwłaszcza korzystającego z cudzych stron WWW), ale widzę następujące błędy: F_CPU nie defniuje się w kodzie -> http://mikrokontrolery.blogspot.com/2011... Twoje zmienne używane w przerwaniu powinny być volatile -> http://mikrokontrolery.blogspot.com/2011... Nie...
Witam Mam taki układ: http://obrazki.elektroda.net/51_12395609... atmega zaprogramowana tak aby po prostu na wyświetlaczu cyfry "odliczały" od 0 do 9, układ działa w porządku ale jak dotknąłem 7447 to on jest wręcz gorący, jak dłużej przytrzymam palec to zaczyna parzyć; a sam wyświetlacz też jest, można by powiedzieć, więcej niż ciepły. Czy tak ma...
To co to za proc? Z jakim zegarem? To musi działać nawet na kwarcu 1Mhz(avr) i z prędkością 57,6Kb/s. Jak coś to wrzucaj do pamięci ram mikrokontrolera bo może to transmisja po i2c zwalnia(atmega >=8?) - tylko do testów. Spróbuj jeszcze sprawdzić ten drugi sposób z odliczaniem do dwóch znaków i i przetwarzaniem na żywo(po drugim znaku)
No właśnie, tylko skąd będę wiedział, że odebrałem pełną ramkę? przerwania mi w tym nie pomogą prawda? jakieś odliczanie czasu? np odebrałem coś i czekam 10ms aż bufor się napełni i dopiero go czytam?
czy ta niedokladnosc pochodzi od temperatury i wachania napiecia ? wracajac do pytania. Zanim zaczne montowac krysztaly o ktorych na dzien dzisiejszy nic nie wiem :] chcialbym lepiej poznac wewnetrzny zegar. Czy najdokladniejszym rozwiazaniem w sytuacji 1Mgz bedzie ustawienie prescalera na 1 i odliczanie miliona taktow czy jest moze wydajniejsza metoda...
Podając napięcie nic się nie zmienia ;) Główny problem polega na tym że po podłączeniu takim jak opisałem wyświetlacz albo po jakiejś chwili gaśnie albo miga na przemian z cyframi na dole jak by odliczało bo udało się zauważyć 00:01 później 00:03 , 00:05 .
Nawet gdyby wcisnąć tam tą konwersję to nie w przerwaniu, ale w pętli głównej. Jednym z problemów wprowadzonych w kodzie jest korzystanie z wolnego porównania == - powinieneś użyć and Powinieneś użyć rtc - miałbyś przerwanie co sekundę i byłby spokój - nawet źle zaprojektowane pcb może ci wprowadzić więcej niż te 3% niedokładności kwarcu, dużo też zależy...
Dobrze ten czas masz odliczany, tzn. dobra częstotliwość jest ustawiona i kryształ?
Dzieki za pomoc. Wykonalem projekt jednak swoim sposobem tj. uzywajac czujnika pojemnosciowego, ktory jest podpiery do ne555. Czestotliowsc generowana przez ne555 jest zalezna od pojemnosci. Impulsy sa zliczane counterem w atmedze przez czas 1 sekundy ktory jest z kolei odliczany przez timer.
Żeby to zrobić trzeba dołożyć zasilanie bateryjne i jakiś monitor zasilania żeby procek wiedział kiedy jest zasilany z sieci a kiedy z baterii. A żeby procek też nie pobierał za dużo prądu przy zasilaniu z baterii to trzeba mu zmienić kwarca z 1MHz na zegarkowy 32,768kHz (choć sam procek może być taktowany z wewnętrznego generatora RC, a ten kwarc zegarkowy...
Witam! Otóż chcę stworzyć zegar szachowy działający na atmega z wyświetlaczem 7 segmentowym. Dla każdego zawodnika zegar będzie odliczał osobny czas, i właśnie nie wiem czy będę potrzebował jakiegoś dodatkowego zegara czy wszystko zrobić na jednym wbudowanym w atmege. I po drugie czy da radę podłączyć kamerę do atmegi? Bo w przyszłości chciałbym aby...
Myślałeś w ogóle jak to zrobić bez tej pętli? Waitms to taka pętla do odliczenia. Jedyny plus jest taki, że Waitms może przerwać każde przerwanie oczywiście przedłużając wykonanie pętli odliczania, ale można to zrobić lepiej.
(...)Mam jednak pytanie, czy można to zrobić w jakiś inny sposób, aby zmiana tempa zależała tylko od zmiennej speed ? Ten sposób jest jak najbardziej odpowiedni. Mam tu następujące sugestie: - poprawić dokładność ustawiania tempa poprzez zwiększenie częstotliwości przerwań (ustawienie preskalera na 1), - przeliczać zadaną wartość tempa w bpm na wartość...
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: ****************************************...
Witam, Nie odpisałem wcześniej bo nie byłem dyspozycyjny. Mogę powtórzyc, tak jak wcześniej ze ja odblokowałem moją atmega(128L) dzięki generatorowi, który zrobiłem na atmedze16(wczesniej pisałem ze na atmie8 ale to nie ma różnicy!!!) ok.2MHz. Na atmedze16 miałem kwarc zew.12MHz. Korzystałem z funkcji OC i trybie generacji fali CTC(z zerującym zegarem),...
Każda częstotliwość generatora, która jest podzielna przez 12 umożliwia precyzyjne odmierzenie 1/12 sekundy - wystarczy zaprogramować timer tak, aby (wraz z preskalerem) odliczył 1/12 sekundy, np: - oscylator 12 MHz, odliczamy do 1000000 (np. preskaler 64, okres 15625) - oscylator 11059200, odliczamy do 921600 (np. preskaler 1024, okres 900) ... i pewnie...
Witam. Urzyłem w moim programie Timer1. I od razu wynikł tu problem. Pomimo użycia podobno dokładnego odliczania i tak sekundy są naliczane zbyt wolno (przynajmniej na wyświetlaczu). Wie ktoś z jakiego powodu? Oto istotna część programu: TCCR1B |= ((1 << CS10) | (1 << CS11)); //częstotliwość przez 64 if (TCNT1...
Kwarc podczas programowania nie musi być podłączony o ile uC korzysta z WEWNĘTRZNEGO generatora ("fusy"dla ATMEGA 8 i podobnych = 0001 lub 0010 lub 0011 lub 0100), Jeżeli przełączono "fusy" na generator ZEWNETRZNY czyli kwarc lub generator podający z zewnątrz gotowy sygnał taktujący to podczas programowania generator/kwarc musi być podłączony. Na kwarcu...
Zapakować czy na miejscu ? ;) A poszukać nie łaska ? ;) : http://www.elektroda.pl/rtvforum/topic19... http://www.elektroda.pl/rtvforum/topic17... Sio do czytania... ;)
Byłby atrakcyjny, gdyby odliczanie czasu miałoby odbywać się w tle, a procesor obsługiwałby pętle grafiki o nieznanej długości i obliczeń ruchu elementów na ekranie. Nawet odczytanie aktualnego czasu z RTC podczas startu programu, spowoduje, że zegar będzie nastawiony na dobrą wartość. RTC chyba był podłączony do Atmega, pewnie istnieje możliwość odpytania...
"Jak ustawisz minimalną dla 2 stanów to wykresem jest linia prosta" Oczywiście, jak sama nazwa wskazuje PWM to Pulse-width modulation.(modulacja szerokości impulsu) Jeśli zasilisz układ napięciem 24V to przy wypełnieniu PWM=255 będziesz miał 24V. Jeśli ustawisz wypełnienie 50% czyli PWM= 127 to teoretycznie powinieneś otrzymać 12V. Dlatego proponowałem,...
Jaki wewnętrzny rezownator (to nie jest kwarc)? 1MHz, 2MHz, 4MHz czy 8MHz? Jeżeli masz 2, 4 lub 8 to musisz wpisać na poczatku programu bajt kalibracyjny do odpowiedniego rejestru (domyślnie wpisuje się bajt kalibracyjny dla 1MHz). O wiele dokładniejszy będzie pomiar jeżeli dasz zewnętrzny rezonator kwarcowy. Z tą liczbą 4 bajtową to przesadziłeś -...
Możesz wykorzystać timer1 i trzy zmienne... sekundy, minuty, godziny... Przy częstotliwości 8MHz prescalerze 256 i warotści początkowej 34286 teoretycznie przepełenienie następuje dokładnie co sekundę...
Ja mam inny problem, ale również z tym kodem. Otóż mam podłączone dwa wyświetlacze zamiast czterech. Jak robię pętlę to dzieje się coś dziwnego. Układ działa dobrze tylko wtedy jak dam w pętli Wait 1. Jak dam nawet waitms 1000, to już na ekranie jest 00 Co to może być?
Pokaż schemat i program
Najprościej zrób to na jakimś uC np. ATmega8. Co do schematu to nie powinno być problemu na forum jest wiele schematów zegarów, które można by zastosować. Wystarczy tylko napisać odpowiedni soft :D
Spoko :) Coś w tym stylu. Musimy jakby podzielić na dwa etapy: 1. losowanie i start odliczania (świecenia ub wygaszenia 2. odliczanie aktualnego stanu dla uproszczenia w światłach strobe przyjmijmy odliczanie do tyłu (do zera) czyli trzeba nam warunki Dodano po 1 poprawiłem algorytm
zdecydowałem się na zastosowanie uC aby wyeliminować efekt falowania wody (a tym samym podnoszenie i opadanie włącznika pływakowego co skutkowało kilkunastoma krótkimi włączeniami pompy przy każdym dolewaniu wody). Nie wystarczyło zastosować filtr RC? Dodaj na wszelki wypadek rezystor 10kΩ podciągający RESET do Vcc. Przy takich urządzeniach jak...
Fakt że chyba niepotrzebnie zastanawiam się nad tym poborem prądu. Ogólnie to projektuję na zaliczenie przedmiotu traktującego o programowaniu mikrokontrolerów uniwersalny pilot zdalnego sterowania z możliwością tzw. "uczenia się". To znaczy nie będzie to taki całkiem uniwersalny pilot bo będzie obsługiwał tylko te najbardziej znane standardy no i to...
Gdyby było 16MHz bez preskalera zegara, to Twój sposób obliczenia jest prawidłowy. Masz LED i stoper w komórce? Jeżeli tak to masz sprzęt którym możesz to sprawdzić. Wystarczy LED podpiąć pod jakiś wolny pin + dodatkowa pętla odliczająca przepełnienia, tak abyś mógł zmieniać jego stan znacznie rzadziej, by móc wzrokowo policzysz ilość mrugnięć ze stoperem...
Udało mi się zapisać pierwszą stronę pamięci, potem modyfikowałem program i chciałem zapisać kilka stron - za każdym razem zapisywała się tylko 1 strona poprawnie aż w końcu zapisuję tylko pierwszą stronę i to błędnymi danymi. Długa noc przede mną... wrzucam w zasadzie cały testowy kod, przepraszam za bałagan bo jest w nim pełno zakomentowanych kawałków...
Mam pytanie, czy układ może wyświetlać więcej danych, ale otrzymywanych przez UART ? Mam drugą płytkę - mastera, która wysyła ciąg ( temperatury, wilgotność, ciśnienie, stan czujników DS ). Jeżeli chcesz wysłać więcej ramek ethernetowych wykorzystując TCP, to może być problem :). Można próbować grzebać, w tym kawałku kodu gdzie stan połączenia TCP...
dodatkowo zliczam 250 czyli 250 * 250 = 62500 poprzednio jak mialem Atmege8 i 16 MHz mialem tak Config Timer0 = Timer , Prescale = 64 On Timer0 Sekunda Sekunda: Load Timer0 = 250 Incr Jednostki_czasu If Jednostki_czasu = 1000 Then 'mam sekunde Jednostki_czasu = 0 End If i odliczało dokładnie 1 sekundę ale chyba masz racjębo układ nie działa (nie...
A wiec wgrałem do procka minimalny program który odlicza i dalej to samo: Płytka jaką wykorzystałem; można znaleźć na Nestor electronic ale dodałem kondensatory przy procku i zasilaniu Program do procka to: $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Pordc.3 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs...
Witam Mam dziwny problem z konfiguracją timer1 w atmedze644pa w trybie CTC. Kod jest następujący: [syntax=c] #define TIMER1_OCR 10801//10799//10800 // 1 sekunda void timer_init(void) { TCCR0A=(1<<WGM01); TCCR0B=(1<<CS02)|(1<<CS00); OCR0A=TIMER0_OCR; TIMSK0=(1<<OCIE0A); TCCR1B=(1<<CS12)|(1<<CS10)|(...
(...) żdy zasilany z osobnego źródła i odseparowany transoptorami PC817. Ze względu na ich szybkość oraz niską wartość prądów je sterujących 1mA zegar musi być obniżony do 10KHz ma. Chcę zrezygnować z polecenia: waitus 100 w zamian zrealizować to w obsłudze timer0 a w główną pętle przeznaczyć na inne cele. Rozumiem, że chcesz optymalizować swoje oprogramowanie...
Czy to w takim razie oznacza, że na samym uC nie da się faktycznie precyzyjnie odmierzać czasu, a całe te timer'y itp. to tylko taki pic na wode? 8-O Tzn. jakieś tam odstępy czasu będzie timer odliczał, ale o konkretnych wartościach można zapomnieć (+/-3% na cykl przy 15625 cyklach to faktycznie może dać taką masakrę...) ? :|
Wklej kod, który do tej pory napisałeś.
Nie mam ustawiony wewnętrzny 8MHz ale docelowe w projekcie chcę użyć zewnętrznego 11.058MHz. Myślałem że instruknja: CONFIG Clock = Soft, Gosub = Sectic powoduje że obojętnie co jest ustawione to Bascom automatycznie odlicza 1s i po niej skacze do instrukcji Sectic. Dokładnie chodzi mi o przerwanie które będzie wykonane po upływie 1s. Chcę przez to...
W AVR Studio dokumentacja do Atmegi8 nie nazywa się tak jak w prxuypadki atmega128 tylko m8def.inf więc jak dołączysz ten plik to też powinno jakoś działać. Znajduje się on w tym samuym katalogu co dokumentacja do 128. Pozdrawiam. O tych plikach mówi się nie dokumentacja, tylko plik nagłówkowy i nie "m8def.inf", tylko "m8def.inc"... (Domyślnie w katalogu...
Mam Panowie jeszcze pytanko , dotyczące samego PWM'a . Czy układ ma pracować na zasadzie dwóch timerow , w ktorym jeden dziala w trybie PWM , a drugi co okreslona czestotliwosc nastawia pierwszy względem pobranej próbki ? Wtedy do samego odmierzania czasu użyłbym timera 16-bitowego , który w miare precyzyjnie bedzie odliczał okres miedzy kolejnymi probkami...
Mam małe pytanko. Napisałem program w bascomie (prosty zegrek - RTC) z zastosowaniem komendy "config clock". Aby go wykonać musze podpiąc kwarc 32 kHz pod nózki TOSC 1 i TOSC 2 (zegarek wykonuje na atmega 8). I mam pytanie: czy częstotliwość pracy wewnętrznego RC ma wpływ na dokładność RTC? wydawało mi się że nie,ale jak symuluje to w bascomie to sekunda...
TCCR0=0x04; TCNT0=0x05; I w przerwaniu na początku musisz mieć: TCNT0=0x05; I zliczać równo 125 przerwań - odliczysz doładnie 1s. Tak przy okazji, nie prościej to zrobić na tajmerze 1, który jest 16 bitowy i nieco inaczej pracuje? Zresztą już w jednym Twoim wątku wstawiłem program kalkulatora do obliczania zawartości rejestrów do tajmerów i UARTa.
Najlepiej odmierzanie 1s zrobić na Timerze, a jeszcze lepiej na Timerze i kwarcu zegarkowym. Jakbyś mógł podać jakiś przykładowy schemat i fragment kodu jak zastosować Timer, to byłbym wdzięczny :>.
Nie da się dokładnie zrobić opóźnienia 1us na tym kwarcu. Błąd będzie mikroskopijny ale będzie. Najłatwiej takie opóźnienie zrobić dając 11 nopów. Oczywiście dla kwarcu 11.0592 MHz też to zrobisz. Wystarczy licznik timer0, prescaler = 64. Po zliczeniu 675 razy będziesz miał 1 sekundę. Ale ta jedna sekunda jest zależna od warunków w jakich przebywa...
Jeśli chodzi o ppm (parts per milion) to nie wiem. Sam kwarc konstrukcyjnie ma około 50ppm. Zgadzam się z kolegą R-MIK, że dokładny zegar lepiej jest zbudować na Atmega 8 z wyżej wymienionym trybie Timera 2. Nie zależało mi na bardzo dokładnych wskazaniach ani na podtrzymaniu awaryjnym. Te, które uzyskałem są moim zdaniem na dobrym poziomie. Dowolny...
SIGNAL(SIG_OVERFLOW0){ straznik = 0; cli(); } #1 Skoro 'straznik' przyjmuje tylko wartości 0 lub 1, to po co 16-bitowy typ 'int'. Wystarczy w zupełności 'uint8_t'. Ta sama uwaga dotyczy również zmiennych 'i' oraz 'j' w pętli 'for'. #2 Jeżeli używasz zmiennej 'straznik' zarówno wewnątrz procedury obsługi przerwania i w programie...
Na pierwszy problem lekarstwem jest przeniesienie Loop przed etykietę Sciezka. Drugi można rozwiązać np tak: Dim Flaga As Byte Do If PinA.0=0 Then Flaga=0 If PinA.1=0 Then Flaga=1 If Flaga=0 Then Gosub Sciezka If Flaga=1 Then Gosub Odliczanka Loop
Tak się nie robi. Myślę że ten timer się parę razy przepełni zanim obsłuży LCD. Ustaw timer tak aby wywoływał przerwanie przy danej wartości i w tym przerwaniu dodawaj jakąś zmienną o 1 i czyść licznik.
timer odlicza timer1 odlicza zegar odlicza
traffic automapa ecc84 ecc88 miniaturowe diody
Wiertarka dwubiegowa: MacAllister czy Celma? Renault Espace 5 1.6 160 KM - Ograniczenie obrotów na biegu jałowym