Koleżankom i Kolegom Radioamatorom, Krótkofalowcom,
Konstruktorom i Waszym Rodzinom – w tych trudnych czasach –
po dotkliwej awarii naszego forum
Pogodnego czasu po Bożym Narodzeniu,
Dosiego Nowego Roku
oraz Radosnych Trzech Króli

Życzy Zespół Home Made

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
(09-01-2019, 9:33)SP7EZG napisał(a): Pamiętać trzeba o nazwach plików .h.
Mając zainstalowaną wcześniej bibliotekę od NT7S, doinstalowując Si5351mcu Arduino również odwoływało się do tej pierwszej. Receptą jest usunięcie, bądź zmiana nazwy tej pierwszej.

Nie trzeba zmieniać żadnych nazw, bo nie ma potrzeby.
Jeżeli użyta jest jakaś biblioteka specyficzna w projekcie, w tym przypadku si5351mcu, to:

- bezwzględnie zależy podać informację, skąd pochodzi użyta biblioteka, aby inne osoby nie przeszukiwały internetu w poszukiwaniu jej,
- dołączyć ową bibliotekę do katalogu z plikiem *.ino ( tak aby były w jednym katalogu z plikiem *.ino)

Jeżeli taką bibliotekę umieścimy w jednym katalogu z plikiem *.ino, to inkludujemy ją przez
Kod:
#include "si5351mcu.h";
a nie przez
Kod:
#include <si5351mcu.h>;
Wtedy możemy mieć inną bibliotekę w globalnej ścieżce bibliotek Ardunio zainstalowaną przez menedżera bibliotek arduino, nawet o takiej samej nazwie plików *.h, *.cpp
ale kompilator skompiluje tylko tą konkretną wersję, która jest w katalogu projektu.

Jeżeli już robi się zmiany w projekcie i dodatkowo używa innych plików nagłówkowych, zrobionych dla własnych celów, to też należy te pliki umieścić razem z plikiem *.ino.
Ja nie doszukałem się pliku config.h, który inkludujesz Arturze w Twojej wersji źródeł, a którego nie ma w oryginalnych źródłach - specjalnie przeglądnąłem cały wątek od pierwszej strony w poszukiwaniu tego brakującego pliku.

Jeszcze małe spostrzezenie. W GCC dla procesorków AVR w ostatnich wersjach zmienione zostało podejście do specyfikatora PROGMEM. Teraz należy dodawać jeszcze specyfikator const. W przeciwnym wypadku dostaniemy błąd lub warning przy kompilacji.

Np. w pliku DefaultFonts.h
Kod:
#if defined(__AVR__)
    #include <avr/pgmspace.h>
    #define fontdatatype uint8_t const
Tu do definicji fontdatatype dodane na końcu const

73 Paweł
Odpowiedz
(09-01-2019, 15:29)SQ8MVY napisał(a): [quote='SP7EZG' pid='39692' dateline='1547022832']

Jeżeli już robi się zmiany w projekcie i dodatkowo używa innych plików nagłówkowych, zrobionych dla własnych celów, to może też pasuje je umieścić razem z plikiem *.ino ?
Ja nie doszukałem się pliku config.h, który inkludowany jest w Twojej wersji źródeł, a którego nie ma w oryginalnych źródłach - specjalnie przeglądnąłem cały wątek od pierwszej strony.


Gdzie moje maniery.
Pragnę jedynie zaznaczyć, że config.h był załączony w którymś z archiwów w tym temacie. Zawiera informacje o pasmach.



Załączone pliki
.rar   zlomek_v_1_0_16_pasma_11.rar (Rozmiar: 9.46 KB / Pobrań: 825)
.rar   Si5351mcu-master.rar (Rozmiar: 28.92 KB / Pobrań: 829)
Pozdrawiam, Artur

Odpowiedz
Nie wiem jak skopiować listę błędów kompilacji, a ta nadal jest pokaźna.
Czy wersja kompilatora ARDUINO ma wpływ na kompilację ?
Ja używam wersji 1.06, czyli starszej.
....................
Rysio!
Odpowiedz
Witam,

Rysio!, nie wiem czy pod windowsem zadziała: kliknij na oknie logów, następnie ctrl+a ( czyli zaznacz wszystko ), ctrl+c, a następnie wklej ( ctrl+v) do pliku tekstowego. Powinno się wszystko skopiować.


