Vyšší odborná škola, Střední škola, Centrum odborné přípravy, Sezimovo Ústí
Tvorba softwaru pro řadič sériové linky RS 232C – 4/1 s PIC16F88
Michal Janiš student 4.ročníku oboru Elektrotechnika – počítačové systémy
ŢÁKOVSKÝ PROJEKT - PRAKTICKÁ ČÁST MATURITNÍ ZKOUŠKY
Sezimovo Ústí 2010
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
2/ ANOTACE
Anotace Předmětem práce je tvorba softwaru pro řadič sériové linky RS 232C – 4/1 s PIC16F88 vytvořeného ţákem loňského maturitního ročníku Zdeňkem Greplem. Toto zařízení je vybaveno převodníky úrovní od firmy MAXIM pro čtyři kanály. Signál Tx od zařízení MASTER je přiveden na výstupy pro čtyři zařízení SLAVE nezávisle na mikroprocesoru. Čtyři signály Rx od zařízení SLAVE jsou přivedeny na vstupy mikropočítače. Komunikace se zařízením MASTER je řešena vestavěným modulem AUSART mikropočítače. Hlavní úlohou práce je navrhnout software pro PIC a oţivenou desku s hardwarem pro funkci řadiče sériové linky RS232C. Software musí umoţňovat příjem dat na jednotlivých kanálech. Následně tyto data řadit podle komunikačního protokolu sestávajícího z paketů o velikosti dva aţ osm bajtů a odeslat je nadřízenému systému tak, aby je dostával ve správném časovém sledu s jednotlivými bajty ve správném pořadí. Dalším úkolem je vytvořit dokumentaci programu v podobě strukturovaného vývojového diagramu a komentovaného zdrojového kódu a ověření činnosti softwaru prakticky s pakety různých délek o různé velikosti toku dat a zadokumentování zjištěných výsledků. Zařízení bude moţné vyuţít jako prvek ovládací robotické sítě, která je vyuţívána na naší škole nejen pro ovládání robotů, ale i pro výukové a prezentační účely v oblasti mikroprocesorové techniky.
3
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Annotation The subject of the work is to create software for the controller serial line RS 232C - 4 / 1 with PIC16F88 created student last year Baccalaureate Zdenek Grepl. This device is equipped with transmitters from the company level MAXIM for four channels. Tx signal from the master device is available at the outputs of four devices SLAVE independently of the microprocessor. Four signals from the Rx SLAVE device are connected to inputs microcomputer. Communication with the MASTER is solved AUSART built module of microcomputer. The main task of this work is to design software for the PIC board and an animated feature for the hardware controller RS232C serial line. Software must allow reception of data on individual channels. Subsequently, these data sort by communication protocol comprising a packet size of two to eight bytes and send them a superior system to receive it in the correct chronological sequence of individual bytes in the correct order. Another challenge is to create the program documentation in the form of a structured flowchart and commented source code and verify the operation of software with virtually packets of different lengths for different size data flow identified and documented results. The device can be used as an element of control robotic networks, which is used in our school not only for control of robots, but also for teaching and presentation purposes in the field of microprocessor technology.
4
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
3/ PROHLÁŠENÍ
Ţákovský projekt byl zpracován v rámci řádného ukončení 4.ročníku maturitního studia Elektrotechnika – počítačové systémy. Vedoucím práce byl Ing.Vladimír Čebiš, kterému tímto děkuji za odborné konzultace a cenné rady týkající se struktury i obsahu práce.
Zároveň děkuji jak vedení Vyšší odborné školy, Střední školy, Centra odborné přípravy, tak především pedagogům této školy panu Mgr. Miloši Blechovi , paní Mgr. Taťáně Horehleďové a PaedDr. Vladimíře Králové za pomoc při realizaci teoretické části ţákovského projektu. Prohlašuji, ţe jsem ţákovský projekt vypracoval samostatně za pouţití odborné literatury, která je citovaná v závěru práce.
V Sezimově Ústí 20. dubna 2010
Michal Janiš
5
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
4/ OBSAH 1/ ZADÁNÍ…………………………………………………………………………….. 1 2/ ANOTACE………………………………………………………………………….. 3 3/ PROHLÁŠENÍ …………………………………………………………………….. 5 4/ OBSAH
…………………………………………………………………………..
6
5/ ÚVOD
…………………………………………………………………………..
7
5.1. Moţnosti ovládání více prvků pomocí PC ……………………………….7 5.2. Pouţívaná řešení v technické praxi ………………………………………7 5.3. Historie řešení problému na naší škole …………………………………..7 6/ ANALÝZA INFORMAČNÍCH ZDROJŮ 6.1. 6.2. 6.3. 6.4.
……………………………….……… 10
Popis asynchronní komunikace …………………………………………..10 Jednočipový mikropočítač PIC16F88 ……………………………………12 Výchozí HW konstrukce Zdeňka Grepla ………………………………..17 Sada první generace Robovnice .................................................................21
7/ TEORETICKÝ ROZBOR …………………………………………………………24 7.1. Poţadavky na FW pro aktivní rozbočovač sériové linky pro čtyři výstupy ..................................................................................................................................24 7.2. Moţnosti řešení detekce 4 vstupů v HW konstrukci ……………………24 7.3. Vlastní řešení detekce vstupů …………………………………………….25 8/ VLASTNÍ ŘEŠENÍ ………………………………………………………………….29 8.1. Princip zvoleného řešení obsluhou od TMR0 ……………………………29 8.2. Vývojový diagram řídícího programu ……………………………………34 8.3. Návod pro obsluhu ………………………………………………………….37 8.4. Návod pro vytvoření uţivatelského programu …………………………...37 8.5. Návod pro připojeni HW jako spojovacího prvku mezi PC a ostatními zařízeními ………………………………………………………………………...37 9/ ZÁVĚR ……………………………………………………………………………….39 9.1. Shrnutí a zhodnocení výsledků ……………………………………………39 9.2. Doporučení pro další vyuţití ………………………………………………39 10/ SEZNAM LITERATURY ........................................................................................40 11/ PŘÍLOHY …………………………………………………………………………..41
6
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
5/ ÚVOD 5.1. Moţnosti ovládání více prvků pomocí PC Pro propojení dvou PC nebo mikropočítačů lze s výhodou pouţít sériovou linku. Je to jednoduché, spolehlivé, snadno diagnostikovatelné a jednoduše softwarově implementovatelné. Základní nevýhoda je v tom, ţe je moţné propojit jen 2 zařízení. Potřebujeme-li propojit 3 a více zařízení, musíme pouţít dodatečný HW např. rozbočovač. Nejjednodušší řešení je tzv. pasivní rozbočovač. Jedno zařízení MASTER můţe odesílat data na více zařízení SLAVE, a přijímat z těchto zařízení. Nevýhoda je v tom, ţe ţádné ze zařízení SLAVE nesmí vysílat současně na zařízení MASTER. 5.2. Pouţívaná řešení v technické praxi Vyšší komfort poskytuje řadič s mikropočítačem. Běţná dostupné jsou zařízení rozbočující 1 linku na (2,4,6) v cenách od 2000 Kč do 4000 Kč jaké je např. rozbočovač sériové linky nesoucí název ‚ SW232„.[6] Nevýhodou je kromě ceny nemoţnost zasahovat do FW. 5.3. Historie řešení problému na naší škole Mými předchůdci v řešení problematiky sériové linky RS-232 na naší škole byli v letech 06/07 Ondřej Kokeš a 08/09 Zdeněk Grepl. Kokešova práce se zabývá výrobou HW a SW pro školní povelovou síť. Robo-COP. Částí jeho projektu byl návrh a výroba pasivního rozbočovače sériové linky. Dále Kokeš vytvořil návrh rozbočovače aktivního. Grepl v Kokešově práci pokračoval a realizoval konstrukci aktivního rozbočovače na DPS. Moje práce na toto navazuje a zabývá se tvorbou softwaru pro aktivní rozbočovač sériové linky RS232C vytvořený Greplem. K dispozici jsem měl jen základní oţivovací SW pro demonstraci funkčnosti HW.
7
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Vymezení základních pojmů a klíčových slov, s kterými projekt operuje: RoboCOP – školní výuková síť RS232 CANNON9 – konektor používaný jako rozhraní sériové linky AMPHENOL9 – totožný s CANNON9 MASTER – zařízení, které ovládá ostatní zařízení SLAVE – zařízení, které je ovládáno PICKIT2 – programátor pro procesory PIC BUFFER – paměť EAGLE 4.16 – program pro tvorbu elektrotechnických schémat firmy CADsoft Firmware – hlavní ovládací program zařízení Oživovací program – program sloužící pro diagnostické účely PC – programový čítač (program counter), který obsahuje adresu instrukce, která se bude vykonávat v následujícím cyklu instrukcí IR – instrukční registr, který obsahuje operační k kód instrukce po celou dobu jejího vykonávání Procesor – složitý logický sekvenční obvod, který vykonává podle programu operace s daty Data – lineární hodnoty např.: 1 bajt (0-255) Program – seřazená množina instrukcí, která řeší určitou úlohu Reset – znovu nastavení Instrukční cyklus – doba, za kterou je vykonána 1 instrukce ( jedno čtení OK z PP) Takt – doba periody taktovacího oscilátoru Střadač – slouží jako jeden z operandů nebo pro krátkodobé uložení výsledků Instrukční sada (Instrukční soubor) – množina všech instrukcí, které je procesor schopen vykonat Paměť – slouží k zápisu, uchování a čtení dat Start bit – začíná jím asynchronní přenos dat Stop bit – ukončuje přenos dat, má definovanou pouze minimální délku jednoho datového bitu
8
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Seznam zkratek, s kterými práce operuje: SMD – součástky pro povrchovou montáž PIC – jednočipový mikropočítač od firmy Microchip USA MAX – převodník pro sériovou linku firmy MAXIM SW – software COP – Centrum odborné přípravy DPS – deska plošného spoje RS232 – označení sériové linky TTL – forma napěťové logiky PIC16F88 - mikropočítač firmy Microchip MAX232 – převodní sériové linky MAXIM, 2xpřijímač, 2x vysílač MAX1489 – převodník sériové linky firmy MAXIM, 4x přijímač PC – osobní počítač(personal computer) architektury IBM-PC HW – fyzická část zařízení, z anglického slova hardware ICSP – protokol firmy MICROCHIP pro programování mikropočítačů OK – operační kód PP – paměť programu OSC – taktovací oscilátor INT – přerušovací systém SFR – specielní funkční registry TMR – čítač/časovač PORT – brána AUSART – adresovatelný univerzální synchronní asynchronní přijímač vysílač IO – integrovaný obvod FW – firmware LSB – nejméně významný bit (least significant bit), určuje lichost nebo sudost čísla MSB – nejvíce významný bit (most significant bit), bit s nejvyšší hodnotou IO – integrovaný obvod
9
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
6/ ANALÝZA INFORMAČNÍCH ZDROJŮ 6.1. Popis asynchronní komunikace Základní tvar při asynchronním přenosu dat začíná start bitem. Po něm následuje osm nebo sedm datových bitů vysílaných od LSB po MSB. Jako poslední je vysílán stop bit. Tento stop bit musí být dlouhý nejméně jako datový bit. Přenos dalšího slova je opět zahájen start bitem. O asynchronní přenos jde proto, ţe stop bit má definovanou pouze minimální délku,tak ţe můţe být i mnohem delší. Přenos kaţdého slova je synchronizován, a tedy i zahájen start bitem. [5]
Obrázek č.1
Obr. 6.1.1 Asynchronní přenos osmi bitů fat po SCI bez parity, jeden stop bit. Délka start bitu a datového bitu se určí z poţadované přenosové rychlosti následovně: doba trvání bitu (s) = 1/přenosová rychlost (Bd) [5] Přenosová rychlost se udává v Bd „baudech“ (počet bitů za sekundu). Neshoduje se však s počtem přenesených datových bitů za sekundu, protoţe je přenášen navíc start bit a stop bit. [5]
10
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Standardně jsou pouţívány přenosové rychlosti při asynchronní komunikaci 0,3; 1,2; 2,4; 4,8; 9,6; 19,2; 38,4; … ; Přenos probíhá po jednom vodiči (nepočítáme-li společný vodič, tedy zem). Vysílací strana je označována TD (TxD – tansmit data) a přijímací strana RD (RxD – recieve data). Kaţdé zařízení, které má tedy komunikovat obousměrně, má samostatný vysílač a přijímač. Připojení k počítači PC je prostřednictvím rozhraní RS232C. Toto rozhraní je určeno pro připojení modemu a můţe pouţívat ještě jiné signály neţ jen TxD a RxD. Do vzdálenosti 15m však lze pouţívat připojení jako „nulový modem”, a tedy pouze dva datové vodiče plus signálovou zem (SG – signal ground). [5] SG
SG
TxD
TxD
RxD
RxD
RTS
RTS
CTS
CTS
DSR
DSR
DTR
DTR
DCD
DCD
Obr. 6.1.2 Propojení dvou počítačů „třídrátově“
Signál SG TD RD RTS CTS DSR DTR DCD
Canon 25 pin 7 2 3 4 5 6 20 8
Canon 29 pin 5 3 2 7 8 6 4 1
Tab. 6.1.1 Obsazení vývodů standardního rozhraní RS232C
11
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
6.2. Jednočipový mikropočítač PIC16F88 Jednočipový mikropočítač je zařízení umístěné v jediném pouzdře IO. Pro svou činnost obvykle vyţaduje pouze připojení napájecího napětí. Vnitřní taktovací oscilátor lze programově nastavit na 8 různých hodnot od 31,25 kHz do 8 Mhz. Vnitřní oscilátor můţe být konfigurován jako primární nebo sekundární zdroj taktovací frekvence.
Obr.6.2.1. Zapojení vývodů mikropočítače PIC16F88 Mikropočítač
Paměť programu typu Flash
Paměť dat typu RWM
Paměť typu EEPROM
PIC16F88
4K x 14
368 x 8
256 x 8
Tab.6.2.1. Dostupný paměťový prostor v mikropočítači PIC16F88 Uţivatel má k dispozici celkem 16 vývodů, které můţe konfigurovat podle potřeby. Řada vývodů je pouţita pro několik různých periferií. Jedná se o následující periferní funkce: Přerušení změnou na bráně PortB Vstup čítače/časovače Timer0 Moţnost pouţití externího taktovacího oscilátoru Dva analogové komparátory AUSART [1]
12
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Blokové schema mikropočítače PIC:
13
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Popis vývodů mikropočítače PIC: Název vývodu
RBO/INT/CCPI (5)
Číslo vývodu pouzdra PDIP a SOIC
Číslo vývodu pouzdra SSOP
Číslo vývodu pouzdra QFN
6
7
7
RBO INT
Směr vstupně výstupního vývodu
Druh vstupu
I/O
TTL
Popis (PORTB je obousměrná vstupně výstupní brána. Na vstupech je možné softwarově zapojit odpory pull-up pro přidržení nezapojeného vývodu ve stavu log.1)
Digitální vstup/výstup Vnější přerušení
I
ST(1)
I/O
ST
Vstup Capture, výstup Compare, výstup PWM
RB1
I/O
TTL
Digitální vstup/výstup
SDI
I
ST
Vstup dat v režimu SPI
I/O
ST
Vstup dat v režimu I2C
RB2
I/O
TTL
Digitální vstup/výstup
SDO
O
ST
Výstup dat v režimu SPI
CCP1 RB1/SDI/SDA
7
8
8
SDA RB2/SDO/RX/DT
8
9
9
RX
I
DT
I/O
RB3/PGM/CCP1(5)
9
10
Příjem dat v režimu asynchronní AUSART Detekce synchroního AUSART
10
RB2
I/O
TTL
Digitální vstup/výstup
PGM
I/O
ST
Povolení programování v režimu s nízkým napájením
I
ST
Vstup Capture, výstup Compare, výstup PWM
RB4
I/O
TTL
Digitální vstup/výstup
SCK
I/O
ST
Hodinový signál v režimu SPI (vstup/výstup)
SCL
I
ST
Hodinový signál v režimu I2C (vstup)
CCPI RB4/SCK/SCL
RB5/SS/TX/CK
10
11
11
12
12
13 I/O
TTL
Digitální vstup/výstup
SS
I
TTL
Vstup Select v režimu SPI Slave
TX
O
Vysílání dat v režimu asynchronní AUSART
I/O
Hodinový signál v režimu synchornní AUSART
RB5
CK RB6/AN5/PGC/T1OSO/T1CKI
12
13
15
RB6
I/O
AN5(4)
TTL
Digitální vstup/výstup Analogový vstup č. 5
I
Ladění v aplikaci a vstup hodinového signálu ICSP
PGC
I/O
ST(2)
T1OSO
O
ST
Výstup čítače/časovače Timer1
T1CKI
I
ST
Vnější vstup čítače/časovače Timer1
I/O□
TTL
Digitální vstup/výstup
RB7/AN6/PGD/T1OSI
13
14
16
RB7
Analogový vstup č. 6
AN6(4)
I
PGD
I
ST(2)
T1OSI
I
ST
Vstup osciálátoru čítače/časovače Timer1
Ladění v aplikaci a vstup datového signálu ICSP
VSS
5
5, 6
3, 5
P
―
Napájecí a signálová zem
VDD
14
15, 16
17, 19
P
―
Kladné napájecí napětí
14
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Popis vývodů mikropočítače PIC (pokračování): Číslo vývodu pouzdra PDIP a SOIC
Číslo vývodu pouzdra SSOP
Číslo vývodu pouzdra QFN
17
19
23
Směr vstupně výstupního vývodu
Druh vstupu
RA0
I/O
TTL
Digitální vstup/výstup
AN0
I
Analog
Analogový vstup č. 0
Název vývodu
RA0/AN0
18
RA1/AN1
20
Popis (PORTA je obousměrná vstupně výstupní brána)
24
RA1
I/O
TTL
Digitální vstup/výstup
AN1
I
Analog
Analogový vstup č. 1
RA2/AN2/CVREF/VREF-
1
1
26
RA2
I/O
TTL
Digitální vstup/výstup
AN2
I
Analog
Analogový vstup č. 2
CVREF
O
VREF -
I
(4)
RA3/AN3/ VREF+/C1OUT
2
2
Analog
27
RA3
I/O
TTL
AN3
I
Analog
VREF + (4)
I
Analog
O
C1OUT RA4/AN4/T0CKI/C2OUT
3
3
Výstup napěťové reference komparátoru Vstup dolního referenčního napětí pro AD převodník
Digitální vstup/výstup Analogový vstup č. 3 Vstup horního referenčního napětí pro AD převodník Výstup komparátoru č. 1
28
RA4
I/O
ST
Digitální vstup/výstup
AN4
I
Analog
Analagový vsutp č. 4
T0CKI
I
ST
C2OUT
O
RA/MCLR/VPP
4
4
Vnější pro čítač/časovač Timer0 výstup komparátoru č. 2
1 I
ST
O
ST
P
—
Vstup programovacího napětí
RA6
I/O
ST
Digitální vstup/výstup
OSC2
O
—
Výstup taktovacího oscilátoru.
CLKO
O
—
RA MCLR
Digitální vstup Vstup signálu reset nebo vstup programovacího napětí Signál reset je aktivní v log.0.
VPP RA6/OSC2/CLKO
15
17
20
Připojuje se ke krystalu nebo rezonátoru. V konfiguraci RC je na vývodu přítomna taktovací frekvence dělená čtyřmi, jejíž perioada odpovídá jednomu instrukčnímu cyklu RA7/OSC1/CLKI RA7 OSC1 CLKI
16
18
21 I/O
ST ST/CMOS
I
(3)
—
I
15
Digitální vstup/výstup Vstup krystalového oscilátoru Vstup vnějšího taktovacího signálu
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
6.2.1. Organizace paměťového prostoru Mikropočítač PIC16F88 má tři oddělené bloky paměti, paměť programu, paměť dat RWM a paměť dat EEPROM. Paměť programu a paměť dat RWM pouţívají oddělené sběrnice. To umoţňuje současný nezávislý přístup do obou pamětí. Paměť programu, paměť dat RWM a paměť dat typu EEPROM jsou popsány níţe.
6.2.2. Organizace paměti programu Mikropočítač PIC16F88 má 13-bitový programový čítač PC, který umoţňuje adresování celkově 8192 buněk, kdyţ kaţdá buňka obsahuje instrukční kód o délce 14 bitů. Mikropočítače mají fyzicky implementovanou paměť v rozsahu 0000h – 0FFFh, tedy pouze 4096 buněk. Adresování buněk na vyšších neţ fyzicky implementovaných adresách způsobí přetečení programového čítače PC. V praxi to znamená, ţe na adrese 020h a 1020h nalezneme tutéţ paměťovou buňku. Zahájení programu po signálu reset je na adrese 000h (vektor resetu). Obsluha přerušení začíná na adrese 0004h (vektor přerušení).[1]
Obr. 6.2.2. Mapa paměti programu a zásobníku PIC16F88
16
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
6.2.3. Organizace paměti dat Paměť dat je rozdělena na dvě oblasti. První tvoří speciální funkční registry (SFR), druhou paměť pro všeobecné pouţití (RWM). Pomocí SFR lze řídit veškerou činnost mikropočítače. Paměť je fyzicky rozdělena do čtyř bank, z nichţ kaţdá má celkem 128 adresovatelných buněk. Kaţdá buňka představuje jeden bajt (8 bitů). Volba banky se provádí nastavením nebo nulováním příslušných bitů v registru STATUS.
6.3. Výchozí HW konstrukce Zdeňka Grepla Konstrukce navrhnutá a vyrobená Zdeňkem Greplem umoţňuje k jednomu zařízení MASTER připojit aţ čtyři zařízení SLAVE. Přenášeny jsou signály TxD a RxD. Zařízení je napájeno stejnosměrným napětím 8-12V, jehoţ přítomnost je signalizována modrou LED. Napájecí napětí 12V je vyvedeno na vývod č.1 konektorů CANNON9, takţe je moţno rozbočovačem napájet další zařízení, případně samotný rozbočovač můţe být napájen pouze přes AMPHENOL9 konektor. Dále zařízení obsahuje dvě tlačítka a indikační oranţovou LED, jejichţ činnost lze programově definovat. U kaţdého z pěti konektorů AMHENOL9 jsou dvě indikační LED, zelená(TxD) a červená(RxD). Pouţitý mikropočítač PIC16F88 lze programovat v aplikaci přes instalovaný ICSP programovací konektor pro programátor PICKIT2 firmy Microchip. Lze jej tedy pohodlně programovat bez nutnosti vyjmutí mikropočítače z patice. [4]
Obr. 6.3.1. HW konstrukce Zdeňka Grepla
17
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
6.3.1. Princip řešení Aktivního rozbočovače Zdeňka Grepla Základem Greplovy konstrukce je jednočipový mikropočítač PIC16F88, který provádí samotné operace s posílanými bajty. Protoţe PIC pracuje s TTL logikou(log.1 = 5V, log.0 = 0V) a linka RS232 s takzvanými „linkovými“ úrovněmi signálu(log.1 = -15V, log.0 = +15V), je potřeba tyto úrovně mezi sebou převádět. K tomu slouţí dva převodníky firmy MAXIM: MAX1489ECPD a MAX232C. Obvod MAX1489ECPD obsahuje v jednom pouzdře čtyři přijímače (převodníky linkové úrovně na TTL logiku) – ten je pouţit k převodu signálu z linkové úrovně pro PIC od zařízení SLAVE. Obvod MAX232CPE obsahuje dva linkové přijímače a dva linkové vysílače. Pouţit je jen jeden vysílač(TTL -> linka) a dva přijímače(linka -> TTL). Vysílání zařízení MASTER (TxD) je připojeno přes linkový zesilovač a ochranné odpory 100R na všechny čtyři vysílací vývody pro zařízení SLAVE(RxD). Při tomto pouţití se mikropočítač PIC do přenosu nijak nezapojuje a pouze sleduje, co se na lince děje. V opačném případě, kdy vysílá zařízení SLAVE, musí být linkový signál nejdříve převeden převodníkem MAX1489ECPD na TTL úroveň, potom vyslaný bajt zpracuje PIC a odesílá ho na TTL úrovni do převodníku MAX232CPE, ten ho převede zpět na linkovou úroveň, která je jiţ pro zařízení MASTER srozumitelná..
Obr. 5.3.2. Blokové schéma aktivního rozbočovače z 1 zařízení MASTER na 4 zařízeni SLAVE
18
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Schéma zapojení:
19
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Blokové schéma přijmu bajtu od zařízení MASTER a SLAVE:
20
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
6.4. Sada první generace Robovnice Sada první generace je určena jako výuková stavebnice pro konstrukci jednoduchého robotu. Obsahuje celkem 4 desky: Ovládací, Řídící, Napájecí a Univerzální. Všechny desky jsou řešeny jako stavebnice z klasických součástek na desce stejné velikosti. Osazené mikropočítače lze programovat na desce pomocí ICSP rozhraní programátorem PICkit firmy Microchip. Lze vytvářet různé typy robotů. Všechny desky kromě Napájecí pouţívají mikropočítač PIC16F886, DIP28, vyuţitelných 25 vývodů. Kaţdý mikropočítač je vybaven firmware Robovnice, který umoţňuje komunikovat po sériové lince podle protokolu Robovnice a zavádět uţivatelský sw pomocí sériové linky. Pro stavbu robotů není nutné umět programovat PIC. Součástí sady jsou propojovací kabely pro napájení a sériovou linku. Kabely pro připojení čidel a silových prvků nejsou zahrnuty do sady. Napájení 6– 15 V ss , indikace modrá LED 3 mm. Sériová linka mezi deskami je propojena trojţilovým plochým kabelem, kříţeným, prostřední vodič je zem. Konektor je vybaven zámkem proti přepólování. Napěťové úrovně jsou linkové (+/- 10 V), délka kabelů můţe být do 10 metrů. Pro připojení k PC je k dispozici kabel s koncovkou COM1 ( Amphenol 9 pin - zdířky). Kabel se stejnou koncovkou s kolíky je určen pro aplikace, kde je deska Řízení pouţita místo PC. Všechny montáţní otvory jsou v rastru 10x10 mm o průměru 3,2 mm. Rastr je kompatibilní se stavebnicí Merkur. Spojovací materiál jsou běţné šroubky, distanční sloupky a závitové tyče M3. Základní filozofií stavebnice je otevřenost celého systému, který je moţné pouţít společně s běţně dostupným materiálem pro stavbu vlastních robotů.
21
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Popis základních desek Robovnice: HW 1. Napájecí Poskytuje napájecí napětí 6 V pomocí pěti tuţkových dobíjecích článků pro 4 další desky. Obsahuje hlavní vypínač a indikaci napětí 6 – 15 V ( modrá LED 3mm). Obsahuje pasivní rozbočovač sériové linky pro mastera a čtyři slave. Umoţňuje dobíjení článků pomocí externího zdroje. HW 2. Ovládací Můţe být pouţita jako indikační panel se zvukovou signalizací, jako řídící jednotka robota realizující řídící algoritmus nebo jako ovládač sítě ( obdoba programů Odpovídač a Správce povelů na PC) 8 tlačítek 6x7 segmentový displej Pizzo reproduktor Sériový port s 2xLED pro TxD a RxD Prozváněcí tlačítko ( vysílá na TxD bez povelu z nadřízeného systému) HW 3. Řídící Slouţí k připojení silových prvků robotu a jejich řízení. Lze připojit 4 sériové motory a ovládat směr otáčení a otáčky pomocí PWM a 4 servomechanismy. Lze snímat otáčky, úhel nastavení, sepnutí koncových spínačů nebo další provozní veličiny silových prvků. Desku lze pouţít i jako programovatelný automat bez připojování dalších desek. Ovládání polarity 2 výstupů s moţností PWM Spínání nebo PWM na dalších 2 výstupech Ovládání 4 modelářských servomechanismů 4 univerzální digitální vstupy s napájením 4 univerzální analogové vstupy s napájením 2 potenciometry pro nastavení hodnot Sériový port s 2xLED pro TxD a RxD Prozváněcí tlačítko ( vysílá na TxD bez povelu z nadřízeného systému) HW 4. Univerzální Umoţňuje na univerzální motiv plošného spoje zapojit libovolnou aplikaci podle představ uţivatele. Je připojená jen sériová linka a prozváněcí tlačítko ( reset). 2xLED pro TxD a RxD Prozváněcí tlačítko ( vysílá na TxD bez povelu z nadřízeného systému) [3]
22
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Stavebnice Robovnice:
Obr.6.4.1. Stavebnice Robovnice (1.vlevo Napájecí deska,2. Řídící deska, 3.Ovládací deska, 4. Universální deska)
23
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
7/ TEORETICKÝ ROZBOR 7.1. Poţadavky na FW pro aktivní rozbočovač sériové linky pro čtyři výstupy SW řadiče by měl sestávat ze 2 částí.: 1. část: Firmware zajistí obsluhu 4 kanálů sériové linky a bude fungovat nezávisle na uţivatelském programu. Poběţí na pozadí jako 4 násobný přijímač modulu AUSART. 2. část: uţivatelský SW poběţí bez moţnosti vyuţívat přerušení a bude realizovat protokol podle potřeby uţivatele.
7.2. Moţnosti řešení detekce 4 vstupů v HW konstrukci Detekce 4 nezávislých vstupů u µP PIC16F88 je časově kritická, pravidelně se opakující obsluha a je nutné ji řešit pomocí přerušení, jinak by detekce signálu zabrala veškerý výpočetní výkon µP. Moţnosti řešení detekce pomocí přerušení jsou tři.: První z nich je přerušení vyvolané změnou hodnoty na jednom ze čtyř vyšších bitů brány PortB a to je vyvolané příznakem RBIF v registru INTCON. Tuto moţnost, ale Greplova HW konstrukce neumoţňuje, protoţe všechny 4 linky jsou připojeny k mikropočítači přes bránu PortA. Určitým kompromisem pro 2 kanály by mohlo být vyuţití modulu komparátoru, který by mohl vyvolat přerušení při změně hodnoty na 1 ze 2 vstupů. Toto řešení je nekoncepční, protoţe neumoţňuje rozšíření na 4 linky. Mikropočítač PIC má jen 2 komparátory. Při pouţití této moţnosti by se obsluha přerušení vykonala při změně hodnoty na vstupu stejně jako u přerušení vyvolaného změnou hodnoty na jednom ze čtyř vyšších bitů brány PortB. Další moţnost detekce je pomocí přerušení vyvolaného přetečením jednoho z časovačů a to buďto TMR0 nebo TMR1. V tomto případě nesmí obsluha detekce stavu příjmu bajtu trvat déle neţ dojde k dalšímu přerušení od časovače. Jde o pravidelné skenování hodnoty na vstupu. Toto řešení jsem zvolil já a realizuji ho pomocí přerušení od přetečení časovače TMR0.
24
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
7.3. Vlastní řešení detekce vstupů Zvolil jsem detekci prováděnou pravidelně v rámci obsluhy přerušení od přetečení čítače TMR0 v periodě 1 za 26µs tedy kaţdých 52 instrukcí při taktovací frekvenci 8MHz. Základem činnosti mého programu je detekce logické úrovně na vstupu a zpracování zjištěné hodnoty v závislosti na stavu daného kanálu. Doba přenosu 1 bitu je závislá na přenosové rychlosti. Při rychlosti 9600 Bd trvá přenos jednoho bitu 104 µs. Počet vzorků na 1 bit musí být celé číslo. Vzhledem k synchronizaci START bitem a nastavení detekce uprostřed bitu se musí jednat o číslo sudé.Připadají v úvahu hodnoty 2,4,6,8 atd.: Hodnota 2 je výhodná z hlediska SW obsluhy detekce vstupu a jeho zpracování, protoţe mezi detekcemi zbývá dostatek času a to 52µs. Při taktovací frekvenci 8MHz by to znamenalo 104 instrukcí. Tuto hodnotu jsem nepouţil, protoţe by docházelo k velké chybě detekce. Okamţik detekce by mohl být aţ o 50% délky bitu posunut oproti poţadované hodnotě. Hodnota 4 je optimální, protoţe při detekci dochází k přijatelné chybě (25% délky bitu) a doba mezi detekcemi je dostatečně dlouhá pro SW obsluhu detekce vstupu a jeho následného vyhodnocení. Tato doba je 26µs, která se rovná vykonání 52 instrukci při frekvenci 8Mhz. Při pouţití hodnoty 6 by chyba detekce byla malá (16,7%). Šlo by detekovat vstup dvakrát v místě platnosti logické úrovně, ale mezi detekcemi by nezbývalo dostatek času na SW obsluhu detekce vstupu a jeho zpracování při taktovací frekvenci 8MHz. Při této frekvenci by doba mezi detekcemi trvala 17,3µs a to by odpovídalo 34,6 instrukcí. Šlo by obslouţit pouze jednu linku a to je zbytečné, protoţe na obsluhu 1 linky lze pouţít samotný modul AUSART. Mikropočítač PIC větší frekvenci vnitřního taktovacího oscilátoru neposkytuje, a proto by se musel pouţít externí taktovací oscilátor s frekvencí 12MHz. Dvě detekované hodnoty by se museli mezi sebou vyhodnotit pomocí některé z logických funkcí. To by samozřejmě vyţadovalo větší SW náročnost, výhodou by bylo rozpoznání moţné chyby v přenosu bajtu.
25
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Hodnota 8 by umoţňovala detekci platné úrovně třikrát za jeden bit podobně jako u modulu AUSART. Chyba detekce by byla velmi malá (12,5%). Mezi detekcemi by trvala doba 13µs a to by odpovídalo 26 instrukcím při frekvenci 8Mhz. Musel by se pouţít externí taktovací oscilátor s frekvencí minimálně 16MHz. Vyhodnocení hodnot by se provádělo podobně jako u hodnoty 6, ale vyţadovalo by ještě větší SW náročnost a odfiltrování chybných bajtů by bylo přesnější. Výpočet doby vykonání 1 instrukce: f = 8MHz 1 instrukční cyklus trvá 4 takty taktovacího oscilátoru
1 f
T
1 8 106
4 5 107
0,5[ s]
Doba přenosu 1 bitu při přenosové rychlosti 9600 Bd je přibliţně 104µs. Výpočet doby přenosu 1 bitu:
U [V]
doba
1 1 rychlost 9600
104[ s]
1040µs 104µs
+5V
START
b0
b1
b2
b3
b4
b5
+0V
b6
b7
STOP
t [µs]
Obr. 7.2.1. Doba asynchronního přenosu 1 bajtu a bitu 26
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Výpočet periody detekce při 4 detekcí: DOBA_PRENOSU = Doba přenosu 1 bitu = 104µs při rychlosti 9600Bd POCETvz = Počet vzorků na 1 bit = 4
DOBA _ PRENOSU POCETvz
104 4
26 s
U [V]
Tvz
Tvz
+5V
START bit
b0
b1
b2
b3 b4
b5
b6
b7
1
0
1
0
0
1
0
+0V
1
STOP bit
t [µs]
Obr. 7.3.1. Pravidelné vzorkování signálu na vstupu ( TTL úroveň přijmu bajtu 0x55)
27
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Současné uloţení hodnoty 4 vstupů detekce detekce START bitu
26µs platné data okamţik detekce
+5V
chyba detekce chyba detekce
START
b
b0
Obr. 7.3.2. Detail periody detekce 1 za 26µs (Chyba detekce je doba posunutí detekce oproti poţadované hodnotě)
Současné uloţení hodnoty 4 vstupů detekce n
detekce n + 1
104µs 26µs
+5V
10 20 30 40 50 0
52 instrukcí při taktu 8MHz
START
Obr. 7.3.3. Detail vzorkování 1 bitu 28
detekce n + 2
detekce n e1
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
8/ VLASTNÍ ŘEŠENÍ 8.1. Princip zvoleného řešení obsluhou přerušení od TMR0 Na kaţdém ze čtyř kanálů je třeba detekovat následující signál: Je třeba zajistit pravidelné vzorkování synchronizované START bitem na kaţdém kanálu. Doba vykonání 1 instrukce trvá 0,5µs při taktu 8MHz vnitřního taktovacího oscilátoru.
Při detekci logické úrovně na kaţdém vstupu není činnost vţdy stejná. Závisí na tom v jakém stavu příjmu bajtu se nacházíme na konkrétní lince. Můţe se jednat o 1 z následujících případů:
1) STOP - linka je v log. 1, nachází se ve stavu STOP bitu 2) START – změna signálu na lince v hodnotu log. 0, zahájení přenosu dat 3) PŘENOS – čekání na detekci bitu – není vhodný okamţik pro čtení bitu, data nejsou platná 4) PŘENOS- detekce bitu – načtení bitu, v tento okamţik je platná logická úroveň na lince 5) PŘENOS – čekání na STOP bit – pokud je v tento okamţik linka v úrovni Log. 1 ukončilo se vysílání jednoho bajtu na linku, jestliţe je úroveň linky v log.0 nastala chyba přenosu bajtu ( buď je pouţita jiná přenosová rychlost nebo námi detekovaný START bit nebyl skutečným START bitem).
29
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Vývojový diagram FW (obsluha 1.kanálu): INT TIMER0 = DALŠÍ PŘERUŠENÍ za 26 µs µLINKA3 sNAČTI VŠECHNY 4 VSTUPY NAČTI VŠECHNY 4 VSTUPY
Celkem 99 instr. OBSLUHA 1 KANÁLU
LINKA1
RETFIE
LINKA1 PŘESUŇ HODNOTU 1. KANÁLU DO C
+
_
je STOP1 =1?
POCSKE1 = POCKSE1 - 1
_
je VSTUP1 =0?
+
je POSKE1 =0?
OBSLUHA 1 KANÁLU
+ POCBIT1 = POCBIT1 - 1
STOP1 = 0
POCBIT1 = 0
je POCBIT1 =0?
+ POCSKE1 = 0
+
je VSTUP =1?
_
STOP1 = 1
STOP1 = 0
TxERRy1 = 1
RETFIE
30
NAROTUJ VSTUP DO BITBUF1
POCSKE1 = 4
BITBUF1 = BUF1
TxBUFy1 = 1
_
_
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Vývojové diagramy FW (obsluhy 1 – 4 linek): Pro 1 linku:
Pro 2 linky: INT
INT
TIMER0 = DALŠÍ PŘERUŠENÍ za 26 µs µLINKA3 sNAČTI VŠECHNY 4 VSTUPY NAČTI VŠECHNY 4 VSTUPY
TIMER0 = DALŠÍ PŘERUŠENÍ za 26 µs µLINKA3 sNAČTI VŠECHNY 4 VSTUPY NAČTI VŠECHNY 4 VSTUPY
Celkem 99 instr. OBSLUHA 1 LINKY
Celkem 99 instr.
LINKA1
LINKA1
OBSLUHA 2 LINEK RETFIE
LINKA2
Celkem 33 instrukcí
RETFIE
Celkem 66 instrukcí Pro 3 linky:
Pro 4 linky: INT
INT
TIMER0 = DALŠÍ PŘERUŠENÍ za 26 µs µLINKA3 sNAČTI VŠECHNY 4 VSTUPY NAČTI VŠECHNY 4 VSTUPY
TIMER0 = DALŠÍ PŘERUŠENÍ za 26 µs µLINKA3 sNAČTI VŠECHNY 4 VSTUPY NAČTI VŠECHNY 4 VSTUPY
Celkem 99 instr.
Celkem 99 instr.
LINKA1
OBSLUHA 3 LINEK
LINKA1
LINKA2
LINKA2
OBSLUHA 4 LINEK LINKA3
LINKA3
RETFIE
LINKA4
Celkem 99 instrukcí
RETFIE
Celkem 132 instrukcí
Jsou uváděny počty instrukcí při průchodu vţdy tou nejdelší cestou.
31
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Přehled pouţitých specielních funkčních registrů PIC (SFR): Adresa
Název
01h
TMR0
03h 05h 0Bh
Nabývá hodnot
Popis 8 - bitový čítač/časovač Timer0
0 - 255
STATUS
obsahuje aritmetické příznaky, příznaky resetu a bity výběru banky v paměti RWM
0 - 255
PORTA
záchytný registr brány PortA
0 - 255
INTCON
obsahuje bity pro práci s přerušovacím systémem mikropočítače
0 - 255
Registr STATUS: R/W-0
R/W-0
R/W-0
R-1
R-1
R/W-x
R/W-x
R/W-x
IRP
RP1
RP0
T0
PD
Z
DC
C
bit7
bit0
bit7 - 1
IRP:DC: nevyužíváno programem
bit0
C: příznak přenosu/výpůjčky ( pro instrukce ADDWF, ADDLW, SUBWF,SUBWF,SUBLW) ADDWF (ADDLW): 1 = nastal přenos (přetečení přes hodnotu 255) 0 = nastal přenos z bitu b7 do bitu b8 výsledku aritmetické operace SUBWF (SUBLW): 1 = nenastala výpůjčka (podtečení pod hodnotu 0) 0 = nastala výpůjčka z bitu b8 do bitu b7 výsledku aritmetické operace
Význam: R = bit pro čtení
W = bit pro zápis
' 0 ' = bit je v nule
- n = hodnota po resetu POR
' 1 ' = bit je nastaven
x = hodnota bitu je neznámá
Registr INTCON: R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-x
GIE
PEIE
TMR0IE
INT0E
RBIE
TMR0IF
INTF
RBIF
bit7
bit7
bit0
GIE: globální povolení přerušení 1 = povolena všechna nemaskovaná přerušení 0 = zakázána všechna přerušení
bit6
PEIE: nevyužíváno programem
bit5
TMR0IE: povolení přerušení od čítače/časovače Timer0 (maska) 1 = povoleno přerušení přetečením Timer0 0 = zakázáno (maskováno) přerušení přetečením Timer0
bit4 - 3
INT0E:RBIE: nevyužíváno programem
bit2
TMR0IF: příznak přerušení od čítače/časovače Timer0 1 = došlo k přetečení registru TMR0 (nutno nulovat programově) 0 = nedošlo k přetečení registru TMR0
bit1 - 0
INTF:RBIF: nevyužíváno programem
Význam: R = bit pro čtení
W = bit pro zápis
' 0 ' = bit je v nule
- n = hodnota po resetu POR
' 1 ' = bit je nastaven
x = hodnota bitu je neznámá
32
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Přehled pouţitých vlastních proměnných: Proměnná
Nabývá hodnot
Popis
VSTUP
obsahuje hodnotu vstupu při vykonání detekce
0/1
POCBIT1 - POCBIT4
obsahuje počet čtených bitů při vzorkování na lince 1 - 4
8-0
POCSKE1 - POCSKE4
obsahuje hodnotu počtu skenů pro synchronizaci na line 1 - 4
BITBUF1 - BITBUF4
obsahuje přijatý bajt na lince 1 - 4
0 - 255
BUFF1 - BUFF4
obsahuje bajt připravený k uložení do bufferu od linky 1 - 4
0 - 255
PREG1 - PREG4
obsahuje vlastní příznaky
0 - 255
počáteční 6 - 0, následně 4 - 0
Registr PREG1 – 4: R/W-1
R/W-0
R/W-0
R/W-0
R/W-x
R/W-x
R/W-x
R/W-x
STOP1 - 4
TxBUFy1 - 4
TxERRy1 - 4
BUFy1 - 4
X
X
X
X
bit7
bit7
bit0
STOP1 - 4: příznak STOP bitu na lince 1 - 4 1 = linka je ve stavu STOP 0 = linka není ve stavu STOP
bit6
TxBUFy1 - 4: příznak přijetí bajtu na lince 1 - 4 1 = přišel bajt od linky 1 - 4 0 = nepřišel bajt od linky 1 - 4
bit5
TxERRy1 - 4: příznak chybného přenosu na lince 1 - 4 1 = nastala chyba přenosu 0 = nenastala chyba přenosu
bit4
BUFy1 - 4: příznak dat v bufferu 1 = buffer je prázdný 0 = v bufferu jsou data připravená k odeslání
bit3
X: nepoužito
bit2
X: nepoužito
bit1
X: nepoužito
bit0
X: nepoužito
Význam: R = bit pro čtení
W = bit pro zápis
' 0 ' = bit je v nule
- n = hodnota po inicializaci INIT
' 1 ' = bit je nastaven
x = hodnota bitu je neznámá
33
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
8.2. Vývojový diagram řídícího programu HLAVNI
INT TIMER0 = DALŠÍ PŘERUŠENÍ ZA 26µS
INIT
NAČTI VŠECHNY 4 VSTUPY příznak
+
LINKY1
PŘESUŇ HODNOTU 1. KANÁLU DO C
=1? BUFFER1
_
příznak
LINKA1 PŘESUŇ HODNOTU 2. KANÁLU DO C
+
LINKY2
=1?
LINKA2 BUFFER2
_
RETFIE +
je chyba na LINCE1?
CHYBA1
_
je chyba na LINCE2?
+
CHYBA2
_ PORBUF1
BUFFER1 prázdný ?
+
VYBUF1
_ PORBUF2
prázdný BUFFER2 ?
_
+
VYBUF2
END
34
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
BUFFERx
VYBUFx
PŘÍZNAK LINKYx = 0
_ FSR = ADRESA ZÁPISU BUFFERUx
TXIF =1?
+
INDF = PŘIJATÝ BAJT LINKYx
FSR = ADRESA CTENI BUFFERUx INKREMENTUJ ADRESU ZÁPISUx
ODEŠLI VYCTENY BAJT IVYBUFx x
KONEC BUFERU ? _
ZAPISx = CTENIx? _
+
INKREMENTUJ ADRESU CTENIx
ADRESA ZÁPISU BUFFERUx = ZAČÁTEK BUFFERU
KONEC BUFERU ? =1? _
+
CTENIx = ZACATEK BUFFERU
+ RETURN VYŠLI „AA„h
VYBUFx
RETURN CHYBAx
PORBUFx
TxERRyx = 0
ZAPISx = CTENIx?
TXREG = 55h
_ RETURN BUFyx = 1
RETURN
35
+
BUFyx = 0
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
Přehled pouţitých SFR v podprogramech: Adresa
Název
00h
INDF
04h
FSR
Ukazatel pro nepřímé adresování pro přístup do RWM prostřednictvím INDF
0 - 255
10Bh
INTCON
obsahuje bity pro práci s přerušovacím systémem mikropočítače
0 - 255
Popis Adresováním tohoto registru je přistupováno do paměti RWM na adresu ve FSR
Nabývá hodnot 0 - 255
(nepřímá adresa)
Přehled pouţitých vlastních proměnných v podprogramech: Adresa
Proměnná
Popis
Nabývá hodnot
50h
PREG1
obsahuje vlastní příznaky pro linku 1
51h
PREG2
obsahuje vlastní příznaky pro linku 2
0 - 255
5Dh
ZAPIS1
obsahuje adresu zápisu do buffer 1
20h - 2Fh
5Eh
ZAPIS2
obsahuje adresu zápisu do buffer 2
30h - 3Fh
5Fh
CTENI1
obsahuje adresu čtení z bufferu 1
20h - 2Fh
60h
CTENI2
obsahuje adresu čtení z bufferu 2
30h - 3Fh
36
0 - 255
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
8.3. Návod pro obsluhu S uţivatelem můj program komunikuje pomocí výstupních registrů BUF 1,2, coţ je obdoba SFR RCREG, který pouţívá modul AUSART µP PIC. Uţivatel musí detekovat stav příznakových bitů TxBUFy 1 – 2, coţ je obdoba příznaku nového přijatého data pouţívaného modulem AUSART. Můj softwarový 2 násobný AUSART tedy poskytuje uţivateli podobný komfort jako modul AUSART s výjimkou moţnosti pouţití přerušení.
8.4. Návod pro vytvoření uţivatelského programu Příjem: Uţivatel musí kaţdou milisekundu ( při 9600Bd) detekovat stav příznakových bitů TxBUFy1 a TxBUFy2 v příznakových registrech PREG1 a PREG2 popsaných viz. registr PREG1 – 4 na str. 24, ve kterých zjistí, zda od některé z linek přišel bajt. Kdyţ zjistí, ţe jeden z příznaků je nastaven, tak nastala tato událost. Od příslušné linky byl přijat jeden bajt, který byl uloţen do příslušného registru BUF1 nebo BUF2. Uţivatel musí tento bajt obslouţit, neţ se začne přijímat další bajt. Kdyţ nebude bajt z registrů BUF1 nebo BUF2 včas zpracován, tak můţe být přepsán a tím ztracen. Vysílání: Vysílání uţivatel provádí obsluhou modulu AUSART pomocí registru TXREG podle doporučení výrobce.
8.5. Návod pro připojení HW jako spojovacího prvku mezi PC a ostatními zařízeními Pro připojení rozbočovače k PC musí uţivatel splnit tyto podmínky: 1) V PC musí být alespoň jedno rozhraní RS232 s konektorem COM nebo musí být připojený převodník USB/RS232 a k němu nainstalovaný příslušný ovladač. 2) V PC musí být nainstalovaný program pro ovládání sériové linky. Pokud to bude ovládací program Robo - COP pro komunikaci přes linku RS232 - před spuštěním tohoto programu musí být zařízení připojené k PC nastaveno ve Správci zařízení/Porty na COM0. Jinak by při spuštění program hlásil chybu aplikace a nekomunikoval by s rozbočovačem. 3) Rozbočovač musí být propojen s PC a ostatními zařízeními odpovídajícím kabelem. 37
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
PC jde k zařízení připojit dvěma způsoby a to buďto jako zařízení MASTER nebo SLAVE.
PC = MASTER Při zapojení PC jako zařízení MASTER stačí pouţít pouze prodluţovací kabel (nekříţený) s konektorem COM – dutinky na straně PC a konektorem COM – koliky na straně MASTER u rozbočovače.
PC = SLAVE V zapojení PC jako SLAVE musí být pouţit kříţený kabel s COM – dutinky na obou stranách, který zajistí následující propojení. Pin č.3 (TxD) konektoru COM-koliky u PC musí být propojen s pinem č.2 (RxD) konektoru COM – koliky u SLAVE rozbočovače a naopak pin č.3 (TxD) konektoru COM – koliky u SLAVE rozbočovače musí být propojen s pinem č.2 (RxD) konektoru COM – koliky u PC. SG
SG
TxD
TxD
RxD
RxD
Obr.8.5.1. Kříţové propojení konektorů stejného druhu (COM-dutinky s COM-dutinky,COM – koliky s COM – koliky) Pro kabelové připojení rozbočovače k prvkům stavebnice Robovnice platí stejné zásady jako pro připojení k PC. Robovnice pouţívá pro sériovou linku třípinový řadový konektor, signál Rx je na vývodu č.1, GND na vývodu č.2 a Tx na vývodu č.3.
Obr.8.5.2. Redukce z konektoru COM - dutinky na třípinový řadový konektor pouţívaný u Robovnice 4) Připojit k rozbočovači napájecí zdroj v rozsahu 6 – 15V - po zapnutí napájecího napětí se na desce rozsvítí modrá LED. 38
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
9/ ZÁVĚR 9.1. Shrnutí a zhodnocení výsledků Zařízení je určeno k plnění funkce rozbočovače sériové linky pro dva vstupy. Lze ho pouţít ve stavebnicovém systému robotů Robovnice jako spojovacího prvku mezi zařízením MASTER a zařízeními SLAVE. Je moţno spojovat i několik rozbočovačů dohromady.
9.2. Doporučení pro další vyuţití Vývoj FW je pro stávající HW dokončen. Při současných moţnostech vnitřního taktovacího oscilátoru 8MHz není moţné dále zvýšit softwarově počet vstupů. Dalším krokem bude v budoucnu vývoj upraveného HW s externím taktovacím oscilátorem 20MHz. Toto řešení umoţní rozšíření vstupů softwarově na minimálně na čtyři, ale i na pět či šest vstupů.
39
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
10/ SEZNAM LITERATURY [1] ČEBIŠ, V. Jednočipový mikropočítač PIC16F87/88. Sezimovo Ústí, 2006. 219 s. Překlad originální dokumentace. [2] MICROCHIP, Technická dokumentace mikropočítače PIC16F88 a PIC16F886 [3] ČEBIŠ, Popis stavebnicového systému řešení robotů Robovnice. [4] GREPL, Z. Konstrukce prototypu elektronického zařízení s jednočipovým mikropočítačem PIC – Řadič sériové linky RS232. Sezimovo Ústí, 2009. 37 s. Ţákovský projekt. [5] HRBÁČEK, J. Komunikace mikrokontroléru s okolím. Praha : BEN, 2002. ISBN 80-86056-36-8.
[6] www.papouch.com
[7] www.microchip.com
[8] www.hw.cz
[9] www.robovnice.cz
40
Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Středoškolská odborná činnost kategorie 10. Elektrotechnika, elektronika a telekomunikace
11/ PŘÍLOHY Příloha A Výpis paměti programu:
41