(at)atom1477 Jeśli ja wygeneruje przerwanie co 1 ms, to muszę mieć potem możliwość coś zrobić, czyli w przerwaniu muszę chociaż zmienną inkrementować, albo zrobię toggle pin i połączenie z głównym MCU przez INT0 tak jak pisałem post wcześniej . Mam kwarc 20ppm i nie jest on wystarczająco stabilny, dlatego poszedłem na DS3231 i źródło timera od T1....
Widać muszę Ci wytłumaczyć - bo chyba nie wiesz o co w tym wszystkim chodzi. Na jednym porcie UDP można odbierać i wysyłać pakiety z/do nieograniczonej ilości urządzeń. Czyli jeden port załatwia całą sprawę. I tyle jest potrzeba. Twój komentarz do "ograniczeń" i ten tutaj jest tego zjawiska typowym przykładem. Dodano po 1 Bezpośrednia odpowiedź dla...
Witam, Mam problem, z którym nie mogę sobie od dłuższego czasu poradzić. [syntax=c] ISR(TCF0_CCA_vect){ //w przerwaniu od timera odczyt z ADC- 14-bit TCD0.CNT = 0; //zapis 0 do licznika CNT TCD0.CTRLA=TC_CLKSEL_DIV1_gc; //start timera dla próbkowania ADC } ISR(TCD0_OVF_vect){ PORTE_OUTSET=PIN0_bm; asm volatile ("nop");asm volatile ("nop");asm volatile...
Oj coś koledzy krążycie wokół tematu a nie widzę nigdzie pełnej odpowiedzi. Niektóre są za to błędne albo upraszczające. F_CLK_ADC, to tak jak ktoś pisał, tylko częstotliwość taktowania ADC. A że jest to przetwornik typu SAR (z sukcesywną aproksymacją) to konwersja 1 próbki trwa n cykli zegara F_CLK_ADC. W przypadku tego ADC jest to: - 25 cykli dla...
To jest tylko sztuczny marketingowy zabieg w celu zdywersyfikowania produktu jakim jest kompilator na wersje Free, Standard i Pro. Taki system powoduje przywiązanie do produktów i skrojenie na miarę kieszeni klienta i nie ma nic wspólnego z obiektowością. I to jest właśnie problem , bo pisząc w C nie mamy wpływu na to jak będzie wyglądał kod wynikowy...
W BASCOMie nie da rady - przynajmniej czystym. Musi być co najmniej mały fragment w assemblerze, żeby zlikwidować jitter przerwania AVR. Reszta też by się przydała w assemblerze, bo liczba taktów na linię jaka jest do dyspozycji nie jest imponująca. A co do łączenia - masz H i V-Sync, które są liniami cyfrowymi i po prostu je łączysz z MCU - mały rezystor...
(at)t0maszu - zapomnij o takim sterowaniu serw. Kod na stronie nadaje się tylko do demonstracji, tego typu realizacja powoduje 100% zajęcie każdego MCU. Ponieważ nie może on robić nic innego, w realnym programowaniu ten kod się nie sprawdza. Jeśli cokolwiek wstawisz do pętli, albo odblokujesz przerwania to serwa zaczną radośnie tańczyć. Więc po prostu...
BlueDraco - jednak na STM raczej kolega nie uświadczy Arduino, a sądząc po temacie raczej o to by chodziło. Soft PWM jest ok, tylko trzeba zapewnić mały jitter przerwania, żeby serwa nie szalały. BTW, jeśli jednak Arduino nie jest krytyczne to z AVR wiele ATMeg ma więcej kanałów PWM, w tym np. XMEGA serii A mają nawet 32 kanały PWM.
Nie będzie się gryzło, dopóki obsługa przerwań będzie trwała krótko. Oczywiście inne przerwanie i czas jego obsługi wprowadzi pewien jitter do obsługi dugiego przerwania, w efekcie pomiary ADC nie będą co ściśle określony czas w każdym przypadku, a jedynie statystycznie. Jeśli to przeszkadza można zastosować nieblokującą obsługę przerwań (ISR_NOBLOCK),...
Z przerwaniem od wejścia jest ten kłopot, że nie zrobisz pętli odmierzajacej czas w OB przerwania. Rozpoczniesz pomiar czasu, ale załączyć wyjście musisz albo w cyklu (= jitter), albo w przerwaniu timera 1ms. Czy to przerwanie pływa i jak bardzo? Trzeba by zmierzyć na docelowym CPU z konkretnym firmware i programem, z HMI itd. Siemens tego nie deklaruje...
Niemniej, można nawet na tej płytce użyć przerwania timera, do zmiany stanu pinu. Obsługa przerwania w tym przypadku to jedna instrukcja cbi/sbi + RETI Wstawki ASM nie uniknie się, nawet w C, przynajmniej AVR-GCC. Jitter wprowadzony przez przerwania na poziomie 1 us będzie bez znaczenia dla 1-wire. Zgadza się. W standardowej prędkości to i 5us nie...
No to policzmy - 600 us * 16 to ok. 10 ms, czyli 100 Hz - mało. Poza tym zatrzaskiwać musisz na samym początku procedury obsługi przerwania (to, co wysłałeś po poprzednim przerwaniu), bo inaczej PWM będzie pływał (drżenie - jitter), co będzie szczególnie dobrze widoczne przy małych wypełnieniach - skoki jasności, migotanie.
Czyli jednak 50, a nie 430 kHz. Do pędzenia DAC należy użyć DMA (obsługa programowa daje większy jitter), a jeśli z jakiegoś powodu bardzo chcesz to zrobić w przerwaniu timera, sugerowałbym włączenie PLL i taktowanie procesora ze znacznie większą częstotliwością niż domyślne 8 MHz.
Gdzie tu się zmieniają parametry? Częstotliwość jest stała, amplituda jest stała. Spróbuj zrozumieć jak działa ta funkcja generująca po 512 próbek dla 16 (NoteMax = 16) różnych kanałów dźwiękowych na podstawie sampli w czasie rzeczywistym na STM32F746. Próbkowanie z częstotliwością 48 kHz. [syntax=c]void dds_generator(uint16_t len) { for(uint8_t NoteIndex=0;...
Problem bierze się stąd, że rzadko kiedy przerwanie jest wywoływane co jakiś "okrągły" czas, np. co 100us. Zwykle użyty kwarc i preskaler powodują, że odmierzane odcinki czasu pomiędzy przerwaniami nie są "okrągłe", a co za tym idzie łatwe do liczenia. Dodatkowa zmienna f ułatwia nam zliczanie milisekund. Akurat w podanym przykładzie przerwanie ma być...
Czy może jest jakieś oczywiste rozwiązanie, które zrobi to czego oczekuję na atmedze328, tylko go nie dostrzegam? Tak, zwiekszyc długość timera software'owym licznikiem, przy takich częstotliwościach możesz zmieniać stany na portach programowo, w przerwaniu timera, jeśli nie przeszkadza ci związany z tym jitter. Prawdopodobnie że dało by się użyć hardware'owego...
Jakie są założenia co do rozdzielczości oraz stabilności generowanej częstotliwości (jitter) ? Generacje częstotliwości kHz na AVR najlepiej zrobić przez zastosowanie DDS. jeden timer w ctc generuje przerwanie w równych odstępach, resztę załatwia się w przerwaniu (trochę tylko kiepsko bo bascom zmarnotrawi dużo czasu- najlepiej tę część napisać w asm).
Ok, skoro czytasz moją książkę, to mam nadzieję, że znajdziesz tam właściwie gotowe rozwiązania twojego problemu. Co do wyzwalania konwersji - oczywiście timerem. DAC ma możliwość wyzwolenia konwersji timerem, więc sekwencja wygląda tak - ładowanie danych do rejestru DAC, wyzwolenie konwersji, ładowanie danych itd. W ten sposób unikasz jitteru. To też...
Jeśli dobrze zrozumiałem (a może źle zrozumiałem), to chodzi ci o tzw. jitter. Jeśli tak, to nowsze modele NXP, prawdopodobnie LPC12xx (o ile mnie pamięć nie myli) mają mechanizm sprzętowy umożliwiający eliminację drżenia dla przerwania o najwyższym priorytecie. Na zwykłym procesorze bez tego mechanizmu nic nie poradzisz, chyba, że pętla główna będzie...
Rozumiem ze będzie tu potrzebne wykorzystanie millis. Do PWM? Można ale to kiepska metoda. Mała rozdzielczość, kiepska precyzja (duży jitter). W przypadku zawieszenia przerwań (np obsługa 1-Wire przez GPIO), PWM zostaje zatrzymany. Taki PWM to do regulacji kontrastu LCD się nadaje. Praktycznie każdy mikrokontroler ma sprzętowy PWM a AVR każdy (może...
1. Wygląda to na błędne zaprogramowanie sposobu zgłaszania przerwania, ale kod wygląda na pioprawny. Taki efekt występowałby przy nie skasowaniu znacznika przerwania, ale wg datasheet znacznik jest kasowany przy wywołaniu procedury. 2. Nie pomyślałeś, żeby użyć do tego celu zwykłego przerzutnika D w obudowie SOT23-5? Działałby bez drżenia (jitter) i...
Ale na dwóch podprogramach to raczej nie zarżniemy CompactLogixa Zależy co one będą robić :) Odpowiednio szybki komputer... Periodic Task = przerwanie zegara; Event Task = przerwanie np. linii wejścia. W sumie to bez różnicy. Przykłady 1-3 można podsumować jednym zdaniem: na przerwaniu/zadaniu cyklicznym wykonujemy coś wydzielonego, co powinno mieć...
Żeby mieć małe wahania czasu początku/końca impulsu, wskazane jest użycie mikrokontrolera o szybkim zegarze - jakieś tanie STM32 mają zegar do 72MHz, a można użyć np. Raspberry Pi z zegarem 1GHz i na nim zrobić wyliczanie, kiedy zaczynać i kończyć impulsy. Jesli mikrokontroler to tylko z użyciem timerów/przerwań. Generowanie sygnału poprzez czekanie...
Kwarce nie są aż tak niestabilne. Powinny mieć 50ppm. Przy okresie 8000 daje to błąd 0,4. Ale to jest błąd stały. A Ty masz zmienny. Taki Jitter. To wynika prędzej z jakości sygnału i dokładności próbkowania. 1 cykl można stracić na próbkowanie (jest filtr cyfrowy na wejściach INTx). I z 1 na zwłokę wywołania przerwania (Zależnie od instrukcji wykonywanej...
Przy sprzętowym PWM warto pędzić zmiany współczynnika właśnie przerwaniem od timera PWM, i jest ku temu kilka dobrych powodów (np. rówoczesność zmian wypełnienia przy kilku kanałach). Nie widzę sensu nastawiania drugiego timera asynchronicznego względem timera PWM do generowania przerwania, bo płyną z tego same szkody, a zysku nie widać żadnego. Nie...
TB6600 sterujesz sygnałem kierunek/krok, więc nie potrzeba tylu wyjść i łatwiej sterować, układ będzie zasilony dwoma napięciami, do puki nie zrobisz przerwy w obwodzie masy, dymu nie będzie Zajrzałem do opisu AVT-896, a tam fragmenty badziewnie napisanego programu z opóźnieniami w kodzie, ustalającymi zależności czasowe - jak chcesz zrobić to lepiej...
Witam, Mam pytanie odnośnie obsługi przerwań w mikroprocesorze Atmega16. Procesor ten ma możliwość pracy z trzema przerwaniami zewnętrznymi. Powiedzmy, że aktywuję wszystkie trzy przerwania. Występować one będą średnio co 3,33ms i będą spowodowane detekcją zera na trzech kolejnych fazach zasilania trójfazowego. Czas trwania przerwania będzie się wahać...
I wymagane jest zagnieżdżanie. A przed tym zawsze trzy razy sprawdzam, czy nie da się inaczej. Albert Niestety sprawdziłem i nie da rady tego prosto zrobić bez tych 6-ciu przerwań. Na okrągło musi chodzić zapis na SD a do tego około 10 razy na sekundę być generowana nowa ramka do wyświetlenia na LCD. Obie rzeczy w programie głównym nie pójdą, bo nie...
Jeśli dobrze rozumiem przerwanie SIG_TIMER0_COMPA (wywołuje się przy każdym zboczu sygnału wyjściowego?) to dołożenie w nim ręcznej modyfikacji pinu nie zmieni praktycznie szybkości działania. Możesz też użyc po prostu podstawowego Timera,i zrealizować to programowo ustawiając ten pin w przerwaniach (do dyspozycji dwa przerwania OCIE0 (A i B) oraz TOIE0)...
Posty powyżej wielokrotnie sugerowały Twórcy Tematu, że: - procesor jest za wolny do tego zadania - przy zbieraniu danych trzeba zachować stałą częstotliwość próbkowania, co wyklucza możliwość użycia funkcji delay() i wymaga zatrudnienia sprzętu (np. SPI) lub przerwania timera zgłaszanego ze stałą częstotliwością (ale wtedy 1. wracamy do tego, że procesor...
Witam, Atmega 8, Timer1. Używam instrukcji LOAD która skraca czas między przepełnieniami timera, a nie mogę uzyskać odpowiednio krótkiego czasu gdyż w pewnym momencie skracanie timera juz ic nie daje. Oto kod: [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 'Atmega 8 fusy E1 D9 => 1MHz internal RC $hwstack = 64 $swstack = 32 $framesize = 32...
U nas odczyt jest w programie głównym. A odtwarzanie w przerwaniu. Co dwa przerwania dokładnie. U nas nie kontrolujemy częstotliwości PWMa. Ustawiliśmy na stałe i tyle. Ale to narzuca ograniczenie na pliki bo wszystkie muszą mieć próbkowanie 16kHz bo PWM pocina na 32kHz. Powinieneś zrobić jakieś buforowanie. SD_READ to jest jakaś standardowa funkcja...
Jeśli najpierw podzielisz częstotliwość procesora (bity konfiguracji, w slangu spod budki z piwem zwane "fusami"), potem użyjesz największego preskalera timera i jeszcze 16-bitowego timera, to zapewne osiągniesz odpowiednio niską częstotliwość. Z drugiej strony przy tak niskich częstotliwościach drżenie (jitter) zazwyczaj nie jest krytyczne, więc chyba...
Dane przesyłane do tej kolejki są z funkcji TickHook, a wygląda to tak: [syntax=c]char *pcMessage = "Status: PASS"; xHigherPriorityTaskWoken = pdFALSE; xQueueSendFromISR( xLCDQueue, &pcMessage, &xHigherPriorityTaskWoken );[/syntax] Funkcja TickHook jest wykonywana z każdego przerwania systemowego, natomiast dane przesyłane kolejka są raz na określona...
Witam! Let's do some math, czyli "dlaczego się nie da" ;] Sygnał stereo o częstotliwości próbkowania 48kHz wymaga wysłania (2*48k)=96000 ramek danych w ciągu sekundy. Pojedyncza ramka danych to 32 bity (w tym 20 bitów danych, reszta to w uogólnieniu "narzut interfejsowy"). 96k ramek na sekundę, z których każda jest 4bajtowa, daje niebagatelną przepustowość...
Witam, Oczywiście steruję diodami LED, układ już dawno zmontowany, ale nim wdrożę go w życie, naszło mi na myśl wprowadzić parę udogodnień, to 32kanałowy sterownik RGB po interfejsie modbus. Koncept jest następujący: Co 255 cykli wywoływane jest przerwanie (przepełnienie timera 0) które wymusza zwiększenie programowego licznika 'sofcount', kiedy zrówna...
No patrz, to NXP kłamie... UM10441.pdf, r. 4.5.28. Nie kłamie, mówi dokładnie to co ja. Że rdzeń powinien się wyrobić w 15 cyklach, ale nikt tego nie może zagwarantować. Ani tego że jak dodasz nawet dużo do rzeczonego rejestru to jitter zlikwidujesz. Co do ceny nigdzie nie neguję, że 32 bitowce są szybsze. Ale nieprawdą jest, że na ogół są tańsze niż...
Akurat w PCM nie jest po kolei. Po kolei jest w PPM. PCM ma PWM na 70HZ, poziosygnalow 0-3,3V, a zbocza sygnalow sa ustawione parami, razem startuje kanal 1i2, potem 3i4 itd co tylko komplikuje dekodowanie na uC (jitter, albowiem niektore kanaly w pewnych przypadkach maja opadajace zbocze w tym samym czasie a ISR jaki napiszesz trwa zbyt dlugo by uzyskac...
Witam. Zrobiłem układzik do wyświetlania napisów na TV (przez RGB) za pomocą mikrokontrolera AVR. Te napisy są wyświetlane na obrazie pochodzącym z innego urządzenia. Kłopot pojawia się w tym, że za nic w świecie nie udaje mi się "wystabilizować" napisu - drga na ekranie, w prawdzie nieznacznie, ale denerwująco. Z góry zaznaczam, że nie mogę użyc żadnego...
Po ustawieniu TXC już jest za późno na załadowanie bajtu, jeśli transmisja ma iść ciągle! Ale w czym problem? Pomiędzy parami bajtów zostaną dodane krótkie odstępy, o ściśle określonym czasie trwania i wartości 1. I to nawet lepiej bo można je wykorzystać jako początek nadawania kolejnego bitu, w efekcie można upchnąć w dwubajtową ramkę (z wyjątkiem...
(at)thanoskalos - Obecnie patrzę na IR, mając na celu uruchomienie szybkiego przerwania IR (20 kHz) tylko wtedy, gdy zajdzie taka potrzeba. Twój problem nie jest tym, który widziałem wcześniej. Możemy jednak chcieć zmienić bibliotekę. Najwyraźniej wersja ESP8266 ma więcej protokołów. To, co chciałbym, to biblioteka RX, która działa na przerwaniu krawędziowym,...
Cześć. Wszystkiego Dobrego w Nowym Roku. Przychodzę z problemem. Odpaliłem sobie streaming na Chromie i notorycznie mam takie błędy jak niżej: [84679.370765] ThreadPoolForeg[159163 ... Bezpośrednia odpowiedź - Bardziej prawdopodobny winowajca: konfiguracja jądra/ścieżka grafiki (i915 + VA‑API/kompozytor) niż sama pamięć RAM. Zmiana RT...
Ok. Zrób tak. Jeden timer przepełnia się co 20ms - generuje odstępy pomiędzy impulsami sterującymi serwem. Po każdym przepełnieniu odpalasz drugi timer który przepełnia się co czas równy rozdzielczości sterowania serwem i wysterowujesz wszystkie linie sterujące serwami na 1. W timerzeod rozdzielczości inkrementujesz jakąś zmienną pomocniczą, np. licznik....
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...
Nalegałbym na FIQ. Trzeba sobie uświadomić jak działają przerwania. Przychodzi przerwanie jak ARM jest w normalnym trybie, dostaje sygnał na linii IRQ, przerywa wykonanie programu i skacze pod wektor przerwań, tam ma skok do obsługi przerwań. Fajnie, tylko pierwszą rzeczą jaką robi ARM w chwili otrzymania przerwania to je wyłącza! Tak, że wykonując...
IRQ tester https://obrazki.elektroda.pl/3243423400_... IRQ Tester to proste narzędzie, głównie do testowania czasu odpowiedzi na impulsy, lub czasów międzyzboczowych dostarczonego sygnału. Program został napsiany na ukontroler AVR Atmega168, a jego głównym zadaniem jest funkcja multiwibratora monostabilnego, którego działanie polega...
http://obrazki.elektroda.pl/6032166600_1... Prezentowane urządzenie służy do wytwarzania różnokolorowego światła z 5 diod led, z możliwością regulacji jego natężenia, oraz posiada funkcję stroboskopu z możliwością dokładnego dobrania częstotliwości oraz czasu impulsu. Dodatkowo ustawienia są zapamiętywane w pamięci eeprom dinozaura...
Niezbyt to przemyślane. To nie może brzmieć dobrze. Odtwarzanie walnij do jakiegoś przerwania a odczyt niech sobie siedzi w programie głównym. Wtedy odczyty nie będą wprowadzamy ogromnego Jittera do sygnału. Dajesz bufor powiedzmy 512B. Robisz odczyt bufora i włączasz przerwanie. Przerwanie co raz odczytuje jedną próbkę i zmniejsza wskaźnik pozycji...
Programowe generowanie sygnału video w jakimkolwiek standardzie jest zadaniem krytycznym czasowo, dlatego bez asemblera niewiele zwojujesz. Nawet w asemblerze trudno uzyskać więcej niż 100 punktów w linii. Zresztą zerknij na: Rejestrator przebiegów cyfrowych - przystawka do TV z EP Rejestrator przebiegów analogowych - przystawka do TV z EP Nie jest...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
jitter przerwać generator jitter jitter zmniejsz
wzmacniacz magistralny wielkości akumulatora zawor cisnienia doladowania
falownik polska norma zwiazek radziecki
IMU w dronie FIMI A3 - kalibracja i problemy Oporność głowicy nagrywającej – pomiar RDC i impedancji w magnetofonach kasetowych i szpulowych