TNC na mikroprocesorze jednoukładowym ATMEL
ATMega8
Henry Carl Ott, N2RVQ opracował bardzo ciekawą koncepcję kontrolera TNC, zbudowanego na bazie mikroprocesora Atmel ATmega8 i z modemem na układzie MX-614. Dzięki uprzejmości autora mogę przedstawić to rozwiązanie na mojej stronie.
TNC może pracować jedynie w trybie UI (Unproto Info). Intencją autora było wykonanie niedrogiej wersji TNC oferującej podstawowe możliwości TNC wystarczające do wykorzystania go do pracy APRS. Chciał również uzyskać możliwość modyfikacji pracy TNC poprzez dodanie nowych możliwości lub modyfikację istniejących funkcji, jedynie poprzez modyfikację kodu źródłowego.
Wykonane TNC może pracować jako samodzielne urządzenie podłączone do PC, lub z innymi urządzeniami, które można wykorzystać w sieci APRS, ale nie ma zasobów do bezpośredniego zarządzania danymi ax25 (stacje wx).
Opis rozwiązania:
Ta wersja TNC jest rozszerzoną wersja UI-TNC opartego na procesorze 90s2313, którą można znaleźć na stronie autora. Potrzebował on rozwiązania dla bardzo specyficznej aplikacji, która dotychczas nie została zrealizowana. Dlatego też kod zawiera wiele różnych opcjonalnych funkcji, które dla większości osób są po prostu niepotrzebne. Można je zignorować, można też usunąć te fragmenty kodu i wolne miejsce wykorzystać do implementacji jakichś bardziej użytecznych funkcji. Jeśli dokona się takich poprawek, proszę powiadomić o nich autora.
Mikroprocesor ATMEL Atmega8 jest wykorzystywany w wielu aplikacjach. Charakteryzuje się dużą ilością dostępnych rozwiązań, sporym obszarem pamięci na kod programu i niezwykle dużą pamięcią RAM wynoszącą 1KB. Zwykle chciałoby się wykorzystywać więcej pamięci RAM, ale obecna wersja (1.8) ma wolne około 1/4 pamięci i to bez optymalizacji kodu. Projekt powstał w asemblerze z zestawu AVRStudio, dostępnego bezpłatnie na stronie Atmela.
Komponenty również są dostępne (np. ATMega8 z firmy TME,
FX614 z firmy Delta Tech).
Niektóre cechy UI-TNC:
- Pełny odbiór i nadawanie pakietów ax25 z prędkością 1200 bodów.
- Podstawowy port seryjny do komunikacji z konsolą RS232 z prędkością 2400-115200.
- Drugi port (programowy) pracujący w półdupleksie z prędkością 4800 bodów do komunikacji z odbiornikiem GPS.
- Programowany kod inicjujący GPS wysyłany do niego przy włączeniu zasilania.
- Trzeci port seryjny (odbiorczy) o prędkości 2400 bodów do współpracy ze stacją pogodową (ultimeter 2000)
- Rezydentny bootloader, umożliwiający wgrywanie uaktualnień kodu poprzez podstawowy port RS232 z wykorzystaniem darmowego oprogramowania okienkowego.
- Osobne ścieżki dla UNPROTO i położenia.
- Możliwość nadawania zarówno dane typu APRS jak i typu $GPRMC w zaprogramowanych odstępach (odbiornik GPS musi dostarczać sentencję RMC).
- Bufor $GPRMC może być dostępny poprzez gorący klawisz 0x05 umożliwiający dostęp z UI-VIEW32 lub Equiv poprzez port TNC/GPS.
- Konfiguracja wszystkich opcji TNC z konsoli.
- Tryby diagnostyczne dla portu seryjnego oraz podgląd pakietów (kod heksadecymalny).
Lista rozkazów:
AUXLINK AXLF BAUD BEACON BOOTLOADER BTEXT CAL CONVERS DEBUG DUMP ECHO EE FIXTYPE GPSINIT GPSISTR GPSQ HEADER K1 K LF LPATH LTEXT LTIME MCOM MONITOR MYCALL PERSIST PWRUPCONV RESET RESTORE RMCEXPIRE SLOT SYMBOL TRACE TXDELAY UNPROTO VER ?
Dotychczas nie wprowadzone:
- Digipiter (brak pamięci RAM)
- Automatyczna odpowiedź na zapytanie ?APRS? i potwierdzenie wiadomości APRS.
- MIC-E lub innej kompresji danych o położeniu.
Ograniczenia:
- Tylko częściowe sterowanie przepływem na podstawowym porcie seryjnym.
- Nieco ograniczona obsługa trzeciego portu seryjnego (wx). Jak tylko odebrany jest znak CR kończący ciąg znaków, jest on natychmiast wysyłany jako UNPROTO. Brak pamięci RAM nie pozwala podwoić buforu danych.
Zamierzenia:
- Dodatkowy port do podłączenia szeregowej pamięci FRAM umożliwiającej uruchomienie digipitera lub stosowanie większych buforów.
- Brak możliwości użycia funkcji analogowych w procesorze ATmega8 projekt podłączenia do niego przetworników A/D dla telemetrii.
- Interfejs konfiguracyjny użytkownika zajmuje dużo miejsca w pamięci. Można to rozwiązać pisząc program na PC umożliwiający tylko zapis eepromu i odzyskanie w ten sposób miejsca w pamięci.
Uwagi dotyczące Bootloadera:
Kod źródłowy musi być załadowany do AVR przy prawidłowej konfiguracji programatora i ustawieniu bitów kontrolnych.
Programy, które można wykorzystać to STK-500, AVR-ISP lub bezpłatne oprogramowanie PonyProg, dostępne na stronie LancOS.
Po pierwszym zaprogramowaniu wprowadzania uaktualnień kodu można dokonywać przez port seryjny, używając bezpłatnego programu
ATMEL AVRPROG (wersja 1.37 lub wyższa) dostępnego na stronie firmy Atmel. Przy 115200 bitów/sek jest to całkiem szybkie. Tryb bootloadera może być włączony przez rozkaz z konsoli lub poprzez uruchomienie oprogramowania w PC w ciągu 1.5 sek od resetu TNC (trzeba to robić szybko).
Kilka słów o konfiguracji: kliknięcie na poniższym obrazku pozwoli uzyskać powiększenie ekranu konfiguracyjnego dla PonyProg.
Zaznaczone = programowane = zero, dziwne, ale trzeba tak to ustawić.

