سلام
من سه تا اولتراسونیک رو بستم روی یه مگا 32 و هر سه هم دارن به درستی جواب می دن!
همشون هم یک مدل و سالم هستن!
کد هر سه هم طبق شکل زیره!
مشکل اینجاست که همیشه یکیشون توی While اول موجود در کد گیر می کنه و از while خارج نمیشه!
اول فکر کردم مشکل از خود ماژوله و پایه هاش صفر و یک نمیشه ولی وقتی جاشون رو با هم عوض می کنم باز هم این مشکل رو دارم! در حالی که بقیه در جاهای دیگه درست کار می کنن!
وقتی مدار رو خاوموش می کنم و مگا 32 رو در می آرم و دوباره جا می ندازم بعضی وقتا درست میشه!(بدون هیچ گونه تغییری در مدار- فقط درآوردن و جا انداختن دوباره ی میکرو) بعضی اوقات هم باید 3 تا 4 بار این کار رو کرد تا درست بشه!
در ضمن اتصال پایه ها به میکرو رو هم با مولتی متر تست کردم و هیچ قطعی ای نیست!
در کد زیر x یه متغییره که با سرریز تایمر یدونه اضافه میشه!
پایه ی تریگر اون مشکل داره با B5 و پایه ی اکوش به B4 متصل شده!
من سه تا اولتراسونیک رو بستم روی یه مگا 32 و هر سه هم دارن به درستی جواب می دن!
همشون هم یک مدل و سالم هستن!
کد هر سه هم طبق شکل زیره!
مشکل اینجاست که همیشه یکیشون توی While اول موجود در کد گیر می کنه و از while خارج نمیشه!
اول فکر کردم مشکل از خود ماژوله و پایه هاش صفر و یک نمیشه ولی وقتی جاشون رو با هم عوض می کنم باز هم این مشکل رو دارم! در حالی که بقیه در جاهای دیگه درست کار می کنن!
وقتی مدار رو خاوموش می کنم و مگا 32 رو در می آرم و دوباره جا می ندازم بعضی وقتا درست میشه!(بدون هیچ گونه تغییری در مدار- فقط درآوردن و جا انداختن دوباره ی میکرو) بعضی اوقات هم باید 3 تا 4 بار این کار رو کرد تا درست بشه!
در ضمن اتصال پایه ها به میکرو رو هم با مولتی متر تست کردم و هیچ قطعی ای نیست!
در کد زیر x یه متغییره که با سرریز تایمر یدونه اضافه میشه!
پایه ی تریگر اون مشکل داره با B5 و پایه ی اکوش به B4 متصل شده!
کد:
x=0; PORTB.5=1; delay_ms(20); PORTB.5=0; lcd_puts(""); while(PINB.4==0); TCNT0=0; TCCR0=0x01; while(PINB.4==1); TCCR0=0x00; T = (float)x*(256.0/1000.0) + (float)TCNT0/1000.0; d = (float)T*340.0/2.0;
دیدگاه