Tvorba softwaru pro řadič sériové linky RS 232C 4/1. s PIC16F88



Podobné dokumenty
Mikrokontroléry. Doplňující text pro POS K. D. 2001

Praktické úlohy- 2.oblast zaměření

EduKitBeta Uživatelská příručka

AD4RS. měřící převodník. 4x vstup pro měření unifikovaného signálu 0 10 V, 0 20 ma, 4 20 ma. komunikace linkami RS232 nebo RS485

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Jízda po čáře pro reklamní robot

Manuál přípravku FPGA University Board (FUB)

Wie232. Převodník rozhraní Wiegand z bezkontaktních čteček na RS června 2011 w w w. p a p o u c h. c o m

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů. Zdeněk Oborný

Profilová část maturitní zkoušky 2014/2015

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Microchip. PICmicro Microcontrollers

PŘÍLOHY. PRESTO USB programátor

Úvod do mobilní robotiky AIL028

PIC PROGRAMÁTOR Milan Obrtlílk 4. ročník SŠPH Uh. Hradiště

MĚŘICÍ PŘÍSTROJ PRO PC. 4 VSTUPY: 0 10 V ZESÍLENÍ : 1x, 2x, 4x, 8x VÝSTUP: LINKA RS232 RS232 DRAK 4 U1 U2 U3 U4

Mikrokontrolery. Úvod do obvodů Atmega 328 a PIC16F88

Návrh konstrukce odchovny 2. dil

USB2RS232. Převodník pro připojení USB klávesnice a několika kontaktů přes RS232. Komunikace jednoduchým protokolem

SuperCom. Stavebnice PROMOS Line 2. Technický manuál

APLIKACE MIKROKONTROLÉRŮ PIC32MX

Vestavné systémy BI-VES Přednáška 5

D/A převodník se dvěma napěťovými nebo proudovými výstupy. (0 10 V, 0 5 V, ±10 V, ±5 V, 4 20 ma, 0 20 ma, 0 24 ma)

Převodník RS232 RS485

UC485P. Převodník RS232 na RS485 nebo RS422. Průmyslové provedení s krytím

Buffer 16kB pro sériovou linku RS232 s konverzí rychlosti, parity, počtu datových bitů a stopbitů

Profilová část maturitní zkoušky 2015/2016

Zařízení pro měření teploty, atmosférického tlaku a nadmořské výšky

Albatros MultiV ALBATROS MultiV ALBATROS MultiV-R Datový převodník LG PI485 / MODBUS TCP LG PI485 / MODBUS RTU s možností rozpočítávání spotřeby elekt

Uživatelská příručka

Uživatelský manuál. KNXgal

4x vstup pro měření unifikovaného signálu 0 10 V, 0 20 ma, 4 20 ma. komunikace linkami RS232 nebo RS485

MSP 430F1611. Jiří Kašpar. Charakteristika

XPortKit. Vývojový kit pro Lantronix XPort. 17. února 2011 w w w. p a p o u c h. c o m (06083)

RS , , RS 485, USB, GSM/GPRS

UniPi 1.1 Lite Technologická dokumentace

Displej DT20-6. Update firmware řadiče. Simulační systémy Řídicí systémy Zpracování a přenos dat TM 2012_10_

PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT. Příručka uživatele. Střešovická 49, Praha 6, s o f c o s o f c o n.

EC Motor. IO Modul EC200. EC200 Int. EC200 Ext. Verze 1.20, revize PMControl s.r.o.

Uživatelský manuál. KNXgal. řízení zabezpečovacích ústředen. Galaxy ze sběrnice KNX. napájeno ze sběrnice KNX. indikace komunikace na KNX

5. A/Č převodník s postupnou aproximací

XCom-31/32. Stavebnice PROMOS Line 2. Komunikační koncentrátor pro sběr dat. Technický manuál

