Odpowiedz 
 
Ocena wątku:
  • 3 Głosów - 5 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Piligrim SMD z DW Radio
SQ8MVY Offline
Paweł
****

Liczba postów: 321
Dołączył: 30-07-2011
Post: #201
RE: Piligrim SMD z DW Radio
Witam,

Kolego M72M72, aby uniknąć szukania problemów w Twoim egzemplarzu Piligrima doprowadź swój kod do prawidłowego działania.
Do tego bardzo przyda Ci się częstościomierz. Podpinasz go pod wyjście generatora i widzisz jak na dłoni, czy si5351 generuje prawidłową częstotliwość. Wnioskując po Twoich pytaniach nie masz najmniejszego pojęcia, czy częstotliwość na wyjściu si5351 odpowiada wyświetlanej wartości *4.

Jeżeli nie posiadasz jeszcze częstościomierza, to go zakup lub zrób w pierwszej kolejności, a następnie składaj syntezę i pisz dla niej program. Można również użyć innego prawidłowo działającego (t)rx-a do sprawdzenia generowanej częstotliwości.

Co do programu - przeglądnij w pierwszej kolejności bibliotekę obsługi si5351 której używasz lub chociaż plik nagłówkowy tej biblioteki. Będziesz wiedział jakich argumentów dana funkcja wymaga.

Piszesz, że zamieniłeś swoją zmienną f na float, kiedy funkcja ustawiania częstotliwości si5351 wymaga zmiennej uint64_t . Jesteś pewien, że po niejawnym rzutowaniu ( a takie ma tu miejsce ) z float na uint64_t funkcja dostała prawidłową wartość ? Swoją drogą poszukaj może jeszcze innej biblioteki do obsługi si5351, bo używanie uint64_t do przekazania częstotliwości nie świadczy zbyt dobrze o niej, tym bardziej, że używasz atmegi 328 - jeżeli dobrze zauważyłem na zdjęciach ( arduino nano ).

73 Paweł
(Ten post był ostatnio modyfikowany: 31-08-2017 13:29 przez SQ8MVY.)
31-08-2017 13:29
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
M72M72 Offline
Nowicjusz
*

Liczba postów: 43
Dołączył: 12-12-2016
Post: #202
RE: Piligrim SMD z DW Radio
Niby wszystko działa ale "prawie". Generalnie częstotliwość sygnału jest F*4 ale nie na wszystkich pasmach.
1
2
3
4
5
6
7
8
9
10
Zapewne przyczyną jest zły typ zmiennej odpowiedzialnej za częstotliwość. Ma być uint64_t a ja mam float. Muszę trochę pogrzebać w kodzie bo po zmianie na uint64_t wysypują mi się inne funkcje od wyświetlacza o których teraz nie ma co pisać.
Z tego co widzę to częstotliwość ma być mnożona przez 100
(Ten post był ostatnio modyfikowany: 31-08-2017 13:37 przez M72M72.)
31-08-2017 13:36
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ8MVY Offline
Paweł
****

Liczba postów: 321
Dołączył: 30-07-2011
Post: #203
RE: Piligrim SMD z DW Radio
Wtam,

Cytat:Generalnie częstotliwość sygnału jest F*4 ale nie na wszystkich pasmach.

Na żadnym zamieszczonym obrazku częstościomierz nie pokazuje prawidłowej wartości.

Wyrzuć tego float-a koniecznie, zrób rzutowanie jawne, jeżeli musisz tej biblioteki używać oraz podziel się wynikami

Kod:
long f;    // jeżeli zmienna f nie będzie miała wartości ujemnych
             // to zamiast long użyj unsigned long ( uint32_t ),
            // szkoda marnować połowę zakresu zmiennej
...
...
si5351.set_freq( (uint64_t)f*400, SI5351_CLK2 );

Ale to nie temat o programowaniu.....

73 Paweł
(Ten post był ostatnio modyfikowany: 31-08-2017 16:55 przez SQ8MVY.)
31-08-2017 16:55
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
M72M72 Offline
Nowicjusz
*

Liczba postów: 43
Dołączył: 12-12-2016
Post: #204
RE: Piligrim SMD z DW Radio
Jak to na żadnej nie pokazuje prawidłowo.
Źle pokazuje na 10, 14 i 28 MHz, reszta jest dobrze przecież.
To że jest + - 100Hz odchyłki to jest brak kalibracji SI.
ps. rzutowanie jawne nic nie pomaga, muszę wszystko przeglądnąć jeszcze raz.
Ale jak ktoś zauważył to nie wątek o programowaniu więc sprawę generatora zamykamy.
(Ten post był ostatnio modyfikowany: 31-08-2017 19:01 przez M72M72.)
31-08-2017 19:01
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości