Seriell portkontakt på hovedkortet. COM-port (seriell port)

Først da de dukket opp personlige datamaskiner, med dem fulgte flere ikke-så-sofistikerte, men ganske vellykket i kombinasjon med alle de andre fyllingene, portene eller kretsgrensesnittene. Ordet port angir metoden for dataoverføring. Det er som en minnecelle. Bare i VÆR informasjon registreres og ligger der så lenge et eller annet program trenger det, til programmet behandler det (eller selve programmet fortsatt trengs av noen på datamaskinen).

Port og minne

Det vil si at programmet vil lese dataene fra minnet inn i prosessoren, gjøre noe med det, kanskje motta noen nye data fra denne informasjonen, som det vil skrive til et annet sted. Eller det gitte i seg selv vil ganske enkelt bli skrevet om til et annet sted. I alle fall, i minnet, kan informasjon som en gang har blitt registrert enten leses eller slettes. Cellen ser ut som en kiste som står mot veggen. Og alt minne består av en celle, hver celle har sin egen adresse. Akkurat som kistene som står på rekke og rad mot veggen i kjelleren til en gjerrig ridder.

Vel, du kan også forestille deg en port som en celle. Bare en slik celle på baksiden er det et vindu som fører et sted bak veggen. Du kan skrive informasjon inn i den, og informasjonen vil ta den og fly ut av vinduet, selv om den i noen tid vil forbli i cellen på samme måte som i en vanlig celle VÆR.

Eller omvendt, informasjon kan "fly" inn i portcellen fra vinduet. Prosessoren vil se dette og lese denne nye informasjonen som vises. Og han vil sette det i gang - han vil skrive det om et sted, beregne det på nytt sammen med noen andre data. Den kan til og med skrive den til en annen celle. Eller til en annen celleport, så kan denne informasjonen mottatt via den første porten "fly bort" inn i vinduet til den andre porten - vel, det er slik prosessoren bestemmer. Mer presist, programmet som i dette øyeblikket kommanderer prosessoren og behandler dataene som er registrert i minnet og som kommer fra portene.

Enkelt og vakkert. Disse portene ble umiddelbart kalt - input-output porter. Gjennom noen av dem sendes data et sted, gjennom andre mottas det fra et sted.

Vel, da begynner bevegelsen i en sirkel. Det er en enhet, og det er en annen. Og nå er det en kjede av tegn, som hver består av individuelle binære biter, og denne kjeden må overføres. Hvordan overføre? Du kan umiddelbart overføre et helt tegn langs en linje med 8 ledninger - en ledning = en bit, deretter koden til en annen, deretter en tredje, og så videre til du overfører hele kjeden.

Og det var mulig å utfolde hver bit ikke i rommet (via ledninger), men i tid: først overføre en bit av symbolet, deretter den andre, og så videre åtte ganger. Det er klart at i det andre tilfellet noen ekstra midler, slik at symbolene utfolder seg i tide.

Parallell og seriell

Og overføringshastigheten vil være annerledes:

Det viser seg at hvert alternativ har sine fordeler, men også sine ulemper.

  1. Det er raskere å overføre åtte biter om gangen (det vil si byte for byte), men du trenger åtte ganger flere ledninger
  2. Å sende én bit om gangen krever bare én informasjonsoverføring, men det vil være 8 ganger tregere.

Så i det første tilfellet kalte de overføringen parallell, og i det andre tilfellet - seriell.

Portgrensesnitt

Og hele systemet med slik overføring - i ett tilfelle på denne måten, i et annet - sånn, kalt grensesnitt. Det ene grensesnittet er parallelt, det andre er serielt. Nesten det samme, porter, en parallell, den andre seriell.

Hvordan skiller konseptet port seg fra konseptet "grensesnitt"? I moderne teknologi Ord dukker ikke bare opp, de vokser og mottar «opplæring». Og akkurat som med mennesker, kan de bli smale spesialister, eller de kan bli "amatører". Dette er et typisk amatørord - "grensesnitt". Fordi det er "en plugg for hvert hull." Grensesnittene er:

Og meningen med ordet er noe mellom noe. Mellom - mellom, ansikt - ansikt. Det ble vakkert, det er derfor det brukes overalt. For eksempel brukergrensesnitt Windows-systemer er systemets ansikt på skjermen, designet for å kommunisere med en person.

Og den består av et bilde tegnet på skjermen + regler for driften av hvert element i bildet (klikk for eksempel på en knapp på skjermen med musen - den vil bli trykket) + regler for reaksjonen til hvert element og hele systemet som helhet + all maskinvare som deltar i dialogen (mus, tastatur, skjerm) + alle programmer som gir dialog både fra siden av hele systemet og utenfra individuelle enheter(sjåfører).

De nevnte ikke personen, men siden han også er en del av samhandlingen, må han ha kunnskap og ferdigheter for å jobbe i systemet, og for dette finnes det treningsprogrammer, hjelpesystemer... Og ut av alt dette oppstår et vakkert og romslig ord: grensesnitt.

I vårt tema betyr grensesnitt at ting er litt enklere.

Dette er hardware + programvare overføring + overføringsregler. Maskinvare - forståelig. Men programvaren på datamaskiner og inn moderne virkemidler forbindelser er alltid og overalt. Det skjer til og med: For det første opprettes noe funksjonelt på en eller annen maskinvarebase, som ikke utføres umiddelbart, men ved hjelp av spesialskrevne programmer. Og alle programmene kan tilpasses.

Og gradvis, mens du jobber ny funksjon(eller funksjonsblokk), programmene som "gjør det" - og de skiller seg fra maskinvare ved at de lett kan tilpasses - bringes til en eller annen tilstand optimale innstillinger. At det ikke er nødvendig å konfigurere lenger. Og så er programmet inn ny versjon Funksjonsblokken kan erstattes med en maskinvarebasert erstatning for programvaredelen. For eksempel "sy opp" en optimalt fungerende godt innstilt program inn i permanent minne. Eller kom opp med en spesiell en logisk krets, som vil gjøre nøyaktig det samme som et optimalt konfigurert program gjorde - uten å vike unna og noen ganger glemme alle de nyttige innstillingene.

Det er derfor grensesnittet ofte kalles dette - programvare og maskinvare.

Overføringsregler er nødvendig for å sikre at de samme tingene blir forstått (og behandlet) på samme måte i begge ender av interaksjonen. Snakker vi om impulsoverføring? Dette betyr at impulsene må være strengt identiske.

For eksempel slik at 1 bit kommer i form av +12 eller +15 volt spenningsfall fra null. Og slik at det ville være i form av et rektangel, eller et skarpt utbrudd - toppen som definitivt ville være ikke mindre enn, vel, + 5 volt, men øvre grense inn er for eksempel lite nødvendig. Dette er fordi når du sender impulser over noen avstander elektriske signaler har en tendens til å svekkes og "smøre".

Hvis strengt tatt 12 volt sendes fra den ene enden, kan 3 volt nå den andre, og dette kan av mottakersystemet betraktes som støy på linjen, og den overførte informasjonen vil gå tapt.

Betydningen av impulser bør også forstås på samme måte. Og impulser kan være informative, tjeneste, synkronisering. Og generelt sett for eksempel ikke impulser, men rett og slett konstant spenning. Som kan brukes i den andre enden for å drive en liten enhet.

Og selve ledningene som ble diskutert helt i begynnelsen bør også forstås likt. Her skal det sies med en gang at det aldri skjer at det bare er en ledning. Til og med telefonen har to ledninger i kabelen, men normalt skal kabelen ha fire. Og datagrensesnitt har alltid flere ledere. Noen av dem er informative, noen er tjenester. Og det er dette som bør anerkjennes likt i begge ender av interaksjonen. Og ledningene gjenkjennes som? Etter farge, hvis i kabelen og etter plassering, hvis i tilkoblingskontaktene.

Port er et enkelt ord og heller ikke helt entydig. Men meningen er lik: at noe lastes på noe og sendes et sted. Eller omvendt, noe som aksepterer noe og losser noe fra det. Betydningen er nesten den samme som maskinvare-programvaregrensesnittet, men på en eller annen måte mer kortfattet. Og strengere, som i marinen ("De vil fortelle deg - ikke krangle ... men vi krangler ikke ..."). Bare våre signaler går ikke til sjøs, men med kabel.

Pinout av COM-portkontakter

Pinouten har ingen forbindelse med korsfesting, selv om de, som ledninger som løper fritt i en kabelkappe, tas fra hverandre og hardloddes til pinnene, på samme måte som korsfesting. Pin, på engelsk "pin", pin, derfor pinout, ordet er allerede en "pro-engelsk" sjargong for datakommunikasjon. Det betyr å koble ledningene til pinnene på kontakten.

Formen på kontakten, rekkefølgen på ledningene (pinnene) i den, formålet med hver pinne, samt spenningsvurderingene og betydningen av signalene i hver - dette er en del av grensesnittet. Vanligvis er all denne informasjonen samlet inn eget dokument kalt en portspesifikasjon. Et så enkelt og oversiktlig skilt på én side. I andre typer grensesnitt kan noe slikt kalles en "protokoll". Og her kaller de det ganske enkelt "pinout".

Serielle COM-porter

COM-porter på en datamaskin er tilkoblingen til et datamaskinkompleks " lang rekkevidde" I motsetning til parallellporter og kabler som førte til "tunge" enheter - skrivere, skannere, Com-porter koblet "lette" enheter til datamaskinen - en mus, et modem. De første datamaskin-til-datamaskin-grensesnittene (via et "nullmodem"). I fremtiden, når spredte de seg lokale nettverk , og mus begynte å bli koblet til via den samme kontakten som tastaturet - port ps/2 (pe-es-in half) - com-porten ble på en eller annen måte glemt.

Vekkelsen kom med ankomsten av en konsekvent USB-grensesnitt. Så det viste seg å være en bevegelse i en sirkel. Nå på USB kan du finne, i tillegg til flash-stasjoner, USB-mus og USB-tastaturer. Skrivere, skannere, modemer - alt periferiutstyr er nå på USB, jeg har allerede glemt de tykke og solide parallelle LTP-kablene som var nødvendig i påbudt skru på hver side med 2 bolter. Og det er to signalledninger i disse USB-ene (faktisk er det en kanal, ett direkte signal, det andre det samme - omvendt) og to - strømforsyning og hus.

Det var flere tidligere serielle COM-porter. Den minste – og den mest populære 9-pins port (D9), som de fleste enheter var koblet til: mus, modemer, nullmodemkabler. Kontaktene ble arrangert i to rader, 5 og 4 på rad, og skapte en trapes. Derav navnet D9. På "mor" gikk nummereringen fra venstre til høyre og fra topp til bunn:

1 2 3 4 5

COM-portkabling, port RS232, 9 pinner.

Betegnelse Type Beskrivelse
1 DCD Inngang Høyt nivå fra modemet når det mottar operatørmodempartneren
2 RxD Inngang Innkommende datapulser
3 TxD Utgående datapulser
4 DTR Et høyt nivå (+12V) indikerer at datamaskinen er klar til å motta data. Den tilkoblede musen brukte denne pinnen som strømkilde
5 GND General Jord
6 DSR Inngang Enheten er klar til å overføre data
7 RTS Responsberedskap for partnerenheten
8 CTS Inngang Beredskap til å motta data fra en partner
9 R.I. Inngang Signal som informerer datamaskinen om innkommende anrop, mottatt av modemet fra kommunikasjonslinjen

Så vi kom til COM-porten. Men med ham er ikke alt like enkelt som med LPT, og hans full bruk vil kreve betydelig stor innsats. Hovedproblemet er også dens største fordel - seriell dataoverføring. Hvis det i LPT overføres en byte med data over 8 linjer, en bit per linje, og tilstanden til hver linje lett kan sees, COM-port en byte med data blir overført bit for bit langs én linje (i forhold til jord, selvfølgelig) og det vil ikke være mulig å se hva som overføres der ved å bruke lysdioder alene. For å gjøre dette trenger du en spesiell enhet - en omformer av en seriell datastrøm til en parallell, den såkalte. USART (Universal Synchronous/Asynchronous Receiver Transmitter). For eksempel er den inkludert i hovedkortet til en datamaskin utstyrt med en COM-port, eller i en mer seriøs mikrokontroller.


Jeg håper du fortsatt er motløs når du mestrer COM-porten. Det er ikke alt undergang og dysterhet. Noen resultater kan oppnås uten USART. La oss formulere et problem som vi skal implementere på innledende fase arbeider med COM-port:


"Jeg vil at en LED skal kobles til datamaskinen via COM-porten. Jeg starter programmet. Jeg utfører en handling i dette programmet, LED-en lyser, jeg gjør noe annet - LED-en slukker."


Oppgaven er ganske spesifikk (med tanke på at USART ikke brukes) og er en ren "gjør-det-selv"-oppgave, men den er ganske gjennomførbar og gjennomførbar. La oss begynne å implementere det.


1.COM-port

Vi tar det igjen systemenhet på PC-en og se på baksiden. Vi legger merke til at det er en 9-pinners kontakt - dette er COM-porten. I virkeligheten kan det være flere av dem (opptil 4). PC-en min har to COM-porter (se bilde).


2. COM-portutvidelse


3. Maskinvare

Vi må også tukle med maskinvaren, i den forstand at det vil være mer komplisert enn med den første enheten for LPT-port. Faktum er at RS-232-protokollen, gjennom hvilken data utveksles i COM-porten, har et litt annerledes logisk tilstand-spenningsforhold. Hvis dette vanligvis er logisk 0 0 V, logisk 1 +5 V, så i RS-232 er dette forholdet som følger: logisk 0 +12 V, logisk 1 -12 V.

Og for eksempel, etter å ha mottatt -12 V, er det ikke umiddelbart klart hva du skal gjøre med denne spenningen. Vanligvis konverteres RS-232-nivåer til TTL (0,5 V). Det enkleste alternativet er zenerdioder. Men jeg foreslår å lage denne omformeren på en spesiell brikke. Den heter MAX232.

La oss nå se hvilke signaler fra COM-porten vi kan se på LED-ene? Faktisk er det så mange som 6 uavhengige linjer i COM-porten, som er av interesse for utvikleren av grensesnittenheter. To av dem er ennå ikke tilgjengelige for oss - serielle datalinjer. Men de resterende 4 er ment å kontrollere og indikere dataoverføringsprosessen, og vi kan "overføre" dem for å passe våre behov. To av dem er ment for kontroll fra en ekstern enhet og vi vil ikke berøre dem foreløpig, men vi vil nå bruke de to siste gjenværende linjene. De kalles:

  • RTS- Anmodning om overføring. En interaksjonslinje som indikerer at datamaskinen er klar til å motta data.
  • DTR- Datamaskinen er klar. En interaksjonslinje som indikerer at datamaskinen er slått på og klar til å kommunisere.

Nå overfører vi litt hensikten deres, og lysdiodene som er koblet til dem vil enten slukke eller lyse, avhengig av handlingene i vårt eget program.

Så la oss sette sammen et diagram som lar oss utføre våre tiltenkte handlinger.

Og her er den praktiske gjennomføringen. Jeg tror du vil tilgi meg at jeg laget den i en så dum breadboard-versjon, fordi jeg ikke vil lage et brett for en så "svært produktiv" krets.


4. Programvaredel

Alt er enklere her. La oss lage et Windows-program i Microsoft Visual C++ 6.0 basert på MFC for å administrere to linjer med COM-portkommunikasjon. For dette skaper vi nytt prosjekt MFC og gi den et navn, for eksempel, TestCOM. Deretter velger du alternativet for å konstruere basert på dialog.

Gi utseende dialogvinduet til programmet vårt, som i fig. nedenfor, nemlig legg til fire knapper, to for hver av linjene. En av dem er henholdsvis nødvendig for å "slukke" linjen, den andre for å "sette" den til en.

Klasse CTestCOMDlg: offentlig CDialog ( // Konstruksjon offentlig: CTestCOMDlg(CWnd* pParent = NULL); // standard konstruktør HANDLE hFile;

For at programmet vårt skal kontrollere linjene til en COM-port, må det først åpnes. La oss skrive koden som er ansvarlig for å åpne porten når du laster programmet.

HFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("Porten kunne ikke åpnes!", "Feil", MB_ICONERROR); ) else ( MessageBox("Porten ble åpnet", "Ok", MB_OK); )

Bruker standardfunksjonen Vinn API CreateFile()åpne COM-porten COM2. Deretter sjekker vi suksessen til åpningen med utgangen informasjonsmelding. Det er dette som må gjøres viktig merknad: COM2 er på datamaskinen min, men på datamaskinen din kan du koble den til en annen COM-port. Følgelig må navnet endres til hvilken port du bruker. Du kan se hvilke portnumre som finnes på datamaskinen din slik: Start -> Innstillinger -> Kontrollpanel -> System -> Maskinvare -> Enhetsbehandling -> Porter (COM og LPT).

Som et resultat, funksjonen CTestCOMDlg::OnInitDialog(), som ligger i filen TestCOMDlg.cpp, bør dialogklassen vår ha formen:

