PDA

View Full Version : سوال: میکرو برای خودش یه زبان مخصوص داره یا فقط سخت افزاره و با هر زبانی می شه براش برنامه نوشت؟



idocsidocs
شنبه 30 اردیبهشت 1391, 15:58 عصر
میکرو برای خودش یه زبان مخصوص داره یا فقط سخت افزاره و با هر زبانی می شه براش برنامه نوشت؟

soorena
شنبه 30 اردیبهشت 1391, 16:16 عصر
سلام

اگر منظور میکروکنترلر هستش یا میکرو پروسسور زبان این قطعات اسمبلی هستش که البته با زبان‌های سطح بالاتری مثل سی‌ و بیسیک هم می‌شه براشون برنامه‌نویسی کرد .

idocsidocs
شنبه 30 اردیبهشت 1391, 16:21 عصر
پس می شه با هر زبانی که کامپایلرش موجود باشه برای میکرو یا میکرو پروسسور برنامه نوشت. درسته؟

حامد مصافی
شنبه 30 اردیبهشت 1391, 17:30 عصر
به سوال پست دوم جواب ندادید! نفرمودید منظورتون میکروکنترلر هست یا میکروپرسسور
در هر صورت فرقی نداره. شما باید یک فایل بایناری (hex) به آن تحویل دهید. در نتیجه باید کامپایلری پیدا کنید که چنین خروجی تولید کند. یعنی برای سکوی آن سخت‌افزار بتواند عمل کامپایل را انجام دهد. سپس با زبان آن کامپایلر برنامه بنویسید.

idocsidocs
شنبه 30 اردیبهشت 1391, 20:03 عصر
منظورم میکروکنترلر هست

من cpp رو خوندم، اگه سی رو خوب یاد بگیرم، نیازی هست که برای میکرو تحقیق کنم یا دیگه برای این کار نیاز نیست؟

توی میکرو مباحث مربوط به برنامه نویسی پورت توضیح داده می شه؟ چون توی cpp توی کتابی که می خوندم در این مورد چیزی ندیدم.

one hacker alone
شنبه 30 اردیبهشت 1391, 21:02 عصر
ببینید شما برای این کار بهتره از سی و کامپایلر Codevision استفاده کنی و چون ++ کار کردی پس مشکلی نداری با سی چون یکی هستن
شما احتیاجتون به پورت نمی افته مگه اینکه بخوای یه برنامه براش بنویسی که توی ویندوز بتونیی سیستم رو کنترل کنی که میتونی براش درگاه usb بزاری و درایور براش بنویسی که کار ساده ای هست و مابقی هم برنامه خودت هست
سی برای این کار توابع به اندازه کافی داره

soorena
شنبه 30 اردیبهشت 1391, 21:42 عصر
سلام

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

شما احتیاجتون به پورت نمی افته مگه اینکه بخوای یه برنامه براش بنویسی که توی ویندوز بتونیی سیستم رو کنترل کنی که میتونی براش درگاه usb بزاری و درایور براش بنویسی که کار ساده ای هست و مابقی هم برنامه خودت هست
سی برای این کار توابع به اندازه کافی داره
به هر پایه ورودی یا خروجی تو میکرو پورت گفته می‌شه که تمام عملیات میکرو از طریقه همین پورت‌ها انجام می‌شه پس صرفاً منظور از پورت تو میکرو usb یا این چیزا نیست . مسالهٔ بعدی اینکه استفاده از توابع آماده تو میکرو همیشه بهترین راه حل نیست(تقریبا در اکثر مواقع) چون زبان‌های سطح بالا به ندرت برای این قطعات تکمیل هستند پس استفاده از اسمبلی و مطالعه datasheet هر میکرو حتما لازم و ضروری هستش.

idocsidocs
شنبه 30 اردیبهشت 1391, 22:20 عصر
الان کتابهای میکروی زیادی وجود داره.

این کتابها چه چیزی رو آموزش می دن؟

اگر بحث فقط سر برنامه نویسی هست، که با یادگیری سی، می شه برنامه میکرو نوشت.

کتابهای میکرو چه چیزی رو آموزش می دن؟

one hacker alone
شنبه 30 اردیبهشت 1391, 23:26 عصر
به هر پایه ورودی یا خروجی تو میکرو پورت گفته می‌شه که تمام عملیات میکرو از طریقه همین پورت‌ها انجام می‌شه پس صرفاً منظور از پورت تو میکرو usb یا این چیزا نیست . مسالهٔ بعدی اینکه استفاده از توابع آماده تو میکرو همیشه بهترین راه حل نیست(تقریبا در اکثر مواقع) چون زبان‌های سطح بالا به ندرت برای این قطعات تکمیل هستند پس استفاده از اسمبلی و مطالعه datasheet هر میکرو حتما لازم و ضروری هستش.

به پایه های میکرو کنترل ها پین گفته میشود پس ما توی میکرو کنترل چیزی به اسم پورت نداریم و اصلا برنامه نویسی پین نداریم چون اساس کار میکرو ها پین هست که با شماره اونها میتونی بهشون دسترسی داشته باشی

برای برنامه نویسی هم اگه سرعت مهم هست (خیلی مهم) اسمبلی در غیر اینصورت سی کار کن که خیلی منطقی تره


باز تکرار میکنم پایه های میکرو رو پین میگن نه پورت (لینک های زیر رو ببینید) اگه فقط یک دیتاشیت تو عمرتون میدیدین به پین نمیگفتین پورت
اینم ویکی
http://en.wikipedia.org/wiki/Microcontroller

اینم قسمتی از یک دیتاشیت
http://www.futurlec.com/Atmel/ATMEGA16.shtml


لطفا در مورد موضوعی که کار نکردین نظر ندین که اسپم نشه

idocsidocs
شنبه 30 اردیبهشت 1391, 23:46 عصر
مجبورم دوباره این بحث رو تکرار کنم، لطفا در این مورد نظر بدید:

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

این کتابها چه چیزی رو آموزش می دن؟

اگر بحث فقط سر برنامه نویسی هست، که با یادگیری سی، می شه برنامه میکرو نوشت.

کتابهای میکرو چه چیزی رو آموزش می دن؟

حامد مصافی
شنبه 30 اردیبهشت 1391, 23:48 عصر
برای برنامه نویسی هم اگه سرعت مهم هست (خیلی مهم) اسمبلی در غیر اینصورت سی کار کن که خیلی منطقی تره
تکذیب می‌کنم. فرقی ندارند

one hacker alone
یک شنبه 31 اردیبهشت 1391, 00:05 صبح
در مورد اینکه اسمبلی در مقابل سی سرعتش بیشتره که اصلا جای بحث نداره و این موضوع کاملا روشنه
اما اگه منظورتون در مورد نقش این زبان ها در برنامه نویسی میکرو هاست باید بگم من هم با شما موافقم تا جایی که سرعت مهم نباشه باز تاکید میکنم سرعت مهم نباشه
ببینید اینکه همه دوست دارن سرعت سیستم برنامه و یا ماژولی که ساختن بالا باشه شکی نیست اما یه جایی هست که سرعت باید باید باید بالا باشه اون هم توی صنعت هست
مثلا شما در نظر بگیرید جاهایی که باید یک قطعه به اندازه ای دما بخوره که با سایر عناصر مچ باشه و به یک میزان مشخص گرما ببینه اونجاست که قطعه ای که کار پردازنده برای اون دستگاه رو انجام میده هرچقدر سریع تر باشه زود تر محاسبات رو انجام میده و دستور قطع گرما رو میفرسته حالا هرچقدر این دستور بموقع باشه خروجی اون دستگاه به نقطه مطلوب نزدیک تر هست
اما خوب در حالت عادی سی کارمون رو راه می اندازد



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

این کتابها چه چیزی رو آموزش می دن؟

اگر بحث فقط سر برنامه نویسی هست، که با یادگیری سی، می شه برنامه میکرو نوشت.

کتابهای میکرو چه چیزی رو آموزش می دن؟

