|
آموزش رباتیک برای دانش آموزان و همه علاقمندان علوم رباتیک و الکترونیک آموزشگاه رباتیک در تهران تلفن : 77422883
درس بیست و نه : آموزش انتقال فایل از کامپیوتر به آی سی
ابتدا بايد يك نكته رو از مطالب جلسهي
پيش گوش زد كنم، براي بستن مدار
Reset و
همچنين كرستال خارجي، در
ATMEGA16L هيچ الزامي وجود
ندارد و صرفاً براي دقت بيشتر ميباشند. براي پروگرام كردن ميكروكنترلرهاي خانوادهي AVR روشها و پورتكولهاي متعددي وجود دارد. يكي از معروفترين و پركاربردترين پروتكولهاي موجود، STK200\300 نام دارد كه ما در اين جلسه سعي ميكنيم نحوهي استفاده از اين پروتكول را آموزش دهيم. همانطور كه گفته شد، ميكروكنترلرهاي خانوادهي AVR اين قابليت را دارند كه ميتوان آنها را مستقيماً به وسيلهي يك كابل 5 رشته به كامپيوتر متصل نموده و پروگرام كرد، و در نتيجه، نيازي به يك دستگاه مجزا براي پروگرام كردن ندارند. اين روش پروگرام كردن STK200/300 نام دارد. اين روش، به خاطر عدم نياز به هرگونه مدار جانبي و سهولت كار با آن، از محبوبيت زيادي در بين كاربران حرفهاي برخوردار است. اولين نكته اين است كه اگر كامپيوتر شما پورت LPT(موازي) نداشته باشد، شما نمي توانيد به اين روش(يعني فقط با يك كابل 5 رشتهي ساده) ميكروكنترلر خود را پروگرام كنيد و بايد از مدارهاي پروگرامر USB استفاده كنيد. با استفاده از پروگرامرهاي USB، شما ميتوانيد با استفاده از درگاه USB هم ميكروكنترلر خود را پروگرام كنيد. ساختن اين پروگرامرها كار سادهاي نيست، اما انواع مختلف آنها در بازار موجود است . براي ديدن پورت يا درگاه LPT (موازي) ، به پشت كيس كامپيوتر خود نگاه كنيد.
درگاه LPT داراي 25 پايه است كه به شكل زير شماره گذاري ميشوند.
كابل فلت نيز در شكل زير نشان داده شده است.
حالا ميتوانيد به وسيلهي اين 5 سيم ميكروكنترلر خود را پروگرام كنيد. كافيست اين سيمها را به ترتيب زير به پايههاي ميكروكنترلر وصل كنيد. سيمي كه به پايهي شمارهي 6 سوكت متصل شده است، بايد به پايهي SCK در ميكروكنترلر شما وصل شود. در SCK, ATmega16 پايهي شمارهي 8 است. پايهي شمارهي 7 سوكت، بايد به پايهي MOSI در ميكروكنترلر وصل شود. در MOSI ,ATmega16 پايهي شمارهي 6 است.
پايهي شمارهي 9 سوكت، بايد به پايهي Reset در ميكروكنترلر وصل شود. در ATmega16 Reset پايهي شمارهي 9 است.
پايهي شمارهي 10 سوكت، بايد به پايهي MISO در ميكروكنترلر وصل شود. درMISO,ATmega16 پايهي شمارهي 7 است.
و در نهايت، پايههاي شمارهي 18تا 25 نيز، بايد به GND يا همان زمين در ميكروكنترلر وصل شود. پايهي 11و 31 در ATmega16L ، - ياهمان GND است.بهتر است براي اتصال اين پايه به ميكروكنترلر، از يك مقاومت 1 كيلو اهم استفاده كنيد. در ضمن دقت كنيد، كه اگر طول سيم بيش از نيم متر باشد، ممكن است در پروگرام كردن دچار مشكل شويد، به همين خاطر بهتر است تا جاي ممكن طول سيم را كوتاه انتخاب كنيد.
خلاصه اتصالات :
براي پروگرام کردن يک ميکروي AVR تنها به
يک فيش پارالل (Parallel) که بهش LPT يا DB-25 هم ميگن نياز داريم. بعد
بايد يک سري از پايههاي ميکرو رو به پايههاي فيش پارالل لحيم کرد.
درس سی :روش تنظیم کدویژن برای پروگرامر
اين جلسه قراره در ابتدا نحوهي تنظيم CodeVision را براي پروگرامري كه در جلسهي پيش ساختيم مطرح كنيم و بعد از اون، كمي هم آموزش زبان C را دنبال كنيم. در جلسات پيش با بخش پروگرامر(Programmer) در CodeVision آشنا شديم. براي استفاده از نرم افزار پروگرامر، ابتدا بايد آن را با توجه به سختافزاري كه براي پروگرام كردن در اختيار داريم تنظيم كنيم. براي اين كار CodeVision را باز كنيد و از منوي بالا گزينهي "Setting" را انتخاب كنيد. سپس گزينهي "Programmer" را انتخاب كنيد. پنجرهاي به شكل زير باز ميشود.
پروگرامري كه ما جلسهي پيش آموزش داديم همين STK200+/300 است كه معمولاً به صورت پيش فرض انتخاب شده است. قسمت Delay Multiplier هم نياز به تنظيم خاصي ندارد. با استفاده از اين قسمت ميتوان كمي وقفه در عمليات پروگرام شدن به وجود آورد كه اين كار ممكن است برخي مشكلات احتمالي را در هنگام پروگرام كردن برطرف كند. در اين قسمت نياز به تنظيم بخش ديگري نيست و پروگرامر آمادهي استفاده است. تا به اينجا ما مقدمات كار با ميكروكنترلرهاي خانوادهي AVR را ياد گرفتيم و الان ميتونيم در حد آماتور از ميكروكنترلر در مدارهايي كه طراحي ميكنيم، استفاده كنيم. اما كار با ميكروكنترلرهاي AVR به همين جا ختم نميشود، از اينجا به بعد ما سعي ميكنيم مبحث ميكروكنترلر را به صورت حرفهاي تر دنبال كنيم. در ادامهي اين جلسه برميگرديم به بحث برنامه نويسي در زبان C تا كمي بيشتر با اين زبان آشنا شويم. يك نكته را بايد قبل از شروع بحث متذكر شوم، در ميكروكنترلر، همهي وروديها منطقي ميشوند. يعني اگر سطح ولتاژ پايهي ورودي (كه مثلاً يك سنسور نوري به آن متصل شده است) بين 0 تا 2.5 ولت باشد، آيسي آن را 0 منطقي در نظر ميگيرد و اگر بين 2.5 تا 5 ولت باشد، آن را 1 منطقي در نظر ميگيرد.
در حالت عادي، دستورات داخل برنامهي
ما، از اولين دستور تا آخرين دستور به ترتيب اجرا ميشوند. اما اگر بخواهيم
بعضي از دستورات فقط تحت شرايط خاصي اجرا شوند يا مثلاً بخشهاي ديگري از
برنامه چندين بار تكرار شوند، بايد بتوانيم روند اجراي دستورات برنامه را
كنترل كنيم. براي اين منظور دستوراتي در زبان
C
وجود دارند كه به آنها دستورات يا ساختارهاي كنترلي ميگوييم.
if (شرط يا شروط) { دستوراتي كه فقط اگر شروط بالا برقرار باشند اجرا ميشوند } else { دستوراتي كه فقط اگر شروط بالا برقرار نباشند اجرا ميشوند } نكات مهم در مورد اين ساختار: 1- بعد از هر كدام از دستورات در داخل if و else بايد حتماً ";" گذاشته شود. 2- دقت كنيد كه بعد از خود if و else نيازي به ";" نيست. 3- اگر بخواهيم چند شرط براي if بگذاريم ، به نحوي كه فقط اگر همهي شروط برقرار بودند دستورات اجرا شوند، بايد به شكل زير عمل كنيم: if (شرط1 && شرط2 && شرط3) 4- اگر بخواهيم چند شرط براي if بگذاريم ، به نحوي اگر هركدام ازشروط برقرار بودند، دستورات مربوطه اجرا شوند بايد به شكل زير عمل كنيم: if (شرط1 || شرط2 || شرط 3 ) 5- اگر بخواهيم تساوي 2 عبارت، يا يك عبارت با يك مقدار را چك كنيم به شكل زير عمل مي كنيم: if (a == b && f == 20) اين عبارت 2 شرط دارد كه اگر متغير a برابر با متغير b باشد و اگر متغير f هم برابر با مقدار 20 باشد، دستورات مربوط به if اجرا ميشوند. 6- اگر بخواهيم مقدار خروجي مثلاً يك سنسور نوري را چك كنيم كه 1 منطقي است يا نه، به صورت زير عمل ميكنيم:
if ( PORTB.1== 1 )
اين 2 عبارت
دقيقاً يك كار را انجام ميدهند. همانطور كه ميبينيد، "==!" به معناي عدم
تساوي است.در حالت كلي "!"در اين زبان به معناي نقيض است.
|
|