73 Paweł
Odpowiedz
Działa kopiowanie.
To u mnie wygląda j.n.:
Cytat:In file included from zlomek_v_1_0_16_pasma_11.ino:46:
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:101: error: a brace-enclosed initializer is not allowed here before '{' token
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:101: error: ISO C++ forbids initialization of member 'clkOn'
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:101: error: making 'clkOn' static
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:101: error: invalid in-class initialization of static data member of non-integral type 'bool [3]'
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:110: error: ISO C++ forbids initialization of member 'base_xtal'
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:110: error: making 'base_xtal' static
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:110: error: ISO C++ forbids in-class initialization of non-const static member 'base_xtal'
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:114: error: 'Si5351mcu::base_xtal' cannot appear in a constant-expression
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:114: error: ISO C++ forbids initialization of member 'int_xtal'
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:114: error: making 'int_xtal' static
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:114: error: ISO C++ forbids in-class initialization of non-const static member 'int_xtal'
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:117: error: a brace-enclosed initializer is not allowed here before '{' token
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:117: error: ISO C++ forbids initialization of member 'clkpower'
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:117: error: making 'clkpower' static
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:117: error: invalid in-class initialization of static data member of non-integral type 'uint8_t [3]'
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:137: error: a brace-enclosed initializer is not allowed here before '{' token
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:137: error: ISO C++ forbids initialization of member 'omsynth'
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:137: error: making 'omsynth' static
C:\Users\Home\Documents\Arduino\libraries\Si5351mcu-master\src/si5351mcu.h:137: error: invalid in-class initialization of static data member of non-integral type 'uint16_t [3]'
Odpowiedz
Zacznij od instalacji nowszej wersji Arduino.

Wyrzuć bibliotekę si5351mcu z katalogu library z arduino.
Pliki z biblioteki , czyli si5351mcu.h oraz si5351mcu.cpp skopiuj do katalogu z plikiem *.ino
W źródle *.ino zmień linię include na
#include "si5351mcu.h"; zamiast #include <si5351mcu.h>;

Sprawdź jak przeleci kompilacja.
73 Paweł
Odpowiedz
Witam.
Na wersji Arduino 1.6.12 kompiluje się ale z błędami.
Pozdrawiam - Tadeusz.
Odpowiedz
(09-01-2019, 19:14)SQ8MVY napisał(a): Sprawdź jak przeleci kompilacja.

Paweł!
Dzięki za pomoc. Kompilacja przeleciała, ale "obok", jest inna lista błędów.
Kolega zbyt oszczędnie podał informacje o "swoim sukcesie", stąd problemy.
Gratuluję MU działającego układu, bo nic tak nie cieszy jak własna konstrukcja.
Ja się wyłączam tymczasem z tego tematu, mam inne zadania, inny z Kolegów czeka na informacje, ale o moim sukcesie.
Jeszcze raz dzięki!
....................
Rysio!
Odpowiedz
Wybaczcie zdawkowość.

W tym programiku jest o tyle prosto, że złomek podaje wartość częstotliwości pod zmienną frequency_to_dds. Jedyne co trzeba zrobić to wyrzucić obsługę AD9850 i dopisać pod SI5351.
W bibliotece Si5351mcu robię to tak:

Załączamy bibliotekę, co pokazał Paweł MVY:

Kod:
#include "si5351mcu.h"

Si5351mcu Si;

W funkcji set_frequency

Kod:
Si.init(25000000);    // inicjalizujemy Si. 25000000 to 25MHz - kwarc z którym współpracuje SI5351
  Si.setPower(0, SIOUT_8mA); // pobieżna konfiguracja wyjścia. Wyjście CLK0 z prądem 8mA. Można zmienic na CLK1, 2, prąc na 2mA, 4 mA w zależności od potrzeb
  Si.correction(-640); // poprawka częstotliwości dla kwarcu

I wyrzucamy częstotliwość do Si:

Kod:
Si.setFreq(0, frequency_to_dds) // gdzie 0 to wyjscie (CLK1, CLK2 możliwe) i wartość którą chcemy pokazać.

Tak, rzeczywiście nie testowałem tej biblioteczki na starszych arduino. Z biblioteką od NT7S było tak, że na starszych działała, na nowszych nie. Tutaj jest na odwrót.

Nie mniej w moim poprzednim poście jest wszystko co pozwala na uruchomienie DDS.

Dla pewności można jeszcze skorzystać z gotowych skeczy dołączonych z biblioteką, gdzie jest pokazane co i jak.

Czy Złomek kompilował się z błędami, nie wiem, nie posiadam AD9850. Swoją drogą niezły popyt jest. Cena stała się zaporowa.

W razie pytań postaram się pomóc.

Pozdrawiam, Artur

Odpowiedz
error! Help mi!


Załączone pliki Miniatury
   
Odpowiedz


Skocz do:


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