Multiplexory sériových rozhraní na optický kabel ELO E246, ELO E247, ELO E248, ELO E249, ELO E24A, ELO E24B. Uživatelský manuál

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Univerzální jednočipový modul pro řízení krokových motorů

Úvod do mobilní robotiky NAIL028

Quido RS 2/16 OC. 2 vstupy pro kontakt 16 digitálních výstupů 1 teploměr -55 až +125 C komunikace přes RS485 nebo RS232

Popis vývodů desek, jejich zapojování a spárování robota

UC485. Převodník linky RS232 na RS485 nebo RS422 s galvanickým oddělením

Systém řízení sběrnice

PK Design. Modul USB2xxR-MLW20 v1.0. Uživatelský manuál. Přídavný modul modulárního vývojového systému MVS. Verze dokumentu 1.0 (05.04.


Telemetrické systémy

Přednáška A3B38MMP. Bloky mikropočítače vestavné aplikace, dohlížecí obvody. 2015, kat. měření, ČVUT - FEL, Praha J. Fischer

CQ485. Opakovač a převodník linek RS485 a RS422. S aktivní i pasivní obnovou dat

Vzdálené ovládání po rozvodné síti 230V

Převodník Ethernet ARINC 429

QuidoDuplex RS. Sada pro přenos 4 nebo 8mi dvoustavových signálů obousměrně přes RS485 nebo RS června 2011 w w w. p a p o u c h.

AS-Interface. AS-Interface. = Jednoduché systémové řešení

Architekura mikroprocesoru AVR ATMega ( Pokročilé architektury počítačů )

EduKit84. Výuková deska s programátorem pro mikrokontroléry PIC16F84A firmy Microchip. Uživatelská příručka

POKLADNÍ DISPLEJ LCD. hotline: strana 1

Praktický návod. Inteligentní elektroinstalace obytného domu Ego-n

Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem Elektrickém zapojení Principu činnosti Způsobu programování

TW15 KONCOVÝ PRVEK MSKP. Popis výrobku Technická data Návod k obsluze. Technologie 2000 s.r.o., Jablonec nad Nisou

Jednočipový mikropočítač PIC16F87/88. Překlad originální dokumentace. Ing. Vladimír Čebiš

AS-Interface. AS-Interface. = Jednoduché systémové řešení

Principy komunikace s adaptéry periferních zařízení (PZ)

Programování PICAXE18M2 v Assembleru

Modul univerzálních analogových vstupů R560. Shrnutí

Měřič krevního tlaku. 1 Měření krevního tlaku. 1.1 Princip oscilometrické metody 2007/

SEKVENČNÍ LOGICKÉ OBVODY

Selec4. Čtyřnásobný přepínač RS232. Přepínání řídicími signály RS232 nebo externími vstupy. 25. listopadu 2011 w w w. p a p o u c h. c o m v.

OVLÁDACÍ OBVODY ELEKTRICKÝCH ZAŘÍZENÍ

AS-Interface. AS-Interface = Jednoduché systémové řešení. Představení technologie AS-Interface

Založeno Vypracoval: Ing. Vladimír Povolný HATEL. 168 x 118 x 54 mm. provozní teplota -5 až +50 C ochrana IP 30 24V DC (20 až 30V), 0 je uzeměná

DIGITÁLNÍ ODPALOVACÍ PULT

Katalogový list FTC03DALI

FN485 Gateway 2 Galvanically Isolated V1.0 Instalační návod

Podrobný obsah CHARAKTERISTIKA A POROVNÁNÍ ØADY PIC16F87X A PIC16F87XA TYPY POUZDER A PØIØAZENÍ VÝVODÙ PIC16F87X TYPY POUZDER A PØIØAZENÍ

uz80 Embedded Board ver. 1.0 uz80 Vestavná Řídící Deska ver. 1.0

M-Bus Master MultiPort 250D DATOVÝ LIST

Návod k obsluze výukové desky CPLD

Vstupní terminál LOG3

Ganitor. Monitorovací a řídicí I/O moduly pro systém C dubna 2011 w w w. p a p o u c h. c o m v.1.2

Návod pro použití snímače tlaku s rozhraním IO-Link

Komunikační protokol MODBUS RTU v přípojné desce EPD.

PK Design. Uživatelský manuál. Modul USB-FT245BM v2.2. Přídavný modul modulárního vývojového systému MVS. Verze dokumentu 1.0 (7. 11.

PRESTO. USB programátor. Uživatelská příručka

GFK-2004-CZ Listopad Rozměry pouzdra (šířka x výška x hloubka) Připojení. Skladovací teplota -25 C až +85 C.

Multiplexory sériových rozhraní na optický kabel ELO E246, ELO E247, ELO E248, ELO E249, ELO E24A, ELO E24B. Uživatelský manuál

Merkur perfekt Challenge Studijní materiály

TECHNICKÉ ÚDAJE... 2 BEZPEČNOSTNÍ UPOZORNĚNÍ... 3 POPIS PŘÍSTROJE... 5 POUŽITÍ PŘÍSTROJE...

Počítač jako elektronické, Číslicové zařízení

Převodník sériového rozhraní RS-485 na mnohavidové optické vlákno ELO E171 Uživatelský manuál

9. Rozšiřující desky Evb_Display a Evb_keyboard

IPZ laboratoře. Analýza komunikace na sběrnici USB L305. Cvičící: Straka Martin, Šimek Václav, Kaštil Jan. Cvičení 2

Transkript:

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

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

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

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

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Ů. 10 6.1. Popis asynchronní komunikace..10 6.2. Jednočipový mikropočítač PIC16F88 12 6.3. Výchozí HW konstrukce Zdeňka Grepla..17 6.4. 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

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

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

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

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

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 TxD RxD RTS CTS DSR DTR DCD SG TxD RxD RTS CTS DSR DTR DCD Obr. 6.1.2 Propojení dvou počítačů třídrátově Signál Canon 25 pin Canon 29 pin SG 7 5 TD 2 3 RD 3 2 RTS 4 7 CTS 5 8 DSR 6 6 DTR 20 4 DCD 8 1 Tab. 6.1.1 Obsazení vývodů standardního rozhraní RS232C 11

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

Blokové schema mikropočítače PIC: 13

Popis vývodů mikropočítače PIC: Název vývodu Číslo vývodu pouzdra PDIP a SOIC Číslo vývodu pouzdra SSOP Číslo vývodu pouzdra QFN Směr vstupně výstupního vývodu Druh vstupu 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) RBO/INT/CCPI (5) 6 7 7 RBO I/O TTL Digitální vstup/výstup INT I ST(1) Vnější přerušení CCP1 I/O ST Vstup Capture, výstup Compare, výstup PWM RB1/SDI/SDA 7 8 8 RB1 I/O TTL Digitální vstup/výstup SDI I ST Vstup dat v režimu SPI SDA I/O ST Vstup dat v režimu I2C RB2/SDO/RX/DT 8 9 9 RB2 I/O TTL Digitální vstup/výstup SDO O ST Výstup dat v režimu SPI RX I Příjem dat v režimu asynchronní AUSART DT I/O Detekce synchroního AUSART RB3/PGM/CCP1(5) 9 10 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 CCPI I ST Vstup Capture, výstup Compare, výstup PWM RB4/SCK/SCL 10 11 12 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) RB5/SS/TX/CK 11 12 13 RB5 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 CK I/O Hodinový signál v režimu synchornní AUSART RB6/AN5/PGC/T1OSO/T1CKI 12 13 15 RB6 I/O TTL Digitální vstup/výstup AN5(4) I Analogový vstup č. 5 PGC I/O ST(2) Ladění v aplikaci a vstup hodinového signálu ICSP T1OSO O ST Výstup čítače/časovače Timer1 T1CKI I ST Vnější vstup čítače/časovače Timer1 RB7/AN6/PGD/T1OSI 13 14 16 RB7 I/O TTL Digitální vstup/výstup AN6(4) I Analogový vstup č. 6 PGD I ST(2) Ladění v aplikaci a vstup datového signálu ICSP T1OSI I ST Vstup osciálátoru čítače/časovače Timer1 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

Popis vývodů mikropočítače PIC (pokračování): Název vývodu Číslo vývodu pouzdra PDIP a SOIC Číslo vývodu pouzdra SSOP Číslo vývodu pouzdra QFN Směr vstupně výstupního vývodu Druh vstupu Popis (PORTA je obousměrná vstupně výstupní brána) RA0/AN0 17 19 23 RA0 I/O TTL Digitální vstup/výstup AN0 I Analog Analogový vstup č. 0 RA1/AN1 18 20 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 Výstup napěťové reference komparátoru VREF - (4) I Analog Vstup dolního referenčního napětí pro AD převodník RA3/AN3/ VREF+/C1OUT 2 2 27 RA3 I/O TTL Digitální vstup/výstup AN3 I Analog Analogový vstup č. 3 VREF + (4) I Analog Vstup horního referenčního napětí pro AD převodník C1OUT O Výstup komparátoru č. 1 RA4/AN4/T0CKI/C2OUT 3 3 28 RA4 I/O ST Digitální vstup/výstup AN4 I Analog Analagový vsutp č. 4 T0CKI I ST Vnější pro čítač/časovač Timer0 C2OUT O výstup komparátoru č. 2 RA/MCLR/VPP 4 4 1 RA I ST Digitální vstup Vstup signálu reset nebo vstup programovacího O ST MCLR napětí Signál reset je aktivní v log.0. VPP P Vstup programovacího napětí RA6/OSC2/CLKO 15 17 20 RA6 I/O ST Digitální vstup/výstup OSC2 O Výstup taktovacího oscilátoru. Připojuje se ke krystalu nebo rezonátoru. CLKO O V konfiguraci RC je na vývodu přítomna taktovací RA7/OSC1/CLKI 16 18 21 frekvence dělená čtyřmi, jejíž perioada odpovídá jednomu instrukčnímu cyklu RA7 I/O ST Digitální vstup/výstup ST/CMOS I (3) OSC1 Vstup krystalového oscilátoru CLKI I Vstup vnějšího taktovacího signálu 15

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

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

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

