-
Data: 2009-08-31 22:43:02
Temat: Re: Generator sinusoidy od 0 do 400Hz na uC
Od: Łukasz Góralczyk <l...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Mon, 31 Aug 2009 22:08:03 +0200, Robbo wrote:
[ciach]
> do 400Hz. Rozwa?am tu podej?cie polegaj?ce na stablicowaniu próbek
> po?ówki sinusoidy i "wysy?aniu" ich na zewnetrzny przetwornik cyfrowo
Wystarczy zrobić tablicę dla 1/4 i potem odpowiednio czytać wartości (w
przód/w tył), ale jeśli pamięci w zapasie to można wrzucić 1/2.
> -analogowy. Zrobi?bym funkcje, która by?aby przez "timer" wywo?ywana z
> odpowiedni? czestotliwo?ci? (np. 400*256Hz dla czestotliwo?ci 400Hz i
> przetwornika 8-bitowego).
Chyba bardziej poprawnie "400 Hz * 256" dla 256 próbek :) .
> Problem jednak z p?ynn? regulacj? czestotliwo?ci od 0 do 400Hz. Tzn.
> wystarczy?aby mi rozdzielczo?ae 1Hz. Niemniej i tak operuj?c prescalerem
> i OCR2 nie da sie uzyskaae wszystkich mo?liwych czestotliwo?ci. By?bym
> wdzieczny za rade, jak rozwi?zaae ten problem.
Hmm... ciężko. Przyszło mi do głowy żeby generować sinusoidę ze zmienną
liczbą próbek na okres. Tę liczbę próbek tak dobierać aby pojedynczy
kwant czasu był wielokrotnością możliwego kwantu uzyskiwanego z
przerwania od timera. Np. dla 400 Hz i 100 próbek (na okres) musisz
wysyłać próbkę co 25 us. Ustalasz sobie tick zegara na np. 2,5 us (4 MHz,
8 MHz i prescaler na 2, itd.) i co dziesiąty tik timera wysyłasz próbkę
(korzystając z trybu CTC). Dla 399 Hz dobieramy ilość próbek tak alby
przerwanie generowało się co wielokrotność 2,5 us, np. dla 125 wychodzi
że trzeba wystawiać próbkę co 20,05 us czyli co ok. 8 taktów zegara
timera. Dla 398 Hz i 84 próbek generujesz przerwanie co 29,91 us ~= 30 us
=> 12 taktów zegara i tak dalej.
Lepiej zastosować szybkie taktowanie procesora, powinno być więcej
rezerwy, można zejść niżej z tym kwantem (dla 10 MHz masz cykl 0,1 us,
czyli 20 us to 200 instrukcji /realnie ze 140/). Do policzenia optymalnej
liczby próbek dla danego kwantu i częstotliwości lepiej użyć stacjonarny
komputer i zrobić z tego tabelkę - obliczenia raczej proste ale sinus by
się musiał wstrzymać na trochę. Przy tej metodzie zawsze będziesz miał
jakąś odchyłkę od całkowitej liczby Hz (błąd łatwo policzyć). Przy
wyższych częstotliwościach CPU będzie i czas na inne rzeczy (np. miganie
diodą).
Inne rozwiązanie to generator sterowany napięciem + precyzyjny
przetwornik D/A - ładny sinus, łatwe sterowanie.
--
Łukasz.
Następne wpisy z tego wątku
- 01.09.09 08:59 Sylwester Łazar
- 01.09.09 18:02 wt
- 01.09.09 19:00 Papa Smerf
- 01.09.09 19:48 J.F.
- 01.09.09 20:23 Papa Smerf
- 01.09.09 20:58 RoMan Mandziejewicz
- 01.09.09 22:22 Sebastian Biały
- 02.09.09 12:39 marko1a
- 02.09.09 15:33 J.F.
- 02.09.09 16:25 Papa Smerf
- 03.09.09 11:51 marko1a
- 03.09.09 20:06 Dykus
- 04.09.09 12:34 marko1a
- 03.09.09 21:32 Papa Smerf
Najnowsze wątki z tej grupy
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
Najnowsze wątki
- 2025-07-25 Drastycznie rośnie import stali - w hucie w Dąbrowie Górniczej zostanie wygaszony wielki piec
- 2025-07-25 Drastycznie rośnie import stali - w hucie w Dąbrowie Górniczej zostanie wygaszony wielki piec
- 2025-07-25 I kolejny inżynier...
- 2025-07-25 Kobiety, bójcie się inżynierów...
- 2025-07-25 Warszawa => Konsultant Wiodący SAP PP <=
- 2025-07-25 Re: Brawo !!! Osy chronione w Niemczech. Za usunięcie gniazda grozi mandat
- 2025-07-25 cudzoziemiec bez biletu
- 2025-07-25 Gdynia => Sales Executive / KAM <=
- 2025-07-25 Inżynierzy z prawomocnym...
- 2025-07-25 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-25 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-25 Kraków => Senior Fullstack Engineer (Low-Code Platform) <=
- 2025-07-25 Skrobanie
- 2025-07-25 Lublin => Konsultant ds. Wdrożeń ERP (moduł FK) <=
- 2025-07-25 Warszawa => Senior Frontend Developer (React + React Native) <=