سلام
از چه کامپایلری استفاده کنیم که بشه از حداکثر ظرفیتهای xmega استفاده کرد
به غیر از برنامه نویسی به زبان اسمبلی که مبحث جداگانه ای است و در تاپیک دیگری در مورد آن بحث شده، کامپایلر های IAR و AVR-GCC گزینه های قابل قبولی هستند (AVR_GCC به عنوان کامپایلر winavr عمل می کند). حتی اکثر مثال های شرکت Atmel هم با IAR نوشته شده که نشان از اهمیت این کامپایلر دارد. مثال هایی هم که در این انجمن به زبان C نوشته شده، همگی با IAR هستند.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
EEPROM در XMEGA در دو وضعیت I/O mapped و Memory mapped عمل می کند. در روش اول این فضا برای خود دارای آدرس مستقلی است و خواندن و نوشتن آن تنها از طریق NVM Controller میسر است. در روش دوم این نوع حافظه از آدرس 0x1000 تعریف می شود و برای خواندن آن مانند سایر نقاط SRAM عمل می شود، اما نوشتن به آن همچنان مستلزم کار با NVM Controller و البته به شیوه ای غیر از وضعیت اول است. کار با EEPROM مستلزم رعایت نکات زیادی است و از این نظر از AVR های معمولی پیچیده تر است. نوشتن به EEPROM اصولا از طریق یک بافر انجام می شود و ابتدا باید نقاط مورد نظر در این بافر پر شود و بعد یک page بصورت همزمان نوشته شود. نکته مهم این است که نقاطی از page مذکور می توانند نوشته یا پاک شوند که یکبار در بافر مذکور تغییر کرده باشند و سایر نقاط در همان page بدون تغییر باقی می مانند. طول page برای شماره های مختلف می تواند متفاوت باشد.
عملیات پاک کردن هر نقطه منجر به پر شدن 0xff در آن می شود و با نوشتن می توان تنها یک ها را به صفر تبدیل کرد و صفر را نمی توان با نوشتن به یک تبدیل کرد. دو نوع نوشتن در این خانواده پیش بینی شده که در نوع اول نقاط حافظه همزمان پاک و مجددا نوشته می شود و در نوع دوم با فرض اینکه حافظه قبلا پاک شده، فقط عملیات نوشتن انجام می شود.از آنجایی که روش دوم به اندازه نصف روش اول زمان می برد، یک مزیت آن صرفه جویی در زمان لازم برای نوشتن است. به این ترتیب که یکبار عملیات پاک کردن صفحه بصورت همزمان انجام می شود و در حین اجرای برنامه، در هر لحظه که لازم باشد فقط عملیات نوشتن انجام می شود.در مورد نوشتن مکرر در یک آدرس از بافر، دو مطلب متناقض در متون Atmel آورده شده است. در یکجا ذکر شده که این عمل منجر به از بین رفتن اطلاعات صفحه می شود و در متن دیگری ذکر شده که بین مقدار فعلی و مقدار قبلی یک عملیات And انجام می شود. همین مطلب در سایت AVRFreaks مطرح شد و کسی اطلاعاتی در مورد آن نداشت. البته در عمل نباید چنین کاری انجام شود اما اگر لازم باشد با انجام آزمایشی می توان به صحت هریک از دو وجه مطرح شده، پی برد.
از جمله موارد مهم درباره EEPROM این است که در برخی شماره های XMEGA، نوشتن در آن منجر به مختل شدن روند برنامه می شود. شرکت Atmel برای حل این مشکل پیشنهادی را ارائه کرده به این ترتیب که بعد از نوشتن اطلاعات و در کمتر از 2.5 میکروثانیه، میکروکنترلر در وضعیت Idle قرار بگیرد و برنامه به گونه ای نوشته شود که با فعال شدن وقفه EEPROM Ready، میکروکنترلر از این وضعیت خارج شود. برای اجرای این مسئله یک Application note و کد نمونه آن در سال 2010 منتشر شده که در سایت Atmel موجود است. قبل از آن هم نمونه کدهای کاملتری برای خواندن و نوشتن در دسترس بود که برای این شماره های به خصوص قابل استفاده نیست. کاری که بصورت عملی انجام شد، این بود که کدهای کاملتر قبلی با راه کارهای ارائه شده توسط Atmel تغییر داده شد و مشاهده شد که مشکل مذکور برطرف گردیده است. در نرم افزار IAR هم می توان با تعریف متغیر بصورت eeprom__ به محتویات این ناحیه دسترسی پیدا کرد و فقط باید بررسی شود که در آخرین نسخه این نرم افزار آیا اشکال ذکر شده لحاظ شده است یا خیر. تا نسخه 5.20 که این اشکال وجود دارد و نمی توان از نوع eeprom__ برای تمام شماره های XMEGA استفاده کرد.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
یکی از آزمایش هایی که بصورت عملی در مورد XMEGA انجام شد، اتصال آن به یک پل سه فاز برای کنترل یک موتور AC سه فاز بود که بدون هرگونه ایزولاسیونی انجام گرفت. در این آزمایش و در شرایطی که فاز متر با اتصال به XMEGA روشن می شد، نشانی از نویز پذیری و اختلال در عملکرد میکروکنترلر مشاهده نشد. بنابراین می توان اینطور نتیجه گیری کرد که حداقل از نقطه نظر شرایط خاص این آزمایش، XMEGA عملکرد خوبی از نظر نویزپذیری از خود نشان داد و اتصال بدون ایزولاسیون به برق شهر و بخش قدرت، اختلالی را در عملکرد آن ایجاد نکرد.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
همانطور که قبلا توضیح داده شد، Event system یک ارتباط بین سخت افزاری در XMEGA می باشد که نیاز به دخالت CPU را برای انجام بسیاری از وظایف برطرف می کند. در این سیستم وقوع یک اتفاق یا Event می تواند به عنوان فرمان انجام عملی در یک بخش دیگر تعریف شود. 8 کانال مختلف برای این وظایف قابل تعریف هستند که منابع زیر می توانند به عنوان یک Event برای هر یک از این کانال ها تعریف شوند:
- RTC
- مقایسه کننده های آنالوگ
- کانال های ADC
- وضعیت پورت های A تا F
- کلاک وسایل جانبی تقسیم بر یک ضریب قابل تعیین
- سرریز شدن تایمرها
- وضعیت خطا در تایمرها
- عملیات Capture در تایمرها
- عملیات Compare در تایمرها
- ایجاد Event بصورت نرم افزاری
از بین موارد ذکر شده، مورد آخر عمل بسیار جالب توجهی را می تواند انجام دهد که جای توضیح بیشتر دارد. فرض کنید که منبع کلاک یک تایمر از یکی از کانال های Event انتخاب شده باشد واین کانال هم از لبه بالارونده یکی از پین ها، برای افزایش یا کاهش مقدار تایمر/کانتر فرمان بگیرد. نکته جالب توجه در این شرایط این است که اگر مثلا در نقطه ای از برنامه لازم باشد که تولید Event به صورت نرم افزاری انجام شود، چنین امکانی وجود دارد. به عبارت دیگر توسط نرم افزار می توان وقوع یک عمل سخت افزاری را شبیه سازی کرد و این امکان می تواند در برخی کاربردها برای برنامه نویس بسیار سودمند باشد.
وجود Event system سبب می شود که انجام بسیاری از وظایف که نیاز به ایجاد یک وقفه و اجرای کدهایی را دارد، بصورت خودکار و بدون دخالت CPU انجام شود و به دلیل این صرفه جویی که در اجرای برنامه انجام می شود، عملا وقت CPU برای انجام وظایف دیگر آزاد می شود وسرعت موثر در اجرای برنامه بهبود پیدا می کند.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
یک سوال:
آیا توسط Event ها میتوانیم مثلا خواندن از پورت سریال و یکسری تغییرات روی داده ی دریافتی انجام دهیم و سپس آن داده را در 2 متغییر بریزیم؟
ویا اجرای یک دستور را در صورت برقرار شدن یک شرط بر عهده ی او بگذاریم؟
اگر میشود چگونه؟
یک سوال:
آیا توسط Event ها میتوانیم مثلا خواندن از پورت سریال و یکسری تغییرات روی داده ی دریافتی انجام دهیم و سپس آن داده را در 2 متغییر بریزیم؟
ویا اجرای یک دستور را در صورت برقرار شدن یک شرط بر عهده ی او بگذاریم؟
اگر میشود چگونه؟
این برداشت شما از عملکرد Event system درست نیست. کاری که این سیستم انجام می دهد، ایجاد یک ارتباط، بین سخت افزارهای مختلف برای انجام یک عمل سخت افزاری است. مثلا در مورد تایمرها از طریق این سیستم می توان به تایمر کلاک داد و یا آن را Reset کرد یا فرمان Capture به آن داد و مواردی از این قبیل که همه به نوعی سخت افزاری هستند. بنابراین اجرای دستور و تغییر یک متغیر و مانند آن جزء شرح وظایف این بخش نیست.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
یعنی مثل fpga بین هر سل یه سری شبکه هست که ما اونا رو به دلخواه بهم وصل میکنیم
درست گفتم؟
تعبیر شما از این جهت که امکان اتصال دلخواه بخشهایی از سخت افزار را بیان می کند، تا حدی به عملکرد Event system شباهت دارد.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
در توضیح بیشتر عملکرد Event system مثال هایی ذکر می شود. مثال اول در مورد عملیات Capture یک تایمر است. هنگامی که تایمری مشغول شمارش است، برای نمونه برداری صحیح از مقدار آن (که دائما در حال تغییر است) از قابلیت Capture در میکروکنترلرها استفاده می شود. این عملیات را می توان به عکس گرفتن از یک جسم متحرک تشبیه کرد و تحت یک فرمان مشخص، نمونه برداری صحیحی از مقدار تایمر انجام می شود. در میکروکنترلرهای مختلف معمولا این فرمان توسط یک یا چند پین خارجی معین انجام می شود و در مواردی مانند mega64 این قابلیت وجود دارد که این فرمان توسط خروجی مقایسه کننده آنالوگ هم صادر شود.
اما در XMEGA فرمان Capture از یکی از کانال های 8 گانه Event system صادر می شود و هر منبعی که به عنوان ایجاد کننده Event تعریف شده باشد، می تواند فرمان مورد نظر را صادر کند. به این ترتیب تمام پین های پورت های A تا F قابلیت ایجاد فرمان Capture را پیدا می کنند و این امر به پین خاصی محدود نمی شود. و یا از طریق سایر منابع مانند مقایسه کننده آنالوگ یا ADC یا RTC و کلاک وسایل جانبی و سایر تایمرها و حتی بصورت نرم افزاری می توان فرمان Capture را ایجاد کرد.
به عنوان مثال های دیگری برای تایمر می توان ایجاد فرمان کلاک یا Restart شدن تایمر و حتی اندازه گیری زمان بین دو Event را از طریق منابع مختلف قابل تعریف در Event system ذکر کرد که قابلیت های فوق العاده ای را در استفاده از تایمرها ایجاد می کند.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
1- اسیلاتور داخلی 2 مگاهرتز
2- اسیلاتور داخلی 32 مگاهرتز تقسیم بر 4
3- کریستال و رزوناتور در محدوده 0.4 تا 16 مگاهرتز
4- کلاک خارجی
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
هر پین یک پورت به عنوان ورودی می تواند در 4 وضعیت قرار داشته باشد:
1- High impedance
2- فعال شدن Pull up
3- فعال شدن Pull down
4- وضعیت Bus keeper که به معنای فعال سازی خودکار Pull up یا Pull down برای حفظ وضعیت پورت متناسب با حالت خروجی آن است.
از نظر خروجی 5 وضعیت قابل فعال شدن هستند:
1- Totem pole: در این حالت پین خروجی برای هردو وضعیت High و Low بصورت مناسب درایو می شود.
2- Wired AND+Pull up: این خروجی ها قابل وصل کردن به یکدیگر هستند. خروجی هایی که High هستند تاثیری در خروجی مشترک پین ها ندارند و خروجی هایی که Low هستند خود را به وضعیت پین های خروجی تحمیل می کنند. اگر حتی یک خروجی Low باشد، پین خروجی صفر می شود. مقاومت Pull up بصورت داخلی فعال است.
3- Wired AND: مانند وضعیت قبل و بدون فعال بودن مقاومت Pull up داخلی.
4- Wired OR + Pull down: این خروجی ها قابل وصل کردن به یکدیگر هستند.خروجی هایی که Low هستند تاثیری در خروجی مشترک پین ها ندارند و خروجی هایی که High هستند خود را به وضعیت پین های خروجی تحمیل می کنند. اگر حتی یک خروجی High باشد، پین خروجی یک می شود. Pull down بصورت داخلی فعال است.
5- Wired OR: مانند وضعیت قبل و بدون فعال بودن مقاومت Pull down داخلی.
از جمله امکانات دیگر در پورت ها امکان محدود کردن Slew Rate یا شیب تغییرات خروجی پورت ها است. این امکان برای [glow=red,2,300]کاهش نویز[/glow] ناشی از تغییرات سریع خروجی پورت ها قابل فعال کردن است. Not کردن منطق هر پین یک پورت و ایجاد وقفه از طریق تمام پین ها هم از جمله امکانات دیگری است که قبلا به آن اشاره شده است. همچنین پورتهای A تا F می توانند به عنوان تولید کننده Event و PC7 و PD7 و PE7 به عنوان مصرف کننده Event مورد استفاده قرار بگیرند.
برای صرفه جویی در مصرف انرژی کلی میکروکنترلر، این امکان وجود دارد که بافر ورودی پین هایی که مورد استفاده قرار نمی گیرند و یا فقط به عنوان ورودی آنالوگ استفاده می شوند، غیر فعال شود (پورتهای A تا F).
نکته آخر اینکه تغییرات روی پورتها می تواند موجب خروج از وضعیت SLEEP و تولید وقفه شود که ویژگی خاصی در این مورد برای پین شماره 2 از هر پورت وجود دارد و می تواند این عملیات را بصورت آسنکرون و بدون حضور کلاک وسایل جانبی داخلی انجام دهد.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
دیدگاه