# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > AVR >  برنامه نویسی میکروکنترلر های AVR

## bermuda

سلام قصد دارم در این جا مطالب مربوط به برنامه نویسی میکروکنترلرهای خانواده AVR رو آموزش بدم .
شما هم میت.نید کمکم کنید.

----------


## emad_67

تاپیک رو به این بخش منتقل کن:
https://barnamenevis.org/forumdisplay.php?f=119

----------


## SamaPic

با سلام خدمت دوست عزيز.
اين مطلب مورد تخصصي من است اگر كمك خواستيد در ضمينه ي ميكرو كنترل خوشحال مي شوم بتوانم كمكتان كنم.
خدانگهدار.

----------


## r.sadeghi

سلام
من دارم يه كامپايلر مي خوام كه يه برنامه ميكرو بگيره و اونو تبديل به hex براي ريختن روي ربات كنه ،
ميتونيد منو راهنمائي كنيد؟
merci beaucoup

----------


## saeedfir

من می خواهم با میکرو atmega32 تایمر 1رو طوری تنظیم کنم که هر یک هزارم ثانیه رو بشماره ممنون میشم اگه راهنماییم کنید .

----------


## SamaPic

با سلام خدمت دوستان عزيز.




> من می خواهم با میکرو atmega32 تایمر 1رو طوری تنظیم کنم که هر یک هزارم ثانیه رو بشماره ممنون میشم اگه راهنماییم کنید .


شما بايد از يك كريستال مخصوص استفاده كنيد.اسمش يادم نيست ولي در حالت عادي خطا بسيار است.
يك نوع وجود دارد كه در سال 5 دقيقه خطا دارد.من از اين دقيق تر نمي شناسم.
شما بايد از وقفه ها استفاده كنيد.




> سلام
> من دارم يه كامپايلر مي خوام كه يه برنامه ميكرو بگيره و اونو تبديل به hex براي ريختن روي ربات كنه ،
> ميتونيد منو راهنمائي كنيد؟
> merci beaucoup


والا تا حالا ما از حالت معمولي استفاده مي كرديم.
بيشتر توضيح بده تا بهتر بشه راهنمايي كرد.


خدانگهدار.

----------


## mhmmdshirazi

age compiler mikhay codevision avr kheili khube ba c ham hast.

----------


## SamaPic

با سلام خدمت دوست عزيز.




> age compiler mikhay codevision avr kheili khube ba c ham hast.


من فكر مي كنم بسكام بهتر باشه .
اگر اشتباه مي كنم لطفا بفرماييد.
خدانگهدار.

----------


## sara66

سلام من تازه دارم برنامه نویسی AVR رو شروع میکنم با C و با تست proteus میکنم .
مدار یک LED و یک BUTTON داره میخوام وقتی BUTOON زده شد LED روشن بشه . 
LED را به B.0 و button را به A.0 وصل کردم . میکرو AVR Mega 32
این دستور اشتباهه ؟
 if(PINA.0) PORTB.0=1

----------


## SamaPic

> سلام من تازه دارم برنامه نویسی AVR رو شروع میکنم با C و با تست proteus میکنم .
> مدار یک LED و یک BUTTON داره میخوام وقتی BUTOON زده شد LED روشن بشه . 
> LED را به B.0 و button را به A.0 وصل کردم . میکرو AVR Mega 32
> این دستور اشتباهه ؟
>  if(PINA.0) PORTB.0=1



با سلام خدمت دوست عزيز. اگر مدار را درست بسته ايد كد درست است.من مشكلي نمي بينم.البته اگر butoon  را درست بستيد  سعي كنيد يك كنترل جريان يا يك مقاومت 10 كيلو براي حفاظت از آي سي در سر راه قرار دهيد. احتياط كنيد. خدانگهدار.

----------


## sara66

درست شد یه ELSE کم داشت . جریان P و T چیه ؟ که وقتی پروژه جدید درست میکنی جلوی PORT ها هست ؟؟؟؟؟ آخه اگه P باشه کار میکنه اگه T باشه نه !!

----------


## SamaPic

با سلام خدمت دوست عزيز.




> درست شد یه ELSE کم داشت . جریان P و T چیه ؟ که وقتی پروژه جدید درست میکنی جلوی PORT ها هست ؟؟؟؟؟ آخه اگه P باشه کار میکنه اگه T باشه نه !!



شما در ابتدا ي كار هستيد.
من خودم در ابتدا خيلي علاقه مند به ياد گيري بودم و هر مورد را از جايي (ياد گرفتم منظورم جلو جلو و خارج از كلاس).(اين خيلي خوب است ولي زماني كه دوره ي ياد گيري تكميل شد.)
اول خيلي خوب بود ولي بعد پشيمان شدم.چون اطلاعات درهم و پراكنده مي شود كه اين كار استفاده (به كار گيري ) اطلاعات را با مشكل روبرو مي كند.
شما نيز از تجربه ي من استفاده كنيد.
سعي كنيد از نرم افزار بسكام استفاده كنيد چون بهتر ، آينده دار تر و راحت تر است.
خدانگهدار.

----------


## sara66

من رشتم کامپیوتر . اصلا میکرو نداریم . من میخوام میکرو را با پورت سریال به کامپیوتر وصل کنم و مثلا 1 را به کامپیوتر بفرستم ... برای این چه چیزای لازمه ؟

----------


## SamaPic

با سلام خدمت دوست عزيز.
منظورتان را نمي فهمم.
مي خواهيد پايه ي 1 را به كامپيوتر وصل كنيد؟با كدام ميكرو كار مي كنيد؟
اگر مي خواهيد ميكرو را پروگرام كنيد بايد يك پروگرامر تهيه كنيد (قيمت حدودي 10 تا 12 هزار تومان) ولي خودتان هم مي توانيد بسازيد.(فكر نكنم سوالتان اين بود)
بهتر توضيح دهيد تا مشخص شود.





> من رشتم کامپیوتر . اصلا میکرو نداریم . من میخوام میکرو را با پورت سریال به کامپیوتر وصل کنم و مثلا 1 را به کامپیوتر بفرستم ... برای این چه چیزای لازمه ؟


تقريبا بيشتري ها رشته كامپيوتر هستن حالا يكي نرم افزار و يكي سخت افزار.
خدانگهدار.

----------


## آزاد87

سلام.
من ميخواستم شروع به كار كنم ولي نمي دونم كدوم كتاب بهتره .شماخودتون با كدوم كتاب كار كردين.

----------


## SamaPic

با سلام خدمت دوست عزيز




> سلام.
> من ميخواستم شروع به كار كنم ولي نمي دونم كدوم كتاب بهتره .شماخودتون با كدوم كتاب كار كردين.




من خودم با كتاب مخالفم و فقط مي گويم كار عملي.الكترونيك علمي است كه از تئوري تا عمل بايد خيلي راه رفت.
ولي براي اينكه پاسخ شما را داده باشم بايد بگويم كتاب     علي كاحه (نمي دونم املاش درست) خوب است.
كتابي را كه من خوندم نمي توانم معرفي كنم چون سطحش براي ابتداي كار خيلي بالا است.من خودم براي شروع از همين كتاب شروع كردم.(البته يك كلاس مقدماتي هم رفتم.)
يك سوال با كدام نوع مي خواهيد كار كنيد؟من خودم فقط آي وي آر كار كردم .اين موارد هم مربوط به همان مي شود.

----------


## av_saber

