سیاه قلم های مجتبی ستوده

تخلص ادبی " خاتون نویس"

تخلص ادبی " خاتون نویس"

سیاه قلم های مجتبی ستوده

یاران همراه :

مزرعه من سال هاست پا بر جاست
در چهار فصل سال

خاتون نویس در چهارمین روز از نخستین ماه چهارمین فصل سال زاده شد
نامش مجتبی گذاشتند
شعر که نه سیاه هایش را سال هاست اینجا مینگارد و دفتر پاره های دلش
خاتونی دارد
به بزرگی و مهربانی تمام عشق ها
خاتونِ مجتبی حریم امن خاتون نوییس است
نباشد خاتون نویسی نیست .

مدتیست اسباب کشی کرده ایم از ( http://sotoudeh.blogfa.com ) به این سرا
در این سرا هستیم نامعلوم
و عشقمان
بی تاااااست
تا ندارد ....


قدومتان بر تیام مجتبی

آخرین نظرات
پیوندها

قرآن، برای تعلیم وتزکیه جان وروح آدمی است وروح از آن جهت که موجودی مجرد است: نه مذکر است ونه مؤنث. پس در قرآن سخن از تزکیه روح است نه سخن از زن ومرد تا گفته شود، این دو همتا ومساوی هم هستند. 

تفکر غربی می گوید: انسان دو نوع یا دو صنف است: زن ومرد، این دو در مسائل تعلیمی وتربیتی مساوی هم هستند، یعنی، زن همسان مرد، ومرد همتای زن است، این به نحو سالبه به انتفاء محمول است، یعنی زنی هست ومردی هست، ولی باهم فرق نمی‏کنند. زیرا در تفکر الحادی حقیقت انسان همین بدن است واین بدن، به دو شکل ساخته شده است ولی هر دو شکل مساوی هستند، اما در مکتب الهی تمام حقیقت انسان روح اوست گرچه بدن هم لازم وضروری است. دین اسلام می‏گوید: هدف از نزول وحی تعلیم وتربیت، تزکیه نفوس وتهذیب انسانها است، در اینجا تساوی یا تفاوت زن ومرد سالبه به انتفاء موضوع است نه به انتفاء محمول، یعنی محور تعلیم وتربیت جان انسانها است وجان نه مذکر است ونه مؤنث، واصلا زن ومردی در کار نیست. نه این که بگوییم زن ومردی هست ولی باهم مساویندتا بشود یک قضیه موجبه یا فرقی باهم ندارند که بشود یک قضیه سالبه که صدق آن به انتفاء محمول است نه به انتفاء موضوع. این که گفته شده است، فرق بین موجبه وسالبه در این است که گاهی سالبه به انتفاء موضوع صادق است، یکی از مواردش اینجا است. 

خلاصه آن که، اولا زن بودن یا مرد بودن مربوط به پیکر است نه جان وروح. ثانیا تعلیم وتربیت وتهذیب وتزکیه از آن نفس است. ثالثا نفس غیر از بدن است، وبدن غیر از نفس، واصلا در کلاس درس قرآن، روح می‏نشیند نه بدن، و روح هم نه زن ونه مرد. این که ذات اقدس اله می‏فرماید: 

ونفس وما سواها فالهمها فجورها وتقواها (1) 

سوگند به نفس وآن که آن را درست کرد، سپس گناهکاری وتقوایش را الهام کرد. 

نفس نه مذکر است ونه مؤنث. ویا این که می‏فرماید: 

فاذا سویته ونفخت فیه من روحی (2) 

پس وقتی آن را درست کردم واز روح خود در آن دمیدم. 

روح از آن جهت که موجود مجرد است اندامی ندارد تا یا مذکر باشد یا مؤنث، ونیز این که می‏فرماید: 

یا ایها الانسان انک کادح الی ربک کدحا فملاقیه (3) 

ای انسان حقا که تو به سوی پروردگار خود به سختی در تلاش واو را ملاقات خواهی کرد. 

ای انسان، تو سالک الی الله هستی، مگر بدن سفر می‏کند، تا ما بگوییم این سالکان دو صنف هستند: بعضی زن وبعضی مردند؟ سالک الی الله روح است، وروح نه مؤنث است ونه مذکر. این از آن معارف بلندی است که می‏توان گفت: 

ویعلمکم ما لم تکونوا تعلمون (4) 

ومی‏آموزد به شما آنچه را که شما نمی‏توانستید بدانید. 

یعنی، جزو معارفی است که فقط ره‏آورد انبیا است. قرآن مدعی است که ما بعضی از چیزها را به شما یاد می‏دهیم که به عنوان تاسیس نیست، بلکه به عنوان امضا وتایید است، اما یک سلسله مسائل ومعارف را می‏آوریم که نه تنها در گذشته نزدیک یا دور، بشریت‏به آن دسترسی نخواهد داشت ویعلمکم ما لم تکونوا تعلمون نه «ما لاتعلمون‏» چیزی قرآن به یاد بشر می‏دهد، که بشر قادر نیست آن را از نزد خود بفهمد، واین آیه هر روز تازه است، وهر روز با ما سخن می‏گوید، ومی‏فرماید: من یک پیام نو وتازه‏ای دارم که دست‏بشر به آن نمی‏رسد. قرآن این تعبیر بلند را درباره وجود گرامی نبی اکرم‏علیه الاف التحیة والثناء نیز دارد آنجا که می‏فرماید: 

وعلمک ما لم تکن تعلم (5) 

وآنچه را که نمی‏توانستی بدانی به تو آموخت. 

این جمله «علمک ما لم تعلم‏» یا «ما لا تعلم‏» نیست. با همه نبوغ واستعداد خاصی که وجود مبارک آن حضرت داشت، ذات اقدس اله می‏فرماید: من چیزی به تو یاد داده‏ام که تو نبودی که یاد بگیری، جریان غیب، مساله برزخ، مساله قیامت، مواقف قیامت، بهشت، دوزخ، اسماء حسنای الهی وصدها مسائل غیبی دیگر، موضوعاتی است که دست کسی به آنها نمی‏رسد، بنابراین هر روز این سخن تازه است که یعلمکم ما لم تکونوا تعلمون. 

قرآن کریم وقتی مساله زن ومرد را مطرح می‏کند می‏گوید: این دو را از چهره ذکورت وانوثت نشناسید بلکه از چهره انسانیت‏بشناسید وحقیقت انسان را روح او تشکیل می‏دهد، نه بدن او، انسانیت انسان را جان او تامین می‏کند نه جسم او، ونه مجموع جسم وجان. 

قرآن می‏فرماید: 

من عمل صالحا من ذکر او انثی وهو مؤمن فلنحیینه حیاة طیبة (6) 

هرکس کار شایسته کندچه مرد وچه زن ومؤمن باشد قطعا او را بازندگی پاکیزه‏ای حیات بخشیم. 

یعنی در رسیدن به حیات طیب فقط دو چیز نقش دارد یکی: حسن فعلی به نام «عمل صالح‏» ودیگری: حسن فاعلی به نام «مؤمن بودن روح‏» ، خواه بدن مؤنث‏باشد خواه مذکر، این «هو مؤمن‏» ناظر به حسن فاعلی است، یعنی جان باید مؤمن باشد و «عمل صالحا» ناظر به حسن فعلی است، یعنی کار باید صحیح باشد، کار صحیح از کارگر صحیح، وقتی این دو حسن با هم ضمیمه شدند حیات طیب را به بار می‏آورند. 

پی‏نوشت‏ها: 

1- شمس، 8- 7. 

2- حجر، 29. 

3- انشقاق، 6. 

4- بقره، 151. 

5- نساء، 113. 

6- نحل، 97.


دیدگاه قرآن درباره تفاوت و تساوی زن و مرد (کتاب: زن در آینه جلال و جمال، ص 73 نویسنده: آیة الله جوادی آملی ) 
مجتبی ستوده


آیا خلقت زن وآفرینش مرد از دو گوهر مستقل بودو مبدأ قابلی جداگانه است تا هرکدام دارای آثار خاص ولوازم مخصوص باشد، مانند دو گوهر که از دو کان منحاز ظهور می‏کنند وجنس هرکدام غیر از جنس دیگری است. ویا آن که هر دو از یک گوهرند وهیچ امتیازی بین آنها از لحاظ گوهر وجودی نیست مگر به اوصاف کسبی واخلاق تحصیلی و... ویا آن که مرد بالاصاله از یک گوهر خاص خلق شده سپس زن از زوائد مبدأ تابع مرد به طور متفرع بر آن آفریده شده است . ویا به عکس یعنی زن بالاصاله از یک گوهر معین آفریده شده سپس مرد از زوائد مبدأ تابع مرد بطور طفیلی وفرع وی فراورده شده است؟ 

مجتبی ستوده

مقام و منزلت زن در قرآن آنچه در زیر از نظر می گذرد خلاصه ای است از دیدگاه مکتب رهائی بخش اسلام در مورد جایگاه زن که با توجه به بخشی از سور و آیات قرآن کریم تنظیم شده است .


مقام زن در اسلام چنان است که در قرآن کریم سومین سوره مفصل به نام "النساء" نامیده شده است و در ده سوره دیگر مسائلی مربوط به حقوق و منزلت زنان است و همه جا در خطابات عام آنان مورد خطابند و همچنین می توان از بسیاری از مفاهیم قرآن می توان نکات مهمی را در این رابطه استنباط کرد و می توان این ادعای دروغ را که اسلام برای زن ارزشی قائل نیست بدینوسیله بطور کلی منتفی دانست .


اسلام زن را بعنوان مسئله مهم زندگی و متمم حیات انسانی در مسائل اجتماعی ، اخلاقی و قانونی خود جا داده و او را به عنوان عضو موثر جامعه دانسته است . 


پیامبر اکرم صلوات الله علیه و اله آنگاه که از زنان بیعت گرفت به آنان اعلام کرد شما از عناصر اصلی اجتماع و ارکان بنیادی جامعه هستید و برای حفظ و سلامت آن باید به میزان سهم خود از آن پاسداری نمائید .


یا ایها النبی اذا جاءک المومنات یبایعنک ....

مجتبی ستوده

چکیده:

زن در اسلام مورد تجلیل و تکریم فراوانی قرار گرفته و از ارزش و مقام بسیار والائی برخوردار است. با این وجود، در برخی متون دینی روایاتی دیده می‎شود که حداقل به ظاهر نگاهی بدبینانه به زن را تلقی می‎نمایند و حتی در بعضی موارد، کرامت زن را مورد خدشه قرار می‎دهند. این نگاه منفی به زن، معلول عوامل مختلفی است که مهمترین آن، مجعول بودن این‎گونه روایات است. منع کتابت حدیث و نفوذ تفکرات منفی خلیفه دوم بر زنان، از جمله مهمترین مبادی احادیث مجعول، از قبیل اسرائیلات می‎باشد. از این‎رو، لازم است این روایات مورد بررسی سندی و دلالی قرار گیرند. این نوشتار به نحو گزینشی به بررسی بعضی از این روایات که از جهت سندی و دلالی مخدوش هستند، پرداخته و غیر مستند بودن آن‎ها را آشکار می‎سازد. موضوعات کلی این روایات عبارتند از: تنبیه بدنی، آفرینش زن از مرد، فریب شیطان، نهی از علم‌آموزی، خانه‎نشینی.


مجتبی ستوده


جهت همراهی و عضویت در :


** انجمن ادبی دل دلک ها (این انجمن به منظور ایجاد محیطی برای دل نوشته های ایجاد گردیده )

** انجمن جنون بداهه (این انجمن به منظور ایجاد محیطی برای کمک به نگارش ادبی "کارگاه شعر " دوستان ایجاد گردیده  )

** انجمن آزادی بیان  ( این انجمن به منظور ایجاد محیطی برای مباحثه پیرامون مسائل روز اجتماعی ، اعتقادی ، فرهنگی و اقتصادی ایجاد گردیده )



برای عضویت ای دی های زیر را در نرم افزار لاین (LINE) به لیست دوستان خود اضافه نمایید .


نام کاربری (ID)  مدیریت انجمن : aatajj

نام کاربری (ID)  مجتبی ستوده : samco-iibc



مجتبی ستوده

چکیده

میکروکنترلر ARM چیست؟ این قطعات پردازنده‌ای هستند، از نوع ۳۲ بیتی و دارای معماری RISC هستند و سرعت نسبتا بالایی هم دارند (کلاک از ۳۰۰ تا ۲۰۰۰ مگاهرتز) و مجهز به برخی امکانات داخلی (adc و dac و تایمر وکانتر و pwm و rtc و i2c و spi و dmaو ...)وحافظه کش هستند. قابلیت‌ها و باس‌های استانداردی که برای این پروسسورها در نظر گرفته شده به همراه سرعت بالا، حافظه کش مناسب، مقایسه گرهای داخلی، تایمرهای ۱۶ بیتی برای پیاده‌سازی RTC و ... ، باعث شده که عملکرد این تراشه‌ها نسبت به انواع دیگر پروسسورهای هم تراز، دارای کیفیت و قدرت بالاتری باشه.

بخش اول مقدمه‌ای بر میکروکنترلر ARM

مقدمه‌ای بر میکروکنترلر ARM ARM نوعی از معماری پردازنده‌های کامپیوتری است که بر طبق طراحی RISC CPU (معماری ریسک در ادامه توضیح مختصری خواهیم آورد) و توسط کمپانی بریتانیایی ARM Holding طراحی شده است. معماری ARM که دستورالعمل‌های ۳۲ بیتی را پردازش می‌کند از دهه ۱۹۸۰ تا به امروز در حال توسعه است.

    • معماری ریسک: یک نوع معماری ساخت ریزپردازنده می‌باشد. در این معماری بجای استفاده از دستورالعمل‌های خاص منظوره، که در سایر معماری‌ها مرسوم است، از یک مجموعه دستورالعمل فوق‌العاده بهینه‌سازی شده استفاده می‌شود. اولین پروژه مبتنی بر معماری ریسک در اواخر دهه ۷۰ و اوایل دهه ۸۰ میلادی توسط شرکت آی‌بی‌ام، دانشگاه استانفورد و دانشگاه برکلی آغاز شد. درآن دوره پروژه میپس (MIPS) از دانشگاه استانفورد و پروژه ریسک (RISC) نسخه‌های ۱ و ۲ از دانشگاه برکلی همگی بر پایهٔ یک فلسفه بنا شده بودند که بعداً به عنوان معماری ریسک شناخته شد. اکثر طراحی‌های مبتنی بر معماری ریسک دارای خواص زیر بودند: زمان اجرای یک چرخه‌ای / استفاده از روش خط لوله‌ای / تعداد زیاد ثبات‌ها.

ARM مخفف Advanced RISC Machine است و از آنجایی که این معماری براساس طراحی RISC بنا شده، هسته اصلی CPU نیاز به ۳۵ هزار ترانزیستور دارد این در حالی است که پردازنده‌های معمولی رایج x۸۶ که براساس CISC طراحی شده‌اند حداقل نیاز به میلیون‌ها ترانزیستور دارند. مهمترین دلیل مصرف بسیار پایین انرژی در پردازنده‌های مبتنی بر ARM که باعث استفاده گسترده آنها در ابزارهای پرتابل مانند تلفن هوشمند یا تبلت شده نیز همین موضوع است.

جالب است بدانید که شرکت ARM Holding خود تولیدکننده پردازنده نیست و در عوض گواهی استفاده از معماری ARM را به دیگر تولیدکنندگان نیمه هادی می‌فروشد. کمپانی‌ها نیز به راحتی تراشه‌های خود را براساس معماری ARM تولید می‌کنند. از جمله کمپانی‌هایی که پردازنده خود را براساس معماری ARM طراحی می‌کنند می‌توان به اپل در تراشه‌های Ax، سامسونگ در پردازنده‌های Exynos، انویدیا در تگرا و کوالکام در پردازنده‌های Snpdragon اشاره کرد. در سال ۲۰۱۱ مشتریان ARM توانستند ۷٫۹ میلیارد ابزار مبتنی بر این معماری را وارد بازار کنند. شاید تصور می‌کنید که پردازنده‌های مبتنی بر ARM تنها در تبلت و تلفن‌های هوشمند بکار گرفته می‌شوند، اما جالب است بدانید که در همین سال بیش از ۹۵ درصد تلفن‌های هوشمند دنیا، ۹۰ درصد دیسک‌های سخت (HDD)، حدود ۴۰ درصد تلویزیون‌های دیجیتال و ست‌تاپ‌باکس‌ها، ۱۵ درصد میکروکنترلرها و ۲۰ درصد کامپیوترهای موبایل مجهز به پردازنده‌های مبتنی بر معماری ARM بوده‌اند. بدون شک این آمار در سال ۲۰۱۳ رشد فوق‌العاده چشم گیری را تجربه کرده است، چون بازار تلفن‌های هوشمند و تبلت‌های در سال جاری پیشرفت قابل ملاحظه‌ای داشته‌اند. تا اینجای کار معماری ARM تنها برروی پلتفرم ۳۲ بیتی با عرض حافظه ۱ بایت کار می‌کرد. اما با معرفی ARMv۸ این معماری پشتیبانی از دستورات ۶۴ بیتی را نیز آغاز کرد که البته هنوز در سیستم-روی-یک-چیپ‌ها بکار گرفته نشده است. در سال ۲۰۱۲ مایکروسافت نیز نسخه ویندوز سازگار با معماری ARM را به همراه تبلت سرفیس RT معرفی کرد. AMD نیز اعلام نموده که قصد دارد در سال ۲۰۱۴ سرورهای مبتنی بر معماری ۶۴ بیتی ARM را روانه بازار کند. همانطور که پیش‌تر اشاره کردیم، ARM گواهی استفاده از معماری خود را به شرکت‌های دیگر می‌دهد، کمپانی‌هایی که در حال حاضر گواهی استفاده از ARM را دارند عبارتند از: AMD, آلکاتل، اپل, AppliedMicro, Atmel, Broadcom, Cirrus Logic, CSR plc, Digital Equipment Corporation, Ember, Energy Micro, Freescale, فوجیتسو, Fuzhou Rockchip, هواوی، اینتل توسط شرکت‌های زیر شاخه، ال جی, Marvell Technology Group, Microsemi, مایکروسافت, NEC, نینتندو, Nuvoton, انویدیا, NXP (formerly Philips Semiconductor), Oki, ON Semiconductor, پاناسونیک، کوالکام, Renesas, Research In Motion, سامسونگ، شارپ, Silicon Labs, سونی، اریکسون, STMicroelectronics, Symbios Logic, Texas Instruments, توشیبا، یاماها و ZiiLABS RISC و CISC یا ARM در مقابل x86 RISC که مخفف Reduced instruction Set Computing یا مجموعه دستورات ساده شده است در واقع نوعی از طراحی CPU است که پایه و اساس آن، ساده‌سازی دستورات است که منجر به بازده بالا و سرعت بخشیدن به اجرای دستورات می‌شود. (پردازده‌ای که براساس این طراحی ساخته می‌شود را RISC بخوانید ریسک می‌نامند.) مهمترین و معروفترین معماری که براساس RISC طراحی شده، ARM است. درست نقطه مقابل ریسک، طراحی دیگری با نام CISC وجود دارد که مخفف Complex Instruction Set Computing یا مجموعه دستورات پیچیده است که معماری x۸۶ اینتل براساس آن طراحی شده و پردازنده کامپیوترهای رومیزی و لپ تاپ‌ها و بسیاری از ابزارهای دیگر از آن بهره می‌برند. ایده اصلی RISC اولین بار توسط جان کوکی از IBM و در سال ۱۹۷۴ شکل گرفت، نظریه او به این موضوع اشاره داشت که یک کامپیوتر تنها از ۲۰ درصد از دستورات نیاز دارد و ۸۰ درصد دیگر، دستورات غیرضروری هستند. پردازنده‌های ساخته شده براساس این طراحی از دستورات کمی پشتیبانی می‌کنند به این ترتیب به ترانزیستور کمتری نیز نیاز دارند و ساخت آنها نیز کم هزینه است. با کاهش تعداد ترانزیستورها و اجرای دستورات کمتر، پردازنده در زمان کمتری دستورات را پردازش می‌کند. کمی بعد اصطلاح RISC توسط یک استاد دانشگاه کالیفورنیا به نام دیوید پترسون ایجاد شد. هر دو طراحی RISC و CISC به مراتب در انواع و اقسام ابزارها بکار گرفته می‌شوند، اما مفهوم کلی RISC در واقع سیستمی است که در آن به پردازش دستورات کوچک و به شدت بهینه شده پرداخته می‌شود، درست برخلاف CISC که در آن دستورات پیچیده ارسال می‌شوند. یکی از تفاوت‌های عمده بین RISC و CISC نیز در نحوه دسترسی به حافظه و ذخیره و اجرای اطلاعات برروی آن است. در ریسک دسترسی به حافظه تنها از طریق دستورالعمل‌های خاصلی قابل انجام است و به عنوان مثال نمی‌توان از بخشی از دستور add به حافظه دسترسی داشت. علاوه بر ARM شرکت‌های بسیار دیگری از جمله Intel i860, AMD 29k, ARC و غیره از طراحی RISC برای ساخت پردازنده استفاده می‌کنند، اما به لطف گسترش تلفن و تبلت‌ها، معماری ARM به عنوان برجسته‌ترین معماری مبتنی بر RISC شناخته می‌شود.

CISC در سیسک اوضاع دقیقا برعکس ریسک است و پردازنده قادر به پردازش دستورات پیچیده است به همین دلیل نیاز به تعداد بیشتر ترانزیستور و همچنین طراحی پیچیده‌تر و پردازنده‌های گران‌قیمت‌تر دارد. ایده اصلی پشت این طراحی این است که برنامه نویسان ساده‌تر بتوانند نرم‌افزارهای خود را تولید کنند و دستورات را ساده‌تر به CPU ارجاع دهند. به لطف پشتیبانی اینتل و تولیدکنندگان نرم‌افزار، CISC به شدت محبوب شد و تمام کامپیوترها از پردازنده مبتنی بر این طراحی بهره بردند. برخی تصور می‌کنند که ریسک قادر به اجرای دستورات زیاد نیست اما در حقیقت ریسک به اندازه سیسک می‌تواند دستورات مختلف را اجرا کند اما مهمترین تفاوت این دو در این است که در RISC تمام دستورات با یک فرمت، دقیقا یک فرمت صادر می‌شوند و پردازش تمام دستورات یک زمان مشخص طول می‌کشد، معمولا در ریسک در هر سیکل، پردازنده یک دستور را اجرا می‌کند. اما در CISC مجموعه‌ای از دستورات بصورت فشرده و با آدرس دهی مختلف به یکباره پردازش می‌شوند، مثل اعداد اعشاری یا تقسیم که در طراحی RISC وجود ندارند. از آنجایی که دستورات در RISC ساده‌تر هستند پس سریعتر اجرا می‌شوند و نیاز به ترانزیستور کمتری دارند، ترانزیستور کمتر هم به معنی دمای کمتر، مصرف پایین‌تر و فضای کمتر است که آن را برای ابزارهای موبایل مناسب می‌کند. معماری پردازنده‌های مبتنی بر طراحی RISC طی سال‌های گذشته پیشرفت چشم‌گیری داشته و اجرای دستورات پیچیده را نیز میسر کرده است و تولیدکنندگان نرم‌افزاری نیز به سمت ساخت نرم‌افزارهای مبتنی بر این معماری گرایش پیدا کرده‌اند. لازم است بدانید که کامپیوترهای اولیه مک نیز از پردازنده مبتنی بر RISC بهره می‌بردند. اما در واقع پردازنده‌های CISC بسیار سریعتر و پرقدرت‌تر از RISCها هستند و قادر به پردازش امور سنگین می‌باشند اما در عوض گران‌قیمت‌تر، پرمصرف‌تر بوده و دمای بیشتری نیز تولید می‌کنند. در CISC تمرکز برروی سخت‌افزار است و در RISC برروی نرم‌افزار، در CISC دستورات بصورت پیچیده به پردازنده ارسال می‌شوند ولی در RISC نرم‌افزار دستورات را ساده کرده و به عنوان مثال یک عملیات پیچیده را در قالب چندین دستور ساده به پردازنده ارسال می‌کند و پردازنده دستورات ساده را به سرعت پردازش نموده و نتیجه را باز می‌گرداند. پس کدهای نرم‌افزارهای سازگار با RISC طولانی تر ولی کدهای مربوط به نرم‌افزارهای CISC کوتاه‌تر و پیچیده‌تر هستند. البته این بدین معنا نیست که مثلا اگر قرار است برای اندروید یا iOS برنامه بنویسید باید چند هزار خط بیشتر از معادل کامپیوتر ویندوزی آن کد نویسی کنید، در واقع کامپایلرها کدها را به دستورات کوچک زیاد تبدیل می‌کنند و برنامه نویس به سختی متوجه نوع پردازش دستورات می‌شود. اگر بخواهیم در مورد این دو طراحی صحبت کنیم بحث پیچیده و کسل کننده خواهد شد پس به همین جا بسنده می‌کنیم. سیستم-روی-یک-چیپ‌ها و معماری ARM چندین نوع مختلف از معماری برای پردازنده‌های ARM وجود دارد که از آن جمله می‌توان به ARM V۲ ،ARMv3 Arm v۷ و ... اشاره کرد. کمپانی‌ها برای استفاده از هر کدام از این طراحی‌ها باید گواهی مربوط به آن را از ARM Holder دریافت کنند. کمپانی‌ها از این معماری در ساخت پردازنده‌های مورد نظر خود بهره برده و در نهایت یا یکپارچه سازی آن با واحد پردازش گرفیک (GPU)، حافظه رم و قسمت کنترلر باند رادیویی (در تلفن‌های هوشمند) سیستم -روی-یک-چیپ خود را می‌سازند.

سیستم-روی-یک-چیپ (System on a Chip) که آن را به اختصار SoC می‌نامند در واقع یک تراشه است که در آن پردازنده اصلی (CPU)، پردازنده گرافیک (GPU)، حافظه رم، کنترلرهای ورودی و خروجی و بعضا کنترلر باند رادیویی قرار دارند. پس لازم است بدانید که کل SoC براساس معماری ARM تولید نمی‌شود و تنها بخش CPU آن بر مبنای معماری ARM طراحی و تولید می‌گردد. پس این باور که فلان SoC براساس معماری ARM ساخته شده، اشتباه است و بخش پردازنده اصلی اکثر SoCها براساس یکی از طراح‌های معماری ARM ساخته می‌شوند. از جمله سیستم-روی-یک-چیپ‌هایی که هسته اصلی آن‌ها براساس معماری ARM طراحی شده‌اند می‌توان به ۳ نسل اول تگرا انویدیا، Quatro شرکت CSRT، نوا شرکت اریکسون، OMAP شرکت تکزاس، Exynos شرکت سامسونگ و Ax شرکت اپل اشاره کرد. این شرکت‌ها از معماری ARM و همچنین معماری یکی از هسته‌های طراحی شده توسط این شرکت بهره برده‌اند. اما شرکت‌ها می‌توانند گواهی استفاده از معماری ARM را تهیه کرده و سپس بر اساس آن هسته سفارشی مورد نظرشان را طراحی کنند یعنی به جای اینکه هسته CPU را براساس Cortex-A۹ یا Cortex-A۱۵ یا دیگر هسته‌های ARM بسازنند، خودشان براساس معماری یکی از خانواده‌های ARM، هسته خاص خود را طراحی کنند. به عنوان مثال سیستم-روی-یک-چیپ A۶ اپل، X-Gene ،Krait کوالکام، StrongARM شرکت DEC ،XScale شرکت Marvell اینتل یا Project Denver شرکت انویدیا اینگونه هستند و اگر چه بخش CPU از سیستم-روی-یک-چیپ آنها براساس معماری ARM طراحی شده‌اند، اما طراحی هسته‌ها با آنچه ARM پیشنهاد کرده متفاوت هستند. چند پرسش و پاسخ در باره میکروکنترلر ARM

چرا قبلا از این پردازنده استفاده نمیشده، ایا به تازگی وارد بازار شدند؟ این پردازنده قبلا توسط شرکت arm تولید میشده که این شرکت هم به قیمت بالا این پردازنده رو به مشتریان خاص میفروخته، اما از اوایل سال ۲۰۰۲ به بعد این شرکت مجوز ساخت این پردازنده رو به شرکتی‌های همچون ATMEL و Luminary Micro و شرکت philips و چند تا شرکت دیگه میده. شرکت‌های فوق با اضافه کردن امکاناتی مثل انواع مبدل‌ها (دیجتال به انالوگ و ....)، انواع رابط‌ها (بلوتوث، usb و...)این پردازنده رو به یک پردازنده عمومی تبدیل می‌کنند و اون رو به بازار جهانی عرضه میکنن. برای برنامه نویسی این پردازنده‌ها از چه زبان و کامپایلری استفاده میشه؟ برای برنامه نویسی این پردازنده از زبان‌های c و بیسیک و اسمبلی استفاده میشه. کلیه کامپایلرهای زبان اسمبلی برای این پردازنده رایگان هستند

برای زبان‌های c مثل خود c و c++ کامپایلرهای متعددی ارائه شده که کی از این کامپایلرها کامپایلر keil uvision هست که در اون میشه به زبان‌های اسمبلی و c و c++ برنامه نوشت. نسخه رایگان این کامپایلر را در اینترنت می‌توانید دانلود کنید

برای زبان بیسیک نیز کامپایلر بسکام arm وجود داره که هنوز در دسترس عموم قرار نگرفته تا کرک بشه. آیا این پردازنده cpu هستند یا مانند میکرو کنترلرها می‌باشند، یعنی در در داخل خود ram و i/o و.. دارند یا نه ما خودمان باید این امکانات را بهش اضافه کنیم؟ این پردازنده در نمونه‌های گوناگونی ارایه شده است مثلا مدل LPC۲۱۳۸ دارای ۵۱۲ کیلو حافظه فلش، ۳۲ کیلو حافظه رم، مبدل آنالوگ به دیجیتال، مبدل دیجیتال به آنالوگ و ... می‌باشد یا مدل at76c۵۵۱ ساخت شرکت اتمل دارای امکانتی همچون بلوتوث، ارتباط usb و... هست یا مدل arm7tdmi فقط یک پردازنده است که روی خود فقط خطوط i/o دارد و باید برای ان مانند یک میکرو پروسوسر واحدهای rom و ram و کانتر و... تعبیه کرد این پردازنده در مدل‌های وسیع ساخته می‌شوند (بسیار گسترده تر از avr و pic و..) و دست شما برای انتخاب باز است برای اطلاعات بیشتر در مورد هر پردازنده به شرکت سازنده مراجعه کنید.

بخش دوم سیستم‌ها، کامپایلرها و مفسرهای ARM

چه سیستم‌عامل‌هایی از ARM پشتیبانی می‌کنند؟ سیستم‌های Acorn: اولین کامپیوتر مبتنی بر معماری ARM، کامپیوتر شخصی Acorn بود که از سیستم‌عاملی به نامArthur بهره می‌برد. سیستم‌عاملی مبتنی بر RISC OS که از معماری ARM پشتیانی می‌کرد و Acorn و برخی دیگر از تولیدکنندگان از آن استفاده می‌کردند. سیستم‌عامل‌های توکار: معماری ARM از طیف وسیعی از سیستم‌عامل‌های توکار مانند Windows CE, Windows RT, Symbian, ChibiOS/RT, FreeRTOS, eCos, Integrity, Nucleus PLUS, MicroC/OS-II, QNX, RTEMS, CoOS, BRTOS, RTXC Quadros, ThreadX, Unison Operating System, uTasker, VxWorks, MQX و OSE پشتیبانی می‌کند. یونیکس: یونیکس و برخی از سیستم‌عامل‌های مبتنی بر یونیکس مانند: Inferno, Plan 9, QNX و Solaris از ARM پشتیبانی می‌کنند. لینوکس: بسیاری از توزیع‌های لینوکس از ARM پشتیبانی می‌کنند از آن جمله می‌توان به اندروید و کروم گوگل، Arch Linux، بادا سامسونگ، Debian، Fedora،OpenSuse، Ubuntu و WebOS اشاره کرد. BSD: برخی از مشتقات BSD مانند OpenBSD و iOS و OS X اپل نیز از ARM پشتیبانی می‌کند. ویندوز: معماری‌های ARMv 5, ۶ و ۷ از ویندوز CE که در ابزارهای صنعتی و PDAها استفاده می‌شود، پشتیبانی می‌کند. ویندوز RT و ویندوز فون نیز از معماری ARMv۷ پشتیبانی می‌کنند.

کامپایلرها و مفسرهای ARM برای ARM کامپایلرها و مفسرهای زیادی ارائه شده است، زبان بر نامه نویسی اغلب این کامپایلرها C و C++ می‌باشد، در زیر نام این کامپایلرها را اورده‌ایم:

IAR for ARM

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان‌های C و C++ و اسمبلی / امکان شبیه‌سازی برنامه نوشته شده / پشتبانی از تمامی میکرو کنترلرهای ARM / دارای منابع اموزشی متوسط. /محیط حرفه‌ای و استفاده از ویرایش‌گر قوی

CrossWorks for ARM

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان اسمبلی و C / پشتیبانی از میکرو کنترلرهای که از ARM۷ استفاده می‌کنند / محیط و ادیتور ساده / عدم شبیه‌سازی برنامه نوشته شده / دارای منابع اموزشی کم.

keil arm

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان‌های C و C++ و اسمبلی / امکان شبیه‌سازی برنامه نوشته شده / پشتبانی از تمامی میکرو کنترلر های ARM / دارای منابع اموزشی متوسط. /محیط حرفه‌ای و استفاده از ویرایش‌گر قوی /یادگیری سریع نرم‌افزار /

WinArm

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان‌های C و C++ / عدم شبیه‌سازی برنامه نوشته شده / پشتیبانی از میکرو کنترلرهای که از ARM۷ استفاده می‌کنند / دارای منابع اموزشی متوسط. /محیط حرفه‌ای و استفاده از ویرایش‌گر قوی /متن باز بودن نرم‌افزار و سایر امکانات جانبی

Flowcode ARM

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان گرافیکی) بلوگ دیاگرامی (/ پشتیبانی از میکرو کنترلرهای که از ARM۷ استفاده می‌کنند / دارای منابع اموزشی متوسط. / محیط ساده /امکان شبیه‌سازی برنامه نوشته شده / یادگیری اسان

ARM ADS

قابلیت برنامه نویسی میکرو کنترلرهای ARM به زبان‌های C و C++ و اسمبلی / امکان شبیه‌سازی برنامه نوشته شده / پشتبانی از تمامی میکرو کنترلرهای ARM

دارای منابع اموزشی متوسط. /محیط حرفه‌ای و استفاده از ویرایش‌گر قوی/

میکرو کنترلرهای موجود در ایران

قبل از بررسی محیط این کامپایلر و اموزش نحوه برنامه نویسی در ان، به مقایسه‌ای اجمالی بین میکرو کنترلرهای مختلف پرداخته‌ایم: در ایران خانواده‌های زیر موجود می‌باشد :

atmel  سری ۷x و ۹x) این میکرو کنترلرهای به ترتیب از هسته arm۷ وarm۹ ستفاده می‌کنند (مانند: AT91SAM7X۱۲۸وAT91SAM7X۲۵۶ و AT91SAM۹۲۶۰ و

AT91RM۹۲۰۰ جدبدا هم مشاهده شده برخی وارد کنندگان سری قدیمی ۷s را وارد می‌کنند و این سری مثال Tiny در مقابل Mega در خانواده AVR هست phillips میکروهای ساخته شده توسط شرکت فیلیپس نیز در ایران وجود دارد :LPC۲۱۴۶ و LPC۲۳۶۸ و LPC2378 STMicroelectronics شرکت ST نیز اقدام به تولید میکرو کنترلرهای با هسته ARM نموده است، در ایران میکرو کنترلرهای STM32F101T۶ و STM32F101CB و... موجود است. شرکت‌ها دیگری نیز اقدام به تولید میکرو کنترلر ازهسته ARM نموده‌اند که بحث ما برسر میکرو کنترلرهای موجود در ایران می‌باشد. بحث بر سر برتری میکرو کنترلرها نیز هیچگاه به پایان نمی‌رسد. ما برای کار با ARM میکرو کنترلرهای ساخته شده توسط اتمل را به دالیل زیر انتخاب کرده‌ایم: این شرکت با عرضه میکرو کنترلرهای AVR و ۸۰۵۱ سابقه درخشانی در ایران دارد. پشتیبانی از تولیدات، در این شرکت بی نظیر است. محصوالت این شرکت بیشتر در ایران وجود دارد) به نوعی همه گیر شده است (از دیگر ویژگی‌ها می‌توان به تنوع محصوالت، قیمت کم، وجود منابع اموزش در سایت رسمی شرکت و فروم‌های خارجی، وارادات اسان و تامین قطعات جانبی و.... اشاره کرد.

کامپایلرهای ARM و مقاییسه انها به زبان ساده تر: ارم دارای کامپایلرهای مختلفی می‌باشد. از جمله iar,keil,flowcodearm,winarm,… که در این میان کامپایلرهای iar و keil از محبوبیت بیشتری برخوردارند. کامپایلر iar دارای امکانات کنترلی بیشتر هست و روی رجیسترها احاطه بیشتری می‌تواند داشته باشد. خروجی کامپایلر iar بسته به تنظیم ما می‌تواند فایل bin یا hex باشد. سیمولاتور کامپایلر ارم به صورت کاملا رجیستری هست و برای مثال اگه شما بخواین بفهمید که پایه‌های میکرو توی چه وضعیتی هست باید با توجه به رجیسترهای میکرو و عدد هگز اون رجیستر که توی سیمولاتور هست، نتیجه‌گیری کنید. کامپایلر keil هیدرهای (کتابخانه) بیشتری برایش نوشته شده به همین خاطر استفاده از Keil راحت تر است. سیمولاتور این کامپایلر کامل تر می‌باشد و وضعیت پایه‌های میکرو رو به تیکی که در مقابل آن‌ها قرار می‌دهید به راحتی در اختیار ما قرار میده. خروجی کامپایلر keil فقط فایل hex میتونه باشه و قادر به ساختن فایل bin نیست. در کل میتون گفت که اکثر برنامه‌هایی که در یکی از کامپایلرهای می‌توانید کامپایل کنید در دیگری هم میتونید (اکثر نه همه) و میشه گفت فرق کامپایر keil و iar مثل تفاوت کدویژن وwinavr هست. توی هر دو کامپایلر میتونید به زبان c,c++ و اسمبلی برنامه بنویسید. پروگرمرهای ارم مقایسه انها: پروگرم ویگلر و نرم‌افزار hjtag پروگرمر jlink و نرم‌افزار j-flash پروگرم ulink و نرم‌افزار keil استفاده از sam-ba پروگرم ویگلر یا jtag با استفاده از پورت پرینتر lpt و نرم‌افزار h-jtah میکرو رو پروگرم میکنه. در حقیقت فایل bin یا hex خروجی کامپایلرها از این طریق روی میکرو میکرو منتقل میشه. البته ورژن‌هایی از این پروگرم هستند که با usb هم کار میکننداین پروگرم با فایل‌های خروجی bin,hex کامپایلر iar,keil سازگاری کامل داره. پروگرم jlink یک پروگرمر با اینترفیس usb هست. درون این پروگرم حتما یک میکرو کنترلر ارم به کار رفته. توسط این پروگرم و نرم‌افزار j-flash متونید میکرو رو پروگرم کنید یا توسط نرم‌افزار keil با این میکرو دیباگ کنین.

    • (دیباگ کردن یعنی اینکه توی محیط سیمولاتور میتونید با اجرای خط به خط برنامه نتیجه را روی سخت‌افزار به صورت عملی مشاهده کنید.)

پروگرم ulink یک پروگرم مخصوص شرکت keil هست و متاسفانه این پروگرمر توی ایران موجود نیست. Sam-ba یکی از امکانات میکروهای شرکت اتمل هست که مستقیم با usb میتونید میکرو رو پروگرم کنید. توسط این روش فقط میتونید فایل bin پروگرم کنید. لازم به ذکر هست که اگه از نرم‌افزار keil استفاده کردید باید فایل خروجی هگز رو با نرم‌افزار h-jtag convertor که یک قسمت از نرم‌افزار h-jtag هست به bin تبدیل کنید تا بتونید پروگرم کردن رو انجام بدهید. مزیت‌های میکرو کنترلرهای ARM: ۱- میکرو کنترلرهای ارم ۳۲ بیتی هستند اما میکرو کنترلرهای avr ۸ بیتی. این بدان معنی است که سرعت میکرو کنترلر ارم ۴ برابر است و علاوه بر ان پورت‌های ان ۳۲ پینه و رجیسترهای ان نیز ۳۲ بیتی هستند. شما در یک پالس کلاک می‌تواند وضعست ۳۲ پبن ارم را مشخص کنید اما این درحالی است که با avr فقط ۸ پایه (یک پورت) را می‌توانید مقدار دهی کنید ۲- فرکانس کاری میکرو کنترلرهای ارم در arm۷ نزدیک به ۵۵ مگا هرتز در cortex m۰-m۴ تغریبا تا ۱۱۰ مگا هرت. برای arm ۹ تا ۵۴۰ مگا هرتز.arm ۱۱ نزدیک به یک گیگا هرتز cortex a۸-a۱۵ به چند گیگا هرتز می‌تواند برسد این درحالی است که avr و pic تا ۲۴ مگا هرتز بیشتر نمی‌توان استفاده کرد ۳- تنوع میکرو کنترلرهای ارم بسیار زیاد است. این میکرو کنترلرها از ۶۴ پایه تا چند صد پایه موجود می‌باشند. به دلیل پر کاربرد بودن این میکرو شرکت‌های زیادی در رغابت با یکدیگر میکروکنترلرهای ارم متنوعی تولید میکنندوامرئزه بیش از ۹۰ شرکت این میکرو را تولید می‌کنند که هر کدام چند ده محصول دارند. برای اطلاعات بیشتر می‌توانید به سایت زیر مراجعه کنید http://www.keil.com/arm/chips.asp ۴- امکانات جانبی این میکرو کنترلر با avr , pic قابل مقایسه نیست. این میکروها معمولا دارای امکاناتی چون usb,can,emac,mmc در پروتکل‌های ارتباطی. همچنین دارای امکانات دیگری چون pwm 6 phase,dac,rtx,… می‌باشند. در باره انتخاب ارم هم باید نکاتی را بیان کنم. ارم‌های توی بازار ایران فقط از شرکت اتمل و شرکت فیلیپس (nxp) هستند. باید بگم که امکانات جانبی فیلیپس از اتمل بیشته اما قیمتش کمتره! در عوض اتمل منابع اموزشی بیشتر داره و خود سایت اتمل مثال‌ها و اموزش‌ها و کتابخانه‌های متعددی برای تراشه هاش گذاشته. که در مقابل با فیلیپس بیشتره. من برای کسانی که میخوان با اتمل کار کنن at91sam7x۲۵۶ رو پیشنهاد می‌کنم. که arm۷ هست. برای کسانی هم که میخوان با فیلیپس کار کنن lpc۲۳۶۸ که arm۷ هست و lpc۱۷۶۸ که cortex m۳ هستو پیشنهاد می‌کنم. 

بخش سوم آموزش برنامه نویسی میکرو به زبان c

آموزش برنامه نویسی میکرو به زبان c یاد آوری زبان برنامه نویسی c بلوک دیاگرام بلوک دیاگرام یک برنامه به زبان c تقریبا به شکل زیر است: فراخوانی و راه اندازی پردازنده و کتابخانه‌ها و فایل‌های هدر و.... پیکربندی امکانات (مانند lcd و ...) معرفی متغیرها شروع حلقه برنامه‌ای که باید انجام شود پایان حلقه پایان برنامه زیر برنامه‌ها (در صورت وجود) برای مثال قطع کد زیر را مرور می‌کنیم.

  1. include
  2. include

void wait(void); int main (void) { AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB0); AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB0); wait() ; AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB0); wait() ; } void wait (void) { unsigned int n; for (n = ۰; n < ۷۳۷۲۸۰۰; n++); }

  1. include

این دستور نوع میکرو را مشخص می‌کند، شما می‌توانید هر یک از میکروهای موجود را انتخاب کنید.

  1. include

با این دستور، فایل هدر ۲۵۶. h.lib_AT91SAM7X را به برنامه فرا خوانی می‌کنیم، در ادامه با فایل هدر اشنا خواهیم شد void wait(void); این دستور مشخص کننده وجود یک زیر برنامه است. void main (void){ این بخش شروع حلقه ما خواهد بود، CPU میکرو دستورات میان دو اکولاد را اجرا می‌کند و فقط با دستورات پرش یا شرط که در ادامه توضیح می‌دهیم از این حلقه بیرون می‌رود. void main() { دستورها } در واقع اکولادها مشخص می‌کنند که دستورات مربوط به کدام حلقه می‌باشند، در این بخش دستوات موجود مربوط به حقه‌ای به نام main است، نام حلقه می‌تواند هر چیزی باشد AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB0); با این دستور portb. ۰ به عنوان خروجی تعریف می‌شود. AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB0); این دستور، مقادیر موجود بر روی پایه را پاک می‌کند (پایه مورد نظر را صفر می‌کند (wait() ; با این دستور زیر برنامه زیر را فراخوانی می‌کنیم: void wait (void) { unsigned int n; for (n = ۰; n < ۷۳۷۲۸۰۰; n++); } در این زیر برنامه زمان تقریبی ۱٫۲ ثانیه ساخته می‌شود و سپس به خط بعد از دستور wait پرش می‌شود. AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB0); با این دستور پایه مورد نظر ۱ می‌شود. در ادامه با کلیه دستورات اشنا خواهیم شد، مشا هده کردید که تمامی برنامه‌ها یک قالب یکسان دارند و هر دستور در جای خودش میاید. استفاده از توضیحات گاهی اوقات در برنامه نیاز به توضیح دادن یک خط یا کد یا عمل است برای درج توضیحات از// استفاده می‌شود یا توضیحات میان /* ..... */ درج می‌شود. توضیحات توسط کامپایلر خوانده نمی‌شوند و شما می‌توانید از انها برای توضیح برنامه استفاده نمایید. معرفی متغیرها متغیر چیست؟ متغیرها مکانی از حافظه موقت هستند که به عمل خاصی اختصاص داده می‌شوند، مثلا یک متغیر از نوع char که مقدار عدد روی یک پورت ۱۶ پایه‌ای درونش ریخته شده است، ۱۶ بیت (خانه) از حافظه را اشغال می‌کند. از متغیرها برای ذخیره یک عدد یا وضعیت استفاده می‌شود، از انجا که وضعیت‌های مختلف (از نظر اندازه) وجود دارند، بنابراین به چندین نوع متغیر نیاز داریم متغیرهای keil، زیر را در اختیار برنامه نویس قرار می‌دهد:

تعریف متغیر به فرم زیر است:

نام متغیر نوع متغیر

مثلا متغیر a از نوع int تعریف شده است و می‌تواند بین ۰ تا ۳۲ بیت را در خود ذخیره کنید) از ۰ تا، ۴۲۹۴۹۶۷۲۹۶ تغییر کند (و متغیرb از جنس char می‌تواند از ۰ تا ۸ بیت (از ۰ تا ۲۵۶) تغییر کند: int a; Char b; توجه داشته باشید: که نام متغیرها نمی‌تواند شامل کلمات رزرو شده) دستورات که در برنامه نویسی به کار می‌روند مانند void و intو...(باشد، همچنین نام متغیر نباید از ۳۱ کاراکتر) حرف (بشتر باشد و زبان c بین حروف کوچک و بزرگ تفاوت قائل می‌شود (فرق دارد a و A)

دستورات و توابع ریاضی ومنطقی در keilدستوراتی برای انجام عملیات ریاضی وجود دارد، این دستورات را در زیر مشاهده می‌کنید:

شما می‌توانید کلیه اعمال بالا را بر روی متغیرها انجام دهید و حاصل را در یک متغیر ذخیره کنید.

دستورات حلقه و پرش گاهی مواقع برنامه باید چندین بار تکرار شود، برای اینکار از دستورات حلقه و پرش استفاده می‌شود، در زیر به بررسی انواع حلقه‌های موجود در keil پرداخته می‌شود .

حلقهٔ while:
این حلقه به فرم زیر می‌باشد

while (x) { برنامه } این حلقه که خود در حلقهٔ اصلی قرار می‌گیرد، یک حلقهٔ بینهایت است، هنگامی که برنامه به اکولاد دوم رسید به while پرش می‌کند شما می‌توانید به جای x عدد دلخواه خود را بگذارید و از تعداد بیشتری حلقه در برنامه خود استفاده کنید حلقهٔ: for این حلقهٔ یک حلقهٔ شرطی است و تازمانی که شرط ان درست باشد ادامه می‌یابد، این حلقه به فرم کلی زیر است: { (مقدار اولیه حلقه، شرط پایان، گام حلقه) For برنامه } در این نوع حلقه می‌توان تعداد تکرار را مشخص کرد، مقدار اولیه حلقه، می‌تواند یک عدد باشد، شرط پایان حلقه نیز یک عدد یا متغیر است، هنگامی که مقدار اولیه در شرطی که در این قسمت نوشته می‌شود، صدق کند، حلقه به پایان می‌رسد. گام حلقه نیز مشخص می‌کند که مقدار اولیه چکونه تغییر کند: for (j = ۱; j <10 ; j++) { برنامه } در مثال بالا مقدار اولیه j ۱ می‌باشد تا وقتی کهj از ۱۰ کوچکتر باشد حلقه ادامه می‌یابد همچنین با هر بار تکرار حلقه یک واحد به j افزوده می‌شود.

do – while حلقهٔ

do { برنامه }while (شرط) ; در این حلقه برخلاف دیگر حلقه‌ها، شرط در انتهای حلقه چک می‌شود این حلقه حداقل یکبار اجرا می‌شود، در صورتی که در قسمت شرط دستور مبنی بر تکرار حلقه وجود داشته باشد، حلقه دوباره تکرار خواهد شد. دستور: goto توسط این دستور می‌توان به یک برچسب پرش کرد، بازگشت از برجسب با دستور return انجام می‌شود: Goto lable ; Lable: برنامه Return; برچسب باید در داخل حلقهٔ اصلی باشد، طول برچسب باید از ۳۱ کاراکتر کمتر باشد، برای برچسب نمی‌توان از کلمات رزرو شده استفاده کرد.

دستورات مربوط به پورت‌ها در زبان c مجموعه از ریجسترها وجود دارد که ما باید انها را بشانسیم، شناخت این ریجسترها برای کار با هر جزء میکرو الزامی است. در کامپایلر Keil هر یک از امکانات جانبی دارای ریجستر مخصوص به خود هستند، مثلا ریجستر AT91F_PIO مخصوص به پورت‌های میکرو کنترلرهای اتمل می‌باشد، شما می‌توانید در این ریجستر مشخص کنید که پورت چه وضعتی داشته باشد، شما می‌توانید پورت یا پایه را به عنوان ورودی یا خروجی مشخص کنید و سپس مقادیر مختلف را در ان بنویسید یا از ان بخوانید. در ادمه اموزش با کلیه ریجسترها اشنا خواهیم شد. فایل‌های هدر (کتابخانه): در هر برنامه فایل‌های با پسوند h وجود دارند، ما این فایل‌ها را با نام هدر می‌شناسیم. این فایل‌ها برای ساده تر کردن کدها در هنگام برنامه نویسی به کمک ما می ایند مثلا فایل هدر ۲۵۶ h.lib_AT91SAM7X دستورات مربوط به میکرو کنترلر at91sam7x۲۵۶ را به زبان گفتار نزدیک می‌کند ما همچنین می‌توانیم هدر یا کتابخانه دلخواه خود را بنویسیم. در Keilهدرهای زیادی وجود دارد که در اینده با انها اشنا خواهیم شد. ریجسترهای مخصوص به پورت: این دستورات و ررجیسترها برای هدرهای lib_AT91SAM??????????.h گفته می‌شود، برای اجرای این دستورات نیاز است که این کتابخانه‌ها را در برنامه خود فراخوانی کنید مثلا برای میکرو at91sam7x

  1. include
  2. include

ادامه برنامه یا میکرو۶۴ AT91SAM7S >H.include

  1. include

ادامه برنامه قرار دادن پورت به عنوان ورودی یا خروجی: AT91F_PIO_CfgOutput(AT91C_BASE_PIOx, AT91C_PIO_Pxy); دستور بالا پایه y از پورت xرا به عنوان خروجی تعریف می‌کند. (AT91F_PIO_GetInput(AT91C_BASE_PIOx) , AT91C_PIO_Pxy) دستور بالا پایه y از پورتx را به عنوان ورودی تعریف می‌کند. AT91F_PIO_ClearOutput(AT91C_BASE_PIOx, AT91C_PIO_Pxy) دستور بالا، پایه y از پورت x را صفر می‌کند. AT91F_PIO_SetOutput (AT91C_BASE_PIOx, AT91C_PIO_Pxy) دستورات بالا پایه y از پرت x را صفر می‌کند. مثال: به portb۰ میکرو کنترلر AT91SAM7X۲۵۶ یک کلید و به protbl۱۹ یک led متصل کرده‌ایم. برنامه‌ای می‌نویسیم که با تحریک کلید led روشن و با قطع تحریک ledخاموش شود.

# include
# include
int main (void) {
AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
(AT91F_PIO_GetInput(AT91C_BASE_PIOB) , AT91C_PIO_PB0) ;
if ((AT91C_PIO_PB۰ ==)۰)
AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB19);
else
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
}

