PDA

View Full Version : برنامه نویسی میکروکنترلر های AVR



bermuda
پنج شنبه 28 آذر 1387, 09:33 صبح
سلام قصد دارم در این جا مطالب مربوط به برنامه نویسی میکروکنترلرهای خانواده AVR رو آموزش بدم .
شما هم میت.نید کمکم کنید.

emad_67
پنج شنبه 28 آذر 1387, 11:30 صبح
تاپیک رو به این بخش منتقل کن:
http://barnamenevis.org/forum/forumdisplay.php?f=119

SamaPic
پنج شنبه 28 آذر 1387, 16:22 عصر
با سلام خدمت دوست عزيز.
اين مطلب مورد تخصصي من است اگر كمك خواستيد در ضمينه ي ميكرو كنترل خوشحال مي شوم بتوانم كمكتان كنم.
خدانگهدار.

r.sadeghi
پنج شنبه 19 دی 1387, 10:56 صبح
سلام
من دارم يه كامپايلر مي خوام كه يه برنامه ميكرو بگيره و اونو تبديل به hex براي ريختن روي ربات كنه ،
ميتونيد منو راهنمائي كنيد؟
merci beaucoup

saeedfir
دوشنبه 14 بهمن 1387, 19:13 عصر
من می خواهم با میکرو atmega32 تایمر 1رو طوری تنظیم کنم که هر یک هزارم ثانیه رو بشماره ممنون میشم اگه راهنماییم کنید .

SamaPic
شنبه 26 بهمن 1387, 20:00 عصر
با سلام خدمت دوستان عزيز.



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


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



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


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


خدانگهدار.

mhmmdshirazi
یک شنبه 27 بهمن 1387, 09:29 صبح
age compiler mikhay codevision avr kheili khube ba c ham hast.

SamaPic
دوشنبه 28 بهمن 1387, 14:36 عصر
با سلام خدمت دوست عزيز.


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

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

sara66
جمعه 02 اسفند 1387, 06:43 صبح
سلام من تازه دارم برنامه نویسی AVR رو شروع میکنم با C و با تست proteus میکنم .
مدار یک LED و یک BUTTON داره میخوام وقتی BUTOON زده شد LED روشن بشه .
LED را به B.0 و button را به A.0 وصل کردم . میکرو AVR Mega 32
این دستور اشتباهه ؟

if(PINA.0) PORTB.0=1

SamaPic
جمعه 02 اسفند 1387, 11:00 صبح
سلام من تازه دارم برنامه نویسی 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
جمعه 02 اسفند 1387, 11:42 صبح
درست شد یه ELSE کم داشت . جریان P و T چیه ؟ که وقتی پروژه جدید درست میکنی جلوی PORT ها هست ؟؟؟؟؟ آخه اگه P باشه کار میکنه اگه T باشه نه !!

SamaPic
شنبه 03 اسفند 1387, 15:58 عصر
با سلام خدمت دوست عزيز.


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


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

sara66
شنبه 03 اسفند 1387, 17:17 عصر
من رشتم کامپیوتر . اصلا میکرو نداریم . من میخوام میکرو را با پورت سریال به کامپیوتر وصل کنم و مثلا 1 را به کامپیوتر بفرستم ... برای این چه چیزای لازمه ؟

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




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


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

آزاد87
پنج شنبه 08 اسفند 1387, 09:40 صبح
سلام.
من ميخواستم شروع به كار كنم ولي نمي دونم كدوم كتاب بهتره .شماخودتون با كدوم كتاب كار كردين.

SamaPic
پنج شنبه 08 اسفند 1387, 13:31 عصر
با سلام خدمت دوست عزيز


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



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

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

SamaPic
دوشنبه 10 فروردین 1388, 10:45 صبح
با سلام خدمت دوتس عزیز.


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


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

Hamed Hosseini
یک شنبه 20 اردیبهشت 1388, 12:23 عصر
سلام بي ادبي من رو مي بخشيد .ولي برنامتون يه اشكال كوچولو داره
هر وقت شما شرطي رو واسه آي سي ها مي نويسيد بايد بر عكسشو بنويسيد و ضمنا يه حلقه هم براي اجراي مداوم برنامه بايد داشته باشيد
يعني الگوريتمش به حالت زير ميشه
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
یک شنبه 20 اردیبهشت 1388, 12:28 عصر
lمن برنامه هامو با bascom مي نويسم . اگه هنوز كتابي در مورد سي -codevision- نداريد مي تونم بهتون يه كتاب خوب معرفي كنم

Hamed Hosseini
چهارشنبه 23 اردیبهشت 1388, 11:00 صبح
سلام
من دارم يه كامپايلر مي خوام كه يه برنامه ميكرو بگيره و اونو تبديل به hex براي ريختن روي ربات كنه ،
ميتونيد منو راهنمائي كنيد؟
merci beaucoup


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

SamaPic
چهارشنبه 23 اردیبهشت 1388, 22:52 عصر
تا اونجايي كه من اطلاع دارم همچين كامپايلري وجود نداره. دليل وجود نداشتنش هم حمايت از قانون كپي رايته.

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

Hamed Hosseini
پنج شنبه 24 اردیبهشت 1388, 00:55 صبح
درسته. توليد چنين نرم افزاري ، در راستاي اهداف مهندسي معكوسه. اگه كسي همچنن برنامه اي ديده بگه....

LeBron
جمعه 01 آبان 1388, 09:53 صبح
سلام دوستان.من تازه عضو شدم ومیخام.برنامه نویسی avrرو شروع کنم.من یک tester .and.or.xor لازم دارم هرکی میتونه کمکم کنه ممنون میشم.

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

danijoon
سه شنبه 22 دی 1388, 18:21 عصر
کسی هست به من 1کد یا راهنمایی در مورد ارتباط کیبورد 4*4 با avr بده؟

farzadsw
سه شنبه 22 دی 1388, 21:51 عصر
کیبورد 4*4 به این صورت به میکرو وصل میشه(البته این 4*5 هست):



http://img37.imagefra.me/img/img37/2/1/12/farzadsw/f_1gxnasxvfnxm_705a10f.jpg




برای گرفتن مقدار کلید ، معمولا کامپایلر ها یه تابع آماده دارن مثلا بسکام این رو داره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
یک شنبه 11 بهمن 1388, 23:50 عصر
با سلام
من در حال نوشتن پروژه پایان دوره کارشناسی (مهندسی تکنولوژی نرم افزار) می باشم (روبوت مسیریاب) چون وقت زیادی ندارم فقط میخوام اگه کد خواندن 5 سنسور (ورودی ) و ذخیره در متغیر را دارید برام بفرستید (در محیط codevision برای avr atmega32l).
به نظر شما من از 32 حالتی که با 5 سنسور به وجود می آید و 14 حالت را انتخاب نمودم با switch-case بنویسم بهتره یا if ?

salieskan
چهارشنبه 11 خرداد 1390, 15:23 عصر
سلام به دوستان من برنامه رطوبت سنج رو با سنسور humidity 818 میخوام .. البته با کدویژن نوشته شده باشه ممنون میشم

ramezani1988
یک شنبه 13 شهریور 1390, 15:13 عصر
سلام
من باید این درس رو تدریس کنم!!! 1 ماه وقت دارم یاد بگیرمش
اگه می شه راهنمایی م کنید از کجا شرو کنم؟؟؟

poya121
پنج شنبه 26 مرداد 1391, 22:14 عصر
سلام.من دارم يك ربات مين ياب درست ميكنم،كه از سنسور SRF05 براي اون استفاده كردم.وميكرومم atmega 128 است .حالا براي برنامه نويسي اين سنسور گير كردم!در ضمن ميخوام برنامه به زبان سي باشه!كسي ميتونه توبرنامه نويسيش بهم كمك كنه؟اگه نمونه كد هم داريد برام خواهشن بفرستيد.فقط دوستان من خيلي خيلي عجله دارم!!خواهش ميكنم يكي زود جوابمو بده!!ممنون.

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

رسول21
شنبه 29 مهر 1391, 18:16 عصر
با سلام من یه برنامه فلاشر 8 کاناله رقص نور دارم به زبان سی هست اگه اشتباه نکنمکه افکتهای متععددی رو اجرا میکنه میخاستم ببینم کسی میتونه تعداد کانالهاشو ویرایش کنه یعنی از 8 کانال به 10 کانال و 4 کانال و 5 و6 و7 کانال تغییر پیداکنه البته با همین رقص نورها فعلا 10 کاناله رو لازم دارم اگه سخته این دو تا 4 و 6 کاناله رو هم کارم راه میوفته اینم لینک برنامه (http://wdl.persiangig.com/pages/download/?dl=http://lednama.persiangig.com/flasher_m8_x8.zip)

رسول21
شنبه 06 آبان 1391, 20:04 عصر
به به عجب فروم فعالی کلی حال کردم

es.es.es
سه شنبه 30 آبان 1391, 00:05 صبح
اگر مي خواهيد ميكرو را پروگرام كنيد بايد يك پروگرامر تهيه كنيد (قيمت حدودي 10 تا 12 هزار تومان) ولي خودتان هم مي توانيد بسازيدخدانگهدار.
میشه لطفا توضیح بدید چگونه پروگرامر بسازیم البته یه جوری که از پورت پرینتر استفاده نکنه چون با لپ تاپ کار میکنم

mmmolah
شنبه 04 خرداد 1392, 09:36 صبح
آقا سلام
من دنبال یه برنامه به زبان بیسیک(تو بسکام) هستم که 8 تا led رو به ترتیب روسن کنه و به ترتیب هم خاموش کنه البته هنگام خاموش کردنش آروم آروم کم نور بشن و بعد خاموش بشن(مثل ستاره دنباله دار)......

SEZAR.CO
دوشنبه 13 خرداد 1392, 20:30 عصر
می تونم از شما بپرسم اینا چین

kobrakobra
دوشنبه 20 آبان 1392, 08:35 صبح
با سلام خدمت دوست عزيز.
اين مطلب مورد تخصصي من است اگر كمك خواستيد در ضمينه ي ميكرو كنترل خوشحال مي شوم بتوانم كمكتان كنم.
خدانگهدار.
حل تمرینات آخر فصل ای وی آر جابر الوندی را خیلی فوری میخواهم
با تشکر فراوان

shahinexir
سه شنبه 05 خرداد 1394, 21:39 عصر
دیدگاه شما در انتظار تایید مدیر می باشد.

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