Stron: 1 2 3 4 5 6 7 8 9 10
(07-11-2010 21:33)sp3vpa napisał(a): [ -> ]Co zaś tyczy syntezy na SI570 to programuję Atmegę8 prg.ISP Programmer
bo innym nie mogę (nie widzi procka).
Niestety "ISP Programmer" to za mało aby czytelnik forum skojarzył
z czym działasz(jaki konkretnie programator i interfejs PC).
(07-11-2010 21:33)sp3vpa napisał(a): [ -> ]Są tam trochę inne nazwy niż kolega
podał. Bity CKSEL3,2,1,0 ustawiłem jak zalecone czyli 1110, rozumiem, że EESAVE należy ustawić 0 - EEPROM jest chroniony, i nie wiem co to za fusebit KL, bo w tym prg są troszkę inne oznaczenia. Angielskiego nie umiem, więc czytanie pdf-a opisującego procesor też mi nie pomoże.
Masz "trochę inne nazwy" - to duży błąd ze strony producenta programatora że nie stosuje się do nazewnictwa z aplikacji.
Dla mnie aplikacja producenta scalaka jest jak Biblia dla katolika.
Wszelkie przeinaczenia (oprócz errat twórcy) są jak świętokradztwo bo
wprowadzają użytkowników w ślepy zaułek.
Może wrzuć jakieś szotskriny programatora z ustawionymi fusami - może wtedy wyjaśni się problem.
p.s.
W pdf Atmega8 nie widzę fusebita "KL"
Może najszybciej będzie kiedy wyślę Ci zaprogramowany i działający u mnie układ. Możesz również całą płytkę wysłać do mnie. Decyzja należy do Ciebie - daj znać bezpośrednio poprzez e-mail.
Niezależnie jednak od stanu a nawet obecności SI-570 program powinien działać przy poprawnie zaprogramowanym układzie Mega 8. Napisz nieco więcej jakie masz efekty działania układu. Czy działają klawisze i zmieniają się opisy na wyświetlaczu?. Jak zrozumiałem można wejść do Setup-u ale czy działa Ci impulsator co powinno wiązać się ze zmianami częstotliwości lub zmianami wielkości ustawianych w Setup-ie?.
Załączam widok interface jaki udostępnia Bascom podczas programowania bitów Fuse. Na obu rysunkach jest komplet bitów możliwych do ustawienia oraz ustawienia jakich używam.
L.J.
Przepraszam za to, że niezbyt precyzyjnie wyraziłem się. Używam programatora
zrobionego przeze mnie na port LPT z buforem na 74HC244 - bardzo prosty
programator. Wsad zaś staram się wcisnąć do procesora Atmega8 za pomocą programu ISP Programmer 1.2.0.53. Podane w tym programie oznaczenia bitów
nieznacznie różnią się od opisywanych w necie. A opisy są następujące:
bity H - RSTDISBL, WDTON, CKOPT, EESAVE, BOOTSZ1, BOOTSZ0, BOOTRST
bity L - BOTLEVEL, BODEN, SUT1, SUT0, CKSEL3, CKSEL2, CKSEL1, CKSEL0
a fabryczne ustawienia to H - 11011001, L - 11100001 oczywiście dla tego programu. To chyba wszystko.
Tadeusz - sp3vpa.
Dzięki za te wklejone tabelki, bo znacznie ułatwiły mi porównanie i w zasadzie pomogły w ustawieniach bitów. Nie zmienia to jednak sytuacji: nie idzie ustalić częstotliwości w Setup. Jest możliwość ustawienia dzielenia, częstotliwości
chyba zegara - 124.000.00 i zapisania. Wszystkie klawisze działają, impulsator też. Założyłem taki prosty z jakiegoś radia samochodowego. Mam też zrobionego na Tiny13 chyba też działał. Nie ma jednak częstotliwości rzeczywistej a pomiar częstościomierzem jest trudny, bo częstotliwość skacze.
Nie wiem co jeszcze mógłbym dodać? Sprawdziłem przejścia bo czasem ścieżka może być przecięta lub pęknięta ale nic. Jutro sprawdzę jeszcze co wychodzi - oscyloskopem takim jaki mam , i zastanowię się co dalej. Jutro odpowiem co dalej ale skłaniam się do wysyłki.
Pozdrawiam - Tadeusz sp3vpa
Wydaje się, że kolejność bitów w Twoim programatorze i w Bascomie jest jednakowa. W związku z tym ustawienia u Ciebie odpowiadające ustawieniom w Bascomie powinny być następujące:
Dla bitów Low:
BOTLEVE=1, BODEN=1, SUT1=0, SUT0=1, CKSEL3=1, CKSEL2=1, CKSEL1=1, CKSEL0=0 czyli 11011110
dla bitów High:
RSTDISBL=1, WDTON=1, SPI?=0 ,CKOPT=1, EESAVE=0, BOOTSZ1=0, BOOTSZ0=0, BOOTRST=1 czyli 11010001
Zdaje się, że dla bitów High pominąłeś bit SPI, którego wprawdzie nie wymieniłeś ale z długości ciągu bitów H wynika, że powinno ich być 8.
Czy moje przypuszczenia zgadzają się z Twoimi?
Jak pisałem wcześniej, na wyświetlaczu powinieneś mieć jakieś sensowne wartości częstotliwości niezależnie od tego czy układ SI działa czy nie. Jeśli tu coś szwankuje to prawdopodobnie program nie działa prawidłowo co może rzutować również na sterowanie generatorem.
L.J.
Pewną metodą sprawdzenia poprawności działania układu może być próba ustawienia częstotliwości wzorca kwarcowego w procedurze Setup. Jeśli działa impulsator i daje się zmieniać częstotliwość wzorca to przy poprawnie działającym układzie na wyjściu powinna powstać częstotliwość około 10MHz. Dokładne ustawienie na wyjściu częstotliwości 10MHz jest przyjętą przeze mnie metodą kalibracji konkretnego chip-a generatora. Trzeba to robić po kilku minutach pracy układu choć do sprawdzenia działania nie ma to znaczenia.
Z drugiej strony, założyłem, że częstotliwośc Fof (ofset) nie może być mniejsza niż |400kHz|. Oznacza to, że w procedurze Setup do jej ustawienia trzeba użyć początkowego kroku 1MHz bowiem zmianę mniejszą niż 400kHz system zakrągli niezwłocznie do zera.
L.J.
Z silnym wsparciem Tadeusza udało się zdiagnozować problem dysfunkcji generatora. Wydaje się, choć pewnie Tadeusz to potwierdzi, że ostatnio podane ustawienia bitów Fuse są już dla tego procesora właściwe. Problemem okazał się z jednej strony sam konkretny układ mikrokontrolera, bo po wymianie na inny egzemplarz, program ruszył ale również pewne kłopoty sprawił sam program. Okazało się bowiem, że 'świeży' mikrokontroler ma pamięć Eprom w nieokreślonym (przynajmniej dla programu) stanie a program, zaczyna się właśnie od odczytu ostatnio zapamiętanych wartości stałych programu (częstotliwość wzorca, częstotliwość ofsetu oraz dzielnik). W tej sytuacji przygotowałem dla Tadeusza wersję zerową oprogramowania, która ma za zadanie wyłącznie ustawienie początkowe dla wartości z pamięci Eprom a wtedy po załadowaniu wersji docelowej nie ma już problemu inicjacji zmiennych. Gdybym miał nieco więcej miejsca na program to mógłbym tą sytuację szybko obejść sprawdzając na starcie czy zmiennne mają sensowne wartości ale niestety wymaga to zwolnienia miejsca w innej części programu. Potrzebuję więc na to 1-2 dni aby znaleźć rozsądny kompromis. Niestety, ten problem nie wystąpił podczas programowania bo początkowe wartości zmiennych były wkompilowane w kolejne wersje i zapamiętane w Eprom bezpośrednio. Całą procedurę sprawdziłem na nowym układzie Mega 8 potwierdzając zarówno problem z inicjacją zmiennych jak i tymczasowy sposób rozwiązania przez wgranie wersji zerowej.
Liczę, że Tadeusz dopisze się ze swoimi uwagami dotyczącymi zarówno uruchomienia i funkcjonalności generatora jak i jego współpracy z transceiverem.
L.J.
Witam.
Istotnie, tak ustawiłem bity dla Atmegi8. Dla wsadu ver.1.1 za nic nie mogłem ustawić Fof. Cały czas wyświetlało -0.000.00 . Po wyjściu z Setup Mode wyświetlacz nie pokazywał częstotliwości a tylko 0.000.00. Przy próbie strojenia
enkoderem zera znikały i pojawiał się napis "NAN ANH" jakoś tak. W końcu podłączyłem Fmiarkę, żeby sprawdzić co wychodzi. Za radą Leszka sprawdziłem czy w Setup Mode da się ustawić częstotliwość wzorca 10MHz.
Tą częstotliwość dało się ustawić i co ciekawe na wyjściu SI570 były prawidłowe częstotliwości, mimo że wyświetlacz syntezy pokazywał same zera.
Oczywiście cały czas kontaktowałem się z Leszkiem sp6fre i informowałem go o postępach. Po analizach występującego u mnie błędu Leszek stwierdził, że to sprawa ustawień początkowych dla epromu. Przysłał mi wsad ver.1.0 z wpisanymi ustawieniami początkowymi zalecając zaprogramować Atmega8
najpierw wsadem ver.1.0 następnie włożyć go do syntezy i w Setup ustawić
wszystkie ustawienia następnie zapisać (środkowy klawisz), a następnie
bez zmiany fuse bitów zaprogramować wsadem ze strony. Pewne kłopoty sprawił też procesor Atmega8-16. Powyższą operację przeprowadziłem
kilkakrotnie bez efektu. Byłem już zniechęcony ale zmieniłem w koncu procesor na Atmega8-PU i wszystko zagrało. Po tych operacjach
synteza ruszyła i pracuje. Niestety nie przeprowadziłem prób z radiem bo
nie było kiedy. Z różnych przyczyn musiałem te próby odłożyć.
Jeśli chodzi o funkcjonalność to od początku wiedziałem co chcę zrobić
i kilka razy czytałem opis i posty na tym forum. Zatem ma ona wszystko
to co potrzebne. Szybkie przejście na pasma można załatwić wpisując do pamięci częstotliwości a poza tym jest szeroka gama kroków. To jest moja subiektywna ocena a bajerów zawsze może być więcej.
Dziękuję koledze Leszkowi sp6fre za pomoc w uruchomieniu syntezy.
Pozdrawiam - Tadeusz sp3vpa.
Tak sobie myślałem cały czas że coś z EEpromem nie halo.
Z doświadczeń własnych i obserwacji sprzętu fabrycznego mam kilka uwag w temacie pamięci nieulotnej używanej do utrzymania nastaw użytkownika i innych (np. serwisowych).
Bardzo często zdarza się że kiepsko zaprojektowany (programowo) sprzęt fabryczny (głównie europejski) ma problem z "wstaniem" na skutek niewłaściwych danych w eeprom.
Lepiej zaprojektowane urządzenia (Japan) w przypadku awarii danych eeprom (kontrola CRC danych) przynajmniej sygnalizują problem na wyświetlaczu lub uruchamiają się z nastaw domyślnych w ROM.
Moim zdaniem - jeśli urządzenie jest tak oprogramowane że do "odpalenia"
przy pierwszym uruchomieniu jest niezbędna prawidłowa zawartość eeprom
to albo warto ją podać użytkownikowi (technicznie wydolnemu) lub opracować prostą opcję do zapisu danych domyślnych eeprom np. przytrzymaniem jakiegoś przycisku po resecie systemu .
Pozostaje jeszcze kwestia trwałości samej pamięci eeprom. Może się to komuś wydać śmieszne - no bo ona ma ileś tam cykli zapisu zagwarantowane. No ale... jeśli zapis do pamięci odbywa się za każdą zmianą np. częstotliwości to można sobie policzyć jak długo pamięć wytrzyma. Zapis do pamięci powinien się dokonywać dopiero wówczas jak kontroler stwierdzi zanik zasilania układu i zapisze paczkę danych w eeprom korzystając z energii w kondensatorach na zasilaniu. To oczywiście wymaga nieco więcej pracy projektanta plus kilka dodatków sprzętowych ...... do konstrukcji amatorskich może nie być potrzebne. W razie kłopotu wstawi się nowy procesor lub pamięć
Komercyjni producenci sprzętu na takie numery nie mogą sobie pozwolić .
Dobra - wiem że jestem maruda.
Wprawdzie napisałem to już nieco wyżej (tylko nieco) ale powtórzę, że zdecydowałem się na takie rozwiązanie z wersją zerową oprogramowania wyłącznie z braku miejsca w pamięci na program, nie chcąc redukować żadnej istniejącej funkcjonalności i traktuję to rozwiązanie jedynie doraźne aż czegoś bardziej sensownego nie wymyślę. Obecnie wskaźnik rozmiaru kodu programu po kompilacji wskazuje na 99% i nie daje się dopisać do kodu nawet najprostszego podstawienia bez przeładowania zakresu pamięci programu. Dlatego w wersji zerowej musiałem zablokować kilka poleceń aby ustawienie początkowe zmiennych było w ogóle możliwe.
Nie zapisuję do pamięci Eprom każdej zmiany częstotliwości a jedynie te częstotliwości, które użytkownik chce zapamiętać w jednej z czterech pamięci, nie ma więc problemu trwałości tej pamięci jak ktoś nieuważny mógłby przypuszczać.
Nie muszę też niczego zapamiętywać przy zaniku zasilania.
Biorąc to wszytko pod uwagę zgadzam się w całej rozciągłości z ogólnymi uwagami na temat dobrych zasad pisania oprogramowania oraz chwytów programowych przy inicjowaniu zmiennych oraz zapamiętywaniu ich w sytuacjach awaryjnych.
L.J.
Poprawiłem kod programu w sposób umożliwiający wstępne ustawienie zmiennych. Wykorzystałem do tego celu jeden z prawych klawiszy (skrajny lub drugi z prawej), który należy nacisnąć i przytrzymać podczas włączenia zasilania.
Zupełnie przypadkowo, zgadza się to z sugestią Krzysztofa sq6ade
To działanie ustawia częstotliwość pracy (F1) na 10MHz oraz częstotliwość offset-u (Fof) na 0. W ten sposób można już ustawić bez problemu wszystkie zmienne systemowe (Fx, Fof, D) oraz pamięci częstotliwości pracy (F1-F4).
Nowy kod programu jest na mojej stronie:
si570v1.2
Miejsce na kod programu udało się znaleźć kosztem zmniejszenia rozmiarów napisów i komunikatów. Dało to kilkanaście bajtów ale wystarczyło.
L.J.
witam szanownych forumowiczów,,właśnie oprogramowałem atemege8 wsadem w wersji 1.2 za pomocą programatora stk200/300 ze strony ponyprog-a ,nie bylo zadnych problemów,,fusebity ustawilem wg. opisów we wcześniejszych postach.Nie sprawdzalem jeszcze generatora na radiu,lecz myślę że za jakieś dwa tygodnie zagości w Piligrimie który jest w trakcie budowy.
Chciałbym tu na forum oficjalnie podziękować Leszkowi SP6FRE ,który włożył niesamowity wkład w swój projekt i do tego z osobna pomagał kolegom, byłem z nim na bieżąco z mailami,napisał dla mnie osobno wsad ,gdyz moj si570 ma adres 0x. Na razie w necie nie spotkałem tak uniwersalnej wersji dla SI570 jak od Leszka.Np.G4OEP opublikował wersje na pic16f628a lecz za oprogramowanie już trzeba zapłacić i tak samo jest z innymi kitami,a to co udostępnione jest sterowane znowu za posrednictwem komputera przez usb.
Wielki szacun dla SP6FRE! I jak już pisałem na maila Leszkowi powtórze i tu :wytrwałości na przyszłość ,a może powstanie wersja do obsługi wiekszej ilosci pamieci i pasm ale to tak na marginesie po prostu tacy juz jestesmy ze zawsze jakis niedosyt zostaje hihi
od wczoraj przeprowadzam proby stabilnosci czestotliwosci si570 i stwierdzam z cala stanowczoscia ze nie jest ono zle,
przez 10 minut od momentu wlaczenia czestotliwosc wzrosla o 25hz,w temp. pokojowej bez oslony ukladu ktory jest wlutowany 2mm nad pcb.Po otwarciu okna F zaczela spadac o jakies 7hz i tak zostalo wachajac sie w granicy 2hz+-,lecz nie wiem czy to byly zmiany miernika czy generatora,proby przeprowadzilem miernikiem wlasnej roboty do 1ghz z preskalerem i bez dla porownania przy F=10mhz,miernik byl wlaczony na godzine wczesniej przed dokonywaniem pomiarow.Po wyłączeniu i schlodzeniu naturalnym sposobem,okrylem SI570 5mm gruboscia styropianem.Dryft czestotliwosci byl taki sam lecz wydluzony w czasie ,25hz +-2hz przez 20min tym razem a pozniej spadalo o około 5hz.
Temperatura samego si570 po pol godzinie pracy wynosila 34'c,
Nastepne proby będą wykonywane po zamknieciu generatora w obudowie,gdzie dodatkowym grzejnikiem beda dwa stabilizatory 3,3v i 5v.Ten drugi ma temp obecnie 55'c,lecz to tylko prototyp ktory w danym momencie zasila takze podswietlanie dwoch lcd,,w najblizszym czasie zastosowane beda lcd FFSTN ECO 20mA biale napisy na czrnym tle ,jeden rozmiarem normal a drugi small dla wyswietlania nastawien mcz.
http://www.artronic.pl/o_produkcie.php?id=1017
http://www.artronic.pl/o_produkcie.php?id=1091
mysle ze piligrim będzie ładnie sie prezentowal.
Dodatkowo zmodernizuje układ smetra gdzie mam zamiar zastosowac ad8307 i LM3914 z slupkami led.
oczywiscie na plytce w razie niezadowolenia bedzie miejsce na podlaczenia analogowego s metra.[attachment=1921]
Dziękuję Krzysztofie za pomiary. Moje labolatorium jest zbyt ubogie dla takiej dokładności i choć kusi aby zrobić lepszy miernik to nie ma na to czasu :-(
Jeśli możesz to zrób pomiar dla wyższej częstotliwości, np. 60 lub 80MHz. Ciekawe czy błąd związany z temperaturą powiększy się liniowo.
Dla Krzysztofa wprowadziłem do programu dwie poprawki. Jedna dotyczy adresowania jego chip-a a druga innych progów przełączania pasm. I tak przełączania mają miejsce dla częstotliwości (po podziale przez 4):
- na granicy 2MHz,
- na granicy 4MHz,
- na granicy 8MHz ,
- na granicy 15MHz
- na granicy 21MHz
Do sterowania przełączaniem pasm używam 3 bitów a więc najlepszym elementem pośredniczącym jest dekoder 1 z 10 np. cd4028.
Ponieważ zarówno zmiana adresu jak i zmiana częstotliwości przełączania pasm nie stanowią dla mnie specjalnego utrudnienia to mógłbym przygotować wersję przystosowaną do jakiegoś najszerzej stosowanego systemu przełączeń a także dla innej adresacji. W razie potrzeby proszę o stosowne sugestie :-)
L.J.
Sądziłem,że zakończyłem prace przy syntezie ale myliłem się.
Okazało się w praktyce, że generator nie zawsze działa a dodatkowo to "niedziałanie" zależy od egzemplarza SI570. Po dłuższym szukaniu przyczyny okazało się, że .........winny jest sam generator SI570 a w zasadzie sposób zaimplementowania w programie jego sterowania.
Sterowanie tego generatora może się odbywać na dwa sposoby: jeden, ogólny działa zawsze ale, zgodnie z opisem układu:
opis układu SI570
wiąże się z chwilowym (do 10ms) stanem przejściowym o nieustalonej częstotliwości i fazie sygnału co dla urządzeń odbiorczych wiąże się z silnym stukiem dla każdej zmiany częstotliwości niezależnie od kroku strojenia. O problemech ze stukami pisałem wcześniej w tym wątku kiedy w algorytmie sterowania użyłem tej właśnie metody zmiany częstotliwości. Wtedy zrezygnowałem z niej na rzecz własnej metody zmiany polegającej wyłącznie na wpisaniu do rejestrów wymaganaych parametrów strojenia bez uwzględniania innych zmiennych. Jak pisałem ta metoda nie zawsze jest skuteczna, w szczególności dla wyższych częstotliwości wyjściowych a w dodatku zależy od egzemplarza układu SI570.
Druga metoda sterowania częstotliwością daje zmiane płynną bez efektów stuku ale jest ograniczona do zakresu ok. 0.35% wartości częstotliwości fDCO leżącej w zakresie 4850-5670MHz. Na załączonym rysunku pokazuję jakie to ma skutki np. przy odbiorze częstotliwości 14MHz przez urządzenie DC. Częstotliwość heterowyny ma wartość 54MHz a odpowiadająca wartość fDCO wartość 4928MHz co daje możliwość płynnej zmiany w zakresie 4911-4945MHz a po ponownym przeliczeniu na częstotliwośc wyjściową w zakresie 55.8-56.2MHz a więc pozwala na skuteczne strojenie ok. +- 50kHz wokół częstotliwości 14MHz. Dla częstotliwości pracy 3.5MHz zakres ten będzie 4 krotnie mniejszy a dla 28MHz 4 krotnie większy.
W ostateczności więc zdecydowałem się na zastosowanie mieszanej metody sterowania. Jeśli zmiana częstotliwości jest mniejsza niż zakres tolerancji płynnej (co zależy od pasma pracy) wtedy przestrajanie jest płynne. Na granicy zakresu tolerancji wymagana jest zmiana częstotliwości na zasadach ogólnych i słychać pojedynczy stuk w słuchawkach ale parametry sterowania się zmieniają i znowu można stroić się płynnie w pewnym otoczeniu częstotliwości środkowej po zmianach.
Opisałem to dokładniej na mojej stronie:
Generator na SI570 według sp6fre
Tamże zamieściłem ostatnią, poprawiona wersję oprogramowania, która pozbawiona jest poprzednich niedogodności i zawiera najnowszy sposób sterowania.
L.J.
Stron: 1 2 3 4 5 6 7 8 9 10