مقدمه
کامپيوتر ها داده را به دو طريق “موازي و سريال ” انتقال مي دهند. در انتقال هاي موازي ،داده اغلب از ۸ خط داده و يا بيشتر استفاده مي شود. در اين حالت داده مي تواند به وسيله اي که فقط چند فوت دورتر است انتقال يابد. به عنوان مثال چاپگر ها از انتقال موازي استفاده مي کنند. اگر چه در انتقال به صورت

موازي حجم زيادي از داده در مدت زمان کوتاهي انتقال مي شود ولي در فاصله محدوديت داريم و اين فاصله نمي تواند چندان طولاني باشد؛ براي انتقال در فواصل دورتر از روش ارسال سري استفاده مي شود.در روش انتقال به صورت سريال تبادل اطلاعات به صورت بيت به بيت مي باشد. يعني هر بار يک بيت ارسال مي گردد.

اصول تبادل سريال
وقتي که ريز پردازنده اي با دنياي خارج تبادل اطلاعات مي کند بسته هاي داده را د ر ابعاد بايت فراهم مي نمايد. در بعضي موارد همچون چاپگر ها، اطلاعات به راحتي از گذرگاه داده ۸ بيت اخذ شده و به گذرگاه داده۸ بيت چاپگر تحويل مي شود.اين روش اگر کابل زياد طولاني نباشد عملي است زيرا کابل هاي طولاني ،سيگنال ها را تضعيف و حتي تغيير شکل مي دهند. بعلاوه مسير ۸بيت گران هم هست . بنابراين در تبادل داده بين دو سيستم با فاصله دور از انتقال سريال

استفاده مي شود. واقعيت استفاده از يک خط داده در تبادل سريال به جاي خط داده ۸ بيت در تبادل موازي، نه تنها موجب ارزاني فرآيند مي شود بلکه موجب تبادل اطلاعات دو کامپيوتر واقع در دو شهر از طريق خط تلفن مي گردد. براي به راه ا ندازي تبادل سريال داده ، بايت داده بايد از گذر گاه ۸بيتي ريز پردازنده گرفته شده و با استفاده از شيفت رجيستر ورودي –موازي-خروجي-سريال به بيتهاي سريال تبديل مي گردد که آنگاه قابل ارسال ل به يک خط داده خواهد بود. واضح

است که در سمت گيرنده بايد يک شيفت رجيستر ورودي- سريال-خروجي-موازي براي دريافت داده ارسالي وجود داشته باشد و پس از بسته بندي کردن به صورت بايت ،آنها را به گيرنده تحويل دهد.
استانداردهاي RS232

براي ايجاد امکان سازگاري در ميان تجهيزات تبادل داده ساخت سازندگان مختلف، يک استاندارد واسطي به نام RS232 بوسيله سازندگان صنايع الکترونيک (EIA) در سال ۱۹۶۰ بر پا شد.

امروزه RS232 يک استاندارد واسط I/O با کاربردي گسترده است .اين استاندارد در PC ها و تجهيزات بسياري به کار رفته است. با اين وجود، چون اين استاندارد قبل از خانواده منطقي TTL بنا نهاده شد، سطوح ولتاژ ورودي و خروجي سازگار با TTL نيست. در RS232 منطق ۱ با -۳ تا -۲۵ ولت تعريف مي شود، و منطق ۰ با +۳ تا+۲۵ ولت تعريف مي شود، به اين دليل براي اتصال هر RS232 به يک سيستم مبتني بر ميکروکنترلر، بايد از مبدل هاي ولتاژي همچون MAX232 براي

تبديل از سطح TTL به سطح RS232 و بر عکس استفاده کنيم. تراشه هاي MAX232 به نام راه اندازهاي خط و گيرنده هاي خط نام گذاري شده اند. چون همه پايه ها در کامپيوترهاي جديد به کار نرفته اند،IBM ، نوع DB-9 از استاندارد I/O سريال را که فقط ۹ پايه داشت معرفي کرد.که وظايف اين ۹ پايه به ترتيب عبارتند از:
پايه۱:تشخيص سيگنال حامل داده را به عهده دارد.”DCD”
پايه۲:دريافت داده را به عهده دارد.”RXD”
پايه۳: ارسال داده را به عهده دارد.”TXD”

پايه۴:آماده گي تجهيزات پايانه داده .”DTR”
پايه۵:سيگنال زمين.”SG”
پايه۶:مجموعه داده آماده.”DSR”
پايه۷:تقاضاي ارسال از طرف DTE. “RTS”
پايه۸:آماده گي براي ارسال .”CTS”
پايه۹:تشخيص دهنده سيگنال زنگ.”RI”

شکل ارتباط بين دو DTE

MAX232
چون RS232 با ميکرو پروسسورها و ميکرو کنترلر هاي امروزي ساز گاز نيست، به يک راه اندازخطي نياز دارد تا سيگنالهاي RS232 را به سطوح ولتاژTTL تبديل کند.تا به اين وسيله توسط پايه هاي RXDو TXD در ميکرو قابل پذيرش باشند..يکي از مزاياي AX232 اين است که از منبع تغذيه+۵V استفاده مي کند.که مشابه منبع ولتاژ براي ۸۰۵۱ است.به عبارت ديگر ، با يک منبع +۵V ، مي توان۸۰۵۱ وMAX232 را راه انداخت و به دو منبع تغذيه که در سيستم هاي قديمي مرسوم

بوده است، نيازي نيست.MAX232 دو مجموعه راه انداز براي ارسال و دريافت داده دارد. راه اندازهاي به کار رفته براي TXD، T1 و T2خوانده مي شوند،در حالي که راه اندازهاي RXD با R1 و R2 مشخص شده اند. در بسياري از کار بردها تنها يکي از آنها به کار مي رود.مثلا T1 و R1 همراه با هم براي TXD و RXD در ۸۰۵۱ استفاده شده، و مجموعه دوم بلا استفاده باقي مي ماند. راه انداز T1 در MAX232 داراي علائم T1inوT1out به ترتيب در پايه هاي۱۱و۱۴ مي باشد. پايه T1in در سمت TTL به RXDميکرو کنترلر وصل است، در حالتي کهT1out در سمت RS232 بوده و به پايه RXD در کانکتور۹ DB- وصل مي باشد.

ميکرو کنترلر AT90S2313
AT90S2313 يک ميکرو کنترلر ۸ بيتي توان پايين cmos است که بر اساس معماري AVR RISC بنا نهاده شده است.که شامل دستورالعمل هاي در حال اجرا در يک clock sycle مجزا است. توان عملياتي AT90S2313 نزديک به ۱ MIPS/MHZ است.
هسته AVR يک مجموعه دستورالعمل قدرتمند را با ۳۲ رجيستر همه منظوره کاري ترکيب مي کند. تمام ۳۲ رجيستر همه منظوره به طور مستقيم با ALU در ارتباط هستند.

AT90S2313 خصوصياتي مثل :
۱) شامل بودن ۲ کيلو بايت از حافظه flash قابل برنامه ريزي.
۲) شامل بودن۱۲۸ بايت EEPROM .
3) شامل بودن ۱۲۸ بايت SRAM.
4) شامل بودن ۱۵ خط همه منظوره I/O.

۵) شامل بودن۳۲ رجيستر همه منظوره کاري.
۶) شامل بودن تايمر يا شمّا رنده انعطاف پذير با مد مقايسه.
۷) پشتيباني از وقفه هاي داخلي و خارجي.
۸) شامل بودن يک رجيستر پورت سريال قابل برنامه ريزي UART.
9) شامل بودن تايمر نگهدارنده “watchdog” با اسيلاتور داخلي.

AT90S2313 به وسيله يک مجموعهاي از برنامه هاي کامل که ارتباط بسيار نزديک با هم دارند و ابزار هاي توسعه يافته سيستمي شامل: کامپايلرهاي c و ماکرو اسمبلرها و برنامه هاي debugger/simulators و شبيه ساز مدار “Emulator” پشتيباني مي شود.
اين ميکرو ۲۰ پايه دارد که شماي آن به صورت زير است.

که اين ميکرو شامل دو پورت PB0..PB7 و PD0..PD6 است.که پورت B يک پورت ۸ بيتي I/O است . پين هاي پورت B ميتوانند مقاومت بالا کش داخلي ،انتخابي براي هر بيت ، را فراهم کنند. همچنين PB0 وPB1 به ترتيب به عنوان ورودي مثبت (AIN0) و ورودي منفي (AIN1) به کار برده شوند.که AIN0 و AIN1 براي مقايسه گر آنالوگ روي چيپ استفاده مي شوند. بافرهاي خروجي پورت B ميتواند جريان ۲۰MA را فراهم کند و به طور مستقيم نمايشگر ها “LED” را داريو کند. زماني که پين هاي PB0..PB7 به عنوان ورودي مورد استفاده قرار مي گيرند به طور پيش فرض با صفر مقدار دهي مي شوند.پين هاي پورت B زماني که Reset فعال شود حتي اگر کلاک فعال نباشد ۳ وضعيت دارند.

پورت D يک پورت ۷ بيتي I/O است. پين هاي پورت D ميتوانند مقاومت بالا کش داخلي ،انتخابي براي هر بيت ، را فراهم کنند. . بافرهاي خروجي پورت D ميتواند جريان ۲۰MA را فراهم کند و به طور مستقيم نمايشگرها “LED” را داريو کند. زماني که پين هاي PD0..PD6 به عنوان ورودي مورد استفاده قرار مي گيرند به طور پيش فرض با صفر مقدار دهي مي شوند.پين هاي پورت D زماني که Reset فعال شود حتي اگر کلاک فعال نباشد ۳ وضعيت دارند.
ورودي Reset : يک سطح پايين روي پين شماره ۱ اگر براي مدت بيشتر از ۵۰ns باقي بماند حتي اگر کلاک نيامده باشد يک حالت Reset را ايجاد مي کند پالس هاي کوچکتر تضميني براي ايجاد Reset نمي کنند.

و پايه ۲۰ و۱۰ آن به ترتيب VCC و GND هستند. و PB7 پايه SCK است. که يکي از خروجي هاي مدار programmer به اين پايه وصل ميشود.و PB6و PB5 به ترتيب پايه هاي MISOوMOSI هستند. و پايه ۱ پايه RESET NOTاست که active high است. وکلکتور ترانزيستور موجود در مدار programmer به اين پايه وصل ميشود. و از طرفي RXD مربوط به ميکرو به TXD مربوط بهMAX و TXD مربوط به MAX به RXD ميکرو وصل مي شود. و از طرفي از منبع کلاک خارجي براي اينکه در نهايت اطلاعاتي که به صورت سريال فرستاده مي شود درست دريافت شود استفاده مي کنيم.که کريستال را بين پايه هاي XTAL1 و XTAL 2 قرار مي دهيم .که شکل مداري آن به صورت زير است.

و ساختمان داخلي AT90S2313 و اتصالات MAX به صورت زير است.

که پايه ۱۰ يا ۱۱ از MAX 232 را که ورودي TTL است به پايه TXD از ميکرو وصل مي کنيم و پايه ۱۴ يا ۷ از را که خروجي RS232است به پايه RXD از کانکتور ۹ پين ديگر که براي ارتباط با MAX 232 در نظر گرفته شده است وصل مي کنيم.و پايه ۱۳ يا ۸ از MAX 232 که ورودي RS232است به پايه TXD از کانکتور ۹ پين وصل مي کنيم و پايه هاي۱۲ يا ۹ از MAX 232 را که خروجي TTL است به پايه RXD از ميکرو وصل مي کنيم.
و همچنين براي کار کردن مدار نياز به مولد ولتاژ ۵ volt داريم که اين ولتاژ را توسط يک ترانس DC که به دو پايه ورودي پل-ديود وصل ميشود و دو پايه خروجي پل – ديود به دو پايه رگولاتور وصل مي شود و پايه سوم رگولاتور به زمين وصل مي شود .