دستورات تاخیر گاهی موقع لازم است، برنامه برای مدتی اجرا نشود برای این کار از دستورات تاخیر استفاده می‌شود در keil تابع برای تاخیر (در برنامه) وجود ندارد، و شما باید برای ایجاد تاخیر CPU را به کار دیگری مشغول کنید، یکی از این کارها شمردن اعداد می‌باشد:

برنامه زیر را را شبیه‌سازی تاخیر است:

# include
# include
void wait(void);
int n;
int main (void) {
AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
wait() ;
AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB19);
wait() ;
}
void wait (void) {
for (n = ۰; n < ۱۸۴۳۲۰۰; n++);
}

مشاده می‌کنید که در هر نیم میلی ثانیه پایه b۱ روشن و خاموش می‌شود. در این برنامه برای ایجاد تاخیر از فراخوانی توابع استفاده شده است، در زیر برنامه را تحلیل می‌کنیم: ۲۵۶

)void wait(void در خط دوم مقداری از فضای حافظه برای توابع فراخوانی رزرو شده است.
int n در خط سوم یک متغیر از نوع int معرفی شده است (می‌تواند از ۰ تا ۲بتوان ۳۲، یعنی ۴۲۹۴۹۶۷۲۹۶ تغییر کند).

(void main) شروع حلقهٔ اصلی برنامه می‌باشد. AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19); در این خط پایه b۱۹ به عنوان خروجی پیکربندی شده است. AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19); در این خط پایه b۱۹ در سطح منطقی صفر قرار گرفته است.

