miniscope v2a
Miniscope v2a to alternatywne oprogramowanie (firmware oraz plugin, biblioteka dll dla aplikacji PC) dla jednokanałowego oscyloskopu z mikrokontrolerem AT91SAM7S64 (miniscope v2). Projekty łączy część sprzętowa oraz program PC będący interfejsem użytkownika.
Miniscope v2a odróżnia od wersji podstawowej użycie DMA przy obsłudze przetwornika analogowo-cyfrowego oraz przerzucenie odpowiedzialności za część funkcjonalności z przystawki na komputer PC oraz jego oprogramowanie.
Miniscope v2 | Miniscope v2a |
---|---|
Odczyt próbek z przetwornika analogowo-cyfrowego w blokującej pętli. | Odczyt próbek z przetwornika analogowo-cyfrowego przez DMA (PDC). |
Pojedyńczy "duży" bufor danych (rozmiar ustalawiany przez program PC, do 14 kB), wypełniany zawsze w całości. | 3 bufory danych po 4 kB zorganizowane w FIFO używane rotacyjnie do składowania próbek oraz jako bufory nadawcze do PC. |
Próbkowanie oraz przesyłanie odbywają się naprzemiennie (jeżeli urządzenie przesyła próbki, to w tym samym czasie nie próbkuje). | Możliwe równoczesne próbkowanie i przesyłanie danych. |
Prędkość próbkowania ustawiana przez program PC. | Stała prędkość próbkowania - najwyższa dostępna. Jeżeli użytkownik wybierze niższą częstotliwość próbkowania w ustawieniach, decymacja danych wykonywana jest przez program PC. |
Moment wyzwolenia wyznaczany jest przez urządzenie (także przy wyzwoleniu ręcznym kiedy to urządzenie musi zinterpretować komendę). Po wyzwoleniu rozpoczyna się próbkowanie. | Urządzenie transmituje próbki nieprzerwanie. "Wyzwalanie" jest symulowane przez program PC. |
Nieregulowany filtr antyaliasingowy - skuteczny tylko dla najwyższej częśtotliwości próbkowania. Użytkownik musi zadbać, aby nastawa częstotliwości próbkowania odpowiadała charakterowi sygnału. | Antyaliasingowy stały filtr RC wspomagany jest przez cyfrowy filtr decymatora. |
Przeniesienie części funkcjonalności z przystawki do programu uruchamianego na komputerze PC jest dużym ułatwieniem przy rozwijaniu programu - debugowanie programu PC jest wygodne i nie wymaga posiadania dodatkowych narzędzi (JTAG).
Zasoby komputera PC pozwalają na realizację funkcji nieosiągalnych przy użyciu mikrokontrolera, jak np. złożone tryby wyzwalania uwzględniające odległą historię zygnału. Rozmiar ciągłego bloku próbek nie jest także ograniczany przez pamięć dostępną w mikrokontrolerze.
Wadą rozwiązania są wymogi dotyczące szybkości działania komputera, jego responsywności (stopnia obciążenia) i przepustowości łącza USB. Schemat działania wykorzystywany przez wersję podstawową firmware i biblioteki (miniscope v2) jest mało wrażliwy na obciążenie komputera czy wahania przepustowości łącza (transfer USB BULK nie gwarantuje pasma ani opóźnień). Miniscope v2a opiera się na założeniu, że komputer będzie w stanie obsłużyć ciągły strumień danych z urządzenia o natężęniu 122 ramek po 4 kB próbek na sekundę. Obsługa takiego strumienia nie stanowi sama w sobie wyzwania dla współczesnych komputerów (zużycie ok. 10% czasu procesora przy PentiumM @ 600MHz), istotne jest jednak, by nie było przestojów w odbiorze danych od urządzenia. Jeżeli komputer zostanie silnie obciążony przez inny program, może dojść do gubienia danych a tym samym przekłamań ("poszatkowany" przebieg gdy gubiona jest któraś z ramek danych). Z tego względu opisane rozwiązanie nie jest w stanie w pełni zastąpić wersji podstawowej (mimo przewagi pod względem możliwości rozwoju funkcjonalności) i zostało wydzielone jako odrębny projekt.
2010.03.11 Pierwsza wersja firmware oraz biblioteki (pluginu) dla programu miniscope v3.
Biblioteka nie była na razie testowana poza moim komputerem a kilka zawartych w niej
rozwiązań jest w najlepszym razie naiwnych, tym niemniej oferuje funkcjonalność nie gorszą niż miniscope v2.
Wymagającą przemyślenia (i być może zmian także w programie miniscope v3)
wadą może być inny niż w miniscope v2 sposób przekazywania próbek do programu
głównego. Próbki przekazywane są natychmiast po odebraniu, przebieg odświeżany
jest fragmentami, co może wyglądać gorzej niż wyświetlanie pełnego bufora od razu.
firmware: armscope_dma_20100224.7z
biblioteka dll: armscope_dma_dll_20100311.7z
2010.03.20 Wersja 0.1.2 biblioteki: armscope_dma_dll_0_1_2.7z:
- naprawiony nie działający tryb wyzwalania ciągłego,
- wyzwalanie zboczem narastającym/opadającym bierze pod uwagę 6 kolejnych próbek (poprzednio: 4 próbki).
2010.04.18 Wersja 0.1.3 biblioteki: armscope_dma_dll_0_1_3.7z:
- poprawiona rozbieżność (blisko 2%) między rzeczywistą a zgłaszaną przez bibliotekę częstotliwością próbkowania (błąd wynikający z przeoczenia niedokładności/kwantyzacji ustawienia timera taktującego próbkowanie),
- poprawiony błąd polegający na powielaniu bloku 4096 próbek w dwóch sąsiednich ramkach w trybie wyzwalania ciągłego (błąd powodował, że zarejestrowany w pliku MS3 przez aplikację przebieg sprawiał wrażenie braku ciągłości.
2011.02.06 Wersja 0.1.4 biblioteki: armscope_dma_dll_0_1_4.7z:
- poprawiony błąd polegający na przekazywaniu do funkcji TestTrigger() nieprawidłowej informacji o liczbie próbek w buforze skutkujący fałszywymi wyzwoleniami gdy włączone było wyzwalanie zboczem a współczynnik decymacji wynosił 2 lub więcej,
- poprawiony błąd typu Access Overrun wewnątrz funkcji TestTrigger().
2010.04.06 Firmware: armscope_dma_20110406.7z.
Zmiana w pliku armscope_board.h: wprowadzanie wyjść sterujących układem 4066 w stan trzeci i wyłaczanie pull-up.
Uwaga: biblioteka dll identyfikuje firmware na podstawie ciągu tekstowego zawierającego jego wersję (datę), jeżeli
nie może znaleźć urządzenia doprowadź do sytuacji by identyfikator zawarty w firmware i dll były identyczne.