پاسخ : اینتراپت خارجی به صورت نرم افزاری
سعید جان خوشحالم که بحث رو بدون اینکه باعث ناراحتی هم بشیم به جایی رسوندیم، همونطور که گفتم بیشتر اختلاف نظر بر میگرده به برداشتمون از کلامات وقفه و وقفه نرم افزاری و .. به هر حال من به چیزی که میخواستم از ادامه این بحث برسم رسیدم ( اینکه وقفه نرم افزاری که میگید یعنی چه و چه فرقی با وقفه اصلی داره ) شما هم با توجه به برداشتی که از معنی وقفه کردید فرمایشاتون صحیح هست اما به یاد داشته باشید که اون وقفه نرم افزاری نمیتونه جای وقفه سخت افزاری رو بگیره و توی چند مورد با هم تفاوت دارند و نمیشه همیشه به جای وقفه سخت افزاری از وقفه نرم افزاری استفاده کرد و جواب هم گرفت.
-------
در مورد سوال دوم اگرچه زیاد علاقه ندارم بحث کنم چون این بحث ها تکراری هست اما مجبورم چندتا نکته رو بنویسم:
اول اینکه توجه کنید که من نمیگم Bascom یا CodeVision و امثال اون به درد نمیخورند، اتفاقا برای خیلی موارد بسیار عالی هست و خودم هم خیلی از کارهام رو با Codevision انجام دادم، وقت کمتری نیاز داره، خطاهاش کمتر هست و راحت تر میشه رفعشون کرد، کمتر برنامه نویس گیج میشه و ... اما در صورتی کار کردن با اینها خوب هست که اسمبلی رو درست بلد باشید و این خودش نیاز به این داره که زمان نسبتا زیادی رو صرف یادگیری اسمبلی کرده باشید، به هر حال هر کاری ارزشی داره، قرار نیست همه چیز راحت به دست بیاد، وقتی بحث کارهای خاص میشه دیگه کار به این راحتی ها نیست که با این کامپایلرها بشه انجام داد.
خدارو شکر بحث سرعت برنامه رو قبول دارید من دیگه در موردش حرف نمیزنم، اگر بخوام ایرادهای زبان برنامه نویسی بیسیک برای کارهای سخت افزاری با میکروکنترلر رو کامل بگم خیلی باید بنویسم به همین خاطر به طور خلاصه بعضی ایرادها رو میگم در حدی که جواب سوالاتون هم داده باشم:
ببینید قیمت فقط یک بحث هست که البته شما تفاوت قیمت رو توی 500 تومان و هزار تومان نبینید، تفاوت قیمت خودش رو توی تولید انبوه نشون میده، البته باز هم میگم که فعلا با قیمت کاری ندارم، مهمتر از اون محدودیت های کاری هستند، شما نمیتونید هر موقع دلتون خواست مثلا tiny2313 رو بردارید به جاش مگا8 یا مگا32 بگذارید، هرچیز برای کار خاصی طراحی شده، اگر بحث فقط سر قیمت و حافظه و اینجور چیزا بود حالا باید تولید همه میکروهای سری tiny و 90S رو متوقف میکردند میگفتند خوب برید مگا 128 بخرید، هم حافظه بیشتر داره هم ماژول های بیشتری داره و خیلی مزایا دیگه، حالا یکم گران تر هم هست ولی ارزش خرج کردن داره، در حالی که اینطور نیست، اون میکروها باید تولید بشند چون کاربردشون چیز دیگری هست و شما موقع کار با اونها محدودیت هاتون توی Bascom بیشتر میشه، به خصوص توی Tiny ها.تازه بعضی از ادوات جانبی که توی میکروهای کوچکتر هست توی بزرگترها و High end ها نیست، یادم هست که توی یکی از Tiny ها یک ماژول بود که توی هیچکدوم از MEGA ها من ندیدم، منظورم این هست که مشکل حافظه رو نمیشه همیشه با تغویض قطعه عوض کرد، شما باید کار رو توی چارچوب خاصی انجام بدید و برای اینکه بتونید این کار رو بکنید باید بتونید از حداکثر قابلیتهای هر میکرو استفاده کنید که استفاده از حداکثر توانایی ها با Bascom هیچ وقت به دست نمیاد، با توجه به محدودیت های کاری میشه تعداد بیشماری پروژه مثال زد که با بیسیک نشه انجام داد ( اما با اسمبلی بشه ).
امکان نداره که شما بتونید برنامه ای با C یا بیسیک بنویسید که نشه با اسمبلی نوشت، ممکن هست متخصص و برنامه نویسی نباشه که بتونه با اسمبلی بنویستش اما میشه نوشت، یا به فول خودتون وقت و زمان بیشتری لازم داره، البته قبلا که این کامپایلرها برای میکروکنترلر نبود برنامه نویسان اسمبلی توی کشورمون هم خیلی خوب بودند ولی پیدایش AVR و این کامپایلرها باعث شد که بیشتر افرادی که با اسمبلی کار میکردند جذب اینها بشند و برنامه نویسان اسمبلی حرفه ای کمتر بشند وگرنه من یادم هست با 8051 و Z80 یا سری 16 میکروهای PIC به زبان اسمبلی پروژه های خیلی بزرگ انجام میدادند که نسبت به پروژه هایی که حالا با AVR انجام میشه به مراتب به صرفه تر بود و زمان آنچنانی هم نمیگرفت.
همونطور که خودتون متوجه هستید دلیل اینکه شما برنامه هاتون رو توی بیسیک یا سی سریع و کوتاه مینویسید این هست که قبلا کسی برنامه بلندش رو نوشته و کرده دستور و تابع و در اختیار شما قرار داده، توی اسمبلی هم میشه همین کار رو کرد، میشه ماکرو درست کرد و روتین درست کرد، خود من بسیاری از برنامه های اسمبلیم رو70% فقط کپی و پیست میکنم، تازه من کارم برنامه نویسی و ساختن پروژه نیست وگرنه کسی که اینکاره هست برای خودش کلی روتین و ماکرو آماده داره که تقریبا به راحتی یک برنامه نویس C میتونه اسمبلی بنویسه. این برنامه LCD که میگید رو با حدود 50 تا کد میشه نوشت ( نه 50 خط برنامه ) که شامل همه تنظیمات پشته و تنظیمات پورتها و پیکربندی LCD و ... هم هست. برنامه ضرب هم اونقدرا که فکر میکنید بلند نمیشه و زمان نمیبره، ولی خوب نسبت به بیسیک چرا خیلی بیشتر میشه، اما به نظر من که ارزشش رو داره، مثلا برنامه LCD رو که خودتون مثال زدید فکر نکنم از لحاظ زمانی بیشتر از 10 دقیقه فرقش باشه.
یکی از اون برنامه ها که فکر میکنید توی ایران کسی نمیتونه با اسمبلی بنویسه رو لطفا مثال بزنید، فقط میخوام پیش خودم حساب کنم ببینم واقعا چقدر دردسر داره.
مجددا یادآوری میکنم، من نمیگم کامپایلرها خوب نیستند، میگم برای بعضی موارد خوب نیستند و از اون بدتر اینکه بدون دانستن کامل اسمبلی و معماری میکروکنترلر خوب نیست با اونها شروع کرد و پیش رفت.
سعید جان خوشحالم که بحث رو بدون اینکه باعث ناراحتی هم بشیم به جایی رسوندیم، همونطور که گفتم بیشتر اختلاف نظر بر میگرده به برداشتمون از کلامات وقفه و وقفه نرم افزاری و .. به هر حال من به چیزی که میخواستم از ادامه این بحث برسم رسیدم ( اینکه وقفه نرم افزاری که میگید یعنی چه و چه فرقی با وقفه اصلی داره ) شما هم با توجه به برداشتی که از معنی وقفه کردید فرمایشاتون صحیح هست اما به یاد داشته باشید که اون وقفه نرم افزاری نمیتونه جای وقفه سخت افزاری رو بگیره و توی چند مورد با هم تفاوت دارند و نمیشه همیشه به جای وقفه سخت افزاری از وقفه نرم افزاری استفاده کرد و جواب هم گرفت.
-------
در مورد سوال دوم اگرچه زیاد علاقه ندارم بحث کنم چون این بحث ها تکراری هست اما مجبورم چندتا نکته رو بنویسم:
اول اینکه توجه کنید که من نمیگم Bascom یا CodeVision و امثال اون به درد نمیخورند، اتفاقا برای خیلی موارد بسیار عالی هست و خودم هم خیلی از کارهام رو با Codevision انجام دادم، وقت کمتری نیاز داره، خطاهاش کمتر هست و راحت تر میشه رفعشون کرد، کمتر برنامه نویس گیج میشه و ... اما در صورتی کار کردن با اینها خوب هست که اسمبلی رو درست بلد باشید و این خودش نیاز به این داره که زمان نسبتا زیادی رو صرف یادگیری اسمبلی کرده باشید، به هر حال هر کاری ارزشی داره، قرار نیست همه چیز راحت به دست بیاد، وقتی بحث کارهای خاص میشه دیگه کار به این راحتی ها نیست که با این کامپایلرها بشه انجام داد.
خدارو شکر بحث سرعت برنامه رو قبول دارید من دیگه در موردش حرف نمیزنم، اگر بخوام ایرادهای زبان برنامه نویسی بیسیک برای کارهای سخت افزاری با میکروکنترلر رو کامل بگم خیلی باید بنویسم به همین خاطر به طور خلاصه بعضی ایرادها رو میگم در حدی که جواب سوالاتون هم داده باشم:
ببینید قیمت فقط یک بحث هست که البته شما تفاوت قیمت رو توی 500 تومان و هزار تومان نبینید، تفاوت قیمت خودش رو توی تولید انبوه نشون میده، البته باز هم میگم که فعلا با قیمت کاری ندارم، مهمتر از اون محدودیت های کاری هستند، شما نمیتونید هر موقع دلتون خواست مثلا tiny2313 رو بردارید به جاش مگا8 یا مگا32 بگذارید، هرچیز برای کار خاصی طراحی شده، اگر بحث فقط سر قیمت و حافظه و اینجور چیزا بود حالا باید تولید همه میکروهای سری tiny و 90S رو متوقف میکردند میگفتند خوب برید مگا 128 بخرید، هم حافظه بیشتر داره هم ماژول های بیشتری داره و خیلی مزایا دیگه، حالا یکم گران تر هم هست ولی ارزش خرج کردن داره، در حالی که اینطور نیست، اون میکروها باید تولید بشند چون کاربردشون چیز دیگری هست و شما موقع کار با اونها محدودیت هاتون توی Bascom بیشتر میشه، به خصوص توی Tiny ها.تازه بعضی از ادوات جانبی که توی میکروهای کوچکتر هست توی بزرگترها و High end ها نیست، یادم هست که توی یکی از Tiny ها یک ماژول بود که توی هیچکدوم از MEGA ها من ندیدم، منظورم این هست که مشکل حافظه رو نمیشه همیشه با تغویض قطعه عوض کرد، شما باید کار رو توی چارچوب خاصی انجام بدید و برای اینکه بتونید این کار رو بکنید باید بتونید از حداکثر قابلیتهای هر میکرو استفاده کنید که استفاده از حداکثر توانایی ها با Bascom هیچ وقت به دست نمیاد، با توجه به محدودیت های کاری میشه تعداد بیشماری پروژه مثال زد که با بیسیک نشه انجام داد ( اما با اسمبلی بشه ).
امکان نداره که شما بتونید برنامه ای با C یا بیسیک بنویسید که نشه با اسمبلی نوشت، ممکن هست متخصص و برنامه نویسی نباشه که بتونه با اسمبلی بنویستش اما میشه نوشت، یا به فول خودتون وقت و زمان بیشتری لازم داره، البته قبلا که این کامپایلرها برای میکروکنترلر نبود برنامه نویسان اسمبلی توی کشورمون هم خیلی خوب بودند ولی پیدایش AVR و این کامپایلرها باعث شد که بیشتر افرادی که با اسمبلی کار میکردند جذب اینها بشند و برنامه نویسان اسمبلی حرفه ای کمتر بشند وگرنه من یادم هست با 8051 و Z80 یا سری 16 میکروهای PIC به زبان اسمبلی پروژه های خیلی بزرگ انجام میدادند که نسبت به پروژه هایی که حالا با AVR انجام میشه به مراتب به صرفه تر بود و زمان آنچنانی هم نمیگرفت.
همونطور که خودتون متوجه هستید دلیل اینکه شما برنامه هاتون رو توی بیسیک یا سی سریع و کوتاه مینویسید این هست که قبلا کسی برنامه بلندش رو نوشته و کرده دستور و تابع و در اختیار شما قرار داده، توی اسمبلی هم میشه همین کار رو کرد، میشه ماکرو درست کرد و روتین درست کرد، خود من بسیاری از برنامه های اسمبلیم رو70% فقط کپی و پیست میکنم، تازه من کارم برنامه نویسی و ساختن پروژه نیست وگرنه کسی که اینکاره هست برای خودش کلی روتین و ماکرو آماده داره که تقریبا به راحتی یک برنامه نویس C میتونه اسمبلی بنویسه. این برنامه LCD که میگید رو با حدود 50 تا کد میشه نوشت ( نه 50 خط برنامه ) که شامل همه تنظیمات پشته و تنظیمات پورتها و پیکربندی LCD و ... هم هست. برنامه ضرب هم اونقدرا که فکر میکنید بلند نمیشه و زمان نمیبره، ولی خوب نسبت به بیسیک چرا خیلی بیشتر میشه، اما به نظر من که ارزشش رو داره، مثلا برنامه LCD رو که خودتون مثال زدید فکر نکنم از لحاظ زمانی بیشتر از 10 دقیقه فرقش باشه.
یکی از اون برنامه ها که فکر میکنید توی ایران کسی نمیتونه با اسمبلی بنویسه رو لطفا مثال بزنید، فقط میخوام پیش خودم حساب کنم ببینم واقعا چقدر دردسر داره.
مجددا یادآوری میکنم، من نمیگم کامپایلرها خوب نیستند، میگم برای بعضی موارد خوب نیستند و از اون بدتر اینکه بدون دانستن کامل اسمبلی و معماری میکروکنترلر خوب نیست با اونها شروع کرد و پیش رفت.
دیدگاه