رفتن به مطلب

تاپیک پروژه های avr + عکس + فیلم


ارسال های توصیه شده

سلام اقایییون داداشا:w139:

خوب بریم سر فیوز بیت ها.

میکرو وقتی میخواد کار کنه باید فرکانس کاریش مشخص بشه که بتونه زمان های وقفه دقیق محاسبه کنه و خیلی چیزا دیگه که کاری باهاشون نداریم فقط بدویند که باید هنگام برنامه نویسی معوم کنیم که مقدارش چقدره که خانواده avr میتونه 1،2،4،8،16 مگاهرتز باشه . طریقه معرفی این مقدار هم طبق برنامه قبل هستش. که کاملا معلومه و نیاز به توضیح اضافی نداره.

یکی از اجزای داخلی میکرو اسیلاتور هست که وظیفه ساخت فرکانس کاری میکرو داره ولی باید مقدارش با مقدار مشخص شده تو برنامه یکی باشه که توسط فیوز بیت ها تنظیم میشه. avr ها 16 تا فیوز بیت دارن که فعلا ما با 4 تاش جهت تنظیم فرکانس نیاز داریم و با بقیش هم فعلا کاری نداریم.

 

cksel0 cksel1 cksel2 cksel3

 

1مگاهرتز 0 0 0 1

 

 

2مگاهرتز 0 0 1 0

 

 

4مگاهرتز 0 0 1 1

 

8مگاهرتز 0 1 0 0

 

استفاده از کریستال خارجی 1 1 1 1

 

خوب حالا شاید بپرسید داستان کریستال خارجی چیه. همون طور که گفتیم avr ها میتونن با فرکانس های 1،2،4،8،16 مگا هرتز کار کنن ولی اسیلاتور داخلی توانایی تولید 16 مگاهرتز یا فرکاس های خاص مثل 32.768کیلو هرتز نداره و بخاطر همین باید توسط کریستال خارجی ساخته بشه.

یه توضیحی که باید بدم اینکه واسه هر بار برنامه نوشتن و پروگرام کردن میکرو نیازی نیست که فیوز بیت ها تنظیم بشن و فقط یه بار کافیه ولی به شرطی که هر بار فرکانس کاری برنامه تون یکی باشه ولی اکه تغییر کرد باید فیود بیت ها هم دوباره تنطیم کرد. برای طرز تنظیم فیوز بیت ها با پروگرامر باید به اموزش های پروگرامرتون مراجعه کنید چون با هم فرق دارن . و عذر خواهی بابت جمله بندی زشت و خنده دارم چون همیشه نمره انشام خراب میشود :w821:

راستی اقا کوروش منتظرم برناه بذاری تا همون با c هم بذارم

لینک به دیدگاه
  • پاسخ 241
  • ایجاد شد
  • آخرین پاسخ

بهترین ارسال کنندگان این موضوع

بهترین ارسال کنندگان این موضوع

سلام به همگی

اقا کوروش دیدم شماادامه ندادی با اجازه من شروع کردم.

امروز میخوام استفادهاز پایه های میکرو به عنوان ورودی و شرط if اموزش بدم.

یه توضیح کوچیک درباره if بدمبعد بریم سراغ برنامه.

همون طور که میدونیدمعنی if ، اگر میشه و یه دستور شرطیه و ما به برتامهمیگیم که اگه فلان طور شد تو فلان کار انجام بده.

مثال:

If(a==0)

 

{

 

a=10;

 

}

تو این مثال به برنامه میگیم که اگه a برابر 0 شد a برار 10 قرار بده . بههمین سادگیهمون طور که متوجه شدید برنامه چک میکنه که اگه شرط داخل پرانتز (جلویif) برقرار باشه دستورات داخل کروشه انحام میدهولی اگه شرط برقرار نباشه به محل بسته شدن کروشه میره و بقیه برنامه اجرا میکنه.این کلیت مطلبif بود و تا همین جا براامروز بسه و ایشالا اگه عمری بود بقیش باشه بعدا .ولی باید فرق == و = بدونید. تو برنامه هر جا =بود میکرو اینو علامتمساوی میدونه به مثال بالا توجه کنید a=10 قرار میده یا مثلا PORTB=X پورت B مساوی X قرار میده ولی == یک دستور شرطیه . مثلا if(s==a) یعنی اگر برابرa شد. تو دستورات شرطیمتونیم از و != استفاده کنیم که به معنی بزرگتر ، کوچکتر و نا مساویمیده استفاده کنیم.حالا بریم سر برنامه:

#include

#include

 

 

#include

 

#define xtal 8000000

 

main void (main)

 

{

 

DDRB=0B01111111;

 

PORTB=0B00000000;

 

While(1)

 

{

 

If(PINB.0==1)

 

 

{

 

PORTB.1=1;

 

 

}

 

delay_ms(20);

 

}

 

}

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

خط هفتم : قبلا گفتیمکه با رجیستر DDRX میتونیم ورودی یا خروجی بودن پورت مورد نظرنشخص کنیم طوری که اگه 1 باشه خروجی و اگه 0 باشه ورودی مشه. اینجا ما پایه 0 ، پورتB ورودی قرار دادیم و بقیع پایه ها خروجی.

خط یازدهم : تو اینخط برنامه چک میکنه که اگه پایه 0 پورت B به عنوان ورودی تعریف کردیم 1 باشه(یعنی بهولتاژ 5 ولت وصل باشه(1 منطقی)) شرط یا شرط های داخل کروشه انجام بده.

خط دوازدهم: باز کردنکروشه شرط if که به معنی شروع دستوراتیه که برنامه بایدانجام بده.

خط سیزدهم: 1 کردنپایه 1 پورت b (1منطقی) البته به شرطی برنامه داخل کروشه if شده باشه

خط چهاردهم: بستنکروشه شرط if که به معنی پایان دستورات if است.

 

خوب اگه پایه 0 پورتb 1باشه برنامه میره و دستورات داخل کروشه انجام میده و لی اگه 0 باشهبرنامه از خط11 میپره به خط15 .

این بود شرطif که ایشالا بعدا کاملشمیکنیم. بازم میگم اگه مشگلی بود بپرسید با این که میدونم کسی انجام نمیده کهبخواد مشکلی پیش بیاد خخخخخخ:ws47:

لینک به دیدگاه

درود

از توضیحات و اموزش ها رسول جان سپاس گزارم

تاپیک هم خیلی سوت و کور هست هم بدون تست و کار عملی پیش میره و اصلا جالب نیست اون چیزی که از اول میخواستم نشد واسه همین سرد شدم از ادامه دادنش از اینکه با تمام نیرو و وقتم یه مطلبی رو قرار بدم و کسی استقبال نکنه واقعا ناراحت میشم واسه همین چون وقتم زیاد ندارم (حین خدمتم) دارم رو یه موضوعی کار میکنم و وقت نمیکنم زیاد بیام

اگر دوستان اومدند و فعالیت کردند ادامه میدیدم :icon_gol:

لینک به دیدگاه

سلام ب همگی :icon_gol:

من ی پروگرامر stk500 دارم ک متاسفانه درایورش نصب نمیشه !! ویندوزمم 7 هست

دلیل خاصی داره ؟

 

مدلش اینه

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه
سلام ب همگی :icon_gol:

من ی پروگرامر stk500 دارم ک متاسفانه درایورش نصب نمیشه !! ویندوزمم 7 هست

دلیل خاصی داره ؟

 

مدلش اینه

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

سلام

این نوع پروگرامر توسط ویندز 7 پشتیبانی میشه . شما یه سری به اموزش های داخل سی دی پروگرامرتون بزنید حتما طریقه نصب درایورش گفته شده . در ضمن به 32 یا 64بیتی بودن ویندوزتون توجه کنید

لینک به دیدگاه

با سلام دوباره . اقا اومدیم با ادامه IF

اول دو تا عذر خواهی یکی برای تاخیر ایجاد شده و بعدی برای اینکه دو تا مشکل کوچیک تو برنامه قبلی بود که اصلاحش کردکم:4564:

خوب بریم سر اصل مطلب . تو اموزش قبل یاد گرفتیم که برنامه طوری بنویسیم که اگه فلان طور شد برای ما یه کاری بکنه. حالا میخوایم بگیم که اگه اگه شرط 1 بر قرار بود دستور 1 انجام بده ولی اگه شرط 1 برقرار نبود و شرط2 برقرار بود دستور2 انجام بده ولی اگه شرط1و2 برقرار نبود دستور3 انجام بده . ولی خوب چه طوری؟:ws38:

جواب اینجاست : else if به داد ما میرسه

خوب حالا این اقای else if برا ما چی کار میکنه؟

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

 

 

(شرط1)if

}

دستور1

{

(شرط2)else if

}

دستور2

{

.

.

.

(شرط n)else if

}

دستورn

}

else

}

دستوری که گه هیچ کدام از شرط برقرار نبود باید انجام بشه

{

خوب فکر نکنم که نیاز به توضیح باشه و اگه برنامه زیر اجرا کنید دیگه همه چیز دستگیرتون میشه

 

 

#include

#include

#include

#define xtal 8000000

void main(void)

{

DDRB=0B11111100;

PORTB=0B00000000;

while (1)

{

if(PINB.0==1)

{

PORTB.2=1;

}

else if(PINB.1==1)

{

PORTB.3=1;

}

else

{

PORTB.4=1;

}

delay_ms(20);

PORTB.2=0;

PORTB.3=0;

PORTB.4=0;

}

}

خوب شرح برنامه:

خط یازدهم : تو این خط برنامه چک میکنه که اگه پایه 0 پورتb که ورودی معرفی شده 1 باشه پایه 2 پورتb یک میکنه و میپره به خط23

خط پونزدهم: اگه پایه 0 پورتb ، صفر باشه برنامه میپره به این خط و اگه پایه 1 پورت b یک باشه پایه 3 پوت b یک میکنه و میپره به خط 23

خط نونزدهم: اگه دو شرط بالا یعنی 1 بودن پایه های 0و1 پورتb برقرار نباشه برنامه به این خط میپره و پایه 4 پورت b یک میکنه و به خط 23 میره

 

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

راستی اگه کسی مدار نبست و مشکل نفهمید فوت کوزه گری نمیگم و میرم سر مطلب بعدی حالا خود دانید.

لینک به دیدگاه

درود

خب بعد از چند هفته دوباره برگشتم یه کار کوچیک دیگه میذارم امیدورام سراغ این یکی برید :banel_smiley_4:

 

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

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

برنامه اش رو میذارم همراه فیلم،سوال داشتید بپرسید

 

برنامه:

 

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه
  • 1 ماه بعد...

سلام.

1.اگر بجای فیلم شماتیک مدار (پروتئوس) رو بذاری فکر کنم بهتره.

2.من میخوام با زبان c کار کنم و باید codevision رو نصب کنم. اما هر کار میکنم نصب نمیشه.یعنی نصب میشه و باز که میکنم یک صفحه سفید فقط نشون میده:4564:

کرک هم که میخوام بکنم، یک پیغام خطایی میاد به filesize ارور میگیره که نمیدونم یعنی چی.کسی میتونه کمکم کنه؟

 

و یک سوال خیلی کلی تر دیگه که امیدوارم بعد چندین سال تلاش بینتیجه ی من:4564:کسی راهنمایی مفیدی بکنه.. :

3.شما avr رو چجوری یاد گرفتین؟من بارها کتابهای مختلف رو خوندم ولی چون واقعا گیج میشدم و چیزی از تئوریها نمیفهمیدم، رها میکردمشون.مثلا وقفه ها،ارتباط سریال و...........اینارو هیچی نمیدونم.

لینک به دیدگاه
سلام.

1.اگر بجای فیلم شماتیک مدار (پروتئوس) رو بذاری فکر کنم بهتره.

2.من میخوام با زبان c کار کنم و باید codevision رو نصب کنم. اما هر کار میکنم نصب نمیشه.یعنی نصب میشه و باز که میکنم یک صفحه سفید فقط نشون میده:4564:

کرک هم که میخوام بکنم، یک پیغام خطایی میاد به filesize ارور میگیره که نمیدونم یعنی چی.کسی میتونه کمکم کنه؟

 

و یک سوال خیلی کلی تر دیگه که امیدوارم بعد چندین سال تلاش بینتیجه ی من:4564:کسی راهنمایی مفیدی بکنه.. :

3.شما avr رو چجوری یاد گرفتین؟من بارها کتابهای مختلف رو خوندم ولی چون واقعا گیج میشدم و چیزی از تئوریها نمیفهمیدم، رها میکردمشون.مثلا وقفه ها،ارتباط سریال و...........اینارو هیچی نمیدونم.

با سلام شما میتونید ورژن های جدید نرم افزار دانلود کنید و نصب کنید

من از خودم یاد گرفتم:ws28:. شما هم مطالب من بخون و کاری یه کتاب نداشته باش و اگه سوالی بود بپرس و اگه خواستی بگو تا اموزش ادامه بدم

لینک به دیدگاه

سلام.آره اگر ادامه بدی که خیلی خوبه.من الان شدیدا پایه ام:ws3:

فکر نکنم به ورژنش ربط داشته باشه.یک کاری کردم که بتونم بازش کنم ولی هر باز باید کرکش کنم:w58:

این محیط ویزارد چیه؟؟که ما باید no رو انتخاب کنیم؟

و اینکه میگی از خودت یاد گرفتی یعنی چی؟؟؟

:sigh:

لینک به دیدگاه
سلام.آره اگر ادامه بدی که خیلی خوبه.من الان شدیدا پایه ام:ws3:

فکر نکنم به ورژنش ربط داشته باشه.یک کاری کردم که بتونم بازش کنم ولی هر باز باید کرکش کنم:w58:

این محیط ویزارد چیه؟؟که ما باید no رو انتخاب کنیم؟

و اینکه میگی از خودت یاد گرفتی یعنی چی؟؟؟

:sigh:

ویزارد یه قسمتی از برنامه است که شما میتونی تنظیمات تایمرها ، ورودی و خروجی پایه ها ، ارتباطات و ... (همه قسمت های میکرو) انتخاب کنی و خود برنامه اتوماتیک رجیستر ها اماده میکنه و شما فقط باید برنامه بنویسی یعنی هلو بپر تو گلو

از خودم یاد گرفتم یعنی کلی مکیرو ، ال ای دی ، ال سی دی و ... سوزوندم تا یاد گرفتم .

لینک به دیدگاه
ویزارد یه قسمتی از برنامه است که شما میتونی تنظیمات تایمرها ، ورودی و خروجی پایه ها ، ارتباطات و ... (همه قسمت های میکرو) انتخاب کنی و خود برنامه اتوماتیک رجیستر ها اماده میکنه و شما فقط باید برنامه بنویسی یعنی هلو بپر تو گلو

از خودم یاد گرفتم یعنی کلی مکیرو ، ال ای دی ، ال سی دی و ... سوزوندم تا یاد گرفتم .

خب اگر از ویزارد استفاده نکنیم، اونوقت چی میشه؟؟بازم که باید برنامه بنویسیم:banel_smiley_4:.در هر صورت برنامه نویسیش که هست.منظورت اینه اگر از ویزارد استفاده کنیم، دیگه مثلا فرکانس کاری رو انتخاب میکنیم و اون یک خط برنامه(رو برای فرکانس کاریش) نمینویسیم؟

یک چیز دیگه هم نفهمیدم.اول باید file new source رو انتخاب کنیم.باز بعدش file new project.بعد یه چیزای تو در تو باز میشه و یک عالمه فایلم ایجاد میشه که متوجه نمیشم.source چیه؟project چیه و چه ربطی بهم دارن؟اگر لطف کنی راهنماییم کنی:icon_redface:

لینک به دیدگاه
خب اگر از ویزارد استفاده نکنیم، اونوقت چی میشه؟؟بازم که باید برنامه بنویسیم:banel_smiley_4:.در هر صورت برنامه نویسیش که هست.منظورت اینه اگر از ویزارد استفاده کنیم، دیگه مثلا فرکانس کاری رو انتخاب میکنیم و اون یک خط برنامه(رو برای فرکانس کاریش) نمینویسیم؟

یک چیز دیگه هم نفهمیدم.اول باید file new source رو انتخاب کنیم.باز بعدش file new project.بعد یه چیزای تو در تو باز میشه و یک عالمه فایلم ایجاد میشه که متوجه نمیشم.source چیه؟project چیه و چه ربطی بهم دارن؟اگر لطف کنی راهنماییم کنی:icon_redface:

با سلام

تو قسمت ویزارد فرکانس کاری ، ورودی و خروجی بودن پایه ها ، تنظیمات تایمر ها(سه تا تایمر)، مبدل انالوگ به دیجیتال، اتصال ال سی دی ، ارتباطاط (i2c,spi,usartو...) و .... مشخص میکنیم و خود برنامه برای ما تنطیات انجام میده . مثلا همون فرکانس کاری که گفتی ما فقط تو ویزارد میزاریم 8000000و خود برنامه همون خط برامون مینویسه البته این کاری نداره . حالا اگه ما از ویزارد استفاده نکنیم باید خودمون تنطیمات انجام بدیم.

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

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

در مورد ایجاد پروژه جدیدproject انتخاب کن

لینک به دیدگاه

دوباره سلام.برای کار کردن نرم افزاری با avr و زبان سی ،فقط به proteus برای شبیه سازی و codevision برای برنامه نویسیش احتیاج داریم.درسته؟اونوقت نرم افزار avr studioچیه پس؟؟؟:ws52:

یکم میشه در مورد محیط code vision توضیح بدی؟ چون هر جا نگاه میکنم میبینم اومده برای کدویژن برنامه نویسی c رو توضیح داده!!مثلا وقتی برنامه رو نوشتم، چجوری compile میشه؟کامپایل چیه؟تولید کد هگز؟بعد اونو باید ببریم تو ای وی آر پروتئوس؟؟

لینک به دیدگاه
دوباره سلام.برای کار کردن نرم افزاری با avr و زبان سی ،فقط به proteus برای شبیه سازی و codevision برای برنامه نویسیش احتیاج داریم.درسته؟اونوقت نرم افزار avr studioچیه پس؟؟؟:ws52:

یکم میشه در مورد محیط code vision توضیح بدی؟ چون هر جا نگاه میکنم میبینم اومده برای کدویژن برنامه نویسی c رو توضیح داده!!مثلا وقتی برنامه رو نوشتم، چجوری compile میشه؟کامپایل چیه؟تولید کد هگز؟بعد اونو باید ببریم تو ای وی آر پروتئوس؟؟

 

نرم افزار avr studio یک نرم افزار برنامه نویسی به زبان اسمبلی میباشد

زبان codevision یک زبان سطح بالا دارای مزایای زیر میباشد

  1. کاهش زمان برنامه نویسی
  2. نگهداری ساده تر حجم کدهاو در نتیجه عملکرد همزمان بین تیمهای کامپایلر و avr
  3. میکروکنترلر با کدهای تولید شده جهت استفاده بهینه و کارایی بالا می باشد

کامپایل وسیله ای می باشد که زبان c برنامه رو به زبان ماشین که همان(0و1)میباشد تبدیل می کند

برای کامپایل کردن برنامه در صورت نداشتن خطا ازمنوی Tools گزینه chip programmer را انتخاب کرده

و بعد از انجام تنظیمات گزینه reset chip برنامه داخل میکرو را پاک میکندو گزینهprogram all میکرو رو برنامه ریزی میکند .و برای تولید کد هگز از مینو project گزینه make در صورت نداشتن خطا فایل هگز تولید میشود.

لینک به دیدگاه
نرم افزار avr studio یک نرم افزار برنامه نویسی به زبان اسمبلی میباشد

زبان codevision یک زبان سطح بالا دارای مزایای زیر میباشد

  1. کاهش زمان برنامه نویسی
  2. نگهداری ساده تر حجم کدهاو در نتیجه عملکرد همزمان بین تیمهای کامپایلر و avr
  3. میکروکنترلر با کدهای تولید شده جهت استفاده بهینه و کارایی بالا می باشد

کامپایل وسیله ای می باشد که زبان c برنامه رو به زبان ماشین که همان(0و1)میباشد تبدیل می کند

برای کامپایل کردن برنامه در صورت نداشتن خطا ازمنوی Tools گزینه chip programmer را انتخاب کرده

و بعد از انجام تنظیمات گزینه reset chip برنامه داخل میکرو را پاک میکندو گزینهprogram all میکرو رو برنامه ریزی میکند .و برای تولید کد هگز از مینو project گزینه make در صورت نداشتن خطا فایل هگز تولید میشود.

خیلی ممنون.1)کجا از فایل هگز استفاده میکنیم کجا کامپایل؟ یا یعنی باید اول کامپایل بشه بعد تولید فایل هگز؟

ا2)لان این چیزایی که گفتی، همشو به ترتیب باید انجام بدیم برای هر شبیه سازی؟تاکار کنه.

3)این کارایی که تو کدویژن انجام میدیم و مراحلی که گفتی، رو، در حالیکه که میکرو واقعی داشته باشیم، نسبت به حالتی که میکرو رو تو برنامه پروتئوس داشته باشیم هیچ فرقی نمیکنه؟؟

:ws52:

لینک به دیدگاه
خیلی ممنون.1)کجا از فایل هگز استفاده میکنیم کجا کامپایل؟ یا یعنی باید اول کامپایل بشه بعد تولید فایل هگز؟

ا2)لان این چیزایی که گفتی، همشو به ترتیب باید انجام بدیم برای هر شبیه سازی؟تاکار کنه.

3)این کارایی که تو کدویژن انجام میدیم و مراحلی که گفتی، رو، در حالیکه که میکرو واقعی داشته باشیم، نسبت به حالتی که میکرو رو تو برنامه پروتئوس داشته باشیم هیچ فرقی نمیکنه؟؟

:ws52:

با سلام

1 کام پایل یه عملیات که برنامه نوشته شده ما رو به فایل هگز تبدیل میکنه.

3 نخیر برای کدیویژن فرق نداره که شما میخای چی کار کنی

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...