Schéma zapojení: 19

Blokové schéma přijmu bajtu od zařízení MASTER a SLAVE: 20

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

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

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

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

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

U [V] Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, 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 T 1 7 f 8 1 4 5 10 0,5[ s] 6 10 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: doba 1 rychlost 1 9600 104[ s] 1040µs 104µs +5V START b0 b1 b2 b3 b4 b5 b6 b7 STOP +0V t [µs] Obr. 7.2.1. Doba asynchronního přenosu 1 bajtu a bitu 26

U [V] Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, Výpočet periody detekce při 4 detekcí: DOBA_PRENOSU = Doba přenosu 1 bitu = 104µs při rychlosti 9600Bd POCET vz = Počet vzorků na 1 bit = 4 T DOBA _ PRENOSU POCET vz 26 vz 104 4 s T vz +5V START bit b0 b1 b2 b3 b4 b5 b6 b7 STOP bit 1 0 1 0 1 0 1 0 +0V t [µs] Obr. 7.3.1. Pravidelné vzorkování signálu na vstupu ( TTL úroveň přijmu bajtu 0x55) 27

Současné uloţení hodnoty 4 vstupů detekce detekce START bitu +5V 26µs chyba detekce platné data okamţik detekce chyba detekce START b0 b 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 detekce n + 2 detekce n e 1 104µs 26µs +5V 10 20 30 40 50 0 START 52 instrukcí při taktu 8MHz Obr. 7.3.3. Detail vzorkování 1 bitu 28

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

