گروه فناوری و اطلاعات تــــورانـِـت

محلی برای معرفی و بحث پیرامون مباحث شبکه ، امنیت و . . .

گروه فناوری و اطلاعات تــــورانـِـت

محلی برای معرفی و بحث پیرامون مباحث شبکه ، امنیت و . . .

میکروکنترلر

میکرو چیست؟

میکروکنترلر چیست:

میکروکنترلر را در واقع می توان یک کامپیوتر کوچک در قالب یک چیپ برای کنترل وسایل الکترونیکی (در اینجا ربات) تلقی کرد.  تفاوت میکروکنترلر با میکروپروسسور در این است که میکروکنترلر دارای یک CPU ٫مقدار محدودی RAM ٬ ROM ٬ پورت های I/O و تایمر در درون خود می باشد در صورتی که میکروپروسسور فقط یک CPU هست و شما باید RAM, ROM ,... را به صورت اجزای جانبی به آن متصل کنید (درست مثل CPU کامپیوتر). برای همین میکروکنترلرها تک منظوره ولی میکروپروسسورها همه منظوره هستند. با این تفاسیر میکروکنترلرها دارای کارایی های خاص خودشان مثلا در ماشین لباسشویی٬ ماکروویو٬ تلفن و البته ربات هاو... هستند یعنی جایی که استفاده از میکروپروسسور نه از نظر کارایی و نه از نظر اقتصادی عقلانیست!

انتخاب میکرو:  

در انتخاب میکرو فاکتورهای زیادی دخیل هستند : ۱-هزینه  ۲-سرعت  ۳-کارایی و قابلیت ها  ۴-راحتی کار با آن و... در حال حاضر در بازار ایران میکروهای متنوعی ازجمله ۸۰۵۱ از اینتل٬ PIC از میکروچیپ تکنولوژی و AVR از شرکت ATMEL طرفداران زیادی دارند.

برای این ربات از AVR مدل Atmega32 استفاده خواهیم کرد و برای آموزش برنامه نویسی آن با وجود کامپایلرهای متنوع ، ما Bascom را انتخاب می کنیم.

بعضی از قابلیت های مهم AVR مدل Atmega32 :

·                     کارایی بالا و توان مصرف کم

·                     سرعت بسیار بالا نسبت به سایر میکروها

·                     32K حافظه فلش داخلی قابل برنامه ریزی

·                     پایداری حافظه فلش: قابلیت 10000 بار نوشتن و پاک کردن

·                     2K حافظه داخلی SRAM

·                     2 تایمر-کانتر 8 بیتی و یک تایمر-کانتر 16 بیتی

·                     .....

برنامه نویسی Atmega32:
همونطور که گفته شد برای برنامه نویسی این میکرو از Basic و کامپایلر معروف Bascom استفاده می شود. Bascom فقط 7 منو دارد که عبارتند از: File, Edit, Program, Options, Tools, Window, Help .

 منوی Options همانطور که از اسمش پیداست برای تنضیمات کامپایلر و معرفی نوع و مدل میکرو و.. می باشد.

منوی Program که در واقع گزینه هایی برای کامپایل کد, Syntax Check و شبیه سازی دارد.

بدنه یک برنامه در محیط Bascom:

منظور از بدنه حداقل کد یک برنامه هست بدون هیچ فرمانی.

- معرفی میکرو:

برای شروع یک برنامه در محیط Bascom ابتدا بایستی میکروی مورد نظر تعریف گردد.

$REGFILE = VAR       'فرم کلی تعریف٫ "وار" یک رشته معرف مدل خاص میکروی مورد نظر هست $REGFILE =  "M16def.dat"       'MEGA 16 MCU این برای مدل
$REGFILE =  "M32def.dat"      
'MEGA 32 MCU این برای مدل
$REGFILE =  "M128def.dat"     
'MEGA 128 MCU این برای مدل

-کریستال:
برای مشخص کردن فرکانس کریستال (میکرو ها باید به یه قطعه خارجی بنام کریستال وصل
شوند) استفاده شده برحسب هرتز از دستور CRYSTAL = X$ استفاده می نماییم X فرکانس کریستال استفاده شده بر حسب هرتز است. خوشبختانه AVR دارای یک کریستال 1MHZ داخلی هست اما حتی برای استفاده از اون هم باید این دستور رو بکار ببریم. مثال:

$CRYSTAL = 100000        '1MHz internal$CRYSTAL = 140000        '14MHz external

-یاداشت(اختیاری):

 گاهی نیاز است یاداشتهایی برای اطلاعات بیشتر در برنامه اضافه کنید٬ در Bascom هم مثل بیسیک می تونید با علامت " ' " یا REM اینکار را  انجام دهید. درست مثل یادداشت های اضافی که در مثالهای قسمتهای قبل استفاده شده مثال:

Print "Hello World"      'این دستور بعدا معرفی می شود  

همچنین در پایان هر برنامه باید از کلمه END استفاده کنید که مثل یک حلقه بی پایان عمل می کند و دلیل استفاده  چه در این کامپایر و برای این میکرو و چه در سایر کامپایلرها و برای میکروهای دیگر٬ این است که سیستم برنامه میکرو با کامپیوتر فرق می کند و اگر از END یا حلقه بی پایان استفاده نکنیم برنامه همینطور اجرا شده و سایر آدرس های حافظه میکرو را به خیال ادامه برنامه می خواند.

 

 -پیکربندی پورتها:

همونطور که در شکل بالا می بینید میکروی AVR  مدل ATMEGA32 داری ۴۰ پایه هست که ۳۲ تا از پایه های آن می تواند برای چهار پورت موجود در آن استفاده شود. این ۴ پورت مانند شکل به صورت PA, PB, PC, PD نام گذاری شده اند که البته هر کدام از این پورتها دارای ۸ پین ۸X۴=۳۲) ) هستند. که درواقع هر پورت را باید به صورت یک بایت در نظر گرفت و هر پین را به صورت یک بیت فرض کرد و هر کدام از این ۳۲ پایه میکرو مربوط به پین خاصی از یک پورت است. در Bascom نماد پورتها به صورت portx  که X یکی از حروف A..D هست بکار میرود و نماد پین های هر پورت هم به صورت portx.y که در اینجا X مثل بالا  و y شماره پین از ۰ تا ۷ می باشد. مثال:

 PortB = 10         'set portb to 10
 PortC.0 = 0        'Set pin 0 of portC to 0
 PortC.4 = 1        'Set pin 4 of PortC to 1

نکته دیگر که باید دقت کرد این است که پورت ها یک بایتی هستند یعنی نهایت عددی که می شود در آنها قرار داد ۲(۱۱۱۱۱۱۱۱) درمبنای باینری یا ۲۵۵ در مبنای دهدهی هست. وقتی عدد ۲(۱۱۱۱۱۱۱۱) یا ۲۵۶ رو مثلا در پورت سی قرار دهیم تمام پین های این پورت ۱ می شوند و اگر باز عدد ۱۷ معادل ۲(۰۰۰۱۰۰۰۱) را در آن قرار دهیم (PortC=17) آنگاه پینهای ۰ و ۴ این پورت یک خواهند شد.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد