سلام دوستان کسی میتونه منو تو ارتباط دهی میکرو با نرم افزار labview راهنمایی کنه؟
مداری برای اتصالش هست؟ اگه کامل توضیح بدید ممنون میشم.
سلام دوستان کسی میتونه منو تو ارتباط دهی میکرو با نرم افزار labview راهنمایی کنه؟
مداری برای اتصالش هست؟ اگه کامل توضیح بدید ممنون میشم.
سلام مهندس
در مورد اين موضوع مفصلا بحث شده.
اگه تو انجمنو سرچ ميكردين ميتونستين اين تاپيك رو پيدا كنيد:
labview و avr - ایـــــــــران میـــــــکرو ™
_____________________________________
_____________________________________
سلام
دوست عزیز من انجمن ها رو سر زدم اما چیز زیادی دستگیرم نشد.
من فقط بتونم تنظیمات میکرو رو درست کنم labview رو استادمون گفت من برات درستش می کنم. سوالم اینه که برای اتصال میکرو به labview احتیاج به مداری هست؟ اگه کسی میدونه لطفا کامل راهنمایی کنه. ممنون
اگه میکروتون AVR هست و یا در این رده برای ارتباط به کامپیوتر مجبوری از ارتباط سریال استفاده کنی و چون باید از پورت کام استفاده کنی و اونهم ولتاژ از نوع Cmos هست نمی شه و باید از یه ای سی max232 استفاده کنی نقشه مداری شو پیدا میکنم میزارم واسه تون خیلی اسونه
بله احتیاج به مدار هست ولی مدار خیلی ساده...
راحت ترینش استفاده از max232 هست...
دمبال شماتیک max232 بگرد..یام دیتاشیت..همه جا هست..همونو ببند و وصل کن به میکرو..
دوست عزیز خدمت شما
سلام
ممنون از راهنمایی های مفیدتون.
برای ارتباط سریال میکرو با برنامه labview در قسمت USART برنامه code wizard AVR میکرو را در حالت فرستنده و دریافت کننده قرار دهم و وقفه ی قسمت دریافت کننده را فعال کرده و ظرفیت بافر گیرنده را چه مقداری قرار دهم.نرخ ارسال برابر 9600 باشد؟communication parameters را در چه فرمتهایی قرار دهم همان فرمت پیش فرض: 8data,1 stop, no parity ؟قسمت mode را نیز بر روی چه حالت هایی قرار دهم بهتر است؟از شما دوستای گران قدر و عزیز خواهشمندم در صورت امکان راهنمایی های ارزشمندتان را بفرمایید.
ویرایش توسط mohamad_musav : 22-08-2012 در ساعت 14:21
ممهونم از شما دوستان عزیز
خیلی راهنماییتون برام مفید بود. تشکر
سلام
من تونستم طریقه ارتباط سریال میکرو رو بدونم و فقط مونده که چطور مقدار فرکانس ها رو به پایه TXD انتقال بدم و همینطور دستوره labview رو به RXD بفرستم.
کجا و چیو باید من printf کنم نمی دونم؟ برای گیرندگی میکرو در روتین اینتراپت CodeVision باید چیکار کنم که فقط زمانی که داده از Labview آمد دیتای موجود در UDR را بخوانه؟
برای ارسال مقدار فرکانس ها از تابع ( )printf و برای دریافت دستور یا داده از labview از تابع ( )getchar استفاده کنم؟
ویرایش توسط mohamad_musav : 24-08-2012 در ساعت 00:23
یه خورده گیج شدین فکر کنم
ببیند برای ازسال مثلا یه کاراکتر از دستور putxchar() استفاده میکنی و حالا توی روتین وقفه زمانی فعال میشه که دیتایی به پایه RXD بیاد و مقدارش در بافر UDR قرار میگیره حالا میتونی مقدار UDR را بخونی و یا توی سرویس وقفه از دستور getchar برای دریافت یک کاراکتر استفاده کنی زیاد سخت نیست شما نمونه برنامه ای داری روش کار میکنی را قرار بده اگه بتونم حتما کمکتون میکنم
دستور های دیگه و با کابرد های دیگه هم هست
مثل
gets
sprint
scanf
و غیره بهتره یه مطالعه از روی کتابی بکنی
درود دوست عزیز شما دستور زیر را این طوری قرار بده
این دستور هر 1 ثانیه مقادیر 3 فرکانس را با هم ارسال میکنه مثلا باید اینطوری دریافت کنیکد:. . . . if ((final_pulse1==final_pulse2) && (final_pulse1==final_pulse3)) { PORTC.0=0; } else { PORTC.0=1; } printf("f1:%d,f2:%d,f3:%d",pulse1,pulse2,pulse3); delay_ms(1000); } . . .
f1:12,f2:20,f:30
سلام
اینطوری هم میشه؟ بنویسم؟
[PHP]
while (1)
{
#asm("cli")
pulse1=0;
pulse2=0;
pulse3=0;
#asm("sei")
delay_ms(100);
final_pulse1=pulse1;
final_pulse2=pulse2;
final_pulse3=pulse3;
if ((final_pulse1==final_pulse2) && (final_pulse1==final_pulse3))
{
PORTC.0=0;
printf ( "final_pulse1" );
printf ( "final_pulse2" );
printf ( "final_pulse3" );
}
else
{
PORTC.0=1;
printf ( "final_pulse1" );
printf ( "final_pulse2" );
printf ( "final_pulse3" );
}
}
[/PHP]
نه اینجووری فقطط نوشته ارسال میشه اینطوری بنویس
کد:while (1) { #asm("cli") pulse1=0; pulse2=0; pulse3=0; #asm("sei") delay_ms(100); final_pulse1=pulse1; final_pulse2=pulse2; final_pulse3=pulse3; if ((final_pulse1==final_pulse2) && (final_pulse1==final_pulse3)) { PORTC.0=0; printf ( "final_pulse1:%d",final_pulse1 ); printf ( "final_pulse2:%d",final_pulse2 ); printf ( "final_pulse3:%d",final_pulse3 ); } else { PORTC.0=1; printf ( "final_pulse1:%d" ,final_pulse1); printf ( "final_pulse2:%d" ,final_pulse2); printf ( "final_pulse3:%d",final_pulse3 ); } }
البته یادم رفت بگم برای ارسال هر عدد یه مدت delay هم قرار بده مثل مقدار اول را که ارسال کرد مقدار دوم را مثلا 100 میلی ثانیه بعدش بفرسته و همین طور ......
اگه delay بزارم تو نمایش لب ویو مشکلی پیش نمیاد؟
اونجا میخواد همه رو باهم نمایش بده
اینطوری؟
[PHP]
if ((final_pulse1==final_pulse2) && (final_pulse1==final_pulse3))
{
PORTC.0=0;
printf ( "final_pulse1:%d" ,final_pulse1);
delay_ms(100);
printf ( "final_pulse2:%d" ,final_pulse2);
delay_ms(100);
printf ( "final_pulse3:%d",final_pulse3 );
delay_ms(100);
}
else
{
PORTC.0=1;
printf ( "final_pulse1:%d" ,final_pulse1);
delay_ms(100);
printf ( "final_pulse2:%d" ,final_pulse2);
delay_ms(100);
printf ( "final_pulse3:%d",final_pulse3 );
delay_ms(100);
}
}
[/PHP]
نه برای این گفتم که دادها به هم نریزه برای سرعت بالا
در کل این زمان را باید کم یا زیاد کنی تا بهترین حالتت به دست بیاد
تو این یکی مدت delay کم بشه که طوری نیست؟
هر 100میای ثانیه مقادیرو بفرسته.
[PHP]
if ((final_pulse1==final_pulse2) && (final_pulse1==final_pulse3))
{
PORTC.0=0;
printf("f1:%d,f2:%d,f3:%d",pulse1,pulse2,pulse3);
delay_ms(100);
}
else
{
PORTC.0=1;
printf("f1:%d,f2:%d,f3:%d",pulse1,pulse2,pulse3);
delay_ms(100);
[/PHP]
ممنونم از راهنمایی بسیار خوبت
من برای پیدا کردن زمان مناسب باید با لب ویو تست کنم؟