هدف
پورت موازی یک سیستم کامپیوتر راهی جهت کنترل پروژههای سختافزاری می باشد. در این فصل با بررسی انواع پورتهای موازی، نحوه استفاده از این پورت را به عنوان نمونه در چندپروژه خواهیم آورد. نحوه برنامهریزی پورتهای موازی و استفاده از وقفهها در کنترل پورتها را نیز مورد بررسی قرار می دهیم.
دراین فصل سعی خواهیم کرد با بررسی پورت موازی یا چاپگر ها،نحوۀ استفاده از آن در پروژهها و کنترل ابزارهای خروجی و ورودی و دیجیتال یا آنالوگ با آن را بررسی نماییم. گر چه این فصل چندان ارتباطی با اسلاتهای توسعه ندارد ولی نحوۀ استفاده از یک یا چند آدرس را در پروژههای سختافزاری نشان خواهد داد که برای طراحان کارتهای جانبی خارج از اسلاتها که جدیدا نیز زیاد شده است بسیار مفید خواهد بود.
1-11 پینهای اینترفیس چاپگر سنترونیکس
پورت موازی به عنوان اینترفیس استاندارد چاپگرها در سیستمهای 8680 تعریف و استفاده میشود. این مشابه استاندارد چاپگر اپسیون Fx-100 میباشد. این پورت دارای 26 پین بوده که تعداد زیادی سیگنال زمین در آن جهت جلوگیری از تداخل نویز در نظر گرفته شده است. این 36 پایه را میتوان در 4 گروه به صورت زیر تقسیمبندی نمود:
خطوط اطلاعات که اطلاعات را از سیستم به چاپگر منتقل مینماید.
سیگنالهای حالت چاپگر. این سیگنالهای حالت چاپگر را در هر لحظه نشان میدهند.
سیگنالهای کنترل چاپگر. این سیگنالها به چاپگر میگوید که چه عملی باید انجام دهد.
سیگنالهای زمین. این سیگنالها جهت برگشت زمین هر کدام از خطوط اطلاعات و یا سیگنالهای حالت و کنترل مورد استفاده قرار میگیرد.
خطوط اطلاعات و زمین آنها
خطوط ورودی D1 تا D8، یک خط موازی جهت ارسال اطلاعات از سیستم کامپیوتر به چاپگر را فراهم میآورند. سیگنالهای 20 تا 28 خطوط زمین D1 تا D8 میساشند.
سیگنالهای حالت چاپگر
سیگنالهای خروجی فوق از چاپگر به سیستم آمده تا حالت قسمتهای مختلف چاپگر را به سیستم و برنامۀ کاربردی مورد نظر نشان دهد. این سیگنالها عبارتاند از:
(پین 12) PE : جهت نمایش نداشتن کاغذ توسط چاپگر
(پین 11) BUSY این سیگنال در صورت آماده نبودن چاپگر جهت دریافت اطلاعات جدید در حالت high قرار میگیرد.یعنی زمانی که چاپگر off-line است یا آمادگی دریافت اطلاعات جدید را ندارد به حالت high میرود و به سیستم میگوید که نباید برای چاپگر ارسال اطلاعات داشته باشد.
(پین 32) ERROR : یک سیگنال خروجی که درحالت معمولی high بوده و زمانی که یک خطا (مثلا نبودن کاغذ) رخ دهد به حالت low خواهد رفت.
(پین 13) SLCT : در حالت نرمال به صورت high بوده و از چاپگر به PC میرود و زمانی که چاپگر روشن میشود نشان میدهد که چاپگر انتخاب شده است.
(پین 10) ACKNLG : جواب دادن به دریافت اطلاعات ارسال شده از سوی کامپیوتر میباشد و اعلان میکند که آمادۀ دریافت اطلاعات جدید است.
سیگنالهای کنترل چاپگر
دو سیگنال TROBE (پین 1) و CLNLG به عنوان مهمترین سیگنالهای کنترلی مورد استفاده قرار میگیرد. پین NIT (پین 31) به عنوان یک سیگنال ورودی بوده که در حالت نرمال high میباشد. وقتی فعال میشود (low میشود) باعث باز نشاندن چاپگر شده و یک برنامۀ خاص اجرا خواهد شد. شکل 2-11 کلیۀ سیگنالهای پورت سنترونیکس یرا نشان میدهد. برای ارسال اطلاعات از کامپیوتر به چاپگر مراحل زیر انجام میگیرد:
سیگنال Busy که از چاپگر به سیستم میآید توسط PC چک میشود تا نشان داده شود که چاپگر آمادۀ دریافت اطلاعات است (مشغول نیست)
کامپیوتر 8 بیت اطلاعات را بر روی باس اطلاعات که ما بین چاپگر و سیستم برقرار است قرار میدهد.
کامپیوتر سیگنال TROB را فعال میکند(به حالت low). اطلاعات باید حداقل 5/0 میکرو ثانیه روی باس اطلاعات باشد.
خط TROB باید به آرامی در مدت 5/0 میکرو ثانیه به حالت low برگردد.
فعال شدن سیگنال TROB باعث فعال شدن سیگنال Busy از سوی چاپگر خواهد شد و به کامپیوتر میگوید که باید تا پایان یافتن این مرحله منتظر شود.
زمانی که چاپگر آمادۀ دریافت اطلاعات جدید باشد سیگنال CLNLG را به حالت فعال ، برای کامپیوتر ارسال خواهد کرد. این سیگنال برای 5 میکروثانیه به حالت low خواهد رفت.
2-11 اینترفیس چاپگر PC
در سیستمهای PC و سازگار با آن ، برنامۀ POST (تست خودش در زمان روشن شدن) به عنوان قسمتی از بایاس ، برای وجود و اتصال چاپگر به پورت موازی عملیات تست را انجام میدهد.
پین رفت
پین برگشت
سیگنال
نوع ورودی/خروجی
توضیحات
1
2
3
4
5
6
7
8
9
19
20
21
22
23
24
25
26
27
STROBE
D1
D2
D3
D4
D5
D6
D7
D8
ورودی
ورودی
ورودی
ورودی
ورودی
ورودی
ورودی
ورودی
ورودی
جهت خواندن اطلاعات بوده و حداقل پهنای آن باید 5/0 میکرو ثانیه باشد. در حالت نرمال به صورت high میباشد.
خطوط اطلاعات جهت ارسال اطلاعات
10
28
ACKNLG
خروجی
پالس با حدود 5/0 میکروثانیه به حالت LOWکه نشان میدهد که اطلاعات دریافت شده و آمادۀ دریافت اطلاعات بعدی است.
11
12
13
14
15
1617
18.
30-19
31
32
33
34
35
36
29
30
--
-
-
-
-
GND
-
-
-
-
-
36
Busy
PE
SLGT
UTOFEEDXT
-
0V
CHASISEND
-
-
NIT
ERROR
GND
-
-
LCTIN
خروجی
خروجی
خروجی
ورودی
-
-
-
-
سیگنالهای گرفتنی زمین ورودی
خروجی
-
-
-
ورودی
حالت high بودن آن نشان می دهد که چاپگر آماده درایفت اطلاعات نیست .
حالت high نشان میدهد که چاپگر کاغذ ندارد.
نشان میدهد که چاپگر در حالت انتخاب شدهای قرار داد.
با غعال بودن این سیگنال، بعد از هر چاپ یک خط را عبور خواهد داد.
-
سیگنال زمین یا صفر ولت
جدا بودن دو سیگنال زمین از چاپگر
-
با غعال شدن این سیگنال چاپگربا پاک کردن بافرهایش یک برنامۀ خاص را اجرا میکند.
زمانی که یک خطا رخ دهد این سیگنال از چاپگر به سیستم ارسال خواهد شد.
همانند سگنالهای 19 تا 30
-
با مقاومتهای 7/4 میکرواهم با 5 ولت پولآپ شدهاند.
ارسال اطلاعات به چاپگر فقط زمانی که این سیگنال low باشد امکانپذیر است.
آدرس پورتهای موازی (حداکثر 4 پورت قابل تعریف میباشد) در چهار آدرس به صورت جدول زیر در محدودۀ فضای اطلاعات بایاس قرار دارند. در این محدوده فضای آدرس چک میشود تا مشخص شود که کدام پورت وجود دارد.
مدار اینترفیس چاپگر از سه پورت I/O اصلی جهت شروع پورتهای I/O به صورت: یک پورت I/O جهت خطوط اطلاعات LPT ها، یک پورت I/O جهت خطوط کنترل ، استفاده میکند.به عنوان مثال اگر آدرس شروع برای پورت LPT1 عدد 378H باشد آنگاه پورت 378H برای اطلاعات، 379H برای خطوط حالت و 37AH برای خطوط کنترل استفاده خواهد شد که شکل 3-11 سه آدرس فوق را برای LPT1 تا LPT3 نشان میدهد.
مثال : با استفاده از نرمافزار دیباگ مشخص کنید که کدام پورت چاپگر در دسترس میباشد:
حل:
C:\>DEBUG.
D 40:08L8
0040:0008 7803000000000000
این نشان میدهد که آدرس پورت LPT1 که همان 0378H میباشد در دسترس است و پورت دیگری تعریف نشده است.
پورت چاپگر
پورت اطلاعات (r/w)
پورت حالت(فقط خواندنی)
پورت کنترل (R/W)
LPT1
LPT2
LPT3
03BCH
037CH
0278H
03BDH
0379H
0279H
03BEH
039AH
027AH
مثال: در شکل 3-11 آدرس پورت LPTI و 3BCH ذکر کردهایم و درمثال قبل این آدرس را 378H آوردیم، کدام مطلب درست است؟
حل: هر دو مطلب صحیح است. زیرا کارخانه اول از آدرس اصلی 3BCH استفاده کرده است و کارخانه دوم از 378H که هردو دراست است، برای درستی عمل فوق میتوان با فرمان دیباگ آدرسهای 0040.0008و 0040:0009 را خوانده وباهمدیگر مقایسه کنیم.
شکل 4 به طورکامل آدرس یک پورت به همراه سیگنالهای ورودی یاخروجی به هرکدام را نشان میدهد.
نکته:
سیگنال D5 در پورت کنترل جهت مد توسعه یافته استفاده میشود. این مد اجازه میدهد که خطوط DO تا D7 به صورت دو طرفه عمل نمایند ولی سیستمهای PC قدیمی از مد توسعه یافته پشتیبانی نمی کنند(توضیحات بیشتر را در ادامه خواهیم آورد.)
4-11 باس اطلاعات دو طرفه در پورتهای موازی
در کامپیوتر های اولیه و تاسالهای 1987، پورت موازی کامپیوتر به صورت یک طرفه عمل می کرد به طوری که فقط قادر به ارسال اطلاعات از سیستم به چاپگر بودید. برای امکان دریافت اطلاعات(مثلا کابلهای لینک که دو کامپیوتر را از طریق پورت موازی به همدیگر متصل مینماید.) از طریق پورت موازی باید از پورتهای حالت و کنترل آن و همچنین از سیگنالهایی به غیر از DO تا D7 استفاده کنید.
اما در سیستمهای بعد از 1981، امکان دو طرفه بودن پورت موازی فراهم شد که دراین قسمت آنها را بررسی خواهیم کرد.
SPP
Spp استاندارد معمولی یا پورت موازی استاندارد (standard parallel port) در اولین سری کامپیوترهای PC تعریف و وجود داشت. این حالت جهت سازگاری هماکنون نیز درتمام کامپیوترهای جدید تعریف و استفاده می شود. دراین استاندارد باس اطلاعات به صورت موازی به طوریک طرفه عمل مینماید و فقط اطلاعات را از کامپیوتر به چاپگر ارال می کند. در این حالت، طراحان هیچگونه تلاشی جهت خواندن اطلاعات از طریق پورت موازی را نخواهند داشت زیرا باعث سوختن پورت خواهد شد. بدین خاطر شمانیز هیچوقت به فکر استفاده از پورت چاپگر درحالتspp جهت خواندن اطلاعات نیافتید. گرچه جهت خسارت کمتر ویا احتمالا عدم ایجاد خسارت، خطوط پورت موازی با مقاومت پولآپ شده اند.
2/PS
اولین تغییر در پورت موازی چاپگرها در سال 1987 با آمدن کامپیوترهای PS/2 به وجود آمد.با آمدن این پورت موازی، سرعت انتقال به مقدار چشمگیری افزایش پیدا کرد. همچنین مدار داخلی باس اطلاعات به نحوی تغییر کرد که خطوط انتقال بتوانند به طور یکطرفه کار کنند. در زمان روشنروشن کامپیوتر، با باس به طور اتومات این پورت را درحالتspp تعریف و ست می کند. همزمان بیت کانتر5(cs)به کاربر اجازه تغییر جهت پورت را می دهد . در زمان بوت، C5=0 می باشد، و این به معنی خروجی بودن اطلاعات خواهد بود. با قراردادن C5=1، حالت پورت به صورت ورودی تغییر خواهد کرد.
مثال: فرض کنید که آدرس پایه پورت LPT2، درکامپیوترهای PS/2 و سازگار با آن آدرس 278H باشد. نحوه تغییر بیت C5 جهت تعریف پورت در حالت وروردی را نشان دهید.
حل: باتوجه به آدرس پایه H 278 برای اطلاعات، پورت حالت H279 و پورت کنترل AH27 خواهد بود.
MOV DX,27AH: DXآدرس پورت کنترل
IN AL, DX;گرفتن اطلاعات جاری
قراردادن C5=1 بدون تغییر چیزی دیگری OR AL, 00100000;
OUT DX; AL;پورت اطلاعات در حالت ورودی قراردارد.
EPP
مد EPP یا پورت توسعه یافته (enhane parallel port) شبیه پورت PS/2درقسمت قبل است با این تفاوت که سرعت آن بیشتر است. اگر از قسمتهای قبل به یاد داشته باشید، خطوط ازدست دادن همچون strobe توسط نرمافزار ایجادمیشود که دراین نوع پورتها، این خطوط به صورت سختافزاری در طراحی پورت درنظر گرفته است. در این مد یک رجیستراضافی با آدرس پایه بعلاوه 2 تعریف شده است. د رواقع درمدEPP، فضای آدرس I/O از آدرس پایه تا پایه بعلاوه 7 وجود دارد. به عنوان مثال، اگر آدرس پایه 278H باشد آنگاه 279Hو 27AH نیز مشابه 278H خواهند بود. همچنین آدرسهای I/O به مقدار 27BH تا 27FH روزر هستند.
EPC
مد EPC یا پورت با قابلیت توسعه یافته (extended capability port) شبیه EPP ولی با سرعت بالاتر می باشد. در واقع ECP یک مد EPP به علاوه یک DMA سریع جهت انتقال اطلاعات میباشد. وجوئ DMA و فشردهسازی اطلاعات در این مد، آن را به عنوان یک پورت سریع و ایدهآل جهت کاربردهایی همچون چاپگرهای لیزری و اسکنرهای سریع درآورده است. د رواقع این عامل(داشتن سرعت بالا) با عث توسعه این مد توسط شرکتهای مایکروسافت، هیولت پاکارد، و ... شد.
در سیسمتهای جدید، قابلیت نوع پورت موازی(ECP, EPP, PS/2, SPP) در ستآپ کامپیوتر وجود دارد.
درگاه موازی چاپگر
واسط موازی کامپیوترهای شخصی یعنی LPTI یا LPT2 در مجموع 17 خط دیجیتال را در اختیار ما قرار میدهد که این خطوط موجب شدهاند واسط موازی برای تبادل سریع اطلاعات با سایر مدارهای واسط مناسب باشد. در این کتاب، با استفاده از این 17 خط، تعداد محدودی آزمایش که ساده نیز هستند، شرح داده شده است. در هر حال همواره باید هنگام استفاده از واسط موازی احتیاطهای لازم را انجام داد. واسط موازی در مقایسه با واسط سریال د ربرابر اشتباهات غیرعمدی آسیبپذیرتر است و نسبتا سادهتر خراب می شود. زیرا هیچیک از این 17 خط در برابر اضافهبار محافظت شده نیستند. در کار با واسط موازی، دستورات زیر باید موردتوجه قرار گیرند:
باید تجهیزات مربوط به درگاه موازی را باید وقتی که کامپیوتر خاموش است وصل کرد .
ولتاژهای ورودی باید بین صفر و 5 ولت باشند.
خروجیها نباید اتصال کوتاه و یا به خروجیهای دیگر وصل شوند.
خروجیها هرگز نباید به ولتاژ تغذیه تجهیزات دیگر وصل شوند.
1-9: خطوط i/o
جدول صفحه بعد تمامی اتصالات را نشان می دهد . شکل 1-9 نحوه اختصاصدادهشدن پایهها را در یک سوکت 25 راه موجود در کامپیوترهای شخصی نشان می دهد. همچنین در صورت به کارگیری کابل چاپگر، می توان از سوکت 36راه سنترونیکس نیز استفاده کرد. متاسفانه اتصالات کابلهای چاپگر خریداری شده همیشه کاملا مطابق با شکل نشان داده نیست لذا توصیه می شود که قبل از به کارگیری کابل، ابتدا آن را به دقت بررسی کنید.
اغلب مواقع به غیر از LPT1 واسط چاپگر دیگری که بانام LPT2 شناخته میشود، به سیستم اضافه شود. در برنامه زیر از LPT1 استفاده شده است. یک چنین برنامههایی را می توان با تغییر آدرس مبنا، باری خط موازی دیگر به کار گرفت.
LPT1
LPT2
مبنای 16
مبنای 10
378
888
278
632
با به کارگیری ثابت data، یک درگاه خروجی کامل هشت بیتی دردسترس قرار می گیرد که در حالت عادی با ارسال اطلاعات به چاپگر مورداستفاده واقع میشود. خروجی با TTL سازگار است لذا سطح ولتاژ حالت بین 5/3 تا 5 ولت میباشد و می تواند تقریبا جریانی معادل 10 میلی آمپر را تغذیه کند.
این درگاه برای خروجی هشت بیتی سریع مناسب است ولی قبل از دسترسی، باید درگاه را باز کرد تا بین ترتیب ویندوز اجازه خروجی فیزیکی را بدهد. تابع OPENCOM رامیتوان برای بازکردن واسط موازی کار گرفت.
VB: OPENCOM (‘LPT1:’)
OUTPORT BA,N
دلفی: OPENCOM (‘LPT1:’);
OUTPORT(BA,N);
از بین تعداد زیادی از خطوط کمکی چاپگر، تنها وضعیت پنج ورودی توسط ثبات status نشان داده شود، این ورودیها عبارتند از: ACK , PE, Select, Error و Busy که وضعیت خط Busy به صورت معکوس رانده می شود. اغلب این ورودیها با TTL سازگاری دارندلذا بازبودن ورودیها به منزله بالاکردن آنها است. همین دلیل میتوان کلیدها را به سادگی به زمین وصل کرد. وضعیت هر پنج کلید را می توان از آدرس (BA+2) خواند، البته قبل از این کار باید واسط راتوسط Open Com باز کرد.
VB: A=INPORT (‘BA+1):REM status port read
دلفی: A:=INPORT(BA+1);[status port read]
آدرس درگاه(BA+2) اجازه دسترسی به ثبات control و متعاقب آن به چهار خط کمکی Init, Auo Fec , strobe و SLST INمی دهد. در حالت عادی کامپیوتر از طریق این خطوط، اطلاعات مربوط به کنترل به چاپگر ارسال می کند. درهر صورت وضعیت این چهار خط را نیز می توان خواند. اطلاعات به خروجی کنتور- بازداده می شود. مقاومتهای بالابر(پول- آپ)به 5+ ولت، تقریبا 3/3 کیلواهم هستند. اگر وضعیت یک خروجی بالا باشد، خط خروجی در حالت امپدانس بالاست و بنابراین می توان آن را به زمین وصل کرد. وضعیت نسبی این خطوط را می توان از طریق ورودی TTL خواند، در نتیجه این چهار خط را برای ردو بدل اطلاعات در هردو جهت می توان به کار برد. باید همیشه به خاطر داشته باشید که سه خط از این چهار خط (Auto Feed , Strobe و SLCT IN) معکوس شدهاند و فقط خط Init به این صورت نیست. با استفاده از تابع XOR در برنامهها مطابق مثالهای زیر میتوان به سادگی بیت مورد نظر را معکوس کرد:
VB: (خروجی) OUTPORT BA+2 , A XOR 11
VB(ورودی) : B=(INPORT (BA+2) XOR 11) AND 15
(خروجی) دلفی : OutPort (BA+2 , A XOR 11);
(ورودی) دلفی : B:=(Inport (BA+2) XOR 11) AND 15;