Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 4 cze 2025, o 07:19


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 18 kwi 2014, o 00:37 
    Offline
    Nowy

    Dołączył(a): 29 sty 2012
    Posty: 18
    Pomógł: 0

    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:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    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:

    Składnia: [ Pobierz ] [ Ukryj ]
    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:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2014, o 18:13 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 10 mar 2013
    Posty: 739
    Lokalizacja: Poznań
    Pomógł: 84

    Witam
    Zauważyłem że do konwersji używasz tablic
    ASCII[3] czyli o trzech elementach
    a po konwersji (o ile się nie mylę) funkcja "itoa" jeśli liczba będzie większa niż 99
    odda łańcuch o długości czterech znaków
    trzy skonwertowana liczba plus znak końca stringa



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 kwi 2014, o 22:46 
    Offline
    Nowy

    Dołączył(a): 29 sty 2012
    Posty: 18
    Pomógł: 0

    Powiem Ci że mimo to, kod działa. Specjalnie sprawdzałem co było odbierane przez moduł wysyłając to na UART. Tutaj też z tym kombinowałem aż się udało. Otrzymuje wartości z zakresu 0-255. I sterowanie diodą LED również działa. Zauważyłem jeszcze, a nie było z tym wcześniej problemu, że jak ustawie przy wysyłaniu pauze z jakimś czasem to komunikacja wygląda super. A jak ją zakomentuje. To po włączeniu zasilania komunikacja trwa przez 2-3 sekundy, następnie się urywa i wraca po jakiś 30-40 sekundach. Wcześniej tego nie było. Być może rejestry mam coś nie tak ustawione.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO