rs232 linux win32 cz2


K U R S
Programowanie portu szeregowego
w systemach operacyjnych
Linux i Windows, część 2
Umiejętność programowej obsługi interfejsu
RS232 od strony komputera PC jest
dziś istotnym elementem elektronicznego
rzemiosła. W niniejszym kursie piszemy jak
w praktyce oprogramować port szeregowy
w środowiskach Linux i Windows. Wiele
miejsca poświęcamy pisaniu przenośnych
aplikacji GUI, które korzystają z interfejsu
szeregowego i zachowują się tak samo
w systemach Windows jak i Linux. Wszystkie
omawiane zagadnienia poparto szczegółowo
opisanymi praktycznymi przykładami.
W poprzedniej części kursu Połączenie procesora U1 z kom- łączenia napięcia zasilającego. Nie-
omówiłem funkcje służące do re- puterem PC zrealizowane jest ty- rozdzielenie mas analogowej i cy-
alizacji operacji na porcie szere- powo, to jest za pośrednictwem frowej mogłoby doprowadzić do
gowym w Linuksie. Przyszedł czas układu MAX232. Model łączony podawania na wejście przetworni-
na wykorzystanie zdobytej wiedzy jest z komputerem za pośrednic- ka A/C impulsów szpilkowych i
w praktyce. W części drugiej przed- twem kabla  prostego (bez prze-  w konsekwencji  do jego błęd-
stawię budowę platformy sprzęto- plotu), co wymusiło zastosowanie nej pracy. Impulsy te pochodziły-
wej, która pozwoli nam testować złącza DB9F (żeńskiego). Czytel- by ze spadków napięcia na ścież-
tworzone oprogramowanie. nicy, którzy zechcą użyć typowe- kach masy powodowanych dużymi
go przewodu z przeplotem muszą prądami impulsowymi występujący-
Zestaw testowy wykorzystać złącze DB9M oraz za- mi w części cyfrowej.
Schemat zestawu testowego, mienić w nim miejscami końców- W e w s p o m n i a n y m p r z y -
który posłuży nam do testowa- ki 2 i 3. Rezonator kwarcowy X1 k ł a d z i e w o l t o m i e r z a c y -
nia wszystkich przykładów w dal- ma  okrągłą wartość 1,8432 MHz, f r o w e g o p r z e t w o r n i k A / C
szych częściach kursu, znajduje co pozwala uzyskać większość ty- będzie pracował z wewnętrznym na-
się na rys. 2. Jego sercem jest do- powych prędkości transmisji z ze- pięciem odniesienia równym (typo-
brze wszystkim znany mikrokontro- rowym (obliczanym) błędem bau- wo) 2,56 V  napięcie to występu-
ler ATmega8 firmy Atmel. Wybór drate. We wszystkich przykładach je na końcówce AREF. Jest ono fil-
tego właśnie mikrokontrolera po- w tym kursie wykorzystana bę- trowane przez kondensator C2 i sta-
dyktowany był faktem, że jest to dzie prędkość 19200 bodów i ram- nowi napięcie wejściowe dla po-
jeden z najmniejszych mikrokontro- ka w formacie 8N1 (8 bitów da- tencjometru PR1. Napięcie z suwa-
lerów serii ATmega, który ma  na nych, brak kontroli parzystości, 1 ka PR1 jest podawane poprzez filtr
pokładzie przetwornik analogowo bit STOP). Dodatkową zaletą dosyć R2C1 na wejście ADC0 przetwor-
 cyfrowy. Przetwornik ten wykorzy- niskiej częstotliwości pracy mikro- nika. Napięcie to będzie mierzone
stamy w ostatniej części cyklu do kontrolera jest redukcja pobierane- przez woltomierz, który zaprojektu-
realizacji woltomierza sterowane- go przez zestaw prądu. jemy w dalszej części kursu.
go przez port szeregowy. Sam wy- Diody LED D1 i D2 stanowią Zestaw testowy można zmon-
bór rodziny AVR Atmela był oczy- najprostszy interfejs wyjściowy  tować w dowolny sposób pamię-
wisty  są to wszak najpopular- rola przez nie pełniona będzie za- tając jedynie o rozdzieleniu mas
niejsze (jeszcze!) w Polsce mikro- leżna od funkcjonalności testowa- i ogólnych zasadach montażu ukła-
kontrolery i większość Czytelników nego przykładu. Elementy U3, C7... dów elektronicznych. Zamiast opi-
zna je co najmniej dobrze. Dzięki C9 tworzą typowy zasilacz stabili- sanego układu można oczywiście
temu będą oni mogli skupić swoją zowany zasilający część cyfrową użyć dowolnego zestawu laborato-
uwagę na zagadnieniu programo- napięciem 5 V. Para R1C3 wytwa- ryjnego dostępnego w handlu, by-
wania RS232C na PC, zaś szczegó- rza napięcie zasilające część ana- leby tylko miał on podobne moż-
ły oprogramowania części sprzęto- logową zestawu. Masy: analogowa liwości funkcjonalne jak opisa-
wej będą dla nich od początku do i cyfrowa są rozdzielone i łączą się ny powyżej (przetwornik A/C i in-
końca jasne. elektrycznie niedaleko punktu do- terfejs RS232C). Nie musi to być
Elektronika Praktyczna 4/2006
100
K U R S
nawet zestaw z mikrokontrolerem W tab. 10 zamieściłem konfigurację mowania mikrokontrolera należy
AVR. Oprogramowanie jest napisa- fusebit ów niezbędną do poprawnej zwrócić baczną uwagę na popraw-
ne w języku C i może być przenie- pracy procesora ATmega8 w opisy- ność tych ustawień, gdyż ich zmia-
sione na dowolny mikrokontroler, wanym zestawie. Podczas progra- na może uniemożliwić pracę syste-
do którego istnieje kompilator tego
języka. Oczywiście w takim przy-
padku trzeba będzie zmienić te
fragmenty programu, które są spe-
cyficzne dla danego układu (np.
konfiguracja modułu USART).
Oprogramowanie
mikrokontrolera
Oprogramowanie mikrokontrolera
U1 ATmega8 napisałem w języku C
używając popularnego kompilatora
GCC w wersji 2002 06 25 zintegro-
wanego z pakietem AVRStudio3.53.
Kod zródłowy jest na tyle krót-
ki, prosty i pozbawiony  wodotry-
sków , że można go z powodzeniem
skompilować za pomocą dowolnego
kompilatora C dla mikrokontrolerów
AVR  oczywiście po dokonaniu
stosownych (niewielkich) poprawek.
List. 5. Program testowy Example1.c
działający na mikrokontrolerze
//*******************************
// MAIN
//*******************************
int main(void)
{
unsigned char data,cou;
DDRB=0xFF;
DDRC=0x00;
DDRD=0xFE;
PORTC=0x00;
PORTD=0xFE;
Hello();
Init_UART();
while(1)
{
//Waiting for 1 byte
UCSRA&=~(1< while((UCSRA&(1< data=UDR;
if(data==0)
{
RED_OFF;
GREEN_OFF;
SendString(PSTR( ZERO ));
SendByte(13); SendByte(10);
}
else if(data==1)
{
RED_ON;
GREEN_OFF;
SendString(PSTR( ONE ));
SendByte(13); SendByte(10);
}
else if(data==2)
{
RED_OFF;
GREEN_ON;
SendString(PSTR( TWO ));
SendByte(13); SendByte(10);
}
else if(data==3)
{
RED_ON;
GREEN_ON;
SendString(PSTR( THREE ));
SendByte(13); SendByte(10);
}
else if(data==255)
{
cou=0;
while(1)
{
SendByte(cou);
if(++cou==0) break;
}
}
else
{
SendString(PSTR( FOUR OR MORE ));
SendByte(13); SendByte(10);
}
}
}
Rys. 2. Schemat zestawu testowego
Elektronika Praktyczna 4/2006
101
K U R S
mu! Podczas kursu będziemy wyko-
rzystywać dwa programy działające
na mikrokontrolerze U1. Pierwszym
z nich (opisanym niżej) jest prosty
system odpowiadający na pytania.
Program ten będzie wykorzystywa-
ny w dalszych częściach niniejsze-
go kursu. Drugą aplikacją jest opro-
gramowanie cyfrowego woltomie-
rza, którą wezmiemy na warsztat
w ostatniej części kursu.
Wszystkie przykłady oprogramo-
wania na PC (poza woltomierzem)
będą współpracować z prostym pro-
gramem Example1.c działającym
na mikrokontrolerze. Główna część
tego programu (funkcja main) zosta-
ła przedstawiona na list. 5 (pomi- Rys. 3. Okno terminala podczas testowania zestawu
nąłem inicjalizację modułu USART
i inne funkcje pomocnicze). Idea tej " Jeśli wartość bajta zapytania mie- włączeniu zasilania zestawu lub ze-
aplikacji polega na stworzeniu pro- ści się w granicach 0...3, to stan rowaniu mikrokontrolera. Rzecz ba-
stego systemu zdolnego odpowiadać diod odzwierciedla tę liczbę (D2 nalna, ale podczas pierwszego uru-
na zadawane mu proste pytania.  bit nr 1, D1  bit nr 0), zaś chomienia systemu pozwala zorien-
Taki system pozwoli w łatwy spo- wysyłana do PC ta odpowiedz tować się, czy zestaw daje jakiekol-
sób testować różne aplikacje dzia- stanowi nazwę tej wartości zapi- wiek  znaki życia .
łające na komputerze PC. saną wielkimi literami w języku
Sposób działania programu angielskim zakończoną sekwencją Testowanie zestawu
z list. 5 jest następujący: bajtów 0x0D i 0x0A. Na przykład Poprawnie zmontowany zestaw
1. Mikrokontroler czeka na 1 baj- otrzymanie bajta o wartości 1 działa od pierwszego włączenia i nie
towe zapytanie, które wysyła skutkuje wygaszeniem diody D2, wymaga żadnych czynności urucho-
komputer PC; zapaleniem D1 i wysłaniem odpo- mieniowych. Warto jednak przetesto-
2. Po otrzymaniu jednego bajta wiedzi  ONE +0x0D+0x0A. Dla wać go przed podjęciem prób współ-
mikrokontroler odpowiednio do bajta o wartości 3 zostaną zapalo- pracy z oprogramowaniem pracują-
jego wartości zapala diody D1 ne obie diody, a odpowiedzią bę- cym na PC. Do testów można użyć
i D2 oraz wysyła via RS232 sto- dzie  THREE +0x0D+0x0A. dowolnego terminala RS232C. Nale-
sowną odpowiedz. Odbywa się " Jeśli wartość bajta zapytania mie- ży w tym celu ustawić odpowiednie
to według następującej zasady: ści się w granicach 4...254, to parametry transmisji (19200, 8N1),
stan diod nie zmienia się, zaś a następnie wysyłać 1 bajtowe zapy-
wysyłana odpowiedz ma postać tania i sprawdzać czy w odpowiedzi
WYKAZ ELEMENTÓW
 FOUR OR MORE +0x0D+0x0A. wysyłane są poprawne ciągi znaków.
Rezystory
" Jeśli wartość bajta zapytania Na rys. 3 przedstawiłem przykłado-
R1: 10 V
wynosi 255, to stan diod nie wy test zestawu za pomocą termina-
R2: 100 V
zmienia się, zaś w odpowiedzi la wchodzącego w skład pakietu Ba-
R3, R4: 470 V
wysyłana jest sekwencja 256 scomAVR Demo, pracującego w sys-
Kondensatory
bajtów o wartościach 0...255. temie Windows.
C1: 10nF
Wywołanie funkcji powitania Arkadiusz Antoniak, EP
C2...C4, C7, C8, C14: 100 nF
Hello powoduje dwukrotne mignię- arkadiusz.antoniak@ep.com.pl
C5, C6: 33 pF
cie obiema diodami D1 i D2 tuż po www.antoniak.ep.com.pl
C9: 100 mF/16 V
C10...C13: 1...10 mF/16 V
Tab. 10. Ustawienia bezpieczników (fusebit) mikrokontrolera
Półprzewodniki
Fusebit Wartość
U1: ATmega8
BODLEVEL 1: BODLEVEL 2,7V
U2: MAX232
BODEN 0: BODEN enabled
Fusebit LOW
U3: 78L05
SUT1..0 01: fast rising power
D1: LED czerwona
CKSEL3..0 1101: Crystal oscillator
D2: LED zielona
S8515C 1: MEGA8515 mode
Inne
WDTON 1: Watchdog timer enabled by software
Kwarc: 1,8432 MHz
SPIEN 0: Serial programming enabled
JP1: złącze DB9F (kabel prosty) lub
Fusebit HIGH CKOPT 1: Oscillator option
DB9M (kabel z przeplotem)
JP2: goldpiny (złącze ISP) EESAVE 1: Erase EEPROM when chip erase
PR1: potencjometr 10 kV A z po-
BOOTSZ1..0 00: 1024 words boot size
krętłem
BOOTRST 1: Reset vector is $0000
Elektronika Praktyczna 4/2006
102


Wyszukiwarka

Podobne podstrony:
rs232 linux win32 cz6
rs232 linux win32 cz1
rs232 linux win32 cz8
rs232 linux win32 cz7
rs232 linux win32 cz3
rs232 linux win32 cz4
rs232 linux win32 cz5
nerki cz2
STM32 Butterfly RS232
Linux 2000 DVB T Experiments
linux kobiety
Fotogrametria cz12 teledetekcja cz2
compilar linux
Linux IPCHAINS HOWTO Appendix Differences between ipchains and ipfwadm
2 Formy org prawne cz2 14
ZIP przetworstwo tsz cz2
systemy operacyjne cw linux apache mysql

więcej podobnych podstron