Witam
Chciałbym prosić o pomoc w ogarnięciu komunikacji dwóch procesorów Atmega8 przez moduły RFM73. Wygląda to tak: ADC -> RFM73 -> RFM73 -> PWM.
Przesyłać mam próbkowany dźwięk drogą radiową i odtworzenie, puszczając go przez PWM. Teoretycznie wszystko działa. Ale nie mogę poradzić sobie z optymalizacją i dostrojenie tych modułów by działały jak najlepiej. Wiem że temat był poruszany w zielonej książce.
Problem polega na tym że jak sobie zrobię na jednym procesorze próbkowanie dźwięku i puszczę go od razu na PWM. To dźwięk wychodzi całkiem super mimo 8-bitowej rozdzielczości
A jak chcę to przesłać przez moduły to występuje metaliczny dźwięk, no słychać że jest gorsza jakość. Najpierw przedstawię konfiguracje rejestrów modułów:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Bawiłem się nimi godzinami, googlowałem w poszukiwaniu działającej konfiguracji aż wreszcie zadziałało, ale czy to dobra konfiguracja? Chciałbym z tego wycisnąć maksimum.
W części nadawczej opierałem się na rozdziale o ADC pana Mirka. Inicjacja modułu oraz kod odpowiedzialny za wysyłanie wygląda tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Miałem problemy z wysyłaniem wartości liczbowej, dlatego wysyłanie przez moduł rozwiązałem w ten sposób że konwertuje zmienną typu int na łańcuch znaków.
Strona odbiorcza to:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Tutaj konwersja odwrotna. Do rejestru OCR1A przypisuje odebraną wartość liczbową i wysyłam na PWM.
Taktowanie procesorów mam aktualnie ustawione na 20MHz, ale próbowałem też z 24MHz by osiągnąć jak najlepszą jakość dźwięku.
Obsługa modułów jest bez używania przerwań.
Czy da radę coś więcej z tego wycisnąć? Będę wdzięczny w naprowadzeniu co można było by zmienić.
Pozdrawiam