کتاب ها هردو رو توضیح میدن البته کتب های مختلفی هستن اما یه سری در مورد ساختار میکرو کنترل مورد نظر حرف میزنن یک سری در مورد برخی از قطعات و راه اندازی اون ها حرف زدن مثل LCD و... و یکسری هم پروژه ای توضیح دادن یعنی برای ساخت دزدگر گفتن این قطعات لازم هست بعد نقشه مدار طراحی شده رو گذاشتن و کد های مربوط به اون رو گذاشتن

idocsidocs
یک شنبه 31 اردیبهشت 1391, 00:48 صبح
کتاب ها هردو رو توضیح میدن البته کتب های مختلفی هستن اما یه سری در مورد ساختار میکرو کنترل مورد نظر حرف میزنن یک سری در مورد برخی از قطعات و راه اندازی اون ها حرف زدن مثل LCD و... و یکسری هم پروژه ای توضیح دادن یعنی برای ساخت دزدگر گفتن این قطعات لازم هست بعد نقشه مدار طراحی شده رو گذاشتن و کد های مربوط به اون رو گذاشتن

من با سخت افزار آَنا نیستم.

اگر این کتابها رو بخونم می تونم با سخت افزار هم آَنا بشم؟

prince0fpersia
یک شنبه 31 اردیبهشت 1391, 01:21 صبح
دوستان حالا که یه تاپیک فعالی توی این زمینه پیدا شد ، اگر صاحبش ناراحت نمیشه

میخواستم ببینم میکروپروسسور رو هم میشه با سی برنامه نویسی کرد و به همه پورت ها دسترسی داشت؟ (من دیدم واسه دسترسی به پورت میان یک تیکه از برنامه رو اسمبلی مینویسن!)

prince0fpersia
یک شنبه 31 اردیبهشت 1391, 01:22 صبح
من با سخت افزار آَنا نیستم.

اگر این کتابها رو بخونم می تونم با سخت افزار هم آَنا بشم؟

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

one hacker alone
یک شنبه 31 اردیبهشت 1391, 01:35 صبح
زمانی که من داشتم کار میکردم به شدت وجود یک دانشجوی برق یا الکترونیک احساس نیاز میشد یعنی اگه از این بچه ها کسی نباشه کارت کند میشه چون مجبوری یه بار دیگه هرچیزی که درباره جریان و ولتاژ و... شنیدی دوباره بخونی اما یه راه خیلی بهتر اینه که بری فنی حرفه ای و ثبت نام کنی برای کلاس های تعمیر تلویزیون و رادیو و این چیزا که توش مبانی الکترونیک رو درس میدن


در جواب دوست دیگرومون باید بگم بله میشه با سی نوشت شما کار کنید اگه نشد من مسئولیتش رو به عهده میگیرم

joker
یک شنبه 31 اردیبهشت 1391, 09:06 صبح
میکرو برای خودش یه زبان مخصوص داره یا فقط سخت افزاره و با هر زبانی می شه براش برنامه نوشت؟

براي ميكروكنترلرها تقريبا با تمام زبانهاي اصلي مثل اسمبلي - سي - پاسكال - بيسيك ميشه برنامه نوشت ( بهتره بگين سينتكس برنامه نويسي )
ولي مهم اون كامپايلري هست كه فايل باينتري قابل فهم براي پردازشگر ميكرو را توليد ميكنه يعني اين نيست كه چون زبان سي هست ، ميشه با بورلند سي براي ميكروكنترلر برنامه نوشت.

كاماپايلرهاي زيادي هستند كه فقط براي AVR طراحي شدند يا براي ميكروكنترلرهاي ديگه مثل PIC يا ARM هم كار ميكنن...
http://de.wikipedia.org/wiki/Atmel_AVR

soorena
یک شنبه 31 اردیبهشت 1391, 12:56 عصر
به پایه های میکرو کنترل ها پین گفته میشود پس ما توی میکرو کنترل چیزی به اسم پورت نداریم و اصلا برنامه نویسی پین نداریم چون اساس کار میکرو ها پین هست که با شماره اونها میتونی بهشون دسترسی داشته باشی
سلام

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

