سلام. 4 بایت داده یه متغیر float رو به ترتیب از کم ارزشترین بایتش با AVR فرستادم برای کامپیوتر از طریق usart. تو کامپیوتر هم این داده ها رو گرفتم و شیفتشون دادم تا 4 بایت کامل بشه و با مکافات (روش من درآوردی) تبدیل کردم به متغیر float . از اساتید میخواستم روش صحیح انجام این کار رو نشون بدن . روشهایی که خودم بدست آوردم :
1- استفاده از اشاره گر *float وقتی 4 بایت رو چیدم پشت سر هم (که بنظر میرسه کامپایلر بطور پیش فرض متغیر موقتی حاصل رو بصورت longi int در نظر میگیره) و استفاده از اون مثل
float fvar;
float* fptr;
fptr=(float*)&(ch[3]<<24 | ch[2]<<16 | ch[2]<< 8 | ch[0 ]);
fvar=*f;
2- استفاده از ساختار union که یه long int و یه دونه هم float توش باشه و کار کردن با اونا
1- استفاده از اشاره گر *float وقتی 4 بایت رو چیدم پشت سر هم (که بنظر میرسه کامپایلر بطور پیش فرض متغیر موقتی حاصل رو بصورت longi int در نظر میگیره) و استفاده از اون مثل
float fvar;
float* fptr;
fptr=(float*)&(ch[3]<<24 | ch[2]<<16 | ch[2]<< 8 | ch[0 ]);
fvar=*f;
2- استفاده از ساختار union که یه long int و یه دونه هم float توش باشه و کار کردن با اونا
دیدگاه