()wait در خط هشتم تابع تاخیر فراخوانی می‌شود، با رسیدن CPUبه این خط، به تابع ;)void wait(void پرش می‌شود، در زیر برنامه wait یک حلقهٔ for وجود دارد که در این حلقه مقدار اولیه ۰ برای I در نظر گرفته شده است با دستور i++ مدام به تغییر I یک واحد اضافه می‌شود، هنگامی که I به ۱۸۴۳۲۰۰ رسید CPU به خط بعد از شرط پرش می‌کند، در آن جا یک اکولاد وجود دارد که CPU را حلقهٔ اصلی بر میگرداند و CPU برنامه را از خط بعد از wait ادامه می‌دهد.

AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB19) ; در این خط پایه b۱۹ در سطح منطقی یک قرار گرفته است wait(); در خط نهم دوباره به تابع wait; پرش می‌شود. با رسیدن CPU به اکولاد){ (برنامه دوباره از اول اجرا می‌شود و کلیه اعمال بالا از ابتدا انجام می‌شود. برای ایجاد تاخیر زمانی شما باید یک تابع ایجاد کنید تا در هنگام تاخیر فراخوانی شود، برای ایجاد تابع باید ابتدا ان را معرفی کنید :برای معرفی کلیه توابع از دستور زیر استفاده می‌شود: (خود برنامه اصلی نیز یک تابع می‌باشد (Void نام تابع (نوع فضا); در قسمت نام تابع، شما باید یک نام مناسب بنویسید که در برنامه تابع با همین نام فاخوانی می‌شود. در قسمت نوع فضا، نوع ذخیره‌سازی تابع مشخص می‌شود شما می‌توانید از عناوین void (فضای خالی) یا جای خالی استفاده کنید. با این حساب قالب کلی یک برنامه در زبان c به شکل زیر خواهد بود:

  1. include معرفی چیپ

معرفی متغیرها void wait(void); (معرفی زیر برنامه) توابعی که قرار است در برنامه فرا خوانی شوند void main(){ تابع اصلی برنامه ورودی یا خروجی قرار دان پورت‌ها while (شروع حلقه }۱ برنامه اصلی wait() ; فراخوانی توایع پایان حلقه { پایان تایع اصلی برنامه { void wait (void) { نام توابعی که قرار است فرا خوانی شود شروع حلقهٔ تابع فراخوانی شده } برنامه‌ای که فراخوانی می‌شود } (پایان حلقهٔ تابع فراخوانی شده) با رسیدن بر نامه به این خط به برنامه اصلی پرش می‌شود مقدار زمانی که توسط روش بالا ایجاد یشود از رابطهٔ زیر بدست میاید: زمان =(x*۵)/(f) X مقدار رقمی است که در حلقهٔ for شمرده می‌شود و f مقدار فرکانس کریستال برچسب هرتز می‌باشد. برای درک بهتر مثالی می‌آوریم در ادامه: در این مثال برنامه‌ای می‌نویسیم که پایه ۱۹b میکرو کنترلر AT91SAM7X۲۵۶ را به مدت ۲ ثانیه ۰ کند، بعد به مدت ۱٫۵ ثانیه ۱ کند و سپس به مدت ۲٫۵ ثانیه ۰ کند و این حلقه مدام تکرار شود.

# include
# include
int n;
void wait(void);
int main (void) {
AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
wait() ;
wait() ;
wait() ;
wait() ;
AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB19);
wait() ;
wait() ;
wait() ;
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
wait() ;
wait() ;
wait() ;
wait() ;
wait() ;
}
void wait (void) {
for (n = ۰; n < ۱۸۴۳۲۰۰; n++);
}

برنامه بالا شاید ساده ترین برنامه برای سوال ذکر شده باشد، در این برنامه ما زمان اصلی ۵۰۰ میلی ثانیه را بوجود اورده‌ایم و در مکان مناسب به تعداد دفعات مناسب ان را فراخوانی کرده‌ایم.

در پایان چند نکته: واسط SAM-BA فقط از میکرو کنترلرهای زیر پشتیبانی می‌کند:

  • AT91SAM7S321
  • AT91SAM7S64
  • AT91SAM7S128
  • AT91SAM7S256
  • AT91SAM7S512
  • AT91SAM7X128 and AT91SAM7XC128
  • AT91SAM7X256 and AT91SAM7XC256
  • AT91SAM7X512 and AT91SAM7XC512
  • AT91SAM7SE256
  • AT91SAM7SE512
  • AT91SAM7A3

برای استفاده از واسط SAM-BA برای میکرو کنترلرهای AT91SAM7S مراحل زیر را انجام دهید:

  1. Power Off the board.
  2. set TST pin to high level.
  3. Power On the board.
  4. Wait about 10 seconds
  5. Power Off the board.
  6. set TST pin to ground.
  7. Power On the board.

منابع

  • جزوه آموزشی " آموزش برق و الکترونیک " وب سایت elmicro
  • مجله تخصصی میکرو کنترل‌ها PMM شماره ۲، ۳ ، ۸
  • مقالات " دوره آموزشی میکرو کنترل هایAMR پارک علمی و فناوری یزد "
  • مرجع کاربردی میکرو کنترلرهای AMR تالیف مهندس سهرابی
  • گرد آورنده مجتبی ستوده
مجتبی ستوده



درود  به شما همراهان گرامی

نظر به بازدید های این وبلاگ و رتبه های ثبت شد در سال 91 . مدیریت گروه تبلیغاتی کاتاج ( کانون آگهی و تبلیغاتی ارگ جهان نما ) پذیرش تبلیغات را در سال جدید در دستور کار خود قرار داد .

لازم به ذکر است هزینه تبلیغات به صورت هفته ای / ماهانه / فصلی / سالانه می باشد.


زمان نمایش        هزینه (تومان )          تخفیف          ابعاد بنر ( پیکسل )

------------------------------------------------------------------------------------------------

هفتگی                  12600               10%                    240*120

هفتگی                  18900               10%                     60*486

------------------------------------------------------------------------------------------------

ماهانه                   48000               20%                    240*120

ماهانه                   72000               20%                     60*486

------------------------------------------------------------------------------------------------

فصلی                   126000              30%                    240*120

فصلی                   189000              30%                     60*486

------------------------------------------------------------------------------------------------

سالانه                  365000              50%                    240*120

سالانه                  547500              50%                     60*486



بنر های تبلیغاتی لازم است در ابعاد 468*60 و یا 80*210 طراحی و برای ما به نشانی  samaramco@gmail.com  و در عنوان ایمیل ارسالی شماره فیش فاریزی و تاریخ ارسال شود .

هزینه طراحی بنر در صورت طراحی ما ، به صورت جداگانه دریافت میشود .

برای کسب اطلاعات بیشتر و هماهنگی جهت رزرو

با شماره 09389074803 مهندس ستوده ( بین ساعت 10 الی 15 ) تماس حاصل فرمایید . 



لازم به ذکر است کلیه بنر های تبلیغاتی هم زمان در :

وبلاگ گروه مشاوره فاینانس سام آرام 

وبلاگ نشریه دانشجویی تـــــــــــــلنگر

وبلاگ گروه گرافیکی نــــــــــدا گرافیک

وبلاگ گروه بازاریابی و تبلیغاتی  کـاتاج

وبلاگ سیاه قلم های مترسک دیـوونه

مطالب قرار داد شد در کلوب دات کـام 

سایت گروه مشاوره فاینانس سام آرام

و ...


با تشکر کانون آگهی تبلیغاتی کاتاج مجری تبلیغات اینترنتی گروه مشاوره فاینانس سام آرام

مانا و پیروز باشید

مجتبی ستوده