Co do zliczania ilości przerwań w ciągu 1s, to zadeklaruj sobie jakąś zmienną globalną (+volatile) którą inkrementujesz przy wywołaniu przerwania INT, puszczasz timer i po przekroczeniu 1s odczytujesz tą zmienną i wiesz ile razy nastąpiło przerwanie INT, a następnie zerujesz tą zmienna itd. Adekwatnie tak _BV(1) itd. :) Biblioteka do LCD 4bit, też kiedyś...
Czysto hobbystycznie zeszłej nocy postanowiłem się zająć tym tematem. 3. Tu trzeba użyć timera jako podstawy czasu do sprawdzania cyklicznie poziom sygnału, kodowanie jest w czasie, początek sygnału jest synchronizacją. Bity mają dokładnie ustaloną długość, więc można byłoby timer ustawić na czas trwania bitu i sprawdzać w poszczególnych odcinkach czasu....
A dlaczego nie zastosować sposobu arturt134? Odmierzasz 15 sekund i sprawdzasz ile jest impulsów (wywołanych przerwaniem). Problem ich dużej ilości rozwiążesz jeśli w przerwaniu ilość impulsów będzie zliczane w paru bajtach zamiast w jednym; np. od 0 do 100 w bajcie A po dodaniu impulsu sprawdzasz czy jest sto jeśli jest to A=0 a inkrementujesz bajt...
Po co podajesz PWM na wejście sterownika silnika - na jego wejściu powinien być przebieg, którego ilość zboczy (opadających lub narastających w zależności od sterownika) odpowiada ilości kroków do wykonania w zadanym innymi wejściami kierunku. Zatem nie generuj tych przebiegów za pomocą PWM, ale za pomocą timera. Częstotliwość przerwań będzie wtedy...
Licząc, że jeden impuls trwa dokładnie 1 us i przy timerze zliczającym do 10 (startuje od 246 - Timer0) to po przekręceniu się timera uzyskujemy czas 10us. Przy długości impulsów w podanym zakresie timer powinien się przekręcić od 100 do 200 razy. Niestety program zlicza mi od 12 do 24 przekręceń tylko. Gdzie robię błąd ??? Nieprawidłowe obliczenia...
Zegar komputera typu PC jest taktowany przerwaniem zegarowym. Aby uzyskać dokładniejszy pomiar czasu należy przejąć przerwanie zegarowe, oraz zwiększyć częstotliwość jego generowania. Jeżeli przerwanie zegarowe będzie sprawdzało stan portu równoległego, to zliczając ilość przerwań pomiędzy kolejnymi impulsami z czujnika można będzie dość dokładnie określić...
Kawałek kodu, który powinien Ci pomóc z odmierzaniem czasu: Odmierz_1s: Load Timer1 = 12500 Incr Licz_10ms If Licz_10ms = 10 Then Licz_10ms = 0 End If Return Zlicz: Incr Czestotliwosc Return Odmierza 1s, a potem zlicza ilość przerwań na timer0. Przerób na swój kwarc.
Witam . Zadanie jest trywialne . Potrzebujesz 3 zmiennych i dwóch przerwań zewnętrznych plus przerwanie do wyświetlacza. Po starcie procka ustawiasz wartość jednej z zmiennych która będzie równa ilości przerwań wyświetlacza w czasie 10 sekund . Podczas aktywacji przerwania od T1 aktywujesz przerwania od INT0 i INT1 . INT0 zwiększa jedną zmienną a INT1...
Co myślicie o tym, aby zbudować miernik częstotliwości na mikrokontrolerze w ten sposób: skorzystać z przerwania INT0 lub INT1 i zliczać ilość przerwań w ciągu sekundy i dane przesyłać za pomocą UART do kompa. Jaką dokładność bym uzyskał i jaką maksymalną częstotliwość takiego pomoaru przy kwarcu 16MHz (mam na myśli uC Mega8535). Proszę o Wasze opinie...
tzn że kod który podałem wyżej jest zły? do puki nie używam transmisji rs232 wszystko śmiga jak ta lala. Włączam timer gdy przepełni się on 1600 razy mam 1 sekundę, w przerwaniach zewnętrznych zliczam ilość przerwań oraz czas między nimi. Mam problem jedynie podczas transmisji. Jest jeszcze jedne problem mianowicie Jeżeli w main wpisze coś takiego while(1)...
Zawsze zastanawiało mnie jak to działa, że tarcza wie którą cyfrę wybraliśmy. Wyjaśni to ktoś? Zliczasz po prostu ilość przerwań.
Potrzebuję odliczać czas z przedziału od 10ms do 99 godz. Zrobiłem to w taki sposób że ustawiony czas zamieniam na ms (liczba 4 bajtowa) i zliczam ilość przerwań od timera ustawonego na przerwanie 1ms. Wszystko fajnie tylko czas mi się rozjeżdza gdyż dokladność kwarcu jest ok 1%. Czy można jakoś zwiększyć stabilność wewnętrznego kwarcu (ATmega8)? Jaki...
Czytam i sam się pogubiłem hehe . Czy tu chodzi o względne przesunięcie (tmf) czy bezwzględne (satanistik). Parę miesięcy temu robiłem sterowanie PID dla servo Xmega w bascom . [youtube]https://www.youtube.com/watch?v... Nie obyło się bez problemu , który polegał na zliczaniu bezwzględnym więcej niż 65535 impulsów . Mój wpis z innego...
piotrva rozumiem, że mówisz o obsłudze w timerze? Zliczać ilość przerwań, tak samo jak w liczniku powyżej? Jak duża ma być ta liczba, o której mówisz? Cykli timera jest 150 na sekunde. Czas drgania styku(wg. deklaracji producenta) to około 20us. Toż to najgorsza możliwa rzecz - opóźnienie w przerwaniu! To zbrodnia dla programu! Wiem, że tak się nie...
Sumowanie 21 wartości jest niewygodne, zrób 4, 16, lub inną potęgę liczby dwa. Poza ty masz zsumować np. 16 wyników przetwarzania, czyli tam nie ma być żadne delay, tylko musisz zliczać określoną ilość przerwań ADC.
Musisz przemyśleć algorytm działania programu. Po pierwsze te mrugające diody zrób na przerwaniach z jakiegoś timera. Ustaw przerwanie tak żeby występowało kilka razy na sekundę i zliczaj ilość przerwań do 2 sekund i raz zapalaj raz gaś to bardzo proste do zrobienia. Co do pozostałych to attiny ma 4 kanały PWM a z tego co zrozumiałem to wystarczą ci...
Witam Posiadam maszynę do produkcji opakowań kartonowych własnej konstrukcji ,chciałbym zastosować w maszynie urządzenie do zliczania wychodzących kartonów ,po wprowadzeniu do licznika danej ilości zaczyna się zliczanie w dół po dojściu do zera następuje przerwanie obwodu. Proszę o poradę jaki licznik wybrać i jaki czujnik
Mozna to zrealizować na dwa sposoby: 1. Za pomocą przerwania zewnętrznego INTx zliczać ilość impulsów. Podobny temat już jest: 2 Zliczać impulsy na wejściu ICR Podobny temat masz poniżej: http://www.elektroda.pl/rtvforum/topic18...
Sprawa z odmierzaniem czasu jest teoretycznie prosta ale trzeba brać pod uwagę kilka spraw. PO pierwsze musisz sobie wybrać jakiś timer i zliczać jego przepełnienia w przerwaniu. Musisz to robić w przerwaniu żeby odmierzany czas był zawsze taki sam. Zliczasz ilość tych przerwań do obliczonej wartości w zależności od częstotliwości zegara i dzielnika...
witam wszystkich. pracuję nad zegarem, który napędzany jest licznikiem z autoprzeładowaniem dającym przerwania co 250us. na wejściu INT0 mam dostępny wzorcowy sygnał 1PPS. sygnał ten chcę wykorzystać do określania przez zegar swojego błędu i dokonywania korekty wartości którą przeładowywany jest licznik. zastanawiam się jak zabrać się za temat. mam...
Chodzi mi o to, aby prędkość była podawana zawsze aktualna. A jak pojazd porusza się z prędkością powiedzmy 7 km/h (niecałe 2 m/s), koło o obwodzie 2-3m obróci się więc niecały raz w ciągu sekundy, jeśli będzie miało 6 szpilek to da 6 impulsów na sekundę. Jeśli zliczałbym je i wykonywał obliczenie prędkości co 10 impulsów to już będę miał aktualny wynik...
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
Fakt, że w Bascomie nie wiadomo jaki powstaje kod i przy generacji precyzyjnych odcinków czasu masz zawsze niespodzianki. Ja dla odmierzania czasu stosuję następujący schemat: Timerx stop,Timerx -> tryb2, TLx i THx ustaw wartość np. -100, zezwól na przerwania od Timerx i globalnie, start Timerx. Od tego momentu masz w twoim przypadku dla kwarcu 12...
Czy dobrym rozwiązaniem była by detekcja przejścia przez zero zliczenie i podzielenie ilości impulsów ? Tak, a same impulsy mogłyby generować przerwanie, w którym zliczane byłyby te impulsy - im większy interwał pomiaru zliczanych impulsów, tym dokładność pomiaru częstotliwości będzie większa.
Zmiana enkodera jest nie możliwa. Muszę sobie poradzić ze zliczaniem impulsów tylko nie jestem pewien jak to zrobić. Nie mam za bardzo opanowanych liczników na Atmedze ale jest jakiś sposób zliczania ilości zboczy narastających na nich? Drugim pomysłem jest użycie przerwań zewnętrznych, ale jak wtedy określić kierunek obrotów? Po prostu nie chce wyważać...
To będą długie(z punktu widzenia uC) czasy.Sprawdź jednak, czy nie ma oscylacji bo jak nic nie wiadomo o czujniku, to nie można stwierdzić czy ma jakiś układ formowania impulsów czy nie. Jedyne co wiem, to to, że na płytce czujnika znajduje się komparator LM393. Na wyjściu czujnika są dwa sygnały, cyfrowy i analogowy, podejrzewam, że cyfrowy wychodzi...
Po pierwsze pochwal się jakimś listingiem z tego co napisałeś i nie działa , gdzieś mi się już przewinął przed oczami taki projekt na elektrodzie i jak pamiętam autor również próbował wymusić napisanie programu . Między szukaniem pomocy a wyręczaniem się innymi jest cienka granica . Tym bardziej zastanawia mnie to ,że cały układ można przetestować na...
Istnieją dwie cyfrowe metody pomiaru częstotliwości: 1. Pomiar ilości impulsów wzorcowych w trakcie trwania okresu sygnału mierzonego. Konkretnie mierzymy imp. wzorcowe w trakcie trwania połowy okresu - zwykle, gdy jest poziom wysoki. W takiej sytuacji jeżeli zmierzysz N imp. wzorcowych w trakcie połowy okresu, to: Tx=2*N*Tw, gdzie Tx okres przebiegu...
Aby nie zakładać specjalnie nowego tematu to spytam się jeszcze tutaj. Czy powyższa metoda może zostać wykorzystana do odmierzania czasu rzędu 1 mikrosekundy. W teorii tak, ale nie jest to chyba najlepszy pomysł... Wejście i wyjście z przerwania to - z tego co pamiętam - 18 cykli. Do tego sama obsługa przerwania to też kilka instrukcji, powiedzmy więc...
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
CPI r24, 4BRSH wylacz_usypianie...wylacz_usypianie:CLI.... Kod: avrasm ] CPI r24, 4BRSH wylacz_usypianie...wylacz_usypianie:CLI.... Powiem szczerze, że nie bardzo rozumiem. Obecny kod wygląda w ten sposób: [syntax=c]/* * main.c * * Created: 2/14/2022 1:11:10 PM * Author: Maciej */ #include <xc.h> #include <avr/wdt.h> #include <avr/interrupt.h>...
Po pierwsze, timer liczy od 0 do 255, ale to oznacza 256 impulsów pomiędzy przepełnieniami, czyli powinno być 256, a nie 255 * 128us. Po drugie zaokrągliłeś wynik z 32.64 do 32 przed dzieleniem, co w efekcie dało niedokładny wynik ilości przepełnień. W rzeczywistości częstotliwość przerwań można obliczyć dużo prościej: ( 8000000 / 1024 ) / 256 = ok. 30,5176.....
Witam wszystkich, proszę o pomoc w rozwiązaniu problemu w kodzie w języku C ale ze wstawką asemblerową. Poniżej zamieszczam kod. [syntax=c]/* * main.c * * Created: 2/14/2022 1:11:10 PM * Author: Maciej */ #include <xc.h> #include <avr/wdt.h> #include <avr/interrupt.h> #include <util/delay.h> #define WDT_ENABLE ISR(WDT_vect)//przerwanie...
Witam, Zależy mi tylko na tym, żeby Arduino zliczał impulsy z kontraktrona do 5 - 1 impuls- świeci się dioda led 1 - 2 impuls zapala się dioda led 2 - 3 impuls zapala się dioda led 3 - 4 impuls zapala się dioda led 4 - 5 impuls zapala się dioda led 5 i dodatkowo daje sygnał ciągły HIGH na pin SILOWNIKA przez cały 5 po 6 impulsie reset i znowu: - 1...
Czas otwarcia wtryskiwaczy mierzysz za pomocą 1 timera, ale nie tak od razu. Są dwie metody: pierwsza to podpięcie (przez transoptor) wtryskiwacza do wejścia timera i wejścia przerwania - po wykryciu przerwania (początek stanu niskiego) startujesz timer, przestawiasz stan aktywacji wejścia INT na przeciwny i procek wraca do pętli głównej, po ponownym...
Zarówno ciągła konwersja jak i wyświetlanie na ekranie są błędami - lecz nie mają wpływu na kod wykonywany w przerwaniu - nie licząc pomijalnych zmian temperatury. Zacznij od użycia prescallera, zliczania mniejszej ilości kroków, co za tym idzie zmniejszenia rozmiaru zmiennych Przerwanie masz w poście wyżej w pętli głównej jeśli sec&&liczba_kroków -sec=0;...
Oto program który napisałem $regfile = "attiny2313.dat" 'rodzaj mikrokontrolera $crystal = 8000000 '8MHz Dim Pozycja1 As Integer 'zmienna określająca położenie serwa1 Dim Pozycja2 As Integer 'zxmienna określająca położenie serwa2 Dim Czas1 As Integer 'zmienna pomocnicza do odmierzania czasu Dim Czas2 As Integer 'zmienna pomocnicza do odmierzania...
Koledze figa_miga dziękuję za chęci ale proszę troszkę uważnie czytać co piszę. Do komparatora jest podłaczony fotorezystor a mikrokontroler ma mnie informować o zmianie oświetlenia (LEDNOC) a przy okazji drugą kontrolą jest sprawdzanie ilości impulsów na wejściu T0. Więc niech się kolega nie upiera na to wejście INT i tylko kontrolę ilości przerwań....
Ogromne dzięki za zaangażowanie! Jeżeli chodzi o schemat, to nie ma nic szczególnego. Wyświetlacz na I2C (A4, A5), DHT-11 podłączony do D2 + zasilania i masy. Do D3 kontaktron i opornik 1k. Druga nóżka opornika do GND (żeby wejście nie łapało zakłóceń), druga nóżka kontaktronu do D12, na który podaję stan wysoki i tym samym "zasilam go". Kontaktron...
[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Timer0 : On Timer0 Przerwanie0 Dim Tmp As Word Tmp = 0 Dim Ptimer1 As Word Ptimer1 = 0 Do If Klawisz = 0 Then If Ptimer1 = 0 Then Ptimer1 = 100 End If If Ptimer1 < 95 And Klawisz = 0 Then Tmp = 1 End If End If If Tmp = 1 And Ptimer1 < 85 And Ptimer1 > 70 Then If Klawisz = 1 Then...
Witam Robię na arduino prosty tester uSwicha który, wyzwala cewkę która, załącza i wyłancza przełącznik. W programie wykonuje sprawdzanie czy ilość powtórzeń zgadza się z odczytaną ilością z przełącznika. Mój problem polega na tym, że błędnie odczytuje mi ilości zmian stanów. W programie wykorzystuje przerwanie aby wykryć zmianę zbocza, gdy wykonałem...
1. Nie używaj przypisań typu Rejestr=liczba. Używaj przesunięć bitowych i nazw bitów w rejestrach. 2. Ponadto co napisał (at)dondu - pamiętaj, że zliczając impulsy ze sporymi częstotliwościami musisz wziąć pod uwagę ilość instrukcji maszynowych, które procesor wykona od momentu zgłoszenia przerwania do zaprzestania zliczania impulsów/zapisania wyników.
Nic to nie zmieniło. http://student.agh.edu.pl/~ziziok/Sheep/... Teraz to wygląda zdecydowanie inaczej, ale płytki takie same. Wykrywanie zera jest na części niskonapięciowej z 12V jest wzięty przez opornik prąd na bazę tranzystora poczym zaświca CNY17. Zrobiłem program który zliczał ilość wybić przerwań na sekundę i się zgadzało w ilości....
Fakt, temat dziwaczny. Przykład - zliczanie zbocz w przerwaniu. Kod obsługi przerwania wygenerowany w C vs najprostsza obsługa asemblerowa. Policzyć cykle zegarowe w jednymi drugim przypadku i przeliczyć na dopuszczalną częstotliwość zmian na linii wejściowej przerwania.
Witam szanownych kolegów. Piszę z prośbą o pomoc w następującym problemie. Sprawa dotyczy mikrokontrolera Atmega32, konkretnie zewnętrznych przerwań INT0 i INT1. Wspomniany mikrokontroler steruje pracą większego urządzenia pomiarowego, którego jednym z zadań jest zliczanie impulsów pochodzących z zewnętrznego urządzenia. Impulsy są zbliżone do prostokątnych...
Na pewno czujnik Halla prościej. Ale nie to, że kontaktronu nie da się użyć, zwłaszcza przy dużych kołach. Zakładając koło 26" i Vmax=55km/h daje nam to ok. 8 obr/s czyli 125ms. Drgania kontaktronu raczej nie trwają 100ms, czyli niewielki zapas jest, wystarczy odpowiednio podejść. Po wykryciu zwarcia kontaktronu trzeba odczekać ok 80-100ms i upewnić...
Całkowicie zapomniałem o temacie :) Z problemem poradziłem sobie w następujący sposób, jest to wycinek z większego programu więc coś może być źle wycięte :) [syntax=c] //--------------------------------------... // Dołączone biblioteki //--------------------------------------...
Jeśli nie licznik użyłbym przerwań. Jednak licznik jest to tego najlepszy. Można nawet hardwarowy zliczać ilość impulsów w odpowiednim okresie. Albo n liczników które zatrzymasz w momencie przerwania. Zliczanie zwykłymi wejsciami może doprowadzić do utraty impulsów.
No właśnie, Możesz skopiować funkcje którą podałem ci w poprzednim wątku, ta z przerwania odczytująca stan przycisków. Dodatkowo uzbroić ją jak wyżej (at)excray napisał w odmierzanie czasu naciśnięcia. Wówczas odpowiednio ustawiasz kod klawiatury. Algorytm mniej więcej... Zaznaczam w funkcji który guzik nacisnieto, w kolejnych przerwaniach zliczamy...
Nie musisz korzystać z enkodera ale musisz z szybkich liczników (choć enkoder ułatwi zadanie). Oczywiście czujnik musi być odpowiednio szybki i współpracować z "tarczką" o odpowiedniej ilości wycięć. Przyjmując 3000obr/ min=50 Hz, max. częstotliwość HSC 20 kHz to możesz mieć max 400 imp na obrót ale lepiej trochę mniej. Potem musisz skorzystać z przerwań...
Witam. Potrzebuje w przerwaniu zmienić wartość zmiennej, które zlicza ilość przepełnień licznika. Zmienna będzie używana w przerwaniu. Czy mogę zmienić wartość zmiennej w pętli programu głównego, czy muszę to wykonać bezpośrednio w przerwaniu. Czy jeśli będę zmieniał wartość zmiennej w pętli programu głównego to czy na ten czas muszę wyłączyć obsługę...
W tych standardach transmisji jest tak, że impulsów o danej częstotliwości jest określona ilość, więc może dobrym rozwiązaniem było by wykorzystanie Timera 1 (w wypadku np. ATmega8), czy innego który ma OCR, żeby wywołał przerwanie po zliczeniu odpowiedniej ilości impulsów. Inny timer zajmował by się zliczaniem czasu. Po przerwaniu z OCR wartość licznika...
(at)bartsam : oprócz filtru dolnoprzepustowego RC na linii z kontaktronem mam jeszcze programowy debouncing zrealizowany w taki sposób, że gdy pojawi się przerwanie INT0 od kontaktronu, to blokuję przyjmowanie dalszych przerwań INT0 i czekam na wystąpienie kolejnego przerwania od Timera1 (przerwania z Timera1 zgłaszane są co 10ms) i w tym przerwaniu...
Po nazwie i użyciu domyślam się że to jakieś liczniki (np. ile razy funkcja była wywływana) ale jak z tych zmiennych się korzysta? Dobrze ci się zdaje. To liczniki wywołań danego przerwania. Te funkcje obsługi przerwania nie są statyczne, nic nie zwracają. Czy te cytowane zmienne to są zmienne globalne i można się do nich odność w całym projekcie?...
Podaj może linka do źródłowego projektu i napisz, jakie zmiany wprowadziłeś w usbconfig.h. Ja również zastosowałem takie rozwiązanie, podłączając USB do obu wejść INT (oryginalnie D+ na INT0, aktywne przerwanie), by mieć łatwy wybór, która linia ma generować przerwanie. Niektóre wersje v-usb nie mają poprawnie zdefiniowanej stałej USB_CFG_CLOCK_KHZ....
tak zgoda ale chcę liczyć ilość bajtów danej transmisji. Ramki mają od 2 do 6 bajtów. Poprzednio projekt ten zrealizowałem na Atmedze, W przerwaniach od SPI zliczałem ilość bajtów natomiast przerwanie od zmiany stanu linii SS zerowało licznik bajtów.
Wszystkie, czyli 3. Kłopot stanowi jednak fakt, że Timer0 i Timer2 są 8 bitowe zatem w razie dłuższych czasów trzeba je "wydłużać" programowo zliczając odpowiednią ilość generowanych przez nie przerwań. 60s bezpośrednio się nimi nie odliczy tak jak 16 bitowym Timerem1.
Witam, napisałem program, w którym chciałem użyć przerwania do zliczania ilości naciśnięć, ale program nie działa prawidłowo, nie zlicza równomiernie, tak jakbym za jednym naciśnięciem naliczało po 2 czy 3 razy, oto kod programu: /* Program obsługujący przerwania, po naciśnięciu przycisku podpiętego pod PD2 (INT0) Diody zapalają się kolejno...
problem w tym że masz po sobie 2 pętle for rozjaśniające ledy w głównej pętli programu. Najpierw wykonuje się pierwsza potem druga. Druga rzecz to stosowanie jako opóźnienia funkcji waitms która zatrzymuje prace mikrokontrolera. Proponuje użyć timera który będzie generował przerwanie po przepełnieniu licznika np co 20ms. Potem jeżeli drzwi sa otwarte...
A ja zrobiłem obrotomierz w Bascomie na ATtiny 2313, procesor ten ma wbudowany 8 i 16 - bitowy Timer/counter. Konfigurujemy ten układ peryferyjny jako counter, procedurę zliczania w określonej jednostce czasu umieszczamy w podprogramie wyzwalanym przerwaniem zewnętrznym - czyli impulsem z czujnika halla. w innym podprogramie umieszczamy obsługę wyświetlacza...
Problemem jest tutaj fakt ze licznik zlicza impulsy. A ty każdemu krokowi enkodera chcesz przypisać pewna wartość (regulacja zgrubna/precyzyjna) a tego licznik nie robi (bo każdy impuls jest traktowany z taka sama waga). Jednym z możliwych rozwiązań jest zliczanie ilości impulsów i mnożenie ich przez wagę (w zależności od wybranej dokładności). [syntax=c]...
Nie odzywałem się w temacie bo krucho z czasem, ale nadal działam nad projektem. Sytuacja wygląda następująco. Pozbyłem się powietrza z układu. janek_wro - licznik przepływomierza jest zerowanie tuż przed pompowaniem, więc zwrotny przepływ wody nie ma wpływu na wynik. mpier- Gdy ustawiłem przerwanie na zbocze opadające wyniki koszmar. "Samo przerwanie...
Witam Kod jak poniżej służy do zliczania czasu trwania jednego impulsu (ta funkcja działa prawidłowo) oraz do zliczania czasu (w celu zliczania ilości impulsów na jednostkę czasu). volatile unsigned char pomiar = 0; volatile uint32_t cw_impuls,impuls = 0; unsigned char sreg; float tc1; char czas[8]; void Inicjalizacja(void) { LCD_init();...
Musisz "zmierzyć" 3 impulsy. Nigdy nie wiesz w którym miejscu będzie wałek podczas włączenia urządzenia. Po 3 impulsie będziesz wiedział w którą stronę się kręci. Co do pomiaru prędkości ja wykorzystał bym timer. Timer ustawić tak aby zerował się np co 1sekundę. Czujnik A podpiąć pod przerwanie i w nim zliczać ilość impulsów. W przerwaniu timera sprawdzasz...
mam procesor mega8 na 4MHz do tego 3 wyswietlacze multipleksowane na przerwaniu timer0 (okolo 66Hz na jeden wyswietlacz) i niestety sa bledy w transmisji z dsa i to srednio co 10 odczytow Bez CRC uklad wariuje Dla unikniecia nieszczesnego polecenia wait 1 zliczam w przerwaniu ilosc przerwan i co 200 ustawiam pomocniczy bit ktory powoduje w petli glownej...
kamyczek: Coś chyba niedokładnie odrobiłeś zadanie domowe... Co z tego, że wystąpią równocześnie? Po prostu najpierw będzie obsłużone to o wyzszym priorytecie (T0), a potem te i niższym. Zresztą co ma obsługa przerwań do ilości zliczonych przez tajmer impulsów? Co podmiot liryczny ma na myśli: "..włączanie obu liczników równocześnie i to z wielokrotną...
Jak jest z myszkami optycznymi (bez ołowianej kulki) nie wiem, bo do końca nie wiem jak działają. Ale z ze zwykłą, z ołowianą kulką nie powinno być problemu. Wylutowywujesz z myszki diode nadawcza (najczęściej przez roczysta) i fototranzystor (czarny często z gumową nakładką) oraz tarcze. Rózne myszki mają rózne tarcze (chodzi o ilość szczelin na obrót...
Witam. Zawsze używałem "mało zaawansowane" i "proste" STM32F1, teraz zakupiłem nucleo H5 i mam z nim pewien "drobny" problem. Program prosty jak drut: 1. TIM2 32bity zapętlony liczy sobie wg zegara systemowego bez preskalera 2. TIM1 16bit taktowany zegarem systemowym z preskalerem 62 (61) wywołuje przetwanie co 2000 cykli 3. w przerwaniu tim1 zapisuję...
Pisze w C. Chodzi mi m.in. o to że jest to podłączone do portu P1.7/ ~INT5 i na przykład do portu P1.5/ ~INT3 jest: void EX3_int(void) interrupt 9 using 1 a dla ~INT5 nie wiem jaki numer ma przerwanie... a i jeszcze "tacka" jak to ładnie nazwałeś :D (sam nie wiedziałbym jak to nazwać) nie po każdej kropelce sie uchyla tylko po jakiejś tam ilości, ale...
To prawda że nie są to procesory wielordzeniowe. Windows może wykonywać kilka zadań "jednocześnie" pracując na procesorze jednordzeniowym ( pamięta ktoś może 386, 486, pentium 166 itp ? ) Zrobiłem kiedys program "wielozadaniowy" na at90s8535 polegało to na odczytaniu stanu interesujących mnie wejść w pętli głównej programu i wywołaniu odpowiednich procedur....
Witam, Mam enkoder inkrementalny E6A2-CS5C o ilości impulsów 100/obrót. Enkoder współpracuje z siłownikiem pneumatycznym za pośrednictwem listwy zębatej, która mierzy jego wysunięcie. Siłownik jest zamontowany w maszynie i ma mechanicznie ograniczony zakres ruchu z obu stron, co oznacza, że teoretycznie może pracować w dość ściśle ustalonym zakresie...
Śmiem twierdzić, że w (0<<ISC11) | (1<ISC10) jest błąd, powodujący, że wyrażenie to ma wartość równą 1 (podczas gdy powinno mieć wartość równą 4). Możesz mi wyjaśnić gdzie tu jest błąd? Bo wg. mnie po ustawieniu rejestru MCUCR &= ~((0<<ISC11) | (1<ISC10)) ma on postać 1000 czyli 0x8 czyli przerwanie jest wyzwalane...
Witam. Posiadam kilka kompletów tego nadajnika i odbiornika (433MHz) i tak jak kolega wspominał w eterze mega dużo śmieci. Ale... znalazłem rozwiązanie tego problemu śmieci! Zmierzyłem miernikiem częstotliwości wyjście odbiornika podłączonego tylko do zasilania i u mnie były takie wyniki: od około 600Hz nawet do 3kHz sygnały śmieci które zmieniały się...
Jako że prosty przykład, wiele tu informacji nie trzeba wiedzieć. Jedynie przerwaniu od INT0, oraz ustawienie timerta0 w tryb CTC (do stworzenia timera programowego). Reszta to tylko pętla główna w której jest sprawdzany warunek co około jedną sekundę zgodnie z założeniem:[syntax=c]#include <avr/io.h> #include <avr/interrupt.h> // Atmega16...
No to chyba teraz zrozumiałem to o co pytałem. W programie musi być procedura obsługi przerwania TIMER1_OVF_vect czyli przerwanie od przepełnienia. Jeżeli TIMER1 osiągnie wartość 65535 to wtedy jest wywoływane to przerwanie w którym jest inkrementowana zmienna zliczająca przerwania. I mając wartość ICR1 i ilość przepełnień TIMERA1 łatwo już policzyć...
(at) Marek_Gorecki Jeden cykl enkodera składa się z czterech zboczy (po 2 na każdy kanał). Sądząc po tym co piszesz nie potrzebujesz dużej precyzji i zliczasz tylko jedno z nich, więc częstotliwość przerwań INT0 wyniesie: f = n*N/60 gdzie: n - prędkość obrotowa enkodera [1/min] N - ilość cykli ekodera na obrót Ilość taktów procesora pomiędzy...
Witam, Próbuje zrobić częstotliwościomierz i napisałem taki programik: #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/interrupt.h> #include "lcd.h" float f,licznik; int t; char bufor1[10],bufor2[10]; SIGNAL (SIG_INPUT_CAPTURE1) { licznik=TCNT1; } SIGNAL...
Ciekawe jest to widać w twoim profilu (Pomógł: 79927) :P ale do rzeczy. Według mnie coś takiego można zrealizować w następujący sposób: - konfigurujesz przerwanie zewnętrzne żeby było wyzwalane przerwanie zboczem opadającym, rosnącym etc. - w tym przerwaniu uruchamiasz timer który zlicza sobie impulsy - jeżeli zliczy określoną ilość impulsów to wykonujesz...
Witam Korzystam z Timer1 do zliczania ilości sekund jakie upłynęły od uruchomienia procesora. Procesor jest taktowany wewnętrznym zegarem 8MHz. Niestety wyliczone dane są obarczone dużym błędem, średnio 15 sekund na 10 min. ( zamiast 600 sekund pokazuje 615 sekund ). Używam Timer1 w trybie CTC. Czy jest to niedokładność z jaką trzeba się liczyć czy...
Mam wrażenie, że jeśli te sygnały nie muszą być HiFi, to da się zrobić 23 sygnały na jednym module STM32F103C8T6. Ale trochę trzeba się postarać. Podliczyłem - STM32F103C8T6 ma 19 pinów "5V tolerant" (A8-12, A15, B2-4, B6-15) i 11 z ograniczeniem do V_DD=3.3V (A0-7 B0,1,5); z tego B2 to BOOT1 (służy do wybierania, z jakiej pamięci ma startować, ale...
Można również ustawić sobie taktowanie na 8MHz, następnie Timer0 ustawić z prescalerem 8 i generować przerwanie co 58us (Load Timer0, 58). Dzięki temu przy zliczaniu czasu trwania echa powrotnego mamy od razu wynik w centymetrach (58us = 1 przerwanie = 1cm). Pozostaje teraz tylko zliczać ilość przerwań timera0. I to chyba najprostsze rozwiązanie tam...
Do tej pory troszkę bawiłem się AT89C2051. Wykonałem pewien układzik który za pomocą Timera0 zliczał impulsy na wejściu T0 podczas 1sekundy którą odmierzałem Timerem1. Jako, że musiałem przeprogramować 51 do innych celów chciałbym go zastąpić Attiny2313 bo mam dwie sztuki. Zacząłem czytać książkę Dolińskiego aby wykonać program ale mam pewne problemy....
Witam! Dawno mnie tu nie było więc będzie długo :D Zacznę od pomysłu z przepływomierzem. Jest to dobry pomysł, ale niestety trzebaby było 2 przepływomierze (jeden powrotny), a ponadto koszt jednego to około 50zł, więc koszt 100zł podwoi cenę komputera. Rozwiązanie o którym pisałem niegdyś tu na forum jest najlepszym rozwiązaniem, ale nie nadaje się...
Spróbuj wyświetlić tekst polecenia przed porównaniem go z tablicą nazw poleceń. Niestety, ale właśnie to robię i to nawet w kodzie który zamieściłem fprintf wysyła tekst na jeden z dwóch portów USART z których korzystam. Tekst wyświetla się właściwie, a tablica nie zwraca indeksu czyli strcmp_P nigdy nie jest 0. W samej pętli z porównaniem też wyświetlałem...
Ja myślę, że przede wszystkim powinieneś zrozumieć teorię, którą chcesz zastosować. Rozumiem teorię próbkowania i dlatego moja wątpliwość...Elektrodowa uprzejmość, zapomniałem niemal o tym... Chyba po to sa fora by pomagać... Próbujesz zastąpić pomiar wartości średniej wartością chwilową ( w uproszczeniu) Twój pomiar ilości impulsów przez 25 ms uśrednia...
Witam, Piszę program obsługujący diody umieszczone symetrycznie na obrzeżu koła. Diody mają działać tak, że przy obrocie koła świeci się tylko jego połowa. Pomiar dokonuje się jednym kontaktronem. Program powstał, testuje go na płytce uniwersalnej, a impuls pomiarowy wymuszam zbliżając magnes do kontaktronu. Niestety działa strasznie niestabilnie, a...
Na chwilę małymi krokami wziąłem się za pisanie programu, podłączając wyjście TSOP do pinu PD2 jako przerwanie zewnętrzne o zboczu opadającym i na samym początku mam problem. Mam PORTB podłączony pod 8 ledów i dlaczego tak napisany program [syntax=c]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <avr/wdt.h>...
Witam, Mam problem z układem który ma zliczać ilość obrotów silnika i przełączać kierunek obrotów przeciwną stronę po odliczeniu odpowiedniej ilości. Silnik napędza pręt gwintowany na którym jest nakrętka (uproszczony prototyp siłownika z którym układ będzie pracował w rzeczywistości). Program działa tak, że po odliczeniu 50 obrotów w jedną stronę,...
Witam. Chciałem w celach edukacyjnych zrobić częstotliwościomierz. Ponieważ nie mam za bardzo skąd wziąć zewnętrznych impulsów postanowiłem, że jeden pin procka będzie je generował, a przerwanie int0 będzie liczyć ile tych impulsów było. Do odmierzenia czasu posłużył timer1, który ma odliczyć sekundę (więc wynik od razu w Hz). Po upływie sekundy ma...
Nie bezpośrednio z wyświetlacza tylko bezpośrednio z pinów procesora. Tam panuje standart TTL. Nie jest konieczne czytanie każdej sekwencji wyświetlania, a jeden z pinów ze sterowania tranzystorami na wyświetlacz podpiąć do przerwania INT by zliczać ilość wyświetleń i ustalić co ile ma być czytane np. 10. takie rozwiązanie daje czas na wykonanie programu...
http://obrazki.elektroda.net/91_12361267... Witam!!! Oto moja druga konstrukcja prezentowana w tym dziale. Dzisiaj jest to "Dartomat" - (połączenie słów "dart" i "automat" ;)). Jest to układ do zliczania punktów w grze w darta (dla wyjaśnienia cytat z wiki jakby kto nie wiedział co to dart: "Dart, lotki, rzutki (ang. Darts) – gra, a...
Dalej piszesz to samo i nie wiadomo o co Ci chodzi... NAPISZ W AJKI SPOSÓB WYKORZYSTUJESZ 2 TAJMERY DO TAKTOWANIA UARTA!!! Już wiemy jaką potrzebujesz szybkość transmisji ale dwóch tajmerów do jednego UARTA to jeszce nie widziałem i nie mam pojęcia jak to można zrobić. Chyba nie zmieniasz jednym tajmerem stanu którgoś pina, a drugim zliczasz ilość tych...
Tak przy okazji, skoro masz MCU z wbudowanym RTC to po co ci zewnętrzny RTC? Odchyłki i tak trzeba będzie kompensować np. przez DCF77. A kwarce zegarkowe zwykle nie grzeszą dokładnością. Próbowałeś podregulować trymerem? Tego kwarca nie da się stroić. Na wejściu i wyjściu oscylatora (TOSC1, TOSC2) są kondensatory 36pF. DCF odpada. Tam gdzie docelowo...
Witam. To tej pory nie stosowałem zbyt często timerów do generowania przerwań celem generowania odcinków czasu. Być może dlatego żyłem w słodkiej nieświadomości pewnych komplikacji będących nie bez wpływu na dokładność odmierzanych odcinków czasu. Do tej pory wydawało mi się, że dla danego rezonatora kwarcowego wystarczy: 1. Obliczyć czas trwania pojedynczego...
Proponowałbym najpierw sprawdzić oscyloskopowo jak nadaje ta "reszta" pilotów. Niekoniecznie musi to być RC6. Może to być np. SIRC. Na podstawie tego możesz taką procedurkę napisać samemu: http://www.sbprojects.com/knowledge/ir/r... Jak to robi BASCOM przy RC5? Przy odczytywaniu kodów przez GETRC5 robi to po najmniejszej linii oporu. Ustawia licznik...
naklepaliscie juz 13 postow o rzeczy, ktora dla osoby zapoznanej z tym dokumentem jest oczywista jak to, ze liczby binarne to tylko 0 i 1. Dla jednych oczywiste, dla innych nie, kolega Cepelia jak sam napisał, siedzi dopiero w tym dwa tygodnie. Proponuję zrobić to na timer1 - jest 16 bitowy, dlatego można go użyć do zliczania większej ilości impulsów...
Chłopaki pomóżcie Dzisiaj cały dzień siedziałem nad problemem i zatoczyłem koło, wracając do: #include <avr/io.h> // dostęp do rejestrów uint8_t led; int main( void ) { DDRC = 0xFF; // PortC jako wyjścia TCNT0 = 0xFE; // wartość początkowa T/C0 TCCR0 = _BV(CS01)|_BV(CS02); // T/C0 zlicza opadające // zbocza na wejściu...
Witam Mam pewien problem z obsługą wewnętrznej pamięci EEPROM w ATmedze8. Mianowicie, napisałem prosty program mający na celu zliczać ilość wystąpień przerwania zewnętrznego INT1. Wszystko wydaje się działać poprawnie, ilość wystąpień przerwania jest zliczana prawidłowo i zapisywana w EEPROM oraz wyświetlana na LCD, jednak czasem po włączeniu zasilania...
Problem z zliczaniem impulsów rozwiązany ale mam nowy problem z wyświetlaniem wyniku zdjęcia w załączniku. Pierwsza rzecz co rzuca sie w oczy to brak konfiguracji LCD; Niby to pracuje mając config ustawiony w 'Options/Compiler/LCD, ale przeniesiesz listing na inny computer i tu już nie musi być to samo. Dalej, Timer1 odliczający 1 sec. może pracować...
Przeczytaj proszę jeszcze raz mój poprzedni post. Nie muszę. Przeczytałem go wystarczająco uważnie. Widocznie nie jestem wystarczająco inteligentny, żeby go zrozumieć. EDIT: - przyjmując, że na obsługę enkodera (dla obu zboczy) będzie potrzebne 10x tyle czasu daje nam to 140 taktów zegara, co przy 16MHz daje nam to: Więc to też tylko szacunkowa wartość....
zliczanie ilości zliczanie ilości znaków zliczanie ilości liczb
cooler master zasilacz naprawa wypełniać ubytek sprawność klimatyzatora
jakie formaty filmów obsługuje samsung samsung avila
Podłączenie silnika jednofazowego do NŁK16-LP Demontaż szyby w piekarniku Ariston F48 - krok po kroku