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ść.
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ń).
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.
Witaj, Ja też walczę z SPI od pewnego czasu, ale używam SPI w Atmega8515 jako Slave. Jeśli dobrze zrozumiałem, to masz problem z USI w Attiny26. Z tego co wyczytałem w pdf'ie i z tego co pamiętam jak się bawiłem tym prockiem, to USI można skonfigurować jako normalny SPI. Musisz tylko odpowiednio ustawić bity rejestru USICR. Nie wiem po co liczysz impulsy...
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.
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,...
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...
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ć.
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...
(at)atom1477 Wzmacniacz był badany za detektorem. Sprawdzane było zbocze narastające przy wywołaniu pojedynczym impulsem i przy wywołaniu sygnałem prostokątnym 40kHz nie było różnicy w amplitudzie ani w czasie narastania. Na tej podstawie stwierdziłem że wzmacniacz działa prawidłowo. Dodatkowo na oscylogramach kanał niebieski to bezpośrednio wyjście...
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...
Wykorzystanie timera do odliczanie czasu impulsów. Tablica z z wszystkimi krokami silnika, zmieniany indeks tablicy po przepełnieniu licznika.
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....
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...
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...
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...
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?
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...
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
Po upływie 655.35ms następuje przepełnienie licznika, w takiej sytuacji trzeba utworzyć zmienną która będzie zliczać ilość przepełnień. Czyli.......... W takiej sytuacji (.."time out"; => Err=1) - trzeba przyjąc że instrukcja została zakończona i processor już nie powróci do jej kontynuacji, a raczej przystąpi do kolejnej instrukcji przewidzianej programem....
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...
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......
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.
0 Hz wymaga nieskończonego czasu oczekiwania na zmianę stanu. I nieskończonej pojemności licznika. Proponuję ograniczenie wymagań do 0.1 Hz czy 0.01 Hz. Wtedy można obliczyć wymaganą pojemność licznika i zakres. Liczniki w 8515 mają 8 lub 16 bitów i prescalery. To określa zakres zmiany częstotliwości. A częstotliwość kwarcu też jest istotna. Od tego...
(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...
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...
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...
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...
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...
Jak nie radzisz sobie na razie z tym timerem to przynajmniej nie nadużywaj bezpodstawnie Wait. To co Ci zaproponuję nie zwalnia Cię od ogarnięcia timerów! Ustal sobie jakie dopuszczasz maksymalne opóźnienie pętli i użyj go tylko raz np. 10ms. Za rozwiązanie, może nie do końca eleganckie, zaraz zbiorę burę od fachowców ale w wielu przypadkach to naprawdę...
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...
Po pierwsze jesli ustawiasz bity WGM21 i WGM20 to licznik dziala w trybie fast PWM. Po drugie, ale pewnie mniej wazne, sei() daje sie po skonfigurowaniu wszystkich licznikow. Po trzecie timer2 odlicza tylko 1ms a ty potrzebujesz 1s co daje ci 100 przerwan ray ponad sto taktow opoznienia, ale to i tak nie powinno wyjsc okolo 2 -3 s.
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...
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...
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...
A proszę bardzo wersję: Compiler version: 2.0.2.1 Compiler build: 2.0.2.1.0 IDE version: 2.0.2.0 Windows OS: Windows 7 Proffesional SP1 Oryginał legalny nie ma się czego wstydzić. Timera używam tylko jednego z odmierzaniem około 5 sekund. 'konfigurujemy timer wywoływany co jakiś czas (patrz procedura) Config Timer0 = Counter , Prescale = 1024...
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...
Przerobiłem program na Atmega328. Teraz ma tylko odbierać dane z master na Atega1284p i wysyłać do Domoticz. [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 ,...
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ć...
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ń.
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...
Określ częstotliwość tych impulsów, lub ich szerokość. Jeśli trwają milisekundy, to najlepiej wykorzystać timer w trybie przechwytywania impulsów zewnętrznych - piny ICP i rejestr ICR. Jeśli są krótkie (setki ns lub us) to lepiej tymi impulscami taktować wejście licznikowe timera, a drugi timer wykorzystać do odmierzania odcinka czasu wzorcowego. Ze...
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...
Nie tak dawno też nieco walczyłem z tym wyświetlaczem. Wyświetlacz fajny ale potrafi być oporny :D Trochę czasu musiałem na niego poświęcić żeby ruszył... Biblioteki które można znaleźć na necie nie zawsze działają. Miałem podobny problem. Rozwiązaniem okazało się wysyłanie odpowiednich komend do sterownika. U mnie działało dla takiej konfiguracji:...
Po małych zmianach działam na czymś takim. Pomimo taktowania z wewnętrznego kwarcu nie widać efektu. Jakiegokolwiek. [syntax=c]/* * RealTimeClock.c * * Created: 2013-11-17 01:46:48 * Author: Piotr Pabian */ #include <avr/io.h> #include <avr/interrupt.h> void init_RTC(void) { //ASSR = 1<<AS2; //Enable asynchronous mode TCCR2 = (1<<CS22)|(1<<CS21)|(1<&l...
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...
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.
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ą...
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...
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...
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...
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...
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,...
edit: Nie skupiaj się na asemblerze. Warto mieć pojęcia co i jak, ale nie warto dzisiaj pisać w nim całych programów. To nie te czasy, kiedy ze sprzętu wyciskało się 110% możliwości (jak np. wychodzenie poza ramki albo FLI w VIC/C64). Jak brakuje pamięci, sprzętu albo mips'ów, to bierzesz inny kontroler, zmieniasz kilka linii albo całą architekturę+hardware...
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...
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...
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....
regulacja czasu atmega atmega odmierzanie czasu zmiana czasu atmega
blokada mastercook immergas części zamienne polski znaki windows
płyta indukcyjna naprawa firmware flash
Daewoo DWF-5590DP – pralka nie wypuszcza wody, działa pranie, filtr, pompa, odpływ Sumator 1-bitowy – projekt układu szeregowego mnożącego przez 6 (6×X) z rejestrami D