سلام 
اول تشكر بابت مطالبي كه زحمت كشيده بوديد ودر اختيار دوستان گذاشتيد
من دانشجوي رشته عمران هستم يه پروژه دارم كهدر اون بايد يه سلول شبكه عصبي رو شبيه سازي كنم كار يك سلول يه اينصورته كه يك X رو از ورودي دريافت كرده و تابع (F(X رو در خروجي ميده معمولا هم تابع tanh از نوع توابع هذلولويه كسي مي تونه كمكمكنه براي اين كار از mega32  استفاده مي كنم
 1  ورودي ها و خروجي ها رو با چي دريافت كنم با چي نمايش بدم 
2 بزنامه اين رو با چي بنويسم Cيا basic يا Assembly
3كسي برنامه نمونهداره واسم بزاره

----------


## SamaPic

با سلام خدمت دوتس عزیز.




> سلام 
> اول تشكر بابت مطالبي كه زحمت كشيده بوديد ودر اختيار دوستان گذاشتيد
> من دانشجوي رشته عمران هستم يه پروژه دارم كهدر اون بايد يه سلول شبكه عصبي رو شبيه سازي كنم كار يك سلول يه اينصورته كه يك X رو از ورودي دريافت كرده و تابع (F(X رو در خروجي ميده معمولا هم تابع tanh از نوع توابع هذلولويه كسي مي تونه كمكمكنه براي اين كار از mega32  استفاده مي كنم
>  1  ورودي ها و خروجي ها رو با چي دريافت كنم با چي نمايش بدم 
> 2 بزنامه اين رو با چي بنويسم Cيا basic يا Assembly
> 3كسي برنامه نمونهداره واسم بزاره



سوالات:
اول : باید بهتر بگویید که برنامه دقیقا چی می خواهد.(خروجی شما رسم هذلولیه یا فقط تابع)
2. شما با هر برنامه ای بخواهی برنامه بنویسی می توانی بنوسی.من خودم شخصا اسمبلی را پیشنهاد نمی کنم چون  سخت می شود.با سی کمی راحت تره و بیسیک هم بد نیست.
3.من برنامه ی مشابه خواسته ی شما نداشتم.ولی فکر نکنم سخت باشه.
کمی بیشتر در مورد برنامه توضیح بده تا بهتر بتوانیم کمک کنیم.
خدانگهدار.

----------


## Hamed Hosseini

سلام  بي ادبي من رو مي بخشيد .ولي برنامتون يه اشكال كوچولو داره
هر وقت شما شرطي رو  واسه آي سي ها مي نويسيد بايد بر عكسشو بنويسيد و ضمنا يه حلقه هم براي اجراي مداوم برنامه  بايد داشته باشيد
يعني الگوريتمش به حالت زير ميشه 
0-شروع
1- اگه a.0 = 1  اونوقت b.0 =1
 در غير اينصورت   b.0 = 0
2-برگرد به 0

برنامش تو bascom  اينجوري ميشه:

Do

if porta.0 =1 then set portb.0 
else reset portb.0

Loop

----------


## Hamed Hosseini

lمن برنامه هامو با bascom  مي نويسم . اگه هنوز كتابي در مورد سي -codevision- نداريد مي تونم بهتون يه كتاب خوب معرفي كنم

----------


## Hamed Hosseini

> سلام
> من دارم يه كامپايلر مي خوام كه يه برنامه ميكرو بگيره و اونو تبديل به hex براي ريختن روي ربات كنه ،
> ميتونيد منو راهنمائي كنيد؟
> merci beaucoup


 
تا اونجايي كه من اطلاع دارم همچين كامپايلري وجود نداره. دليل وجود نداشتنش هم حمايت از قانون كپي رايته.

----------


## SamaPic

> تا اونجايي كه من اطلاع دارم همچين كامپايلري وجود نداره. دليل وجود نداشتنش هم حمايت از قانون كپي رايته.


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

----------


## Hamed Hosseini

درسته. توليد چنين نرم افزاري ، در راستاي اهداف مهندسي معكوسه. اگه كسي همچنن برنامه اي ديده بگه....

----------


## LeBron

سلام دوستان.من تازه عضو شدم ومیخام.برنامه نویسی avrرو شروع کنم.من یک tester .and.or.xor لازم دارم هرکی میتونه کمکم کنه ممنون میشم.

----------


## farzadsw

> سلام دوستان.من تازه عضو شدم ومیخام.برنامه نویسی avrرو شروع کنم.من یک tester .and.or.xor لازم دارم هرکی میتونه کمکم کنه ممنون میشم.


2 ورودی هستن ؟
چند تا از پایه های میکرو رو ، مثلا porta.0 تا porta.2 رو به عنوان ورودی تعریف کن ، و عملیات دلخواه رو روشون انجام بده ( or , and ,...)   بعد رو یه پایه دیگه که به عنوان خروجی تعریفش کردی ، مثلا porta.5  حاصل رو قرار بده . 
اگه هر کدوم از موارد بالا رو نمیتونی انجام بدی ، بهتره اون فایلهای آموزشی که تو این تاپیک هست رو بخونی:
https://barnamenevis.org/showthread.php?t=166278
مخصوصا اون آخری که از همه ساده تر گفته.

----------


## danijoon

کسی هست به من 1کد یا راهنمایی در مورد ارتباط کیبورد 4*4 با avr بده؟

----------


## farzadsw

کیبورد 4*4 به این صورت به میکرو وصل میشه(البته این 4*5 هست):








  برای گرفتن مقدار کلید ، معمولا کامپایلر ها یه تابع آماده دارن مثلا بسکام این رو دارهGetkbd()
  اگرم بخواید خودتون تابع خوندن کلید رو بنویسید :
  همونطور که تو شکل مشخصه باید اون 4 تا پایه ای که به ردیف های کیپد وصله رو یکی یکی 0 کنید(در هر لحظه یکی) و در هر مرحله 4 تا پایه ورودی میکرو که به ستونها وصلن رو چک کنید ببینید کدوم 0 شده . به این عمل اصطلاحا اسکن صفحه کلید میگن. (مثلا ردیف اول رو صفر میکنید بعد ستونها رو  چک میکنید که کدومشون صفر شده اگه  یکدوم صفر شده بود اون ستون و اون سطر نشون دهنده کلید هستن . اگرم همه 1 بودن میریر سراغ سطر بعدی)
  چون عمل اسکن خیلی سریع اتفاق میوفته (کمتر از میلی ثانیه) اگه کلیدی فشار داده بشه سریعا شناسایی میشه .


  یه روش دیگه(که سریعتره) هم اینه که تو دو مرحله این کار انجام بشه :
    DDRC = 0x0f; 
      PORTC = 0xf0;  
      delay_us(5); 
      key = PINC; 
        
      DDRC = 0xf0; 
      PORTC = 0x0f;  
      delay_us(5); 
       key = key & PINC; 
       
    delay_ms(10); 
       
  تو این کد در مرحله اول 4 تا پایه میکرو خروجی هستن و 4 تا ورودی . بعد همه خروجی هارو صفر میکنید(نه یکی یکی) و ستون ها رو میخونید و توی متغییر key قرار میدید .
  در مرحله دوم جای ورودی خروجی ها عوض میشن و باز خروجی های جدید رو صفر میکنید (پایه هایی که تو مرحله قبلی ورودی بودن) و ورودی های جدید رو میخونید و با مقدار key که قبلا داشتید and میکنید . نتیجه مشخص میکنه کدوم کلید فشرده شده.
 مثلا در مرحله اول key=10111111 و در مرحله دوم key= 11111101 باشه در نتیجه key=10111101 میشه . پس سطر 3 و ستون 2 فشرده شده. و الی آخر

----------


## m-saam

با سلام 
من در حال نوشتن پروژه پایان دوره کارشناسی (مهندسی تکنولوژی نرم افزار) می باشم (روبوت مسیریاب) چون وقت زیادی ندارم فقط میخوام اگه کد خواندن 5 سنسور  (ورودی ) و ذخیره در متغیر را دارید برام بفرستید (در محیط codevision  برای avr atmega32l).
به نظر شما من از 32 حالتی که با 5 سنسور به وجود می آید و 14 حالت را انتخاب نمودم با switch-case بنویسم بهتره یا if ?

----------


## salieskan

سلام به دوستان من برنامه رطوبت سنج رو با سنسور humidity 818  میخوام .. البته با کدویژن نوشته شده باشه ممنون میشم

----------


## ramezani1988

سلام
من باید این درس رو تدریس کنم!!! 1 ماه وقت دارم یاد بگیرمش
اگه می شه راهنمایی م کنید از کجا شرو کنم؟؟؟

----------


## poya121

سلام.من دارم يك ربات مين ياب درست ميكنم،كه از سنسور SRF05 براي اون  استفاده كردم.وميكرومم atmega 128 است .حالا براي برنامه نويسي اين سنسور گير كردم!در ضمن ميخوام  برنامه به زبان سي باشه!كسي ميتونه توبرنامه نويسيش بهم كمك كنه؟اگه نمونه  كد هم داريد برام خواهشن بفرستيد.فقط دوستان من خيلي خيلي عجله دارم!!خواهش  ميكنم يكي زود جوابمو بده!!ممنون.

----------


## Abbas Amiri

سلام ، از آنجا که با اعمال  پالس 10 میکروثانیه به ورودی Trigger ماژول  فوق ، عملیات اندازه گیری آغاز میشود و نتیجه در خروجی Echo Pulse Output  بصورت یک پالس با پهنای متناسب با زمان رسیدن امواج صوتی به هدف نمایان  میشود . این پالس با لبه بالارونده است ، اگر  آنرا به یک پایه اینتراپت  خارجی درحالت Rising Edge جهت شروع به کار یک تایمر و همچنین به یک Input  Capture درحالت Falling Edge جهت ثبت مقدار تایمر در پایان پالس وصل کنید و  کدهای مربوطه بنویسید براحتی میتوانید با مازول فوق ارتباط برقرارکنید

----------


## رسول21

با سلام من یه برنامه فلاشر 8 کاناله رقص نور دارم  به زبان سی هست اگه  اشتباه نکنمکه افکتهای متععددی رو اجرا میکنه میخاستم ببینم کسی میتونه  تعداد کانالهاشو ویرایش کنه یعنی از 8 کانال به 10 کانال و 4 کانال و 5 و6  و7 کانال تغییر پیداکنه البته با همین رقص نورها فعلا 10 کاناله رو لازم  دارم اگه سخته این دو تا 4 و 6 کاناله رو هم کارم راه میوفته اینم لینک برنامه

----------


## رسول21

به به عجب فروم فعالی کلی حال کردم

----------


## es.es.es

> اگر مي خواهيد ميكرو را پروگرام كنيد بايد يك پروگرامر تهيه كنيد (قيمت حدودي 10 تا 12 هزار تومان) ولي خودتان هم مي توانيد بسازيدخدانگهدار.


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

----------


## mmmolah

آقا سلام
                  من دنبال یه برنامه به زبان بیسیک(تو بسکام) هستم که 8 تا led رو به ترتیب روسن کنه و به ترتیب هم خاموش کنه البته هنگام خاموش کردنش آروم آروم کم نور بشن و بعد خاموش بشن(مثل ستاره دنباله دار)......

----------


## SEZAR.CO

می تونم از شما بپرسم اینا چین

----------


## kobrakobra

> با سلام خدمت دوست عزيز.
> اين مطلب مورد تخصصي من است اگر كمك خواستيد در ضمينه ي ميكرو كنترل خوشحال مي شوم بتوانم كمكتان كنم.
> خدانگهدار.


 حل تمرینات آخر فصل ای وی آر جابر الوندی را خیلی فوری میخواهم
با تشکر فراوان

----------


## shahinexir

_دیدگاه شما در انتظار تایید مدیر می باشد._
سلام دوستان عزیز
فردا باید این برنامه رو تحویل بدم. چیز سختی نیست . ولی ازونجایی که ترم آحرم زیاد وقت نزاشتم روش و متوجه نمیشم .
ممنون میشم کمکم کنین .
*صورت سوال اینه :
برنامه ای بنویسید گه با تغییر هر dip switch یک واحد به مقدار خروجی اضافه کند*.
واسه درس آزمایشگاه ریزپردازنده هست.
باید تو مجیط AVR CODEVISION برنامش رو بنویسیم
بعد توی برنامه PROTEUS مدارشو رسم کنیم. تا هرجاشم بتونین کمکم کنین خیلی ممنون میشم

----------

