HomeMade

Pełna wersja: Arduino
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Mam już dopasowany program do mojego ala-husarka.Jestem niezmiernie zadowolony z tej syntezy (wg sp6ifn).Jedynie encoder działa co drugi dołek.Mój ma takie małe dołki wyczuwane przy kręceniu,ale nie cofa.
Czyli tak:procesor atmega168(w tej chwili wykorzystuję arduino uno),wyświetlacz 1602,moduł AD9850.Został jeszcze jeden moduł do zrobienia, powielacz x4.Tak będzie wyglądała synteza do homodyny jednopasmowej.Wyznaję zasadę jedna antena jedno pasmo.Bardzo serdecznie dziękuję Rysiowi sp6ifn i wszystkim którzy dołączyli się do wykonania tej syntezy.Oczywiście mogę w każdej chwili zmienić pasmo i przeprogramować procesor.Oczywiście czekam też na Henia.
Proszę bardzo! Przynajmniej jeden zadowolony człowiek, przeważnie to same narzekania. Dobrze było by zaprezentować swój program po zmianie. A co do "Henia" to mam takie skojarzenie że to "wcześniak" i obecnie leży jeszcze w inkubatorze. Ale to tylko skojarzenie, nic więcej.
Rysio!
Rysio! - Heniek obciążony jest wrodzoną wadą genetyczną z której zdałem sobie sprawę dopiero po zastosowaniu go w radiu.. Uparłem się jak kretyn, że będę się posługiwał logiką VFOA-VFOB co nie ma sensu w przypadku w którym wyświetla się obie częstotliwości na LCD. Ciągnie to za sobą dosyć niewygodny sposób przechowywania w pamięci nastaw "poprzedniego" pasma. Nie potrzeba również informacji o tym które vfo jest aktualnie używane, bo główne zawsze jest głównym. No ale ja wychowałem się na radiach, które miały jeden wyświetlacz numeryczny (albo miały osobną skrzynkę "external VFO" i tam taka sygnalizacja była niezbędna.
Sensowniejsze jest traktowanie obu VFO jako Main i Sub (chociaż to na pozór to samo co Ai B) i zapamiętywanie wyłacznie nastaw dla "aktualnego" "main VFO" i dodatkowo ewentualnych par częstotliwości dla splitu. Konsekwencją będzie prawdopodobnie totalna zmiana programu - co nie oznacza oczywiście, że obecny nie jest funkcjonalny.
Dochodzi do tego parę detali - np przekazywanie parametrów przez zmienne lokalne a nie globalne - co porządkuje trochę pamięć albo posprzątanie wyświetlania przy aktualizacji wskazań s-metra - bo wyświetlacz ma problemy z nadążaniem.
Ogarnąłem się w trochę w QRLu i na dniach postaram się zacząć publikować . (wiem, już kiedyś obiecywałem - ale na robotę trudno coś poradzić)

MAc
mrn
Witam Ryszardzie.Program jest Twój.Ja go tylko adoptowałem do swoich potrzeb.
było w wierszu 24 było
int_fast32_t rx=12688400; // Początkowa częstotliwość VFO
jest
int_fast32_t rx=3700000; // Początkowa częstotliwość VFO
wiersz 77i78 było
if (rx >=12800000){rx=rx2;}; // Gorna granica pracy VFO
if (rx <=12480000){rx=rx2;}; // Dolna granica pracy VFO
a jest
if (rx >=3800000){rx=rx2;}; // Gorna granica pracy VFO
if (rx <=3500000){rx=rx2;}; // Dolna granica pracy VFO
w wierszu 121-122 było
rxssb = rx - 8988400; //czestotliwosc wyswietlana pomniejszona o czestotliwosc BFO dla SSB
// rxcw = rx - 8989200; //czestotliwosc wyswietlana pomniejszona o czestotliwosc BFO dla CW
a jest
rxssb = rx - 10; //czestotliwosc wyswietlana pomniejszona o czestotliwosc BFO dla SSB
// rxcw = rx - 10; //czestotliwosc wyswietlana pomniejszona o czestotliwosc BFO dla CW. Tak wygląda pierwsze podejście. Homodyna działa.Najbardziej podoba mi się wskaźnik.To jeszcze wymaga korekty końcowej,ale już zadowolony jestem i to bardzo.Pozdrawiam
MAc....spoko! Lepiej jest aby wcześniak dojrzał i zaczął samodzielnie oddychać w sposób skoordynowany, niż by po internecie krążył chorowity osobnik. Ja wiem że bardzo często po uruchomieniu i zmontowaniu czegoś tam łapiemy się sami za głowę......no bo przecież można było to zrobić inaczej.
Andrzeju - jak już pisałem wcześniej, spokojnie kombinuj co by było gdy bym to usunął (lub zmienił). Najszybciej uczyć się można na przykładach.
Bez wymazywania danych możesz zanegować całą linijkę programu poprzez dodanie na początku linii znaku // , lub też zamknięcie fragmentu kodu znakami /* -tu fragment kodu- */.
Zawsze możesz wtedy wrócić do pierwowzoru bez obawy że coś stracisz. Warto sobie na wszelki wypadek pozostawić gdzieś do porównania oryginał, pogubić się jest łatwo. Też się cieszę że jesteś zadowolony, to tylko jedna z możliwych wersji programowych.
Rysio!
Witam. Nieco z innej beczki..
Czy ktoś znalazł/próbował sterować DDS'em AD przy pomocy I2C, TWI, czy innego "two wire interface" (z Atmegi, oczywiście). W implementacji jaką znalazłem w arduino (biblioteka AH_AD9850.) jest to robione "na piechotę", takoż wysyłane są słowa sterujące (przesuwanie i wysyłanie bit po bicie). A to takie nieeleganckie... Wszak mamy właśnie rózne TWI. Jeno impuls FQUP trzeba by nadać osobno.
Proszę bardzo:
Cytat:Post: #70RE: Arduino

Witam.tu jest adres http://ywd.pl/projekty/dds-ad9850-i-arduino-wysw-lcd/ .
Na tej stronie jest otwarty tekst programu.Myślę,że program Encoder_Polling.h jest coś nie tak.Wszystkie error (jest ich około20) dotyczą tego Encoder_Polling.h .
Na stronie http://ywd.pl/projekty/dds-ad9850-i-arduino-wysw-led/ jest pobranie tego programiku.Dzięki za odezwanie.

--------------------------------------------------------------------------------
Andrzej
Rysio!
Rysiu, bo nie załapałem.. Cytujesz post Andrzeja, ale nie wiem w jakim celu - jako odpowiedź na mój? Smile
Tak.
Wstawiony tam link jest odpowiedzią na pytanie
Cytat:Czy ktoś znalazł/próbował sterować DDS'em AD przy pomocy I2C, TWI, czy innego "two wire interface" (z Atmegi, oczywiście).
Tam jest właśnie sterowanie DDSem po I2C. Dalsze stwierdzenie
Cytat:jest to robione "na piechotę", takoż wysyłane są słowa sterujące (przesuwanie i wysyłanie bit po bicie). A to takie nieeleganckie...
Osobiście myślę że to ma "działać', a "nie wyglądać". Wszak większość z nas, w tym i ja się uczymy, nie dysponujemy wiedzą tak ogromną jak obecnie wykształcona młodzież. Osobiście jestem z siebie zadowolony że jeszcze to "łykam" i staram się coś zrozumieć, a potem to wykorzystać. Twoje więc stwierdzenie że
Cytat:to takie nieeleganckie.
jest właśnie (wybacz)....nieeleganckie. My to robimy jak umiemy, jeśli więc możesz to Nam Pomóż!
Rysio!
Ok, już rozumiem.
Mając na mysli I2C, TWI - miałem na myśli specjalizowane rozwiązania sprzętowe WBUDOWANE w owe procesory (atmega ma odpowiednik I2C który ze względów prawnych nazywa się TWI - karta katalogowa ATmega168, str. 209).

Jako nieeleganckie - miałem na myśli rozwiązania "na piechotę" czyli wysyłanie poszczególnych słów poprzez pętlę for, podczas gdy atmega może to robić sprzętowo. Owszem, mamy wtedy dowolność w wyborze pinu, ale działa to wolniej, i jest podatne na zakłócenia przetwarzania w procesorze. Dodatkowo wydłuża nam kod, a przecież pojemność pamięci w tych procesorach jest dość ograniczona (to chyba najważniejszy powód).

To, co jest użyte w bibliotece z arduina (AH_9850.h) nie jest sterowaniem I2C, ani TWI. Chyba że rozumieć to czysto semantycznie jako komunikację przy pomocy dwóch linii (a nawet wtedy nie jest bo jest jeszcze sygnał FQUP).
Odpowiadając sam sobie na pytanie, AD9850/1 nie nadaje się do sterowania po I2C, bo I2C nadaje adres, i wymaga potwierdzenia. Tak samo (raczej) TWI. Dość szybko czytając kartę atmegi, nie zauważyłem trybu aby można było to ominąć.

Natomiast prawdopodobnie da się po SPI Programming the AD9851 DDS synthesizer.

I na pewno nie miałem zamiaru insynuować komukolwiek że używanie arduino, czy bibliotek do niego jest nieeleganckie, itp. Jeśli ktoś odniósł takie wrażenie, to przepraszam - choć nie wiem na jakiej podstawie można było do tego dojść. Oceniłem metodę działania algorytmu, a nie tego kto go używa.

Natomiast nikt nikogo nie zmusza żeby nosił wodę wiadrem, gdy wymyślono pompę. Choć, zabraniać też nie zabrania. Czemu nie.

PS: Miło mi że zostałem zakwalifikowany do młodzieży. Ten termin staje się coraz bardziej szeroki, hi..
Jak zaimplementuję SPI do dds i będzie to działac, to się wiedzą podzielę, owszem.
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Przekierowanie