Od autora:
Ten kod źródłowy i rozwiązanie zostało udostępnione tylko w celach edukacyjnych i do użycia niekomercyjnego.
Komercyjne wykorzystanie jest zabronione bez zgody autora.
Kod może być modyfikowany tak długo, jak długo te modyfikacje będą dostępne publicznie i będzie wskazany autor oryginału.
Copyright © 2003 Henry Carl Ott N2RVQ, wszystkie prawa zastrzeżone.
Wszystkie pytania, komentarze i oferty finansowe kierować do autora : carlott@si.rr.com
To rozwiązanie jest udostępniene bez gwarancji. Proszę nie używać tego rozwiązania w warunkach zagrożenia życia ludzkiego lub gdy jego użycie może spowodować jakieś szkody.
Pliki do pobrania:
|
Kod źródłowy dla ATmega8 (pliki asm, hex itp) [wer. 1.8, 54 kB]
|
|
|
Rozkazy UI-TNC - opis rozkazów konfiguracyjnych i operacyjnych [4 kB]
|
|
|
Schemat UI-TNC - w pliku PDF. [wer. 1.2, 97 kB]
|
|
|
Płytka PCB - widoki płytki od strony elementów i od strony druku, rozmieszczenie elementów. Do budowy UI-TNC zostały zastosowane zarówno typowe elementy dyskretne, jak i elementy SMD. Pliki w formacie PDF. [wer. 1.2, 112 kB]
|
|
|
Plik konfiguracyjny - przykładowy plik konfiguracyjny dla programu UI-VIEW32. [0.4 kB]
|
|
|