تعریف متغیر unsigned long در کدویژن

وهمچنین یه نویزهایی روی برنامه میفته که احساس میکنم موقه سرریز شدن تابع millis. ای اتفاق رخ میده
ممنون

این رو هم اضافه کنم که ما این کار رو در یکی از پروژه های فصل avr انجام دادیم و اونجا آموزش استفاده از float اومده اگر اشتباه نکنم. به اون قسمت هم می تونید رجوع کنید.

سلام دوست عزیز، شما دارید داخل printf با استفاده از %u این متغیر رو پرینت می کنید که این یعنی با عینک unsigned int بهش نگاه میشه. باید به صورت long اون رو پرینت کنید. برای اینکه بتونید به صورت long پرینت بگیرید حتما باید داخل تنظیمات پروژه (منوی Project) و سپس Configure و سپس C compiler از قسمت printf features گزینه ای که داخلش long داره رو انتخاب کنید.
در کد هم هنگام پرینت کردن از %l و یا %lu استفاده کنید.

با سلام .
بله درسته در مورد float تدریس شده من هم از c.compiler تنظیم printfرو برای long ست کرده بودم ولی مشکل از %d بود. %lu مشکل رو حل کرد
در مورد نویز هم یک شرط مقایسه millis موقع سرریز شدن millis ناخواسته برقرار میشد که با یک flag حل شد .
تشکر میکنم از آموزش عالیتونِ
پیگیری و پشتیبانی واقعیتون
از اطلاعات استاندارد و قدرتمند شما کیف میکنم

سلام دوست عزیز، باید از نوع داده unsigned long int استفاده کنید و نباید مشکلی داشته باشه. اگه همچنان مشکل برطرف نشده، کدتون رو برام بفرستید همینجا. اون مشکل نویز رو هم برام روی کد توضیح بدید. فقط لطفا کد خوانا باشه و سعی کنید با کامنت من رو راهنمایی کنید که قصد شما در هر خط چی بوده.

با سلام
مهندس جان من unsigned long تعریف میکنم برای متغیر _millis ولی عملا به اندازه unsigned int یعنی 65000 جا میگیره . unsigned int long هم امتحان کردم همین شد موقع کامپایل هیچ خطایی نمیده یعنی لانق رو میشناسه ولی عملاا 65000 تا جا میگیره
خیلی ممنون

با عرض سلام

[upl-file uuid=7fef8dd7-627d-490c-a280-0d2488d0222e size=2kB]1.c[/upl-file]