1. Korzystanie z gotowców prawie nigdy dobrze się nie kończy. Szkoda czasu i energii na poprawianie nie swoich kodów ;) 2. Nie definiuj F_CPU w kodzie programu - to lub podobne zdanie pojawia się tu średnio kilka razy w tygodniu, więc uzasadnienie znajdziesz bez problemu. 3. Unikaj "magicznych" liczb w kodzie programu. Zapis: n++ ? 6. Jakiś schemat?...
Na kiedy to potrzebujesz i jaki procesor? Potrzebujesz tylko kod czy całe zbudowane urządzenie? W wolnym czasie mogę pomóc.
Zaczynasz dobrze. Wg protokołu inicjację "/?!\r\n" wysyłasz na prędkości 300 bd (ustawienie transmisji 7E1). Nie żadnej innej - 300, bo tak mówi norma. Licznik energii ma wówczas maksymalnie 2 sekundy na odpowiedź, a odpowiedzią jest wpierw ramka identyfikatora licznika, który ma postać "/XXXZD<CR><LF>", gdzie XXX jest identyfikatorem producenta,...
program ma tego rodzaju możliwości. Możesz do wirtualnego procesora wczytać program, podłączyć np. wyświetlacze i symulować działanie układu. Niestety wersja testowa nie oferuje o ile pamiętam opcji zapisu projektu.
Cóż, opis działania rejestru przesuwnego jest w notach katalogowych i mówisz, że wiesz, jak to zrobić. Poszukaj o multipleksowaniu wyświetlaczy LED - w przypadku "zwykłych" diod zasada będzie ta sama.
Nie, zmiana zbocza sygnału powoduje przepisanie wartości licznika timera do rejestru ICP, czyli zamrożenie jego wartości. Dzięki temu precyzyjnie można mierzyć czas pomiędzy zdarzeniami. Zbocze możesz sam wybrać.
Możesz też zliczać czas między impulsami. Znasz czas i drogę (obwód koła) co daje Ci prędkość.
Musiałbyś dodać zmienną, która będzie służyła do odmierzania czasu bez impulsów, tzw. "timeout". Jeśli przez okres ponad 10 s nie przyjdzie żaden impuls, to n=0. Wbrew pozorom, liczenie timeoutów najłatwiej zrealizować w przerwaniu :) Dodano po 1 fragmenty kodu: inicjalizacja przerwań (akurat dla Atmega32) [syntax=c] TCCR0 |= (1 << CS02); TIMSK...
ile Ci brakuje czasu? może overclocking? AVR'y się ładnie kręcą - jak masz 16MHz max, to powinien pójść na 22-24MHz... zawsze to + 50%
Bibloteki nie zamierzam rozbudowywać poprostu chciałem prawie gotowca użyć mając przytym funkcjonalność wyświetlacza . Dzięki za odpowiedź w wolnej chwili to przeanalizuje . Kod licznika w C na ATMega 328p wysyła po rs232 do komputera wartość licznika kasowanie z klawisza i rs232 z czasem bedze wpisywanie wartości początkowej z programu po rs232.
http://obrazki.elektroda.pl/5431448900_1... 74HC74 bramkuje sygnał wejściowy tak aby jego impulsy nie były krótsze niż impulsy taktowania licznika 74HC590(już samo to wyfiltrowuje część krótkich szpilek) - blokuje to możliwość wyzwalania przerwania ICR1 z nadmierną częstotliwością. W układzie jak na rysunku 74HC590 zlicza gdy sygnał...
znalazłem dużo przykładów jak posługiwać się licznikami, ale wszystko było w C a ja nie znam go i programuje w asemblerze. Mógłby ktoś opisać przykładowy licznik(tzn napisać program) i opisać? (chcę odmierzyć jakiś czas, ale najpierw chcę poznać zasadę działania liczników). najlepiej gdyby było coś o liczniku 0 i 1
To, że są zamrożone nie oznacza,że zegarek stoi. Ja czytam z niego bardzo szybko i przez miesiąc pośpieszył mi się o sekundę. Zamrozenie rejestrów blokuje jedynie nie pozwala na jednoczesny dostęp licznika i odczytu.
Witam mam prosty program. Timer zlicza naciśnięcia przycisku. Problem polega na tym że po jednokrotnym naciśnięciu wartość zwiększa się o jakąś ilość (nie zawsze o 1). Jak temu zaradzić? np. żeby zmiana stanu licznika była możliwa tylko co określony odcinek czasu. [syntax=basic4gl]Config Pinb.0 = Input Set Portb.0 Config Timer0 = Counter , Edge = Falling...
Dzięki, a ja tyle się z tym namęczyłem. Potrzebuję użyć tej zmiennej do wyświetlenia co 100 wyniku - bo jak użyłem do tego timera0 to co jakiś czas w nierównomiernych odstępach czasu zawieszała się atmega.
Panowie spokojnie. Na razie chcę znać odcinek czasu po między impulsami (czujnik taki jak przy liczniku rowerowym) i jak ten czas zapisać do zmiennej (dajmy na to np. "czas"). Resztę obliczeń, to wiadomo, że jest potrzebny obwód koła. Mikrokontroler jaki mam to ATMEGA 128 taktowana zegarem 16MHz
Mam taki moduł rtc na DS3231 i drugi podobny. Oba pracują nieprzerwanie kilka miesięcy i czas względem aktualizowanego czasu w PC rozjechał się jedynie kilka sekund, więc są bardzo dokładne. Ciekawe urządzenie. Podoba mi się. Ile czasu zajmuje zapis jednej linijki tych danych na karcie sd dla atmega 328 pracującej na 8MHz?
Dzięki wszystkim za cenne uwagi. excray - próbowałem z Twoim rozwiązaniem, jednak : w ostatnim wierszu expected declaration or statement at end of input. Pewnie coś jeszcze niżej powinienem zmienić... tmf dziękuję za cenne uwagi. Nie, kompilator nie zgłasza mi ostrzeżeń. Rozumiem, że komórkę można zapisać ograniczoną liczbę razy, tylko ja spodziewałem...
Witam wspólnotę chciałbym zaznaczyć że z wykształcenia jestem mechanikiem, a z programowaniem nie miałem wcześniej styczności. Przeczytałem książeczkę która mowiła o programowaniu w jezyku bascom, i stworzyłem taki o to kod programu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer0 = Timer , Prescale = 256 'licznik do odmierzania...
Ciekawe zagadnienie. Mam już PCB do licznika częstotliwości i czasu, czekam za kilkoma kluczowymi układami i zacznę go uruchamiać. Co prawda u mnie timer jest zatrzaskiwany przez ICP a przy szybkich operacjach (pomiar czasu z rozdzielczością 10ns) wspomagam się przez FPG to Dłuższe odczinki czasu mierzy tlko ATmega. Zbadam, czy przy przechwytywaniu...
Prawie cały czas procesora, wykonują się przerwania, nie starcza czasu na pętlę główną, to skutek wpisania bzdur do rejestrów konfiguracyjnych licznika.
ja podobny projekt zrealizowalem robiac "siatke" z sensorow optycznych, rozmieszczone co 1cm po obwodzie pokrywaja praktycznie cala powierzchnie otworu rury ( byla to 110 PCV ) polaczone rownolegle dla licznika byly jak jeden czujnik - niezaleznie ktora lub ile zadzialalo naraz.
Witam, chciałbym prosić pierwszy raz od 16 lat w zasadzie o gotowca. Lub szkic programu żebym mógł sobie go sam napisać. Chcę dokonać przeróbki licznika https://sansan.cc/en/productsinfo.aspx?P... Chcę w nim zrobić: 1. W momencie dotarcia do "umownego" czerwonego pola czyli powiedzmy zapalenia przez licznik diody LED 6000 obr. Atmega...
Jako ze nie przepadam za pisaniem na maile, to odpowiem tutaj... Musisz skonfigurowac odpowiedni timer i przy przerwaniu, jakie generuje int czas=0; int timer0=131; SIGNAL (SIG_OVERFLOW0) { czas++; if (czas==5000) BUUM(); //jezeli czas osiagnal 5000ms, to wywolaj funkcje BUUM(); TCNT0 = timer0; // zaladowanie do...
Oczywiście, przeczytaj o module ICP timera. W momencie wystąpienia zdarzenia, licznik timera jest przepisywany do rejestrów ICP. Rozdzielczość jest zależna od częstotliwości taktowania timera. Twoje rozwiązanie nie może prawidłowo działać, bo czas liczysz w pętli, a ta z kolei ma różny czas wykonywania (zakładam, że korzystasz z przerwań).
http://obrazki.elektroda.pl/2314562400_1... Witam. Początkiem roku kolega poprosił mnie o zrobienie licznika (miernika) częstotliwości. W necie jest sporo przykładów. Na węgierskiej stronie znalazłem odpowiadający memu koledze. Układ dość prosty. Są zdjęcia, PCB, wsad do procesora. Zrobiłem płytkę, a nawet trzy. Może się przydać. Drobnica...
Tak, można podłączyć jak przycisk. Właściwie trzeba :)
Ostatecznie możesz zrealizować taki pomiar w oparciu o układy cyfrowe. Budujesz generator o odpowiednio dużej częstotliwości do tego jakiś licznik i układ bramkujący ...a mikrokontroler stosujesz do sterowania tym układem oraz odczytem wartości z licznika i akwizycji na wyświetlacz. Wspomniane mikrokontrolery XMEGA są oczywiście lepszym wyjściem z sytuacji...
jeden kondensator mniejszy i równolegle z nim trymer a drugi pozostaje bez zmian zmiana położenia trymera spowosuje lekką zmianę częstotliwości kwarcu i taktowania procesora. licznik w procesorze będzie pobierał impulsy właśnie z oscylatora kwarcowego mówimy o atmega... a może liczniki liczyły Ci źle bo korzystasz z wewnętrznego oscylatora RC, który...
Witam, Zacząłem od jakiegoś czasu przygodę z mikroprockiem atm8. Postanowiłem zbudować sobie zegar bokserski, czyli ustawić sobie "switchem" czas odliczania, przykładowo 3x1. Czyli miał by od 3min liczyć do zera, dawać sygnał dźwiękowy na 1min przerwy, i znowu sygnał po upływie minuty na następną rundę 3min, i tak w zależności od potrzeby. Ponieważ...
A nie lepiej dać jakiś zewnętrzny licznik co sekundowy? Są chyba jakieś układziki.
Ustaliłem na początku wartość początkową licznika TCNT1=0; Mogę wykorzystać ICP ale nie wiem jak to zakodować.
Przebiegi komplementarne? Taka praca licznika nie jest możliwa, niektóre układy (np. Attiny25) mają dodatkowe zanegowane wyjście licznika, w ten sposób że nigdy nie będą miały w tym samym czasie tego samego stanu. Jeśli Ci o takie coś chodzi, proponuje zmienić uC. Jeśli nie są ważne dla Ciebie czasy przełączenia stanów, zaneguj bramką.
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...
Twoje 50 Hz (pomijam, że nie da się tak dokładnej częstotliwości ustawić) daje okres = 20 Chyba źle zrozumiałeś kolegę michalko12 . Te "jego" 50Hz to nie częstotliwość przerwań, tylko sygnału sterującego serwem (tak przynajmniej sterowana jest zdecydowana większość serw modelarskich). Okres tego sygnału powinien mieć 20ms, z czego 0,5÷2,4ms trwa stan...
Nie czytałem całości tematu, ale .... GDZIE PRZYCZYNA ZAWIESZANIA ? Szukasz rozwiązania problemu w niewłaściwy sposób. Najpierw znajdź przyczynę zawieszania. Co rozumiesz przez : Czasem podczas komunikacji dochodzi do zwieszenia - układ przestaje odpowiadać po TWI i pomaga jedynie manualny reset. Czy jesteś pewien, że procesor przestaje realizować program,...
Wykorzystanie timera do odliczanie czasu impulsów. Tablica z z wszystkimi krokami silnika, zmieniany indeks tablicy po przepełnieniu licznika.
Chodzi o to, że po pierwszym przerwaniu TCNT1 będzie miał wartość 0, czyli zliczy potem 65536 impulsów. Zaś do generowania, jak Ty chcesz, przerwań co określony odcinek czasu służy tryb CTC. Wtedy w rejestrze OCR ustawiasz ilość impulsów, które chcesz zliczyć, i wygenerować odpowiednie przerwanie.
Prostokąt wystarczy do pobudzania. Z tego co słyszałem (zasłyszane, a więc może być nie dokońca prawdziwe :) ) to te nadajniki 40st potrzebują niezłą amplitude napięcia na wejsciu, aby osiągnąc zasięg kilku metrów. Ja zrobiłem sonar na atmega, wzmacniaczu ze zmiennym wzmocnieniem ca3080 i ndajniku i odbiorniku muraty ma40a5s i ma40a5r. Pobudzałem je...
Na początek kwestia formalna: jest za dużo tabulatorów w kodzie przed komentarzami, przez to prawa strona posta oraz kodu jest ucinana na ekranie (mam mały ekran). Co do kodu: czytanie zegarka oraz formatowanie sprintfem w procedurze obsługi przerwania jest mocno słabe. Diabli wiedzą jak jest zrealizowany lib TWI. Jakby był oparty na przerwaniach to...
Witam. Kolego spróbuj wykorzystać do odmierzania czasu TIMER, jeśli jest taka możliwość. Mała podpowiedz jak napisać program: W pętli głównej: - sprawdzasz czy masz zapaloną diodę jeśli tak to gasisz i zatrzymujesz licznik - sprawdzasz czy dioda jest zgaszona jeśli tak to zapalasz i startujesz licznik W przerwaniu licznika i odmierzeniu odpowiedniego...
Ja doskonale rozumiem, że Atmegi moga pracować na kwarcu zegarkowym, tylko chciałbym wiedzieć na jakiego rzędu dokładność mogę liczyć na zwykłym kwarcu w porównaniu do kwarcu zegarkowego. -- pozdrawiam, demeus Taka sama!.... Wszystkie resonatory kwarcowe maja dokladnosc rzedu +/- 20ppm. Rezonatory zegarkowe jest o wiele wygodniej stosowac do odmierzania...
Do tego nie potrzebował byś w ogóle mikrokontrolera :)
Wystartował program, wyłączyłem tylko wewnętrzny podział zegara na 8 w fusy uproszczone. Licznik czasu spieszy się 30 sekund na 10 minut to na godzinę 3 minuty czy jest to możliwość zmiany przez taktowanie zegara układu
To jest przyklad tego jak mozna obsluzyc DS1820 przez mega 8 ale jest tam tez obsluga wyswietlacza w C.Moze sie pryda.Sam to dostalem od jednego kolegi z forum:-) wiec mam nadzieje ze sie nie obrazi...mnie interesowal DS. Pozdrawiam Maciek! #include <avr/io.h> #include <avr/pgmspace.h> #include <stdlib.h> #include <ctype.h> #include...
a ustawiłeś Fuse Bity?? Bo jeśli nie masz ustawionych to ATmega pracuje z częstotliwością 1MHz. Musisz ustawić Fusy na albo 8MHz na wewnętrznym generatorze albo ustawić Fusy na zewnętrzny kwarc. i mniej więcej kod by tak wyglądał: $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1...
Jak się udało rozwiązać problem? Mam podobny - pakiet 6 iskrowników (co około 2 cm), przerwa iskrowa ok. 5mm. Częstotliwość 1 Hz do 1 kHz. Trzeba zliczyć ilość iskier w jednostce czasu niezależnie dla każdego iskrownika. Pomysł z cewkami na kablach WN nie sprawdził się - iskrowniki tak sieją, że liczniki zliczają zakłócenia - koszmar elektromagnetyczny......
Po przepełnieniu licznika on się zeruje automatycznie? W większości trybów licznik zeruje się podczas przepełnienia. Wyjątkiem są niektóre tryby PWM, np. Phase Correct PWM Mode: The phase correct PWM mode is based on a dual-slope operation. The counter counts repeatedly from BOTTOM to MAX and then from MAX to BOTTOM.
Na zakończenie powiem, że wiem, jak nierozsądne jest budowanie takiej ‘maszyny czasu’ na właściwie już przedpotopowym ukontrolerze, Wystarczy nowsza atmega z serii AVRxxEAxx czy AVRxxDyxx, czy nawet nowsze attiny. One mają system zdarzeń gdzie sprzętowo można łączyć liczniki w 32 bity i więcej, więc niepotrzebna jest taka ekwilibrystyka programowa....
jeśli chcesz koniecznie atmega to nada się każdy choćby atmega 8, licznik ma wyświetlać impulsy na wyświetlaczu LED?
Nie rozumiem jak przerwanie od licznik 8 bitowe mialoby przeszkadzac w dzialaniu pozostalych przerwan czy calego programu.. Przerwanie np przy 16Mhz bedzie generowane 62500 /preskaler na sek od licznika 8 bitowego, a zajętość (stan CLI) procesora oceniam na ponizej 1 uS co chyba nie wplynie na pozostale zadania procesora.
Dopisz jeszcze tak: Config Timer1 = Timer , Prescale = 1 lub Prescale=8 lub Prescale=64 Domyślnie chyba atmega ma wyłączony dzielnik czyli nie podaje sygnału zegarowego na licznik. A w ogóle działa Ci ten transoptor, program dochodzi do wyświetlania na LCD?
Tu nie chodzi o nazewnictwo, tylko o wynik operacji. Najmłodszy bit jest gubiony, a nie wpisywany na najstarszą pozycję. Ale mniejsza z tym. Po maskowaniu będzie wszystko jedno. Natomiast mam pytanko - dlaczego pętla obejmuje te konwersję. Powinno być jakos tak [syntax=c] int licznik; for(licznik=0;licznik<5;licznik++) { buffer_t[licznik] = TWI_read(pcf8583,rtc_adres[licznik]);...
(at)dondu Mam pytanie: czemu na schemacie http://mikrokontrolery.blogspot.com/2011... dałeś rezystor aż 40k, nie będzie pin reset wtedy mniej odporny na zakłócenia?
Witam, chciałbym zbudować licznik impulsów na atmega 8 który by zliczał ile impulsów było w czasie 1 sekundy i wartość tych impulsów wysyłała w postaci binarnej na wyjścia procesora. Dodano po 1 Język w którym bym to chciał to C znalazłem identyczny projekt na forum ale w bascomie a w tym języku się wogóle nie orientuje
"single"-zajmuje cztery bajty - a Ty wykorzystujesz jeden. Więc nie single a byte-chyba że naprawdę trzeba. Dla pcf8574 można ustawić 8 adresów sprzętowo-jak mię pamięć nie myli-ściągnij datasheet. A0-A3 do + lub gnd.(to adresy) Jest jeszcze pcf8574A-jeszcze 8 adresów. Urządzenie peryferyjne-to nie jak ja to rozumiem-tylko jak jest. Peryferia w procesorze-przetworniki...
Licznik 2 odmierza 2.5ms (czas jednego z osmiu cykli). licznik pierwszy odmierza ile ma trwac stan wysoki na linii 1-2ms w twoim przypadku
Czekaj, czekaj. Jeden czujnik odpali przerwanie INT0 a w tym przerwaniu sie uruchomi timer. Drugi czujnik po INT1 ma go wyłączyć. Raczej o tym myślałem. Lepiej tak: czy ktoś by mi dokładnie wytłumaczył jak wywoływać timery, zbierać z nich czas, do czego służą poszczególne rejestry. Noty katalogowej tego procka po polsku nie znalazłem, a dobrego poradnika...
Witam Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
Z konwersji BCD_na_DEC w przypadku tak przesuniętej wartości dnia tygodnia możesz oczywiście korzystać tylko po co? przeanalizuj sobie kod tej funkcji to zrozumiesz dlaczego o tym mówię. A odnośnie automatycznego wyliczania - to podaj mi jeden przykład co w tym RTC jest automatycznie wyliczane jak piszesz? NIC ;) wszystko jest automatycznie inkrementowane...
Ale skąd mam wiedzieć że licznik dobrze zlicza tzn co 1 mikrosekundę? Skąd mam wiedzieć że udało mi się na podstawie taktowania procesora wyliczyć dokładnie jedną mikrosekundę? Zaletą mikrokontrolerów jest to, że wystarczy być pewnym ustawień rejestrów i zegara, i musi odliczać prawidłowo. Pokaż program. Oczywiście kontrola jest wskazana :)
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...
U mnie (Katowice) z DCF77 nie ma problemu, oczywiście zdarza się, że przez jakiś czas nie działa, ale przecież nie musi - wystarczy że złapie sygnał od czasu do czasu. Z tego co zauważyłem, to strasznie przeszkadza w odbiorze DCF77 komputer. Kiedy miałem zasilane układy przez USB to generalnie był problem, gdy je zasilałem osobno - z sieci lub z baterii...
No to żeby już wyczerpać temat ostatecznie to chciałem jeszcze wykorzystać tryb porównania licznika i zrobić PWM. I tutaj nasuwa mi się pewna wątpliwość a mianowicie np. w procesorze atmega mam wyprowadzenia typu OC0, OC1A itp. i te wyjścia są związane z timerami i do nich mogę podłączyć np.diodę i płynnie ją rozjaśniać i ściemniać. W nucleo patrząc...
Nie mam jak określić dokladnie częstotliwości, ale mniej więcej z przełożenia czujnika w skrzyni myślę że od 0 do 4000 impulsów na sekundę ( tak orientacyjnie), szerokość impulsu to 1/16 obrotu czujnika. Znalazlem dziś jedyny projekt, z którego mógłbym wziąć podstawę, ponieważ jest to obrotomierz czyli też zliczanie impulsów i podobno działa na takiej...
1.Każdy Timer działa niezależnie- to jest licznik sprzętowy działający jak zewnętrzny układ. To że został "wsadzony" w układ scalony OBOK procesora to tylko żeby użytkownikom było wygodniej. Dlatego nazywa się to "układem peryferyjnym", peryferiami itp. Takich "układów peryferyjnych" w mikroprocesorach jest dużo. Nie tylko liczniki ale też przetworniki...
Witam, potrzebuję pomocy przy budowie licznika impulsów z mikrokontrolerem, który można zaprogramować za pomocą arduino. Urządzenie ma zliczyć impulsy np. z czujnika zbliżeniowego, lub z przycisku ręcznego. Po uzyskaniu zadanej wcześniej liczby impulsów ma uruchomić przekaźnik.(podać napięcie na cewkę) ............ Potrzebowałbym tak naprawdę program...
Dokładnie tak. Flagę sprzętową, np. w rejestrze EIFR, tak samo można kasować programowo. Więc stosując flagę programową nic nie zyskujemy. Tracimy za to czas na obsługę przerwania (mały, ale zawsze te kilka cykli) oraz kilka B Flasha. A to co napisałeś, o zwiększaniu licznika wystąpień, to już nie jest flaga. Licznik to nie flaga.
Atmega 8 wystarczy. Jeśli chcesz kolego liznąć tematu mikrokontrolerów w sposób bezbolesny, polecam książkę Marcina Wiązani o tytule bodajże "Programowanie mikrokontrolerów w języku Bascom" - jest tam m.in. opisana obsługa wyświetlaczy 7dmio segmentowych z multipleksowaniem i nie. Jeśli zrobisz kilka przykładowych układów z tej książki, to z tematem...
atmega 16 ma liczniki/timery na innych portach
hmmm no ja to robiłem wtedy w Bascomie mniej więcej tak: ustawiałem sobie tak któryś Timer, żeby przerwanie wykonywało się powiedzmy 64 albo 128 czy ze 200 razy w ciągu czasu trwania jednej połówki czyli w trakcie ok 10ms tak? Gdy pojawiło się przerwanie INTx to odpalałem ten Timer, który zaczynał tykać i wykonywać przerwanie tyle razy ile ustalonych...
Jestem początkującym z programowaniu w C.Opiszę problem : Zbudowałem licznik zwojów do nawijarki na ATMEGA 8 . Licznik liczy zwoje przy pomocy optobariery szczelinowej i tarczy z dziurką(czyli zliczanie gdy na wejściu stan niski) liczy w przód i w tył(przy odwijaniu). Jedno wejście ATMEGi zlicza impulsy (PULSELOW) , drugie to wejście sterujące aby zmieniać...
O nie na gotowca nie licz :) Ale jeżeli chcesz to mogę Cię naprowadzać i poprawiać błędy w kodzie. To pozwoli Ci nauczyć się czytać i rozumieć datasheet w zakresie timerów i przerwań. Pasuje?
koval_s Popieram. Również budowałem zegary (czasu rzeczywistego w sterownikach) "programowe" na AT89... Po skorygowaniu licznika (można to zrobić jako programowalny trymer) zegar chodził z dokładnością sekundy na tydzień.
Czas zmierzony. Na 4 godziny Atmega spieszyła się aż 8 sekund. Wynika to zapewne z tego, że kwarc jest ok 2 cm od nóżek - niestety innej możliwości nie ma. Trzeba dołożyć kondensatory. Czy ktoś wie dlaczego nie chce mi się zerować wartość sekund co te 60 sekund? Bo tak to licznik zlicza te sekundy idąc w tysiące :/.
Zdaje się, że PWM-y generują przerwania a te pochodzą jak stwierdziłeś od zegarów. To w czym problem? Wyzwalaj pomiary A/D od przerwań PWM. Jak będzie za gęsto to dodaj prosty licznik w zmiennej z porównaniem i uruchamiaj przetwornik co n-te przerwanie od TOVn. Biorąc sygnał z wyjścia PWM i dzieląc go przez 2 uzyskasz przebieg o stałym współczynniku...
Finalnie wygląda to tak: [syntax=vbnet] $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 100 ' rozmiar stosu sprzętowego $swstack = 100 ' rozmiar stosu programowego $framesize = 128 $baud = 19200 '************ Uart 0 Config Serialin0 = Buffered , Size = 150 , Bytematch = 10 'for COM1 Config Input1 = Crlf , Echo = Cr Echo Off 'Config Serialout0...
Tu masz program pod ATtiny2313, jeśli potrafisz programować, to też potrafisz przerobić program na ATMegę: [syntax=basic4gl]' 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 Config Portb = 255 : Portb = &B255...
Witam. A ja wiem, iż DS18B20 mają tolerancję +- 0,5 stopnia. Sprawdzałem z termometrem fabrycznym (elektronicznym) w zakresie 10 - 30 stopni. DS18B20 ma rozdzielczość 0.065C przy 12bitach rozdzielczości i czasie konwersji 750ms Hmm czas konwersji DS'a zależy od rozdzielczości z jaką odczytujemy temperaturę Ja odczytuje temp z 64 dsów w czasie 1s wszystko...
Dochodzące do 50MHz Z komparatora który z czasem reakcji 150ns? Jakim cudem? Czy jeśli napiszę funkcję która mierzy czas impulsu wysokiego i niskiego, lub od razu całego okresu, to ATmega da radę z taką częstotliwością przez zwyczajne digitalRead i funkcje millis() ? Atmega może liczyć impulsy do częstotliwości połowy częstotliwości zegara, oczywiście...
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...
Masz najnowszą wersję 2080? Czasem gdzieś się czai jakiś błąd i wtedy warto sobie zrobić taki ekspresowy kodzik który najpierw konfiguruje licznik a potem od razu odczytaj rejestry i sobie wyświetl w postaci binarnej. Można wtedy sprawdzić z notą czy wszystko ustawione tak jak powinno. Nie wszystkie tryby licznika da się do końca skonfigurować Bascomowymi...
Pomyśl o tym, aby zapamiętywać stan poprzedni i inkrementować licznik jedynie w przypadku zmiany stanu.
No to w takim razie źle zrozumiałem instrukcję. Napisali w niej "możesz za załadować do licznika wartość odpowiadającą ilości impulsów po których licznik sie przepełni " więc załadowałem 1000000 impulsów i czekałem aż się przepełni ale się przepełniał troszkę za szybko moim zdaniem.
A change of the COM1x1:0 bits state will have effect at the first compare match after the bits are written. For non-PWM modes, the action can be forced to have immediate effect by using the FOC1x strobe bits. Być może w tym jest problem. OC1A jest prawdopodobnie inicjowane z wartością 0 do momentu wystąpienia pierwszego "compare match". W trybach "set...
Cały ten układzik ma posłużyć do kontroli maszyny zmęczeniowej , w której ważna jest właśnie ilość wykonanych cykli i częstotliwość z jaką maszyna jest ustawiona. Jezeli to ma sluzyc jako wyniki konkretnych badan "na endurance", to musisz dolozyc staran aby wyniki byly dokladniejsze a moc processor byla bardziej prawidlowo wykorzystana. Wiec tak na...
Tylko jest tego rodzaju problem iż atmega taktowana zegarem 16mhz przy preskalerze 8 i 8 bitowym liczniku minimalny czas jest w porządku (0,5us) maksymalny natomiast 128us więc dalej musze inkrementowac w przepełnieniu zmienną . Dodatkowo z tego co widze input capture przypisany jest tylko do timera1 ja go używam do innych celów (2 kanałowy pwm). Poradziłem...
Atmega jest taktowana zewnętrznym kwarcem 12MHz, żeby jeden tick timera trwał ~1us. 1. Czy timer 8-bitowy przyjmujący zewnętrzne impulsy, może je przyjmować w takich samych odstępach czasowych jak 16-bitowy? Niestety na etapie projektowania nie zauważyłem, że żeby użyć 16-bit timera do przyjmowania impulsów zewnętrznych należy użyć nóżki T1, a nie T0,...
Proszę, gotowy przyklad rozwiązania. Napisałem przy kawie i potestowałem w symulatorku czy się nie pomyliłem gdzieś ;) [syntax=basic4gl]$regfile = "m8def.dat" '$sim 'dla symulatora Config Portd.5 = Input : Set Portd.5 : Czuj_1 Alias Pind.5 Config Portd.6 = Input : Set Portd.6 : Czuj_2 Alias Pind.6 Config Portd.7 = Input : Set Portd.7 : Czuj_3 Alias...
Podstawowym problemem jest to że wybierasz pixele z tablic ustawionych "pionowo". Działało by to znaczenie szybciej jak byś pakował pixele do tablic "poziomych" Tzn. takich gdzie każda tablica miała by powiedzmy 53 pixele i tych tablic było by 240. Wtedy te tablice o 53 pixelach jako że działało by to szybciej mogły by mieć więcej niż 53 pixele. Na...
Faktycznie nie sprecyzowałem , sorry : mikrokontroler atmega 328p-pu na płytce arduino uno3. Chciałbym żeby napis na pierwszej linii włączał się i wyłączał a w drugiej linii żeby był licznik cały czas widoczny.
Osobiście wyznaję zasadę, im trudniej, tym ciekawiej i można się więcej nauczyć... Jeśli chodzi o zasilanie awaryjne to ATmega wcale dużo pradu nie pobiera w odpowiednim trybie uśpienia. Można ją wybudzać przerwaniem z licznika, może to byc reset z watchdoga (Źródło resetu jest rozpoznawalne w MCUCSR), obsłużyć co trzeba i znowu uśpić - przeliczanie...
Wpisywanie $CRYSTAL bez rzeczywistej zmiany taktowania procesora będzie powodować, że wszelkie opóźnienia i obliczenia kompilatora dotyczące liczników nie będą zgodne ze stanem faktycznym. GETRC5() korzysta aktywnie z licznika TIMER0. Tak manewruje wartością wpisaną do rejestru licznika oraz preskalerem by otrzymać jednakowe odcinki czasu zliczane później...
Witam:) mam pytanie do forumowiczów w sprawie pomiaru częstotliwości, sprawa przedstawia się następująco: chciałbym zrealizować pomiar częstotliwości .............. wiem ze należy postąpić w poniższy sposób: 1. zatrzymanie zliczania impulsow z T0 2. zatrzymanie odmierzania czasu bramkowania T1 3. przepisanie zliczonych impulsów do rejestru głównego...
KEYBOARD_KEY_TIMEOV skąd się to bierze? Ogólnie widziałem że używasz real-time do domierzania opźnień. Jak I2C się pogubi to i program stanie. Przesiądź się na arduinową funkcje millis() lub w przerwaniu od jakiegoś timera zrób własne liczniki czasu, niezależne od zewnętrznego zegara. millis() zwraca czas w ms od uruchomienia systemu, w dużej zmiennej....
return przydałby się na końcu. I zacznij stosować ISR() Matko boska! tadzik weź ty się ze 4 albo 6 razy zastanów jak coś podpowiesz - RETURN w procedurze obsługi przerwania w C ????? Chyba że ty piszesz swoje programy w Bascomie ze wstawkami w C albo odwrotnie. do autora - żadnego polecenia return w przerwaniu bo będziesz miał tylko jeszcze gorzej....
http://obrazki.elektroda.pl/7062776700_1... Witam, Chcę przedstawić licznik Geigera na tubie STS-5. a) Wstęp/założenia: Swój licznik postanowiłem zrobić gdy przeczytałem w EDW o liczniku Geigera na USB byłem zdziwiony że tak tanio można zrobić tak ciekawe urządzenie . Po krótkich poszukiwaniach w internecie znalazłem przetwornicę GM...
Mam problem z określeniem wielkości jednostki czasowej cytat Bascom Basic AVR: Uwaga! Do zliczania nie jest używany żaden z liczników-czasomierzy. Wewnętrzna zmienna pracująca jako licznik (16 bitowy) jest zwiększana co 10µs. Czas ten jednak zależy od częstotliwości taktującego kwarcu. Można zmodyfikować procedurę z biblioteki by zmienić podstawową...
No nie ma takiej komendy (chyba?) Trik polega na zapętlonym wpisywaniu do licznika PWM coraz mniejszych / większych wartości
Druga sprawa jest jeszcze taka czy sygnal z wiatraka nie bedzie za slaby? Poza tym jak rozwiazac to od strony programowej? Liczysz impulsy w czasie, po czym zerujesz licznik i mierzysz nastepny odcinek czasu. Reasumując wykorzystujesz jeden licznik jako licznik impulsów zewnętrznych z wejścia T0 albo T1, a drugi licznik, zliczający przez preskaler...
regulacja czasu atmega atmega odmierzanie czasu zmiana czasu atmega
ogniwo peltiera zwarcie peugeot partner rozrząd volvo silnika
śrubokręt krzyżowy akumulator samochodowy
Dokumentacja techniczno-ruchowa DTR do prasy mimośrodowej LEN 25 C – Šmeral Trnava, MAGMET, parametry, schematy Silniczek A240411532112 – który pin to zasilanie, a który masa? Identyfikacja wyprowadzeń