سلام چرا نمیشه تو AVR GCC به عنوان آرگمان برای توابع از متغییر استفاده کرد؟؟؟؟
اطلاعیه
Collapse
No announcement yet.
استفاده از متغییر برای توابع تاخیر در Atmel Studio
Collapse
X
-
پاسخ : استفاده از متغییر برای توابع تاخیر در
مشکلی وجود نداره مشکلتون چیزه دیگه ای باید باشه
کد:#include <avr/io.h> #include <util/delay.h> uint8_t func_test(uint8_t arg ); uint8_t a=0; int main(void) { while(1) { _delay_ms(a); _delay_loop_2(a); a=func_test(a); //TODO:: Please write your application code } return 0; } uint8_t func_test(uint8_t arg ){ arg++; return arg; }
از جمله ی رفتگان این راه دراز
باز آمده ای کو که به ما گوید راز
هان بر سر این دو راهه از روی نیاز
چیزی نگذاری که نمی آیی باز
-
پاسخ : استفاده از متغییر برای توابع تاخیر در Atmel Studio
باور کنید نمیشه
شاید به خاطر ورژن جدید اتمل هستش الآن پاکش میکنم همون ورژن 6 خالیش رو نصب میکنم این جدیده توابع مربوط به adc کتابخونه avrlib رو هم درست اجرا نمیکنه و باید توشون تغییراتی رو بدیم تا کار کنن الآن که پاکش کنم و نسخه قبلی رو نصب کنم معلوم میشه
اینم عکس از ارورش (برنامه خودتونه):
نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....
دیدگاه
-
پاسخ : استفاده از متغییر برای توابع تاخیر در Atmel Studio
نوشته اصلی توسط مجتبی جباریدرست نشد
اگه نمیشه کاریش کرد بگید تا برم سراغ یه راه دیگه برای ایجاد تاخیر یا از یه کتابخونه اکسترنال استفاده کنم
کد:#ifndef F_CPU #define F_CPU 1000000 #endif
در ضمن اگه یه مثال ساده از این مورد که میگین متغییر جهت آرگومان نمی تونید استفاده کنید (البته اگه خود پروژه تون رو بذارین بهتره!) باشه بهتر میشه راهنمایی کرد. ولی حدس اینه که متغییر گیر ویژگی otimize نرم افزار افتاده و در برنامه اصلی وجود نداره
دیدگاه
-
پاسخ : استفاده از متغییر برای توابع تاخیر در
آقا مجتبی حق با شماست _delay_ms
در حالت OPTIMIZE ارور میده !
از delay_loop استفاده کنید.
یا اگر قصد دارید کدهای قدیمتون رو دولوپ کنید از این راه هم میتونید استفاده کنید :
کد:void delay_ms( int ms ) { for (int i = 0; i < ms; i++) { _delay_ms(1); } }
از جمله ی رفتگان این راه دراز
باز آمده ای کو که به ما گوید راز
هان بر سر این دو راهه از روی نیاز
چیزی نگذاری که نمی آیی باز
دیدگاه
-
پاسخ : استفاده از متغییر برای توابع تاخیر در
علت این امر هم این است آرگومان این تابع فلوت است و اگر شما متغیر را به این فانکشن بفرستید
تمام محاسبات را (که فلوت هم است و نتیجتا حجم سنگینی را هم تولید میکند) را بر عهده میکرو گزاشته اید.
ولی اگر عدد را بفرستید خود کامپایر محاسبات ریاضی را انجام داده و خروجی را که عدد ثابت میباشد را در کد قرار میدهد.
از جمله ی رفتگان این راه دراز
باز آمده ای کو که به ما گوید راز
هان بر سر این دو راهه از روی نیاز
چیزی نگذاری که نمی آیی باز
دیدگاه
دیدگاه