پین به هر نوع پایه خروجی از هر نوع آیسی گفته می‌شه و هیچ ربطی به میکرو یا یک آیسی خاص نداره. مثلا خط اول لینک دومی‌ که خودتون گذاشتین رو بخونین (حداقل قبل از لینک گذاشتن یک نگاهی‌ بهش بکن دانشمند !!)ATMEGA16 یک آیسی ۴۰ پین هستش یعنی‌ چی‌؟؟ یعنی‌ از تو این آیسی ۴۰ تا پایه بیرون آمده که شما میتونی‌ باهاش کار کنی‌ حالا ادامه همون خط رو بخون...نوشته ۸-بیت یعنی‌ چی‌؟؟؟ یعنی‌ دارای ۴ پورت ۸ بیت هستش (که هر بیت توسط یک پین قابل دسترسی‌ هستش.) به نام پورت A،B،C وD.

یک لینک هم در مورد برنامه نویسی پورت‌ها در میکرو برات میگذارم که خیالت راحت بشه.
http://electrofriends.com/articles/electronics/microcontroller-electronics-articles/8051-8951/8051-microcontroller-port-programming/
امیدوارم فرق پین و پورت رو فهمید باشین.

اگر بحث فقط سر برنامه نویسی هست، که با یادگیری سی، می شه برنامه میکرو نوشت.
نه بحث فقط سر برنامه نویسی نیستش شما باید یک حداقلی از الکترونیک و مدار بستن بدونی ضمن اینکه باید سخت افزار میکرو‌ای که باهاش کار میکنی‌ رو هم بشناسی.

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

فصل‌های بعدی معمولا به معرفی‌ دستور العمل‌ها و برنامه‌نویسی میپردازد که خوب شما بلدی. بعد معمولا استفاده از قطعات ساده مثل صفحه کلید و ال‌سی‌دی رو آموزش میدن که مدارات پایه هستن و در نهایت به آموزش تایمر و کانتر و سریال و... میپردازن و معمولان آخر کتاب هم چند تا پروژه عملی‌ نوشته.
تجربه شخصی بنده اینه که تو پروژه‌هایی‌ که در آینده انجام خواهی‌ داد به یک جاهایی‌ میرسی‌ که استفاده از مدارات آنالوگ در کنار میکرو خیلی‌ مهم می‌شه ضمن اینکه دیگه مدارهای آنالوگ نیازی به برنامه نویسی نداره و شما باید فقط الکترونیک بلد باشی‌(مشکله بزرگی‌ که اکثر بچه‌های کامپیوتر دارن.) من خودم چون برق خوندم زیاد مشکلی‌ تو این زمینه نداشتم ولی‌ توصیه می‌کنم یک کتاب ساده در زمینه الکترونیک حداقل برای یاد گیری تحلیل مدارات ساده شامل خازن سلف و مقاومت ... و صد البته کار کردن با آیسی ۵۵۵ رو حتما قبل از شروع هر میکرو یاد بگیر.(البته این نظر شخصی‌ من هستش.)
موفق باشید!!

حامد مصافی
یک شنبه 31 اردیبهشت 1391, 14:44 عصر
در مورد اینکه اسمبلی در مقابل سی سرعتش بیشتره که اصلا جای بحث نداره و این موضوع کاملا روشنه
دوست ندارم بحث رو به بیراهه بکشم. اما راستش رو بخوای اصلا روشن نیست. اگه تصمیم دارید در این مورد حرف بزنید مدرک یا دلیل ارائه کنید.

one hacker alone
یک شنبه 31 اردیبهشت 1391, 15:45 عصر
لینک زیر همین بحث مطرح شده
http://cboard.cprogramming.com/cplusplus-programming/29241-c-cplusplus-vs-assembly-speed-comparison.html

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

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

prince0fpersia
یک شنبه 31 اردیبهشت 1391, 22:45 عصر
لینک زیر همین بحث مطرح شده
http://cboard.cprogramming.com/cplusplus-programming/29241-c-cplusplus-vs-assembly-speed-comparison.html

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

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

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

امیدوارم قضیه روشن شده باشه

one hacker alone
دوشنبه 01 خرداد 1391, 00:41 صبح
من هم حرفم اینه که سرعت متفاوت هست