ولله من چند روز پیش یه چیزی گفتم توش موندم. اون کار کذایی سه چهار روز دیگه ای کار داره ولی من نه روم میشه نه دلم میاد شما رو معطل کنم. فقط موندم آخه چه پروژه ای؟؟؟ من توی آوردن ایده برای رفع مشکل و پیاده سازی یک پروژه خیلی مشکلی ندارم. اما از ابتدا به ساکن.... یه کمی تا قسمتی پرتم. کسی از دوستان پیشنهادی چیزی نداره؟ یه پروژه ساده تا پیچیده هم که باشه مهم نیست. توی ذهنم اومد شاید تابلو روان. ولی این یکی اینقده مثال براش آوردن که دیگه فکر کنم حال همه به هم بخوره. ای مسلمونا!! شماها چیزی به ذهنتون نمیرسه؟؟
من شرمنده که زحمت اضافی برای شما درست کردم
چیز زیادی لازم ینست ، فقط یه نمونه کد باشه که نشون بده مثلا از فلان اینتراپت استفاده شده و فلان دستور مثلا یه پایه از میکرو روشن و خاموش میشه
همین واسه من کافیه
پایه INT0 رو با یه مقاومت پول پ بکن و یه سوییچ هم بذار برای زمین کردن پایه. با تغییر سطح منطقی از 1 به 0 ، روتین وقفه اجرا میشه. برنامه از حلقه while خارج میشه میره به کد تابع وقفه و بعد از اون برمیگرده به ادامه برنامه (همون حلقه while بی نهایت)
البته من فکر میکنم شما تاپیک رو کامل نخوندی...!
اینارو میشه یه توضیحی بدین ؟
چین و چجوریا باید اضافه کنم ؟
در ضمن آقا محمد ، جان من هی این تاپیک رو نزن سرمون ! انگاری بهت بگن فلان چیزو پیدا کن ! تا ندونیه چیه و چه شکلیه ، 1000 بار هم از بقلش رد بشی نمی دونی چیه !
حکم من رو داره واسه تاپیک اینجا . بحث کردین از isr ! من که نمی دونم چیه ! از کنارش رد میشم
EICRA |= (1<<ISC01) | (1<<ISC00); // The rising edge of INT0 generates an interrupt request
EIMSK |= (1<<INT0); // External Interrupt Request 0 Enable
// --- main loop ---
sei();
این سایته خیلی باحاله ! http://greschenz.dyndns.org/avrwiz/
در ضمن محمد جان مشکلت چیه ؟ بگو شاید از دستمون کاری بر اومد ؟ امیدوارم هیمشه همه جا موفق و پیروز باشی
باسلام خدمت دوستان
چند پست بالاتر در رابطه کار با mmc توضیح خواستم اما یکم حاشیه رفت
گفتم دوباره نظر دوستان رو در این باره جویا بشم، البته خودم هم گشتم بهترین هم (کامل ترین) تا الان فکر کنم همون elm chan باشه که سیستم fat رو پیاده میکنه
البته خیلی سخته و الان برای پیاده سازی عملی با مشکل مواجه هستم برای شبیه سازی هم که مدار کت وکلفتی رو ایجاد کرده؟؟؟
درخواستم از دوستان اینه اگه کسی در این رابطه کار کرده نحوه درایو و همچنین کار با این کتابخونه رو بگه ، اینجوری:
1-سرهم بندی مدار چطوری؟ مثل elmchan بهتره این بهتره:
http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=65
ویا...
2-چطوری مموری رو آماده کنیم(فرمت)(خود کتابخونه راحته اما وقتی مثال رو می خونی کامل گیج می کنه)
3-برای نمایش مستقیم رو ویندوز (بدون avr) فایل باید براحتی قابل دیدن باشه(قاعدتا) اما تو مثال هاش برای win32 هم نوشته ،این دیگه چه صیغه ایه؟؟؟
مطمئنی؟! من که نفهمیدم این رجیسترها از کجا اومدن! میکرو چیه؟!
درصد اطمینان 100%
چون کدی که شما دادی کار نکرد ( یعنی پیغام خطا داد ! ) ، ولی اینی که من گذاشتم کار می کنه !
خودشم از این سایته کش رفتم
http://greschenz.dyndns.org/avrwiz
جون من شوخی نکن!!
avrwiz هم اینطوری مینویسه:
MCUCR |= (1<<ISC01) | (1<<ISC00); // The rising edge of INT0 generates an interrupt request
GICR |= (1<<INT0); // External Interrupt Request 0 Enable
چه پیغام خطایی میده؟ اصلا اون رجیستری که نوشتی تو دیتاشیت نیست و کامپایل هم نمیشه!!
MCUCR و GICR توی atmega 32 یا 8 یا 16 یا ... استفاده میشند
ولی توی atmega 64 از EICRA و EIMSK استفاده میشه
به احتمال قوی دوست عزیزمون atm8 از میکرو های atmega64 یا atmega128 دارند استفاده می کنند .
فکر کنم بهتره دوستانی که دارند روی پروژه ای کار می کنند ، نوع میکرویی که باهاش دارند کار می کنند رو بگن بهتره ، چون اینجوری وقت دوستان هم تلف نمیشه ( قابل توجه atm8 )
شرمنده بابت نبودن! کارم به خنسی خورده و اعصابم خورد.
دو تا مسئله مهم:
1-جناب atm8 موقعی که بخواییم بیت رو ست کنیم فقط کافیه بیت هایی رو که 1 هستن در رجیستر قرار بدیم. این یعنی move کردن یک عدد داخل یک متغیر. چون در همین هنگام هم بیت هایی که مقدار ندارن (یعنی صفر هستن) انتقال پیدا میکنه. اما اگر خواستیم یک بیت رو از داخل یک مقدار حذف کنیم اون مقدار رو با مکمل پترن بیتی and میکنیم. مثال:
کد مورد نیاز رو هم که جناب آقای حسینی زحمت کشیدن (رو سیاهی به ذغال موند...بیخود نیست اون آواتار رو انتخاب کردم دیگه).
2- یک نکته مهم که بعضا خیلی باهاش در این سایت برخورد داشتم اینه که از اونجایی که روال وقفه برای سرویس دهی غیر معمول و خارج از روال عادی اجرایی برنامه هست. فقط بایستی برای عملیاتی با حجم زمانی مینیمم باشه. مثلاا بعضی جاها دیدم که حتی در روال وقفه اقدام به نمایش اطلاعات روی lcd میکنن که این باعث میشه تا زمانی که این عمل داره انجام میشه میکرو در حالتی بمونه که دیگه نتونه وقفه ها رو پردازش کنه. از طرف دیگه روال وقفه برای سرویس دهی غیر همزمان و سریع به یک وسیله هست. اگر کسی قراره همچین کار حجیمی رو در روال وقفه انجام بده بهتره یا بین این روال و کد اجرایی اصلی برنامه هماهنگی برقرار کنه (مثلا با یک ساختار message queue) یا از یک rtos استفاده کنه.
ببخشید که این رو اینجا مینویسم!
من مدت زیادی با بسکام کار میکردم و البته در بسکام به این نتیجه رسیدم وقتی با رجیستر ها کار میکنم خیلی کارم باحال میشه! مثلا تایمرها و ... رو با رجیسترهاشون فعال میکنم و اصلا از دستوراتش استفاده نمیکنم.
به همین خاطر تصمیم گرفتم از زبان پیشرفته تری مثل سی استفاده کنم.
که شنیدم در winavr از c++ هم استفاده میکنند.
حالا من که زرتی از بسکام میخوام بیام در زبان سی، winavr کار کنم یا codevision ؟ :mrgreen:
چون این کامپایلری که میخوام یاد بگیرم آخرین کامپایلر هست و دیگه حوصله عوض کردن کامپایلر ندارم.
winavr کتاب آموزشی فارسی هم دارد؟ :read:
مطمئن باش اگه اومدی توی این وادی ها دیگه اومدی.... و مطمئن باش این کارها اینقده طرف خودش میکشوندت که خواه نا خواه دنبال کامپایلر های دیگه هم میری. اما اگر از میشنوی چون "بقول خودت" در C تازه کاری شاید بهتر باشه با codevision کار کنی تا یک سری مشکلات اولیه ات کمتر باشه. بعد که به C معتاد شدی اون موقع خودت کم کم به winavr یا بهتر بگیم همون gcc مهاجرت میکنی.
دیدگاه