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
Jerzy, protokół komunikacyjny jest bardzo prosty aby nie obciążać procesora. Jeśli czegoś brakuje w ramce lub jej format jest niezgodny procesor traktuje to jako błąd i odrzuca bez analizy. Może uda mi się w sobotę zmontować konwerter wg. Twojego schematu i sprawdzić to na RS485 z terminala.
W załączniku poprawiony projekt interfejsu TTL_RS485 Kolegi HM_dipola oraz zdjęcie zmontowanego modułu.
Moduł podłączyłem do konsoli domowej jako interfejs komunikacyjny RS_485 do sterowania skrzynką easyATU (kabelki na zdjęciu).
Skrzynka eATU oraz procesor konsoli zasilany z modułu TTL_RS485, zasilanie oraz linia transmisyjna zabezpieczone transilami 15V.
W konsoli domowej musimy podnieść klawisze do góry aby wystawały powyżej powierzchni wyświetlacza (frontu obudowy konsoli). Ja wykorzystałem do tego celu rezystory do których przylutowałem od góry klawisze. Ważne by rezystory miały sztywne wyprowadzenia aby klawisze były stabilne mechanicznie (zdjęcie). Takie rozwiązanie pozwala na uniezależnienie się od wysokości połączenia procesor-LCD oraz na stosowanie różnych wysokości klawiszy. W przypadku innych klawiszy możemy wykonać dodatkową, małą płytkę pod klawisze i mocować ja bezpośrednio do frontu konsoli.
Nadal nie mam potwierdzeń, ale z całą pewnością komenda działa, bo po wysłanie komendy M, wydanie komendy F przynosi oczekiwany skutek. (Wniosek na podstawie obserwacji diod LED)
Adamie, czy Twój test dotyczył interfejsu RS232 czy 485?
Czy pod 485 te gwiazdki Ci się pokazują, czy one występują tylko pod RS232?
Co zmienić w moim interfejsie, żeby zaczęło chodzić?
Komendę uważam za wydaną, jeśli skrzynka ją potwierdzi. Jeśli nie ma potwierdzenia, to niczego nie można być pewnym...
Czym różni się potwierdzanie komendy M od innych komend (oprócz znaku oczywiście...) Czasem opóźnienia? Chyba nie. Dostęp do eepromu jest czasochłonny, ale pamięć M to zwykły RAM
dzisiaj co prawda nie testowałem naszego eATU - ale wędkę + tuner zewnetrzny.
także na zaokiennej wędce na 7 MHz zrobiłem w nocy Amerykańca, a rano o 8mej w zawodach spdx macnąłem szybkie 30 qso w godzinkę i praktycznie na każde zawołanie miałem odpowiedź.
Zgodnie z sugestiami Kolegów testujących skrzynkę eATU dodałem do oprogramowania rozkaz pozwalający odczytywać aktualny stan nastaw skrzynki.
#A1A [cr,lf] -[ask] zapytanie o aktualny stan nastaw skrzynki #A1AC007L015F03620[cr,lf] - odpowiedz skrzynki
Jeśli nie używaliśmy rozkazu [F] w polu częstotliwości będą same zera F00000.
Położenie pola C określa miejsce podłączenia kondensatorów [INP, OUT].
Rozkaz przydatny przy ręcznym dobieraniu nastaw oraz przy sprawdzaniu czy skrzynka poprawnie wybiera z pamięci nastawy najbliższe do podanej częstotliwości.
W załącznikach ostatnia wersja plików HEX do skrzynki easyATU oraz easyCON.
#A1G [cr,lf] -[get] pobranie wszystkich nastaw z komórek pamięci skrzynki
Nowy rozkaz pobierający nastawy zapisane w komórkach pamięci skrzynki od M000 do M099. W odpowiedzi skrzynka wysyła 100 linii zawierające gotowe ramki konfiguracyjne z nastawami zapisanymi w pamięci skrzynki. Wystarczy zapisać w terminalu te dane do logu i mamy gotowy plik konfiguracyjny do dalszej edycji lub przeniesienia na inną skrzynkę.
EATU_MEM.TXT - plik którym zaprogramowałem komórki pamięci eATU
EATU_GET.TXT - plik z danymi pobranymi ze skrzynki funkcją [G]
W wersji v_07 było kilka błędów dlatego została skasowana. Poprawiona wersja programu w kolejnym poście.
03-04-2011, 19:37 (Ten post był ostatnio modyfikowany: 03-04-2011, 20:06 przez SQ5PGJ.)
U mnie od 62 pozycji myli się.... :-(
Po wpisaniu pliku MEM Adama od pozycji 62 do 99 mam same jedynki (L255C2555F65535)
Zmodyfikowałem plik zapisany przez komendę GET. Do pozycji 61 bez zmian, (najpierw pasmo 80m póżniej zera) a wszędzie powyżej pozycji 61 do pozycji 99 same zera. L000C000F00000. Get dał mi poprawne dane do pozycji 61, a powyżej:
(...)
#A1M089L000C000F32768
#A1M090L000C000F32768
#A1M091L000C000F32768
#A1M092L000C000F32768
#A1M093L000C000F32768
(...)
Trudno powiedzieć czy to błąd transmisji przy odczycie czy przy zapisie.
Dzięki komendzie Get zauważyłem, że kiedy nadaję komendę :
#A1M000L007C008F03390
Potwierdzenia nie otrzymuję, a w pamięci znajduje się później:
#A1M000L007C008F36158
Jakby ktoś dodał do mojej liczby 03390 tą wartość 32768, czyli 2^15...
SP3SWJ napisał(a):Czy procek jest na tyle szybki że jeśli ten PLIK wyślemy jako TXT do skrzynki to ona zapamięta wszystkie nastawy ???
Jarek, procesor dzięki użyciu przerwań bez problemu odbiera i zapisuje konfigurację wysyłaną z terminala jako plik ASCII. Możemy mieć kilka plików konfiguracyjnych i wysyłać je do skrzynki wg. uznania. Składnia celowo jest zgodna z ramkami do programowania pamięci aby mieć "gotowca" po użyciu rozkazu [G].
Niestety po wykonaniu testów musiałem poprawić kilka drobiazgów w ostatniej wersji oprogramowania. Poprawiona wersja w załączniku.
Jerzy, to nie transmisja, był błąd w procedurze wysyłania częstotliwości, stąd takie dziwne wartość, teraz powinno być OK. Napisanie programu to 50% pracy, drugie 50% to testowanie i poprawki.
Rozkaz [M] zapisuje dane do pamięci ale nie ma prawa zmieniać aktualnej nastawy skrzynki, musiałem poprawić ochronę kilku zmiennych i teraz działa to zgodnie z pierwotnym założeniem.
Niestety nie wiem dlaczego u Ciebie w komórkach M[062...099] są jedynki.
Czy po zaprogramowaniu procesora inicjowałeś pamięć EEPROM rozkazem [I], zeruje nastawy i częstotliwości ?
03-04-2011, 22:20 (Ten post był ostatnio modyfikowany: 03-04-2011, 22:21 przez SQ5PGJ.)
Faktycznie, Komenda #A1I załatwia sprawę.
Działam na zmianę na 2 prockach i na jednym z nich nie miałem zrobionego #A1I. Teraz jest OK.
Myślę, że brak potwierdzeń komendy M jest spowodowany przez mój konwerter na NE555, który nie przełącza się w porę z nadawania na odbiór. Bo faktycznie polecenia są wykonywane.
Dzięki, Adam.