OBSLUHA 1 KANÁLU Řadič sériové linky pro stavebnicové řešení robotů - Michal Janiš- Centrum odborné přípravy, Sezimovo Ústí, 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 VSTUP1 = 0? + STOP1 = 0 + je STOP1 = 1? _ + POCBIT1 = POCBIT1-1 POCSKE1 = POCKSE1-1 je POSKE1 = 0? _ POCBIT1 = 0 POCSKE1 = 0 + + je VSTUP = 1? je POCBIT1 = 0? NAROTUJ VSTUP DO BITBUF1 POCSKE1 = 4 BITBUF1 = BUF1 STOP1 = 1 STOP1 = 0 TxERRy1 = 1 TxBUFy1 = 1 RETFIE 30

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 Celkem 99 instr. OBSLUHA 1 LINKY LINKA1 RETFIE Celkem 33 instrukcí 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 2 LINEK LINKA1 LINKA2 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 Celkem 99 instr. LINKA1 TIMER0 = DALŠÍ PŘERUŠENÍ za 26 µs µlinka3 snačti VŠECHNY 4 VSTUPY NAČTI VŠECHNY 4 VSTUPY Celkem 99 instr. LINKA1 OBSLUHA 3 LINEK LINKA2 LINKA3 OBSLUHA 4 LINEK LINKA2 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

Přehled pouţitých specielních funkčních registrů PIC (SFR): Adresa Název Popis Nabývá hodnot 01h TMR0 8 - bitový čítač/časovač Timer0 0-255 03h STATUS obsahuje aritmetické příznaky, příznaky resetu a bity výběru banky v paměti RWM 0-255 05h PORTA záchytný registr brány PortA 0-255 0Bh 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 bit0 IRP:DC: nevyužíváno programem 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 bit0 bit7 bit6 bit5 bit4-3 bit2 bit1-0 GIE: globální povolení přerušení 1 = povolena všechna nemaskovaná přerušení 0 = zakázána všechna přerušení PEIE: nevyužíváno programem 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 INT0E:RBIE: nevyužíváno programem 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 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

Přehled pouţitých vlastních proměnných: Proměnná Popis Nabývá hodnot 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 počáteční 6-0, následně 4-0 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 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 bit0 bit7 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

8.2. Vývojový diagram řídícího programu HLAVNI INT INIT TIMER0 = DALŠÍ PŘERUŠENÍ ZA 26µS NAČTI VŠECHNY 4 VSTUPY příznak LINKY1 = 1? _ + BUFFER1 PŘESUŇ HODNOTU 1. KANÁLU DO C LINKA1 příznak LINKY2 = 1? _ + BUFFER2 PŘESUŇ HODNOTU 2. KANÁLU DO C LINKA2 RETFIE je chyba na LINCE1? _ + CHYBA1 je chyba na LINCE2? _ + CHYBA2 PORBUF1 BUFFER1 prázdný? + _ VYBUF1 PORBUF2 prázdný BUFFER2? _ + VYBUF2 END 34

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 KONEC BUFERU? + ODEŠLI VYCTENY BAJT IVYBUFx x INKREMENTUJ ADRESU CTENIx _ ADRESA ZÁPISU BUFFERUx = ZAČÁTEK BUFFERU KONEC BUFERU? = 1? _ + CTENIx = ZACATEK BUFFERU ZAPISx = CTENIx? + RETURN _ VYŠLI AA h VYBUFx RETURN CHYBAx PORBUFx TxERRyx = 0 TXREG = 55h RETURN ZAPISx = CTENIx? _ + BUFyx = 0 BUFyx = 1 RETURN 35

Přehled pouţitých SFR v podprogramech: Adresa Název Popis Nabývá hodnot 00h INDF Adresováním tohoto registru je přistupováno do paměti RWM na adresu ve FSR 0-255 (nepřímá adresa) 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 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 0-255 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

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

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 TxD RxD SG TxD 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

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

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

11/ PŘÍLOHY Příloha A Výpis paměti programu: 41