BOOL CTestCOMDlg::OnInitDialog() ( CDialog::OnInitDialog(); // Legg til "Om..." menyelement til systemmenyen. // IDM_ABOUTBOX må være i systemkommandoområdet. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); ) ) // Angi ikonet for denne dialogboksen. Rammeverket gjør dette automatisk // når programmets hovedvindu ikke er en dialogboks SetIcon(m_hIcon, TRUE); // Sett stort ikon SetIcon(m_hIcon, FALSE); // Sett lite ikon // TODO: Legg til ekstra initialisering her hFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); ) else; ( MessageBox("Port vellykket åpnet", "Ok", MB_OK); ) return TRUE // return TRUE med mindre du setter fokus til en kontroll )

La oss nå legge til behandlere for linjekontrollknapper. Jeg ga dem passende navn: funksjonen som setter en på DTR-linjen er OnDTR1(), 0 er OnDTR0(). For RTS-linjen, på samme måte. La meg minne deg på at behandleren opprettes når dobbeltklikk på knappen. Som et resultat bør disse fire funksjonene se slik ut:

Void CTestCOMDlg::OnDTR1() ( // TODO: Legg til kontrollvarslingsbehandlerkoden din her EscapeCommFunction(hFile, 6); ) void CTestCOMDlg::OnDTR0() ( // TODO: Legg til kontrollvarslingsbehandlerkoden din her EscapeCommFunction(hFile, 5); ) void CTestCOMDlg::OnRTS1() ( // TODO: Legg til koden for kontrollvarsling her EscapeCommFunction(hFile, 4); ) void CTestCOMDlg::OnRTS0() ( // TODO: Legg til koden for kontrollvarsling her EscapeCommFunction(hFile, 3);

La meg forklare litt hvordan de fungerer. Som du kan se, inneholder de et kall til den samme Win API-funksjonen EscapeCommFunction() med to parametere. Den første av dem er et håndtak (HANDLE) til en åpen port, den andre er spesiell kode handlinger som tilsvarer den nødvendige linjetilstanden.

Det er det, vi kompilerer og lanserer. Hvis alt er i orden, bør du se en melding om vellykket åpning av porten. Deretter, ved å trykke på de tilsvarende knappene, blinker vi LED-ene som er koblet til COM-porten.

© Ivanov Dmitry
desember 2006

I i det siste sekvensiell metode dataoverføring erstatter parallell.
Du trenger ikke se langt etter eksempler: fremveksten av USB- og SATA-busser taler for seg selv.
Faktisk, siden en parallell buss er vanskelig å skalere (forleng kabelen, øk bussens klokkefrekvens), er det ikke overraskende at teknologier snur ryggen til parallelle busser.

Serielle grensesnitt

I dag er det mange forskjellige serielle dataoverføringsgrensesnitt.
I tillegg til de allerede nevnte USB og SATA, kan du også huske minst to kjente standarder RS-232 og MIDI (også kjent som GamePort).
De har alle det samme til felles - sekvensiell overføring av hver informasjonsbit, eller seriell grensesnitt.
Det er mange fordeler med slike grensesnitt, og den viktigste av dem er et lite antall tilkoblingsledninger, og derfor en lavere pris.

Dataoverføring

Seriell dataoverføring kan implementeres på to måter: asynkron og synkron.

Synkron dataoverføring innebærer å synkronisere driften av mottaker og sender ved å inkludere klokkeinformasjon i det overførte signalet eller ved å bruke en spesiell synkroniseringslinje.
Mottaker og sender må kobles sammen med en spesiell synkroniseringskabel, som sikrer at enhetene fungerer på samme frekvens.

Asynkron overføring innebærer bruk av spesielle biter som markerer begynnelsen og slutten av data - en start (logisk null) og en stopp (logisk en) bit.
Det er også mulig å bruke en spesiell paritetsbit, som avgjør om oddetall overførte enkeltbiter (avhengig av vedtatt avtale).
Ved mottakerenden blir denne biten analysert, og hvis paritetsbiten ikke tilsvarer antallet én bit, sendes datapakken igjen.

Det er verdt å merke seg at en slik sjekk lar deg oppdage en feil bare hvis bare én bit ble overført feil, hvis flere biter ble overført feil, blir denne kontrollen feil.
Pakke neste pakke databehandling kan skje når som helst etter at stoppbiten er sendt, og må naturligvis begynne med startbiten.
Er noe klart?

Vel, hvis alt datateknologi var enkle, så ville enhver husmor for lenge siden ha laget nye protokoller sammen med dumplings...
La oss prøve å se på prosessen annerledes.
Data overføres i pakker, omtrent som IP-pakker sammen med dataene informasjonsbiter, kan antallet av disse bitene variere fra 2 til 3 og en halv.
Og halvparten?!
Ja, du hørte riktig, akkurat halvparten!

Stoppbiten, eller snarere det overførte signalet som tilsvarer stoppbiten, kan ha lengre varighet enn signalet som tilsvarer den ene biten, men kortere enn for to bits.
Så, en pakke starter alltid med en startbit, som alltid er null, etterfulgt av databiter, deretter en paritetsbit, og deretter en stoppbit, som alltid er én.
Deretter, etter en vilkårlig tidsperiode, fortsetter marsjen av bitene mot Moskva.

Denne overføringsmetoden innebærer at mottakeren og senderen må operere med samme hastighet (vel, eller nesten med samme hastighet), ellers vil mottakeren enten ikke ha tid til å behandle eller motta de innkommende databitene gammel bit for en ny.
For å unngå dette blir hver bit portet, det vil si sendt synkront med et spesielt signal - en "strobe", generert inne i enheten.
Det finnes en rekke spesifikke hastigheter for asynkrone enheter - 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19 200, 38 400, 57 600 og 115 bits, 0 bits per sekund.

Du har sikkert hørt at måleenheten for dataoverføringshastighet er "baud" - frekvensen av endringer i linjetilstand, og denne verdien vil falle sammen med dataoverføringshastigheten bare hvis signalet kan ha en av to verdier.
Hvis flere biter er kodet i en signalendring (og dette skjer i mange modemer), vil overføringshastigheten og linjebyttefrekvensen være helt forskjellige verdier.

Nå noen få ord om det mystiske begrepet "datapakke".
Under pakken i i dette tilfellet refererer til settet med biter som overføres mellom start- og stoppbits.
Antallet deres kan variere fra fem til åtte.
Man kan lure på hvorfor fem til åtte biter?
Hvorfor ikke overføre for eksempel en kilobyte med data i en pakke på en gang?

Svaret er åpenbart: når vi sender små datapakker, kan vi tape ved å sende tre tjenestebiter med dem (fra 50 til 30 prosent av dataene), men hvis pakken blir skadet under overføringen, kan vi lett gjenkjenne den (husk om paritetsbit?) og raskt overføre ham igjen.
Men det vil være vanskelig å oppdage en feil i en kilobyte med data, og det vil være mye vanskeligere å overføre det.

Et eksempel på en asynkron seriell dataoverføringsenhet er en datamaskin COM-port, et favorittmodem designet av Trussardi, og en mus koblet til samme port, som dumme sekretærer av en eller annen grunn alltid prøver å sette inn i PS/2.
Alle disse enhetene opererer via RS-232-grensesnittet, eller snarere via den asynkrone delen av det, siden standarden også beskriver synkron dataoverføring.

Dataoverføring fra sentral prosessor til enhver perifer enhet og omvendt kontrolleres ved å angi en avbruddsforespørsel IRQ...

Avbrudd og adresser

Overføringen av data fra sentralprosessoren til en hvilken som helst perifer enhet og vice versa kontrolleres ved å angi en avbruddsforespørsel (IRQ) og en I/O-adresse. For en ekstern perifer enhet tildeles avbruddsforespørselen og I/O-adressen til porten den er koblet til.

Selve ordene "avbruddsforespørsel" indikerer at CPU-en blir avbrutt og blir bedt om å håndtere data som kommer fra en enhet. Det er totalt 16 avbrudd - fra 0 til 15. Alle serielle og parallelle porter krever generelt sin egen avbruddsforespørsel, bortsett fra at COM1 og COM3, samt COM2 og COM4, ​​ofte har en felles avbruddsforespørsel.

For hver port må du spesifisere unik adresse I/O, som ligner på postkasse for korrespondanse som ankommer CPU-adressen, hvor den lagres til behandling. Hvis en avbruddsforespørsel eller I/O-adresse brukes av mer enn én enhet samtidig, vil ingen av dem fungere ordentlig og kan til og med fryse PC-en.

Hvis det er problemer med en port, sjekk hvilke avbruddsforespørsler og I/O-adresse som er tilordnet den.

Kontrollpanel - System - Enheter - COM- og LPT-porter

Hvis du ser en gul sirkel før en linje med utropstegn inne, kan du finne årsaken til "interferensen". Med linjen uthevet, klikk "Egenskaper - Ressurser". I «Liste over motstridende enheter»-feltet finner du hva som forårsaker konflikten. Hvis det viser seg at dette er en slags gammelt brett enhet som ikke støtter Plug & Play, vil den bli oppført som en "Ukjent enhet".

For å løse problemet, endre avbruddsforespørselen eller I/O-adressen for en av de fornærmende enhetene. Hvis porten er på hovedkortet, bruk deretter programmet til dette første installasjon System Oppsett (BIOS).

For å gå inn i System Setup under oppstart av PC, trykk på "Slett", "F1" eller en annen tast - finn ut i systemdokumentasjonen. Mange oppsettprogrammer lar deg tilordne en avbruddsforespørsel og en I/O-adresse (sett ressurser) til hver spesifikke port, og overstyrer de gamle.

Finn en ubrukt avbruddsforespørsel eller I/O-adresse.

Kontrollpanel - System - Enheter - Datamaskin

Du vil se full liste ressurser brukt. Hvis det ikke er noen ubrukte avbruddsforespørsler, prøv å deaktivere den ubrukte porten ved hjelp av systemoppsett.

Etter det...

System - Enheter - Motstridende enhet - Ressurser

Slå av " Automatisk oppsett". I "Liste over ressurser"-vinduet velger du ressurstypen, klikker på "Endre"-knappen og i "Verdi"-feltet angir du en ny (ubrukt) avbruddsforespørselsverdi eller I/O-adresse.

Stille inn parametere for parallellport

Parallelle porter er forkortet LPT. Datamaskinen tildeler automatisk adressene LPT1 til LPT3 til hver oppdaget parallellport.

Hvis du installerer en annen parallellport, sørg for at den ikke bruker en eksisterende avbruddsforespørsel. På noen datamaskiner bruker LPT1 og LPT2 IRQ7 som standard. Ved å bruke Enhetsbehandling, still inn IRQ5 for LPT2. Hvis dette ikke er mulig, bruk Oppsettprogram Systemets CMOS.

Standard Parallell Port Resource Settings

LPT-port Avbruddsforespørsel I/O-adresse
LPT1 IRQ7 ZVS
LPT2 IRQ7 378
LPT3 IRQ5 278

Innstilling av serieportparametere

Hver eneste seriell port identifiseres ved hjelp av en av åtte mulige COM-adresser - COM1, COM2, etc., som hver har sin egen unike I/O-adresse og avbruddsforespørsel.

Vær forsiktig når du installerer en enhet som krever en COM-port til PC-en. Portene COM1 og COM2 har standard adresser I/O- og avbruddsforespørsler, som ikke skal endres noe sted (kan vanligvis bare endres i PC-ens oppsett CMOS-program). Hvis du trenger å tilordne en COM1- eller COM2-port til en ny enhet, går du inn i installasjonsprogrammet når du starter opp PC-en og enten deaktiverer den serielle porten som er tildelt COM1 eller COM2, eller hvis du trenger å slette de tilsvarende innstillingene for lagt til enhet, endre avbruddsforespørselen og adressen som identifiserer den I/O

Merk at alle standard I/O-adresser kun bruker tredje og fjerde avbrudd. Siden to enheter ikke skal dele samme avbruddsforespørsel, prøv å tilordne nye eksterne enheter til port COM3 over COM3 ved å manuelt angi avbruddsforespørsler og I/O-adresser ved hjelp av Enhetsbehandling (dialogboks "Egenskaper: System").

Standard Serial Port Resource Settings

COM-port Avbruddsforespørsel I/O-adresse
COM1 IRQ4 3F8
COM2 IRQ3 2F8
COM3 IRQ4 ZE8
COM4 IRQ3* 2E8
COM5 IRQ4* ZEO
COM6 IRQ3* 2EO
COM7 IRQ4* 338
COM8 IRQ3* 238

*Kan installeres ved hjelp av Manager Windows-enheter 9x (Egenskaper: System)

Seriell portoptimalisering

Datamaskinen har én eller to innebygde 9-pinners serielle porter, vanligvis plassert på baksiden av datamaskinen. Ved å bruke en slik port kan kun 1 bit data overføres per tidsenhet, mens gjennom en parallellport - 8 biter. Hastigheten til den serielle porten avhenger av den universelle asynkrone transceiveren (UART), som konverterer den parallelle datastrømmen som går gjennom PC-bussen til en enkeltbits.

Vanligvis kommer moderne PCer med en 16550 UART-modell. I dette tilfellet er det maksimalt gjennomstrømning er 115 kbps, noe som gir tilstrekkelig båndbredde for de fleste serielle enheter. Eldre UART-modeller 16450 og 8250 kan ikke lenger takle denne oppgaven. Men noen ganger er ytelsen til UART 16550 kanskje ikke nok, fordi noen analoge modemer behandle komprimerte data med en hastighet på 230 kbit/s, og ISDN-adaptere - opptil 1 Mbit/s. Så hvis du trenger høyere dataoverføringshastigheter, kjøp et utvidelseskort med en 16750 UART-modell som kan operere med 921 kbps.

Arbeid med parallellporter

Parallelle porter brukes vanligvis til skrivere, selv om de også kan koble andre enheter, for eksempel skannere, til en PC. Med deres hjelp kan du overføre data med hastigheter fra 40 KB/s til 1 MB/s, og noen ganger enda høyere.

I utgangspunktet kommer alle PC-er med én parallellport i form av en 25-pinners kontakt på bakpanelet. For å legge til en ekstra port, må du kjøpe en I/O-kontroller og installere den i utvidelsessporet på hovedkortet. Det er fire typer parallellporter - ensrettet, toveis, forbedrede muligheter (EPP-port) og forbedrede muligheter (ECP-port). Hver av dem har forskjellige hastigheter og muligheter. De fleste nye PC-porter støtter alle fire modusene, og for å finne ut hvilken parallellporten gir, se i installasjonsprogrammet ( CMOS-oppsett utility)-delen av PC-en perifere enheter(Integrert periferiutstyr).

Enveis port noen ganger også kalt SPP-port. Denne grunnleggende konfigurasjonen sender data med en hastighet på 40-50 KB/s i bare én retning - til skriveren eller annen ekstern enhet.

Toveis port. Gir toveis datautveksling med overføringshastigheter fra 100 til 300 KB/s mellom PC og ekstern enhet. I dette tilfellet kommer informasjon om tilstanden til sistnevnte inn på datamaskinen.

Enhanced Port (EPP). Designet for eksterne stasjoner og nettverkskort som krever høy ytelse. Gir dataoverføringshastigheter fra 400 KB/s til 1 MB/s eller mer.

Når du installerer EPP-alternativet i System Setup-programmet, tilbys versjon 1.7 og 1.9. For nesten alle eksterne enheter kjøpt fra siste årene, må du velge 1.9.

Extended Capability Port (ECP).Øker hastigheten og utvider mulighetene for datautveksling mellom en ekstern enhet og en datamaskin. Hvis skriveren og andre eksterne enheter støtter ECP, rapporterer de direkte enhetsstatus og feil.

Hvis i programmet. Systemoppsett, still inn ECP-alternativet, så vises en linje for å velge en DMA-kanal (direkte minnetilgangskanal). Den må stilles inn på samme måte som for en avbruddsforespørsel. For å forhindre DMA-kanalkonflikter, se de gratis i vinduet "Egenskaper: Datamaskin", som beskrevet ovenfor. Hvis konflikten ikke kan unngås, gå tilbake til toveis portmodus.

Den beste porten for en dataorkan.

I nye systemer og perifere enheter begynte parallelle og serielle porter å bli erstattet av en universell seriell buss ( Universal Serial Bus, USB). Med dens hjelp kan du oppnå dataoverføringshastigheter på opptil 12 Mbit/s, og også koble til, med bare én port, tastaturer, skjermer, mus og mange andre (opptil 127) enheter, som, som med SCSI-grensesnittet som løser lignende problemer, kan kobles til "kjede". I dette tilfellet brukes bare én avbruddsforespørsel. USB-bussen kan også installeres på eldre datamaskiner ved å kjøpe riktig utvidelseskort.

Sammen med parallellporten er COM-porten, eller seriell port, en av de tradisjonelle datamaskininn-/utgangsportene som ble brukt i de første PC-ene. Selv om i moderne datamaskiner COM-porten har begrenset bruk, men informasjon om den kan være nyttig for mange brukere.

Serieporten, som parallellporten, dukket opp lenge før bruken av personlige datamaskiner med IBM PC-arkitekturen. I de første personlige datamaskinene ble COM-porten brukt til å koble til eksterne enheter. Imidlertid var omfanget av bruken noe forskjellig fra omfanget av parallellporten. Hvis parallellporten hovedsakelig ble brukt til å koble til skrivere, ble COM-porten (forresten, prefikset COM bare en forkortelse for ordet kommunikasjon) vanligvis brukt til å jobbe med telekommunikasjonsenheter, for eksempel modemer. Du kan imidlertid koble til porten, for eksempel en mus, så vel som andre eksterne enheter.

COM-port, hovedbruksområder:

  1. Koble til terminaler
  2. ~ eksterne modemer
  3. ~ skrivere og plottere
  4. ~ mus
  5. Direkte forbindelse mellom to datamaskiner

For øyeblikket er omfanget av COM-porten betydelig redusert på grunn av introduksjonen av et raskere og mer kompakt, og forresten også seriell USB-grensesnitt. Nesten ute av bruk eksterne modemer, designet for tilkobling til en port, samt "COM"-mus. Og det er sjelden at noen nå kobler sammen to datamaskiner med en nullmodemkabel.

Imidlertid bruker en rekke spesialiserte enheter fortsatt den serielle porten. Du finner den på mange hovedkort. Poenget er at i forhold til USB COM-port har en viktig fordel– i henhold til RS-232 seriell dataoverføringsstandard, kan den fungere med enheter i en avstand på flere titalls meter, mens driftsrekkevidden USB-kabel, som regel begrenset til 5 meter.

Prinsippet for drift av en seriell port og dens forskjell fra en parallell

I motsetning til en parallellport (LPT), overfører en seriell port data bit for bit på en enkelt linje, i stedet for på flere linjer samtidig. Sekvenser av biter er gruppert i serier med data, som starter med en startbit og slutter med en stoppbit, samt paritetsbiter som brukes til feilkontroll. Det er her et annet engelsk navn kommer fra, som har en seriell port - Serial Port.

Serieporten har to linjer som selve dataene overføres gjennom - disse er linjer for overføring av data fra terminalen (PC) til kommunikasjonsenheten og tilbake. I tillegg er det flere kontrolllinjer. Seriell port betjenes av en spesiell UART-brikke, som er i stand til å støtte relativt høy hastighet dataoverføringshastigheter som når 115 000 baud (byte/s). Riktignok er det verdt å merke seg det ekte hastighet informasjonsutveksling avhenger av begge kommunikasjonsenhetene. I tillegg inkluderer funksjonene til UART-kontrolleren å konvertere parallell kode til seriell kode og omvendt.

Porten bruker relativt høyspente elektriske signaler - opptil +15 V og -15 V. Det logiske nullnivået til den serielle porten er +12 V, og det logiske nivået er -12 V. Et så stort spenningsfall gjør at vi kan garanti høy grad støyimmunitet for overførte data. På den annen side, brukt i seriell port høy spenning krever komplekse kretsløsninger. Denne omstendigheten bidro også til nedgangen i havnens popularitet.

Seriell grensesnitt RS-232

Seriell portdrift på en PC er basert på dataoverføringsstandarden for serielle enheter RS-232. Denne standarden beskriver prosessen med datautveksling mellom en telekommunikasjonsenhet, for eksempel et modem, og en datamaskinterminal. RS-232-standarden definerer elektriske egenskaper signaler, deres formål, varighet, samt størrelsen på koblinger og pinout-diagrammer for dem. Samtidig beskriver RS-232 bare det fysiske nivået av dataoverføringsprosessen og angår ikke transportprotokoller, som kan variere avhengig av kommunikasjonsutstyret og programvaren som brukes.

RS-232-standarden ble opprettet i 1969, og dens siste versjon, TIA 232, publisert i 1997. RS-232 regnes nå som foreldet, men de fleste operativsystemer støtter ham fortsatt.

I moderne datamaskiner er serieportkontakten en 9-pinners DB-9 hannkontakt, selv om RS-232-standarden også beskriver en 25-pinners DB-25-kontakt, som ofte ble brukt på eldre datamaskiner. DB-9-kontakten er vanligvis plassert på PC-hovedkortet, selv om den i eldre datamaskiner kan ha vært plassert på et spesielt multikort satt inn i et utvidelsesspor.

9-pins DB-9-kontakt på hovedkort

DB-9-kontakt på kabelen til enheten koblet til porten

I motsetning til en parallellport, er kontaktene på begge sider av en toveis seriell kabel identiske. I tillegg til linjene for overføring av selve dataene, inneholder porten flere tjenestelinjer gjennom hvilke data kan overføres mellom terminalen (datamaskinen) og telekommunikasjonsenheten (modemet). kontrollinformasjon. Selv om teoretisk bare tre kanaler er nok for at en seriell port skal fungere - datamottak, dataoverføring og jording, har praksis vist at tilstedeværelsen av tjenestelinjer gjør kommunikasjonen mer effektiv, pålitelig og som et resultat raskere.

Hensikten med serieportens DB-9-kontaktlinjer i henhold til RS-232 og deres korrespondanse med kontaktene til DB-25-kontakten:

Kontakt DB-9 engelsk navn Russisk navn Kontakt DB-25
1 Deteksjon av databærer Transportør oppdaget 8
2 Overfør data Overførte data 2
3 Motta data Mottatt data 3
4 Dataterminal klar Terminalberedskap 20
5 Bakke Jord 7
6 Datasett klar Senderberedskap 6
7 Forespørsel om å sende Forespørsel om å sende data 4
8 Fjern for å sende Dataoverføring tillatt 5
9 Ringeindikator Ringeindikator 22

Konfigurasjon og avbrudd

Siden en datamaskin kan ha flere serielle porter (opptil 4), tildeler systemet to maskinvareavbrudd for dem - IRQ 3 (COM 2 og 4) og IRQ 4 (COM 1 og 3) og flere BIOS-avbrudd. Mange kommunikasjonsprogrammer, så vel som innebygde modemer, bruker avbrudd og adresserommet til COM-porter for sitt arbeid. I dette tilfellet brukes vanligvis ikke ekte porter, men såkalte virtuelle porter, som emuleres av selve operativsystemet.

Som med mange andre hovedkortkomponenter, kan COM-portparametrene, spesielt BIOS-avbruddsverdiene som tilsvarer maskinvareavbrudd, konfigureres gjennom grensesnittet BIOS-oppsett. Til dette formål brukes følgende BIOS-alternativer, for eksempel COM-port, innebygd serieport, seriell portadresse, etc.

Konklusjon

Den serielle PC-porten er for øyeblikket ikke et mye brukt middel for input/output. Men siden det er stort antall utstyr, først og fremst for telekommunikasjonsformål, designet for å fungere med en seriell port, samt på grunn av noen fordeler med RS-232 seriell dataoverføringsprotokoll, seriell grensesnitt bør ennå ikke avskrives som et absolutt utdatert arkitekturelement personlig datamaskin.