اطلاعیه

Collapse
No announcement yet.

obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

    نوشته اصلی توسط SaeedNazary
    آقا مرسی از جوابت
    شما خودت ازش نتیجه گرفتی؟ آخه تو قسمت نظرات سایتی که معرفی کردی چیزای دیگه ای نوشته بود و همه ناراضی بودن؟!!!؟
    بله بنده جواب گرفتم ویندوزم 64 بیت سون بودش که جواب نمی داد ولی وقتی از لایبری اون سایت استفاده کردم به راحتی جواب داد.
    دکتر چمران در 1311 در تهران متولد شد
    وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
    او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.

    دیدگاه


      پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

      با سلام و درود خدمت همگی دوستان. من بعد از مدتها دوری از کار عملی الکترونیک، برای شروع مجدد دارم روی usb کار میکنم و برای قدم اول سراغ obdev v-usb رفتم و فعلا از at90usb ها صرف نظر کردم. تقریبا کار با v-usb رو متوجه شدم و میدونم که باید باهاش چیکار کرد ولی متاسفانه من امکان برنامه نویسی تووی کامپیوتر رو ندارم و حتی روی سیستم قدیمی که دارم امکان نصب visual studio وجود نداره و برای همین نمیدونم چجوری باید سخت افزار میکرویی که با کتابخانه v-usb درست میکنم رو امتحان کنم. این یعنی من نمیتونم توو مد کنترلی از v-usb استفاده کنم ولی خوب میشه توو مد وقفه ای تستش کنم. به نظر شما برای تستش چیکار کنم؟ آیا حتما باید سخت افزارمو توو کلاس HID تنظیم کنم تا خود ویندوز اونو بشناسه؟ اصلا چجوری میشه کلاس رو تعریف کرد؟ البته من هنوز سخت افزار رو نساختم.
      به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

      دیدگاه


        پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

        دوستان کاش یه خورده کمک کنید. آخه من خیلی چیزا یادم رفته و الان بعد سه سال اصلا ساده ترین چیزا رو یادم نمیاد. تا اونجایی که من متوجه شدم تعیین کلاس، کار سختی نیست و توو فایل config میشه با یه تغییر کوچیک کلاس رو تعیین کرد ولی مثل اینکه برای کلاس HID باید یک report descriptor درست کرد که باید فرمت مشخصی داشته باشه و باید در فایل main.c قرار بگیره ولی نمیدونم چجوری باید اون توصیفگر رو ساخت. همچنین فهمیدم که میشه با نرم افزار windriver علاوه بر ساخت درایور برای سخت افزار usb ، از داخل نرم افزار دستگاه رو تست کرد که همین برای من برای تست انتقال کنترلی کافیه و انتقال وقفه ای رو هم میشه اینطوری تست کرد ولی ترجیح میدم توو کلاس HID مثل یه موس تستش کنم. حالا کسی از دوستان میدونه HIDrepordescriptor رو چجوری باید ساخت؟؟؟؟؟؟؟؟
        به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

        دیدگاه


          پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

          دوست عزیز مسیر رو اشتباه نرو
          بجای این کارا یه راهی برای نصب vs.net پیدا کنی خیلی راحت تری. میتونی از mono یا SharpDevelop بجای ویژوال استودیو استفاده کنید.
          بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
          اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

          دیدگاه


            پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

            ممنون جناب مصطفی جان به خاطر پاسخت و همچنین به خاطر مطالب آموزشی که توو این تاپیک مطرح کرده بودی. انشالله تا یکی دو ماه دیگه کامپیوتر جدید میخرم و visual studio رو نصب میکنم ولی میخوام از زمان موجود برای راه اندازی سخت افزار usb با میکرو استفاده کنم و فعلا فقط تست کار کردن توو انتقال کنترلی و وقفه ای کافیه برام. توو مطالب سایت usb.org و داکیومنتهای اون، تونستم چند تا نمونه hid report descriptor پیدا کنم و همچنین نرم افزار hid descriptor tool و نرم افزار تحت وب hidedit رو پیدا کردم که یه صورت wizard کد hid تولید میکنند. انشالله هفته بعد یه مدار نمونه usb با میکرو avr میبندم و تست رو شروع میکنم. اگه به نتیجه رسیدم انشالله document میسازم و همین جا قرار میدمش. بازم ممنون
            به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

            دیدگاه


              پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

              سلام
              بلعخره با تلاش فراوان کمک های دوست خوبمان اقا بهنام توانستم یک کدی برای ارسال ولتاژ از میکرو به کامپیوتر درست کنم!
              کد:
              /*
               * USB.c
               *
               * Created: 2013/05/23
               * Author: Mostafa Nekooei
               */
              
              
              #include <avr/io.h>
              #include <util/delay.h>			// for _delay_ms()
              #include <avr/interrupt.h>		// for sei()
              #include <avr/pgmspace.h>		// required by usbdrv.h
              #include <avr/wdt.h>
              
              
              #include "usbdrv.h"				// for using USB
              #include "oddebug.h"			// for using debug macros
              #include "a2d.h"				// for ADC Converter
              
              uchar i=0;
              static uchar Voltage=0;
              
              /* ------------------------------------------------------------------------- */
              /* ----------------------------- USB interface ----------------------------- */
              /* ------------------------------------------------------------------------- */
              
              uchar usbFunctionSetup(uchar data[8]) {
              	usbMsgPtr = Voltage;
              	return 1;
              }
              
              /* ------------------------------------------------------------------------- */
              /* ----------------------------- ADC interface ----------------------------- */
              /* ------------------------------------------------------------------------- */
              
              void GetVoltage()
              {
              	a2dStartConvert();
              	Voltage=a2dConvert8bit(ADC_CH_ADC0);
              }
              
              /* ------------------------------------------------------------------------- */
              /* ------------------------------- Main Code ------------------------------- */
              /* ------------------------------------------------------------------------- */
              
              int	main(void)
              {
              	wdt_enable(WDTO_1S);	// Even if you don't use the watchdog, turn it off here. On newer devices, the status of the watchdog (on/off, period) is PRESERVED OVER RESET!
              	usbInit();	
              	usbDeviceDisconnect(); // enforce re-enumeration, do this while interrupts are disabled!
              	
              		// fake USB disconnect for > 360 ms
              		for (i=0;i < 180; i++)
              		{
              			wdt_reset();
              			_delay_ms(2);
              		}
              		
              	usbDeviceConnect();
              	sei();
              	
              	a2dInit();
              	// get A2S for channel 0
              	a2dSetPrescaler(ADC_PRESCALE_DIV64);
              	a2dSetReference(ADC_REFERENCE_AREF);
              	a2dSetChannel(ADC_CH_ADC0);	
              
              		for(;;)
              		{
              		wdt_reset();
              		GetVoltage();
              		_delay_ms(50);
              		usbPoll();
              		}
              }		
              
              /* ------------------------------------------------------------------------- */
              انشالله دوستان بتوانند بهره ببرند.
              فقط یه مشکل خیلی بزرگ دارم و اون هم اینه که بتونم این ولتاژ رو تو کامپیوتر بخونم! میشه کسی به من کمک کنه و برای من یک نمونه بسازه ؟ اخه من اصلا با برنامه نویسی کامپیوتر اشنا نیستم

              راستی اگه خواستید بگید کتابخانه ADC رو هم براتون بزارم چون کتابخونه هم تغییر دادم تا با اتمل سازگار شد!

              دیدگاه


                پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

                کسی رو کدویژن پورت کرده این برنامه رو؟
                هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

                تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                دیدگاه


                  پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واس&#1591

                  سلام دوستان

                  من بالاخره توانستم دیتای ADC را به میکرو ارسال کنم
                  قبل از شروع نوشته ها بهتره بگو ییم که من از مصطفی حیدری بخاطر اموزش و کمک هاشون و از اقای behnam در سایت c e w o r l d . i r بخاطر کمک برای استفاده از ای دی سی در اتمل استادیو تشکر کنم و بگویم خدا خیرتون بده چون واقعا اطلاعاتشون رو در اختیار دوستان قرار میدهند.

                  من سورس ارسال دیتا از میکرو به کامپیوتر را در اختیارتان میگذارم
                  کد:
                  /*
                   * USB.c
                   *
                   * Created: 2013/05/23
                   * Author: Mostafa Nekooei
                   */
                  
                  
                  #include <avr/io.h>
                  #include <util/delay.h>			// for _delay_ms()
                  #include <avr/interrupt.h>		// for sei()
                  #include <avr/pgmspace.h>		// required by usbdrv.h
                  #include <avr/wdt.h>
                  
                  
                  #include "usbdrv.h"				// for using USB
                  #include "a2d.h"				// for ADC Converter
                  
                  uchar i;
                  unsigned char Voltage[1];
                  unsigned char VoltageBuffer[1];
                  
                  
                  /* ------------------------------------------------------------------------- */
                  /* ----------------------------- ADC interface ----------------------------- */
                  /* ------------------------------------------------------------------------- */
                  
                  void GetVoltage()
                  {
                  	a2dInit();
                  	// get ADC for channel 0
                  	a2dSetReference(ADC_REFERENCE_AVCC);
                  	a2dSetPrescaler(ADC_PRESCALE_DIV64);
                  	Voltage[0] = a2dConvert8bit(ADC_CH_ADC3);
                  	a2dSetChannel(ADC_CH_ADC3);
                  	a2dStartConvert();
                  	if(a2dIsComplete() == 0){
                  		Voltage[0] = a2dConvert8bit(ADC_CH_ADC3);
                  	}
                  }
                  
                  /* ------------------------------------------------------------------------- */
                  /* ----------------------------- USB interface ----------------------------- */
                  /* ------------------------------------------------------------------------- */
                  uchar usbFunctionSetup(uchar data[8]) {
                  	
                  	 if (data[1] == 0x70){	//this is my request
                  		GetVoltage();
                  		VoltageBuffer[0] = Voltage[0];
                  		usbMsgPtr = VoltageBuffer;
                  		return 1;	//total bytes stored in usbMsgPtr array
                  	}
                  	
                  	return 0;
                  }
                  
                  /* ------------------------------------------------------------------------- */
                  /* ------------------------------- Main Code ------------------------------- */
                  /* ------------------------------------------------------------------------- */
                  
                  int	main(void)
                  {
                  	wdt_enable(WDTO_1S);	// Even if you don't use the watchdog, turn it off here. On newer devices, the status of the watchdog (on/off, period) is PRESERVED OVER RESET!
                  	usbInit();	
                  	usbDeviceDisconnect(); // enforce re-enumeration, do this while interrupts are disabled!
                  	
                  		// fake USB disconnect for > 255 ms
                  		for (i=0;i < 255; i++)
                  		{
                  			wdt_reset();
                  			_delay_ms(1);
                  		}
                  		
                  	usbDeviceConnect();
                  	sei();
                  
                  		for(;;)	// main event loop
                  		{
                  		wdt_reset();
                  		usbPoll();
                  		}
                  }
                  در فایل usbconfig.h مقدار vid و pid به صورت زیر باشد

                  کد:
                  #define USB_CFG_VENDOR_ID    0xc0, 0x16 /* = 0x16c0 = 5824 = voti.nl */
                  #define USB_CFG_DEVICE_ID    0xdc, 0x05 /* = 0x05dc = 1500 */
                  و سرس گرفتن اطلاعات از کامپیوتر را نیز در اختیار شما میگذارم
                  این برنامه با ربان C# نوشته شده است
                  کد:
                  openDevice(0x16c0, 0x05dc);
                  if (UDev != null)
                  {
                  byte[] Recive = new byte[1];  //size of data phase transfer is 1
                  UDev.IOControlMessage(
                  0xc0,    //requestType
                  0x70,    //requestNumber
                  0x00,    //wValue : Send states
                  0x00,    //wIndex : not used in this one
                  Recive,   //data phase array : returns Keys states
                   0);    //timeout : optional value
                  
                  C = System.Convert.ToDouble(Recive[0]);
                  C = ( C * 5 ) / 255;
                  C = Math.Round(C, 5);
                  VoltageTextBox.Text = System.Convert.ToString(C);
                  }
                  این برنامه بسیار مهم میباشد و خیلی کاربردی می باشد.
                  و این برنامه مخصوص دریافت اطلاعت ADC
                  http://up.vbiran.ir/uploads/137087736638978_0Prog%20ADC.rar

                  دیدگاه


                    پاسخ : پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

                    نوشته اصلی توسط SANBOR
                    سلام دوستان
                    خواهش مندم که دوستان کمک کنید . این پروژه مهمی هست که هر کس معمولا انجام میدهد. اگر کمک کنید خیلی ممنون میشم
                    من میخواهم ولتاژ بین 0 تا 5 ولت دی سی را اندازه گیری کنم و سپس توسط C# در کامپیوتر ببینم!
                    من برنامه ها رو نوشته ام و کامل هم هست. ولی نمیدانم چرا هر کاری میکنم اعدادت مسخره ای به من نمایش میدهد!
                    لطفا خواهش میکنم کمک کنید
                    من سورس برنامه را اینجا میگذارم و خواهش مندم کمک کنید الان 2 هفته است که دارم شب و روز روش کار میکنم ولی دیگه نمیتونم و خیلی خسته شدم!
                    اخه من نه C# بلد بودم و نه Atmel Studio و با دانش کم به اینجا رسیدم.
                    خواهش مندم کمک کنید
                    سلام دوست عزیز
                    برنامه که واقعا دست خط خوبی داره و میشه گفت طبق اصول نوشته شده.
                    موضوع اینه که این اعداد مسخره مثلا چی هستن؟

                    برای پیگیری موضوع ابتدا باید ببینید مشکل تو کدوم بخشه:
                    1. ADC میکرو درست کانفیگ نشده
                    2. عدد خوانده شده درست ارسال نمیشه
                    3. برنامه PC عدد رو اشتباه آنالیز میکنه یا اینکه یه باگ داره.
                    4....
                    در قدم اول برنامه میکرو رو این شکلی کن , ایشالا حل میشه

                    کد:
                    usbMsgPtr = VoltageBuffer;
                    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                    دیدگاه


                      پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

                      سلام دوستان
                      مشکل این dll اینه که در حال دریافت اطلاعات اگر usb کشیده شود یک مرتبه برنامه crash میشود!
                      دوستان تا به حال به این مشکل بر خوردند ؟

                      دیدگاه


                        پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

                        نوشته اصلی توسط SANBOR
                        سلام دوستان
                        مشکل این dll اینه که در حال دریافت اطلاعات اگر usb کشیده شود یک مرتبه برنامه crash میشود!
                        دوستان تا به حال به این مشکل بر خوردند ؟
                        این مشکل به حساب نمیاد.
                        تمام سخت افزارها اینطورن، اینکه موقع کار دستگاه رو بکشید یه جوری طبیعیه هر اتفاقی بیافته. کاربر هم شعور درک این موضوع رو داره شما نگرانش نباشید.
                        بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                        اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                        دیدگاه


                          پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

                          با سلام
                          من متوجه هستم که این مشکل پیش میاد و دیتا قطع میشه من منظورم اینه که نمیشه کاری کرد که برنامه که حداقل برنامه کرش نشه و با وصل کردن یو اس بی دوباره ادامه بده

                          دیدگاه


                            پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واس&#1591

                            خشبختانه مشکل کرش شدن هم حل شد
                            شما برای دریافت اطلاعات به صورت زیر عمل کنید
                            کد:
                                    if (MyUsbDevice != null)
                                    {
                                      int transferred;
                                      byte[] Recive = new byte[1];  //size of data phase transfer is 1
                                      UsbSetupPacket Setup = new UsbSetupPacket(
                                      0xc0,   //requestType
                                      0x70,   //request
                                      0x0000,  //Value
                                      0x0000,  //Index
                                      1     //length
                                      );
                            
                                      MyUsbDevice.ControlTransfer(ref Setup, Recive, 1, out transferred); }
                            و اخرین ورژن کتابخانه را از اینجا دانلود فرمایید
                            https://sourceforge.net/projects/libusbdotnet/files/LibUsbDotNet/

                            و برنامه اصلاح شده رو از بالا بگیرید

                            دیدگاه


                              پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واسط

                              سلام
                              از دوستان محترم کسی بلده این بلوتوث هایی که به کامپیوتر وصل میشه رو به میکرو وصل کنه و راه اندازی کنه و با کامپیوتر ارتباط برقرار کنه آیا؟
                              مردم شهري که همه در آن مي لنگند/ به کسي که راه راست ميرود مي خندند

                              دیدگاه


                                پاسخ : obdev USB ** آموزش اتصال avr به پورت usb بدون آی سی واس&#1591

                                سلام، ببخشید من همه مراحل رو انجام دادم، ولی وقتی میکرو رو به پورت usb می کنم می گه usb device not recognized و وقتی با برنامه inf-wizard چک می کنم vid و pid رو 0x0000 میزنه!
                                حالا باید چیکار کنم؟
                                لطفا کمک کنید
                                حل شد

                                دیدگاه

                                لطفا صبر کنید...
                                X