خروجي رگولاتور که ولتاژ ۵ volt مي باشد به vcc مربوط به ميکرو و MAX 232 و به کلکتور موجود در مدار programmer وصل مي شود.
در ابتداي کار مدار programmer را روي بورد مي بنديم که اين مدار از يک طرف به پورت DB-9 ،که به پورت سريال کامپيوتر وصل مي شود، متصل مي شود و از طرفي خروجي هاي مدار programmer به ميکرو وصل مي شوند. که خروجي RESET به پايه ۱ ميکرو و خروجي MISO به پايه ۱۸ ميکرو و خروجي SCK به پايه ۱۹ ميکرو و خروجي MOSI به پايه ۱۷ ميکرو متصل مي شود. و همچنين ۲ تا LED به پايه هاي ۱۴ و۱۶ از ميکرو که پايه هاي بي کار محسوب مي شوند و يک LED ديگر را به يکي از پايه هاي ۶,۷,۸,۹ مي توانيم وصل کنيم.

مدار programmer به صورت زير است.

بعد از بستن کامل مدار و تست اتصال کوتاه و وصل کردن ترانس به مدار و وصل کردن ترانس به برق ابتدا با مولتي متر تمام ولتاژ ها را اندازه گيري مي کنيم . اگر ولتاژ vcc وgnd درست بود در آن صورت پورت مربوط به programmer را به پشت سيستم وصل مي کنيم و دقت مي کنيم که در اين مرحله نبايد ميکرو را در مدار قرار دهيم .
سپس طبق دستورالعمل زير تست ميکرو ولتاژ هاي خاصي مثل ولتاژ بيس ترانزيستور و ولتاژ دو سر ديود ها و ولتاژ RESET و VCC را اندازه مي گيريم.
۱) ولتاژRESET بايد ۵ V+ باشد.
۲) ولتاژ BASE ترانزيستور بايد تقريبا -۵V باشد.
۳) ولتاژ کلکتور بايد ۵ V+ باشد.
۴) ولتاژ MOSI و SCK تقريبا بايد -.۰۷ باشد.

در صورتي که هم ولتاژ ها را اندازه گرفتيم و ولتاژ هاي قابل قبول به دست آمد در آن صورت نرم افزار ponyprog را براي read و write کردن از و به ميکرو اجرا مي کنيم. ابتدا از combo Box سمت راست گزينه AT90S2313 را انتخاب مي کنيم و سپس از combo Box کنار آن گزينه AVR micro را انتخاب مي کنيم.

سپس از منوي option گزينه calibration را انتخاب مي کنيم .

سپس يک message box باز مي شود که از ما سوال مي پرسد آيا شما مي خواهيد که calibration را اجرا کنيد با کليک کردن روي دکمه ok پيام Calibration OK را مشاهده مي کنيم.
سپس از منوي setup گزينه Interface Setup را انتخاب مي کنيم در پنجره باز شده از I/O port setup گزينه serial را انتخاب مي کنيم و از combo Box گزينه SI Prog API را انتخاب مي کنيم.و سپس COM port ورودي را انتخاب مي کنيم و سپس دکمه OK را کليک مي کنيم.

و سپس از منوي command گزينه Read program(FLASH) را براي Read کردن انتخاب مي کنيم در صورتي که با مشکل error(-24) مواجه شديم يعني اينکه ما مشکل تغذيه داريم و دوباره مدار را بررسي مي کنيم در غير اين صورت اگر عمل Read با موفقيت انجام شد در آن صورت مي توانيم عمل Write را انجام دهيم . که براي انجام اين عمل نيز ابتدا بايد فايل HEX را باز کرده و سپس از منوي command گزينهWrite Program (FLASH) را انتخاب مي کنيم و مي بينيم که عمل Write هم با موفقيت انجام مي شود. که مراحل کار در شکل هاي زير نمايش داده سده است.