Projekt debugera danych szeregowych

r_201_07_3r_201_07_2r_201_07_4
Projekt debugera danych szeregowych

Debuger danych szeregowych to narzędzie używane do testowania i debugowania innych programów lub programów docelowych.
Projekt ten oparty jest na mikrokontrolerze Atmega16A (MCU) i służy do sprawdzania poprawności danych odbieranych przez uniwersalny interfejs synchronicznego/asynchronicznego odbiornika/nadajnika (USART – universal synchronous/asynchronous receiver/transmitter) na wyświetlaczu LCD.
Jest to przydatne narzędzie do debugowania danych USART dla mikrokontrolera i powiązanych obwodów.
Zasadniczo, aby sprawdzić dane USART mikrokontrolera, piny Rx i Tx, które są podłączone do portu COM komputera PC poprzez konwertery poziomu napięcia, takie jak MAX232.
Następnie program (na przykład HyperTerminal) służy do sprawdzania poprawności transmisji danych na terminalu lub ekranie komputera.
Nadal jednak trudno jest sprawdzić/zidentyfikować znaki niedrukowalne na ekranie komputera.
Obecnie port COM nie jest dostępny na komputerach stacjonarnych i laptopach, a do konwersji portu USB na port COM wymagana jest większa konfiguracja sprzętu.
Ten prosty i poręczny debuger danych szeregowych może rozwiązać problem.
W tym projekcie zamiast portu COM podłączone są dwa podobne obwody do przesyłania danych szeregowych do testowania.
Obwód i działa
Schemat obwodu debugera danych szeregowych pokazano na rys. 1. Zbudowano go z mikrokontrolera ATmega16A (IC1), wyświetlacza LCD 16 × 4 (LCD1) i kilku innych elementów.
ATmega16A wykorzystuje oscylator 11,0592MHz, aby uzyskać dokładną prędkość transmisji.
Wyświetlacz LCD1 służy, jako wyjście/konsola.
Rozmiar/format ramki protokołu USART można zmieniać zgodnie z wymaganiami, naciskając takie przyciski, jak szybkość transmisji (S11 – baud rate), bity danych (S10 – data bits), parzystość (S9 – parity) i bity zakończenia transmisji (S8 – stop bits).
Ten szczegół ramki zostanie wyświetlony w czwartym wierszu wyświetlacza LCD1.
Użyj przełącznika zera S3 (null switch), aby włączyć lub wyłączyć wartości zerowe, które mają być dodane do bufora podczas odbierania strumienia danych.
Dwa obwody (powiedzmy MCU1 i MCU2) z rys. 1 są podłączone na osobnej płytce drukowanej.
Ich piny Tx i Rx są ze sobą połączone.
Dane szeregowe są wysyłane przez MCU2 przez jego pin Tx i odbierane przez pin Rx MCU1.
Dane szeregowe są zapisywane w buforze w MCU1 w celu debugowania odebranych danych.
Maksymalny rozmiar bufora wynosi 255 znaków.
Każda pozycja bufora i jego dane bajtowe zajmują dwie kolumny wyświetlacza LCD1.
Zatem LCD1 może wyświetlać ośmioznakowe dane odebranego bufora na raz.
Pierwszy rząd wyświetlacza LCD1 wyświetla pozycję bufora w formacie szesnastkowym, drugi rząd wyświetla rzeczywisty znak, trzeci rząd wyświetla dane w formacie szesnastkowym, a czwarty rząd wyświetla rozmiar ramki odbieranych danych.
Aby przewijać dane, użyj przycisków przewijania w lewo (S4 – scroll left) i przewijania w prawo (S6 – scroll right).
Dane w buforze można wygodnie badać.
Po naciśnięciu przycisku wykasować wszystko (S5 – clear all) wszystkie dane w buforze i na ekranie zostaną usunięte, a nowe dane zostaną odebrane i wyświetlone na wyświetlaczu LCD1.
Liczba otrzymanych znaków jest wyświetlana w prawym dolnym rogu wyświetlacza LCD1.
Aby wysłać strumień danych, naciśnij przycisk wysyłania (S7 – send).
Ciąg/dane przechowywane w danych send_data (w kodzie) będą przesyłane przez pin Tx MCU (Microcontroller Unit).
Konfiguracja i autotest
Po pomyślnym zmontowaniu obwodu na płycie breadboard lub płytce montażowej, napisz SerialDataDebugger.hex file to ATmega16A (IC1) and set fuse bits for crystal option (ckopt=1, sut0=0,sut1=1,cksel0=1,cksel1=0,cksel2=0,cksel3=0) through ISP port using AVR programmer.
(Aby uzyskać szczegółowe informacje, zapoznaj się z danymi katalogowymi firmy Atmel.)
Zauważyć należy, że nowy mikrokontroler ma domyślną wartość bajtów konfiguracyjnych (fuse), która jest równa 0X99E1 w systemie szesnastkowym.
Aby przetestować zaprogramowany MCU (Microcontroller Unit), połącz odpowiednio piny Rx i Tx IC1 (MCU1) z odpowiednio pinami Tx i Rx MCU2.
Włącz oba urządzenia i naciśnij przycisk wysyłania (S7 – send) do MCU2.
Dane/ciąg przechowywane w buforze wysyłanych danych powinny pojawić się na wyświetlaczu LCD1 MCU1.
Odłącz piny Rx i Tx, a debuger danych szeregowych będzie gotowy do użycia.
Do zasilania użyć akumulatora (power bank) o napięcu 5V o pojemności 2000 mAh lub większej, który jest ładowalny i sprawia, że cały obwód jest poręczny.
Budowa
Układ płytki drukowanej debugera danych szeregowych pokazano na rys. 2, a układ jego elementów na rys. 3.
Zmontuj obwód na zaprojektowanej płytce drukowanej i podłącz 5V DC do CON1.
CON2 służy do programowania Atmega16A za pomocą dowolnego programatora ISP.
CON3 służy do połączenia pinów nadajnika (Tx) i odbiornika (Rx) z innego MCU.
Po zmontowaniu i przetestowaniu obwodu zamknij go w odpowiedniej obudowie. Zamocuj przełączniki LCD1 i LED1 na zewnątrz obudowy.
Zaleca się trzymać akumulator (power bank) w środku obudowy
Aby pobrać kod źródłowy: kliknij tutaj
(Serial Data Debugger)
Uwaga:
Rx z mikrokontrolera IC1 należy podłączyć do Tx innego MCU i odwrotnie.
Autor: Fayaz Hassan

Komentarze z Facebooka

Komentarze obecnie - OFF.