Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[dsPIC30 / dsPIC33] - Szybka analiza spektrum, odtwarzanie sampli

elektrolizak 29 Cze 2013 15:13 1107 4
  • #1 29 Cze 2013 15:13
    elektrolizak
    Poziom 9  

    Witam szanownych użytkowników!

    Piszę z pozycji oszołomionego początkującego z prośbą w wyjaśnienie kilku rzeczy.

    W początkowej fazie projektu zakładam zebranie 100 - 500 próbek sygnału przez ADC i policzenie FFT. Wszystko ma się odbyć w czasie krótszym niż kilka ms - projekt będzie rozwijany o obróbkę dźwięku, dlatego szukam "potwora".

    Złożoność obliczeniowa FFT to $$Nlog_{2}(N)$$, ale nie znalazłem jeszcze informacji w datesheecie (dsPIC30F3014) co do liczby cykli procesora na konkretną FFT - nie wiem jaka moc będzie mi potrzebna. I tu mam pierwsze pytanie - jak się sprawdzi oferowane 30 lub 40 MIPS?

    Druga rzecz to programator i soft. Czy WinPIC to to samo co WinPIC800?
    pierwszy nie ma wylistowanych dsPIC http://www.qsl.net/dl4yhf/winpicpr.html
    drugi już tak http://www.winpic800.com//index.php?option=com_content&task=blogcategory&id=23&Itemid=89
    Chcę programować ICSP, czy programator, tego typu, który już sobie zlutowałem na mniejsze rzeczy, da radę i będzie współpracował z WinPIC/(800) bez kłopotu?
    https://www.elektroda.pl/rtvforum/topic1538053.html
    (już widzę inne napięcia dla dsPIC33)

    Pozostaje jeszcze sprawa pamięci programu. Czy 20kB, jak w dsPICf30 wystarczy, czy brać raczej 256kB dsPICf33? Jak to jest w praktyce programowania? Mam doświadczenie z C++, jest możliwość pisania kodu bezpośrednio z tego języka pod jakiś dostępny kompilator (HI-TECH/MPLAB)?

    Ludzie już doświadczeni przez PICe mile widziani :D .

    0 4
  • #2 29 Cze 2013 16:17
    94075
    Użytkownik usunął konto  
  • Pomocny post
    #3 29 Cze 2013 19:35
    Marek_Skalski
    Moderator Projektowanie

    Nie bardzo rozumiem dlaczego wybrałeś dość starą jednostkę, kiedy dostępne są lepsze uC od Microchip'a, np. dsPIC33FJ... albo dsPIC33EP..., które oferują 70MIPSów. Żadne z nich 'potwory', po prostu takie sobie mikrokontrolery. Pytanie też czy to musi być produkt MCP? Znasz architekturę 16-bitowych PICów? To jest coś zupełnie innego niż 8-bitowce. Inną opcją jest Cortex-M4 z DSP, FPU, szybszym zegarem, ale to znowu inna architektura.
    Co do FFT na 128, 256 czy 512 próbkach to nie widzę żadnego problemu. To wszystko idzie automatycznie z ADC do RAM przez DMA na podwójny bufor, a z tego jest obrabiane przez rdzeń z opóźnieniem wynikającym z czasu zbierania próbek i kilkunastu us na obliczenia (jak znajdę źródło to dodam). Microchip oferuje gotowe biblioteki, w których nie trzeba dłubać. Są też gotowe biblioteki do usuwania szumów (buble, machine, white), echa, poprawy dynamiki dźwięku i inne. Asm nie jest potrzebny i wszystko piszesz w C. Możesz wybrać starsze IDE MPLab (ostatnia oficjalna wersja chyba 8.9x), albo MPLAB-X IDE, które jest aktualnie rozwijane. Co do programatora, to wystarczy PicKit3. Ale jeżeli masz zamiar dłużej pracować z PIC'ami, to może lepiej kupić ICD3, czyli programator+debuger (z ograniczeniami). Ilość potrzebnej pamięci zależy od złożoności algorytów. Jeżeli chcesz tylko zebrać próbki, wykonać FFT na próbkach i ew. gdzieś wysłać wyniki, albo zmodyfikować pasma, wykonać odwrotną FFT i wystawić próbki na wyjścia audio, to 20kB wystarczy. Szybciej będziesz potrzebował więcej SRAM na pokładzie niż Flash. Ale jeżeli chcesz zrobić coś naprawdę interesującego (np. SRS + dźwięk na wiele strumieni), to najpierw zapoznaj się ze środowiskiem, architekturą (dużo czytania manuali do poszczególnych modułów), wykonaj jakiś prosty układ i określ kierunek rozwoju konstrukcji. Być może dopiero 3. albo 4. wersja urządzenia będzie zgodna z Twoimi oczekiwaniami.
    Powodzenia!

    Edit:
    Część informacji możesz znaleźć w przykładzie: CE018 FFT_DSPlib_101007.
    Możesz to skompilować i puścić w symulatorze. Będziesz wiedział czego się spodziewać i jak to działa.

    0
  • #4 29 Cze 2013 20:58
    elektrolizak
    Poziom 9  

    Dzięki za odpowiedzi!

    Właściwie zamówiłem dsPIC33FJ256GP710A i dsPIC30F3014 jako sample Microchipa z obawy że PIC33 nie będzie działał z posiadanym przeze mnie programatorem.

    Niewiele umiem, dlatego chciałem się zorientować czy obieram dobrą ścieżkę, bo na wykonanie zadania mam niewiele ponad pół roku. Sprawdzę więc czy uda mi się zaprogramować te procesory sprzętem, który mam, a w razie niepowodzenia spróbuję PicKit3

    Zabieram się do czytania :)

    0