با سلام
لطفا به سایت آقای کی نژاد سر بزنید، ایشون جدید ترین فیلم های Xmega که مربوط به بخش DAC هست رو پلود کردن. همینطور چند پروژه جالب با اتمل استدیو کار کردن با سخاوت لینک اونها رو هم اونجا گذاشتن.
سپاس
وقتی مطالبی رو لایک میکنید یا بازخورد میدید یعنی به نویسنده میگید که از این مطلب استفاده کرده اید و همچنان ادامه بده، یا بیشتر مطلب بزار، یا بیشتر در مباحث اینجوری شرکت کن.
فیلم های اموزشی جدید XMEGA از بخش چهل و چهارم به بعد توسط استاد کی نژاد تهیه شدند.این فیلم ها در سایت اپارات قرار داده شدند و منبع سایت knowledgeplus.ir هست.
درمد Frequency generation درست است که فقط محتوای CCA در فرکانس خروجی کانال ها موثر است و مقادیر CCB و CCC و CCD در فرکانس کانال ها تاثیری ندارد ولی مقادیر CCB و CCC و CCD در ایجاد اختلاف فاز بین خروجی ها تاثیر دارند و میتوان چهار خروجی با فرکانس برابر و اختلاف فازهای مختلف داشت که در Manual ها احتمالا اشاره ای نشده است ولی در عمل برای سه برنامه زیر تست و شکل موج خروجی را میتوان مشاهده نمود:برنامه شماره 1- #include <avr/io.h>
int main(void)
{
PORTC_DIRSET=PIN1_bm|PIN0_bm;
TCC0_CCA=999;
TCC0_CTRLB|=TC0_CCBEN_bm|TC0_CCAEN_bm|TC_WGMODE_FR Q_gc;
TCC0_CTRLA=TC_CLKSEL_DIV1_gc;
while (1);
}
2- #include <avr/io.h>
int main(void)
{
PORTC_DIRSET=PIN1_bm|PIN0_bm;
TCC0_CCA=999;
TCC0_CCB=999;
TCC0_CTRLB|=TC0_CCBEN_bm|TC0_CCAEN_bm|TC_WGMODE_FR Q_gc;
TCC0_CTRLA=TC_CLKSEL_DIV1_gc;
while (1);
}
برنامه شماره 3-#include <avr/io.h>
int main(void)
{
PORTC_DIRSET=PIN1_bm|PIN0_bm;
TCC0_CCA=999;
TCC0_CCB=499;
TCC0_CTRLB|=TC0_CCBEN_bm|TC0_CCAEN_bm|TC_WGMODE_FR Q_gc;
TCC0_CTRLA=TC_CLKSEL_DIV1_gc;
while (1);
}
در برنامه شماره 1 دو شکل موج 180 درجه اختلاف فاز دارند.
در برنامه شماره 2 دو شکل موج 0 درجه اختلاف فاز دارند. ( همفازند )
در برنامه شماره 3 دو شکل موج 90 درجه اختلاف فاز دارند.
امکان ارسال عکسهای گرفته شده از شکل موج ها در اسیلوسکوپ در صورت نیاز میباشد.
میکروکنترلر تست شده : XMEGA 128 A1
جدیدترین ویرایش توسط behzadsalamy; ۱۵:۳۳ ۱۳۹۵/۰۹/۰۸.
درمد Frequency generation درست است که فقط محتوای CCA در فرکانس خروجی کانال ها موثر است و مقادیر CCB و CCC و CCD در فرکانس کانال ها تاثیری ندارد ولی مقادیر CCB و CCC و CCD در ایجاد اختلاف فاز بین خروجی ها تاثیر دارند و میتوان چهار خروجی با فرکانس برابر و اختلاف فازهای مختلف داشت که در Manual ها احتمالا اشاره ای نشده است ولی در عمل برای سه برنامه زیر تست و شکل موج خروجی را میتوان مشاهده نمود
در صورت وجود چنین عملکردی، این خود می تواند به نوعی یک اشکال سخت افزاری محسوب شود. اگر دسترسی دارید با سری AU هم این آزمایش را انجام دهید. من هم در صورت وجود فرصت این مورد را بررسی می کنم.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
حتما تست میکنم
ولی به نظر میاید که چهار خروجی همفاز و هم فرکانس روی چهار پین مختلف میکرو کاربرد خاصی نداشته باشد و امکان دادن اختلاف فاز به خروجی ها کاربرد های بیشتری داشته باشد و یا حداقل یک مزیت باشد و اگر اشکال سخت افزاری هم باشد اصلاح نشود و در manual به آن اشاره شود بهتر است.
آزمایشی را انجام دادم که مطابق آن مقادیر مختلف CCB در اختلاف فاز شکل موج خروجی نسبت به کانال A موثر بود. به غیر از وجود اشکال سخت افزاری، یک احتمال دیگر هم وجود دارد که چنین عملکردی به عنوان یک قابلیت توسط طراحان اولیه سخت افزار میکروکنترلر پیش بینی شده، اما به هر دلیلی در متون Atmel به آن اشاره ای نشده است.
ولی به نظر میاید که چهار خروجی همفاز و هم فرکانس روی چهار پین مختلف میکرو کاربرد خاصی نداشته باشد
در بسیاری موارد بر حسب نیاز ممکن است فقط از یکی از این پین ها استفاده شود. مثلا اگر بخواهیم روی PORTC از پین های متناظر با سخت افزار TWIC استفاده کنیم، برای تولید شکل موج از طریق TCC0 فقط پین های PC2 یا PC3 در دسترس خواهند بود.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
باسلام
در جلسه 63 آموزش Xmega مثال دوم ADC و امکان Sweep به نظر میاید بجای گدهای
ADCB_EVCTRL=ADC_SWEEP_0123_gc|ADC_EVSEL_0123_gc|AD C_EVACT_SWEEP_gc;
EVSYS_CH0MUX=EVSYS_CHMUX_TCC0_OVF_gc;
کدهای
ADCB_EVCTRL=ADC_SWEEP_0123_gc|ADC_EVSEL_7_gc|ADC_E VACT_SWEEP_gc;
EVSYS_CH7MUX=EVSYS_CHMUX_TCC0_OVF_gc;
همان کار را بجای استفاده از چهار کانال Event فقط با استفاده از یک کانال Event انجام میدهد.
باسلام
در جلسه 63 آموزش Xmega مثال دوم ADC و امکان Sweep به نظر میاید بجای گدهای
ADCB_EVCTRL=ADC_SWEEP_0123_gc|ADC_EVSEL_0123_gc|AD C_EVACT_SWEEP_gc;
EVSYS_CH0MUX=EVSYS_CHMUX_TCC0_OVF_gc;
کدهای
ADCB_EVCTRL=ADC_SWEEP_0123_gc|ADC_EVSEL_7_gc|ADC_E VACT_SWEEP_gc;
EVSYS_CH7MUX=EVSYS_CHMUX_TCC0_OVF_gc;
همان کار را بجای استفاده از چهار کانال Event فقط با استفاده از یک کانال Event انجام میدهد.
این سوال نشان می دهد که یا شما فیلم آموزشی را ندیده اید و یا احتمالا به جزییات توضیحات ارائه شده توجه نکرده اید. همانطور که در متن فیلم هم اشاره می شود در مد sweep از یک کانال Event system برای تریگر چند کانال ADC استفاده می شود که در نمونه کد مورد تحلیل هم از کانال 0 برای تریگر هر 4 کانال ADCB استفاده شده و از 4 کانال Event system استفاده نشده است. البته صرف نظر از توضیحات فیلم آموزشی این خاصیت مد sweep است و با دیدن نمونه کد هم این مورد قابل تشخیص است که فقط از یک کانال Event system در این مثال استفاده شده است.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
از طریق کانال تلگرام استاد کی نژاد مطلع شدیم که ایشان سری جدیدی از اموزش های Xmega رو تهیه کردند و بر روی سایت اپارات قرار دادند. دوستان می توانند از طریق لینک سایت شخصی ایشان که در زیر اورده شده به تمامی اموزش ها دسترسی داشته باشند. همچنین پی سی بی برد مدار اموزشی سری xmega که یک نمونه ی تجاری هست و ساخت خود ایشان نیز هست به رایگان بر روی این سایت قرار داده شده. آرزوی سلامتی و شادی برای استاد کی نژاد دارم و از زحمات ایشان تقدیر و تشکر می کنم.
با سلام و عرض ادب خدمت استاد محترم جناب آقای کی نژاد عزیز و ادای احترام به ایشان ، نه به خاطر روحیه کاوش عمیق و نگاه علمی تیزبین ایشان بلکه به دلیل گشاده دستی و گذاشتن وقت و علم و تجربه خود در جهت با لا بردن سطح علمی نوآموزان و صنعتگران کشور عزیزمان ایران ، بنده پیرامون کار با DMA در XMEGA یک سوال داشتم و آن اینکه آیا استاد محترم از زمان اجرای دستور در این واحد و نحوه اجرای کد در آن اطلاعی دارند ، بعنوان مثال اجرای یک انتقال داده از واحد خروجی به حافظه داخلی و امثالهم چقدر زمان میبرد ؟ و آیا سیکل دستور در DMA به اندازه CPU است ؟ و ضمنا این انتقال چند سیکل در DMA را شامل میشود ؟ این را از آن لحظ میپرسم که فی المثل شما در تولید موج سینوسی زمان را 2 میکرو ثانیه قرار دادید حال اگر بخواهیم زمان را کم کنیم نیاز داریم زمان اجرای دستور DMA را بدانیم چون در غیر اینصورت ظاهرا OVERLAP در DMA اتفاق خواهد افتاد. با تشکر فراوان ، خدا قوت
با سلام و عرض ادب خدمت استاد محترم جناب آقای کی نژاد عزیز و ادای احترام به ایشان ، نه به خاطر روحیه کاوش عمیق و نگاه علمی تیزبین ایشان بلکه به دلیل گشاده دستی و گذاشتن وقت و علم و تجربه خود در جهت با لا بردن سطح علمی نوآموزان و صنعتگران کشور عزیزمان ایران ، بنده پیرامون کار با DMA در XMEGA یک سوال داشتم و آن اینکه آیا استاد محترم از زمان اجرای دستور در این واحد و نحوه اجرای کد در آن اطلاعی دارند ، بعنوان مثال اجرای یک انتقال داده از واحد خروجی به حافظه داخلی و امثالهم چقدر زمان میبرد ؟ و آیا سیکل دستور در DMA به اندازه CPU است ؟ و ضمنا این انتقال چند سیکل در DMA را شامل میشود ؟ این را از آن لحظ میپرسم که فی المثل شما در تولید موج سینوسی زمان را 2 میکرو ثانیه قرار دادید حال اگر بخواهیم زمان را کم کنیم نیاز داریم زمان اجرای دستور DMA را بدانیم چون در غیر اینصورت ظاهرا OVERLAP در DMA اتفاق خواهد افتاد. با تشکر فراوان ، خدا قوت
توضیحی که در این مورد در منوال داده شده در همین حد است که وقتی CPU دستوراتی را اجرا می کند که به نواحی sram یا IO یا eeprom یا حافظه خارجی دسترسی پیدا میکند، اولویت دسترسی CPU به باس داده نسبت به DMA بالاتر است. و مورد دیگر اینکه وقتی DMA باس را در اختیار گرفت تا ارسال کامل یک Burst باس را از دست نخواهد داد. برای بررسی دقیق تر در مورد این زمان بندی من دو برنامه را تست کردم که در یکی از طریق ارسال مقدار 0x01 به رجیستر OUTTGL یکی از پورت ها، مقدار پورت بصورت مداوم متمم شود و سایز بلاک 65535 بایت و تکرار هم 255 بار در نظر گرفته شد که 16535255 بار عملیات Toggle کردن پورت با حداکثر سرعت ممکن انجام می شود و زمان بین هر تغییر با اسیلوسکوپ قابل مشاهده و اندازه گیری است. در این شرایط با کلاک 2MHz در هر 2.5 میکرو ثانیه پورت تغییر می کرد که معادل هر 5 کلاک یک بار است. سایز Burst در این آزمایش 1 بایت بود. اما در آزمایش دیگری سایز Burst بجای 1 بایت روی 4 بایت قرار داده شد و یک آرایه با 4 عضو با مقادیر 0x01 به همان رجیستر ارسال شد که در این وضعیت جدید تغییرات پورت به میزان 4 سیکل در هر 0.5 میکرو ثانیه انجام می شد که معادل با سرعت تغییرات کلاک میکروکنترلر است. اما بعد از این 4 سیکل تغییرات باز هم 2.5 میکرو ثانیه فاصله زمانی تا تغییرات بعدی وجود داشت. تمام این موارد در شرایطی بود که CPU دسترسی به باس داده نداشت و حتی با ورود به مد Idle هم تغییری در نتیجه مشاهده نشد.با استفاده از نتیجه این آزمایش ها می توان نتیجه گرفت که وقتی DMA باس را در اختیار می گیرد با سرعتی معادل با فرکانس کلاک CPU انتقال داده را انجام می دهد. اما در اختیار قرار گرفتن باس توسط DMA در فواصل زمانی بزرگتر نسبت به پریود کلاک CPU اتفاق می افتد.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
با عرض سلام و خسته نباشید خدمت استاد گرامی ، سوالی در مورد بخش ADC در ایکسمگا از خدمتتون داشتم. مثالی رو که توی آموزشهاتون برای بخش ADC آوردین روی XMEGA32A4U اجرا کردم و نتایج رو توسط دیباگر ATMEL ICE بصورت زنده در داخل میکرو مشاهده کردم .فرکانس کاری 24MHz است. در حالت اول بعد از اتمام تبدیل وارد روتین اینتراپت میشیم و بعد از خوندن مقدار دوباره درخواست تبدیل مجدد میدیم ، نتیجه حاصل در این حالت عددی در حدود 689 بود. بدون تغییر پتانسیومتر عملیات رو در حالت فری رانینگ قرار دادم و اینبار درخواست تبدیل رو از روتین اینتراپت حذف کردم تا تبدیل پشت سر هم انجام بشه. نتیجه حاصل در این حالت عدد 654 بود. سوال من از خدمتتون اینه که دلیل این تفاوت در اعداد چی هستش؟
لطفا برای بررسی بیشتر موضوع تصاویر پیوست رو مشاهده کنید.
ممنون
دیدگاه