اطلاعیه

Collapse
No announcement yet.

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

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

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

    در این پست خلاصه ای از مباحث این تاپیک قرار داده شده.
    اینجا کلیک کنید

    سلام
    من میخوام نحوه استفاده از این درایور رو اینجا آموزش بدم. البته خودم کامل تسلط ندارم و با مشورت بقیه بچه ها نقاط مبهمش رفع میشه. حالا آماده اید؟




    فصل اول : OBDEV USB چیست؟




    این پدیده یک درایور نرم افزاری منطبق با winavr می باشد که خیلی خوب میباشد. شما تنها با اشغال کردن 2 یا 3 پایه از AVR میتوانید با پورت USB کامپیوتر ارتباط برقرار کنید. این نرم افزار حد اکثر 2kB از فضای فلش را اشغال میکند و اینتراپت خارجی INT0 را نیز اشغال میکند.( یعنی یه روتین اینتراپت داخل این درایور هستش) وقتی از این درایور استفاده می کنید باید فلگ عمومی وقفه I دائما فعال باشد و یه تابع به نام usbPoll(); باید مرتبا ( حداقل هر 50ms یک بار فراخوانی شود)

    این برای جلسه اول بسه.
    http://www.obdev.com/products/avrusb/prjall.html
    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

    #2
    پاسخ : obdev USB

    نوشته اصلی توسط mostafahk
    سلام
    من میخوام نحوه استفاده از این درایور رو اینجا آموزش بدم. البته خودم کامل تسلط ندارم و با مشورت بقیه بچه ها نقاط مبهمش رفع میشه. حالا آماده اید؟


    فصل اول OBDEV USB چیست؟

    این پدیده یک درایور نرم افزاری منطبق با winavr می باشد که خیلی خوب میباشد. شما تنها با اشغال کردن 2 یا 3 پایه از AVR میتوانید با پورت USB کامپیوتر ارتباط برقرار کنید. این نرم افزار حد اکثر 2kB از فضای فلش را اشغال میکند و اینتراپت خارجی INT0 را نیز اشغال میکند.( یعنی یه روتین اینتراپت داخل این درایور هستش) وقتی از این درایور استفاده می کنید باید فلگ عمومی وقفه I دائما فعال باشد و یه تابع به نام usbPoll(); باید مرتبا ( حداقل هر 50ms یک بار فراخوانی شود)

    این برای جلسه اول بسه.
    http://www.obdev.com/products/avrusb/prjall.html
    با سلام
    [s]کریستال هم باید حتما 12MHz باشد و نمیآ‌توان از فرکانسآ‌های دیگری استفاده کرد.[/s]
    البته اکنون دیگر این نوشته خیلی درست نیست. نسخهآ‌های جدید از فرکانسآ‌های دیگر نیز پیشتیبانی میآ‌کنند. بهتر است برای اطلاعات بیشتر به سایت این برنامه مراجعه کنید.
    من دوست دارم آزاد فکر کنم، نرمآ‌افزارآ‌ و سختآ‌افزارهای آزاد را به کار ببرم و اگر توانستم نرمآ‌افزار، سختآ‌افزار و محتوای آزاد درست کنم!

    دیدگاه


      #3
      پاسخ : obdev USB



      فصل دوم : ساختار کلی یک دستگاه usb



      فصل دوم : ساختار یک دستگاه USB .
      البته من تسلط کافی ندارم، اگه جاییش اشکال داشت بگید درست میکنم.
      هر دستگاه USB دارای چندین Endpoint است. هر Endpoint در حقیقت یک بافر است که با پروتکل خاصی با کامپیوتر ارتباط برقرار می کند. هر دستگاه حد اقل باید یک اندپوینت کنترلی با ID صفر داشته باشد و در تعداد آنها هم محدودیتی نیست( فکر کنم).

      مشخصات یک اندپوینت :

      1. ID : هر Endpoint را با شماره اش می شناسند. عددی که از صفر تا ... ادامه دارد.

      2. جهت : هر اندپوینت می تواند ReadOnly , WriteOnly , ReadWrite باشد. جهت این اصطلاحات از دید میزبان تعیین می شود، به گونه ای که :
      الف ) Read : PC <---- Device
      ب ) Wriet : PC ----> Device
      مثلا طراح دستگاه ممکن است بخواهد از یک Endpoint فقط برای ارسال اطلاعات به کامپیوتر (Read) استفاده کند و از Endpoint دیگر فقط برای دریافت اطلاعات(ٌWrite).

      3. نوع انتقال : هر Endpoint می تواند یکی از این چهار نوع انتقال را داشته باشد :
      الف ) کنترلی : هر دستگاهی باید Endpoint کنترلی شماره صفر را داشته باشد. این نوع اندپوینت صرفا برای ایجاد هماهنگی میان دستگاه و کامپیوتر طراحی شده، ولی برای دستگاههای ساده که حجم انتقال داده ها کم است نیز جوابگوی نیاز است. ارتباط کنترلی کمی پیچیده تر از سایر ارتباط ها است و در ادامه روی آن بحث می کنیم.( از آنجا که هدف آشنایی با OBDEV USB است و این درایور این نوع انتقال را با سرعت بالاتری انجام می دهد بیشتر روی این تمرکز می کنیم)

      ب ) وقفه ای (Interrupt) : این نوع ارتباط برای دستگاه هایی استفاده می شود که ریتم منظمی برای ارسال و در یافت اطلاعات ندارند. این نوع ارتباط فقط و فقط برای ارسال داده بکار می رود. میزبان هرگاه بخواهد میتواند یک بسته را به Endpoint وقفه ای بفرستد و دستگاه نیز هر گاه بخواهد می تواند یک بسته را از Endpoint وقفه ای ارسال کند. توجه داشته باشید که در ارسال دستگاه به میزبان ، میزبان هر وقت بخواهد اطلاعات اندپوینت را می خواند و دستگاه بیچاره باید برای ارسال بسته بعدی اطلاعات منتظر بماند دستگاه بسته بعدی را بخواند.

      ج ) توده ای ( کیلویی ، Bulk ) : همانند وقفه ای است ، ولی برای حجم بالا طراحی شده . در درایور OBDEV تفاوتی میان این دو قائل نشده اند.

      د ) همزمان() : اطلاعات کاملی ندارم. ولی OBDEV این نوع انتقال را پشتیبانی نمی کند. بیشتر برای مودم ها و اسپیکرها و مانیتورها کاربرد دارد. در این انتقال میزبان حداقل فاصله بین دو بار خواندن یا نوشتن را تضمین می کند.
      منبع :
      http://www.beyondlogic.org/usbnutshell/usb4.htm
      بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
      اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

      دیدگاه


        #4
        پاسخ : obdev USB

        سلام ..............

        جناب حیدری ممنون . ممکنه در مورد ترنزاکشن ها یه مقدار توضیح بدید که چه مواردی رو در بر میگیرن و نحوه ی پشتیبانیشون در پروتکل usb به چه ترتیبه . موفق باشید .
        دوستان! مدتی کمتر به سایت میام ..

        دیدگاه


          #5
          پاسخ : obdev USB

          نوشته اصلی توسط حسام الدین
          سلام ..............

          جناب حیدری ممنون . ممکنه در مورد ترنزاکشن ها یه مقدار توضیح بدید که چه مواردی رو در بر میگیرن و نحوه ی پشتیبانیشون در پروتکل usb به چه ترتیبه . موفق باشید .
          البته این موضوع از جزعیات کار به شمار میاد و دونستنش تاثیر چندانی در استفاده از OBDEV نداره.

          طبق کتاب اکسلسون :
          هر انتقال از چند ترنزکشن تشکیل شده و هر ترنزکشن شامل بسته های داده است.همه ترنزکشن ها مبدا یا مقصدشان Endpoint می باشد. هر ترنزکشن شامل شماره Endpoint و یک کد است که نوی ترنزکشن را معیین می کند.

          نوع ترنزکش | فرستنده داده | انواع انتقالی که این نوع را پشتیبانی می کنند | محتویات |
          ورودی دستگاه همه داده عمومی
          خروجی میزبان همه داده عمومی
          setup میزبان فقط در انتقال کنترلی درخواست های تعریف شده
          بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
          اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

          دیدگاه


            #6
            پاسخ : obdev USB



            فصل دوم : ساختار یک دستگاه usb
            انتقال های کنترلی، ساختار درخواست ها و پاسخ ها و descriptor ها
            قسمت سوم



            یک دستگاه usb حتما باید دارای 2 کد باشد :
            الف ) VENDOR_ID (کد تولید کننده) این شماره 16 بیتی توسط شرکت یا انجمن طراحان پروتکل usb به شرکت ها تخصیص پیدا می کند و برای دریافت این کد باید مبلغ چند هزار دلار پول پرداخت کرد.
            ب ) DEVICE_ID (کد محصول) این شماره 16 بیتی توسط شرکت تولید کننده انتخاب می شود و به هیچ کس ربطی ندارد.

            این دو کد و چند مشخصه دیگر دستگاه همگی در قسمت مفسرها (descriptors) توضیح داده می شوند. از آنجا که اینجا ایران است و صدای ما را از تهران می شنوید ، در انتخاب این کدها دستتان آزاد است. هر چه می خواهید انتخاب کنید.( obdev usb) یک فایل usbconfig.h دارد که شما در آن فایل این دو کد را انتخاب می کنید :


            /* -------------------------- Device Description --------------------------- */

            #define USB_CFG_VENDOR_ID 0xAA, 0xBB
            /* USB vendor ID for the device, low byte first. If you have registered your
            * own Vendor ID, define it here. Otherwise you use one of obdev's free shared
            * VID/PID pairs. Be sure to read USBID-License.txt for rules!
            */
            #define USB_CFG_DEVICE_ID 0x00, 0x20 /* 1000 dec, "free for lab use" */
            /* This is the ID of the product, low byte first. It is interpreted in the
            * scope of the vendor ID. If you have registered your own VID with usb.org
            * or if you have licensed a PID from somebody else, define it here. Otherwise
            * you use obdev's free shared VID/PID pair. Be sure to read the rules in
            * USBID-License.txt!





            مفسر ها (descriptors) : مفسرها آرایه های n بایتی هستند که در یک قالب مشخص قرار می گیرند، به گونه که اطلاعاتی همانند نام دستگاه و device_id و vendor_id و طرزکار دستگاه و ... را در خود دارند. البته تمام اینها در قالب های تعریف شده این قرار می گیرد و زیاد هم پیچیده نیست. اما هر دستگاه باید حداقل دارای چند مفسر باشد :
            الف ) device descriptor : مفسر دستگاه :

            همان طور که در شکل می بینید تمام مفسرهای دیگر در دل این مفسر قرار دارند. یعنی وقتی کامپیوتر این مفسر را می گیرد یک آرایه مثلا 700 بایتی است که مفسرهای مختلف زیر مجموعه همه در آن قرار دارند. از آنجا که 2 بایت اول هر مفسر اندازه این مفسر و نوع آن را نشان می دهد مشکلی در آنالیز این آرایه توسط کامپیوتر پیش نمی آید.

            برای اینکه این موضوع را کامل متوجه شوید و ساختار بایتی هر مفسر را ببینید، بهتر است این لینک را بخوانید :
            http://www.beyondlogic.org/usbnutshell/usb5.htm



            هر دستگاه فقط می تواند یک مفسر دستگاه داشته باشد. یک مفسر دستگاه حاوی اطلاعاتی هم چون vendor_id و device_id و تعداد پیکربندی های(configurations) مجاز دستگاه است.
            منظور از پیکربندی در واقع این است که این دستگاه usb چند نحوه عمل می کند. یعنی ممکن است یک پرینتر بتواند با قابلیت ها محدودی که برای یک پرینتر در استاندارد های ویندوز تعبیه شده کار کند. اما همین پرینتر می تواند با برنامه ای که روی cd اش قرار دارد قابلیت های بیشتری را ارائه دهد. هر دستگاه در آن واحد فقط می تواند با یک پیکر بندی با کامپیوتر مرتبط شود. که کامپیوتر است که به دستگاه دستور می دهد در کدام پیکربندی قرار گیرد. البته ممکن است یک دستگاه با چند پیکر بندی کاملا بی ربط باشد. مثلا یک پیکربندی که دستگاه در آن رم ریدر است و پیکربندی دیگر که دستگاه در آن پروگرامر avr است.

            دستگاه در هر پیکربندی می تواند شامل چندین رابط باشد. مانند دسته های بازی دو تایی که همه دیده ایم و محدودیتی ندارد شما می توانید دسته بازی 20 نفری بسازید و به کسی ربطی نداره ، فقط باید سختار بسته بندی اطلاعات مربوط به دسته بازی رو خوب بلد باشید.

            پس نتیجه این شد که یه دستگاه usb میتونه چند تا پیکربندی داشته باشه و در آن واحد فقط یکیش فعاله، هر پیکر بندی می تونه چند تا interface مثل موس و کیبورد و پروگرامر و ... رو داشته باشه. یه مثال دیگه که یادم اومد: دیروز تو علائدین یه فیش تبدیل usb بو موس و کیبورد همزمان دیدم.




            حالا انتقالهای کنترلی :
            ...
            باشه بعدا الان باید برم دست بخونم. اگه مطالبی که گفتم کم کاستی داشت اساتید اصلاح کنند.
            بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
            اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

            دیدگاه


              #7
              پاسخ : obdev USB

              سلام
              اگه بشه یک یا چند مثال قدم به قدم مثل cdc و یا hid key بزنید.
              باتشکر.

              دیدگاه


                #8
                پاسخ : obdev USB

                خدا قوت
                اول تشکر برای شروع این فعالیت
                دوم : اگر امکان دارد برنامه های نوشته شده که در سایت www.obdev.com قرار دارد را تحلیل کنید. من قبلا چند برنامه اش را دانلود کردم ولی چیز زیادی متوجه نشدم در ضمن خیلی هم علاقه دارم و همچنین چند پروژه در ذهنم هست که به ارتباط usb نیاز دارد.
                اگر کسی بتواند کمکی بکند خدا خیرش بدهد و اگر کسی کمک نمی کند باز هم خدا خیرش بدهد.
                موفق باشید
                خردمند به کار خويش تکيه ميکند و نادان به آرزوي خويش . « حضرت علي (ع) »
                اگر هميشه همان کاري را که انجام داده ايد تکرار کنيد ، چيزي بيش از آنچه تا کنون به دست آورده ايد، به دست نخواهيد آورد
                مارک تواين مي گويد: بهتر است دهان خود را ببنديد و ابله به نظر برسيد تا اينکه آن را باز کنيد و همه ترديدها را از ميان ببريد !!!

                دیدگاه


                  #9
                  پاسخ : obdev USB

                  نوشته اصلی توسط Ali_Asadzadeh
                  سلام
                  اگه بشه یک یا چند مثال قدم به قدم مثل cdc و یا hid key بزنید.
                  باتشکر.
                  قدم به قدم

                  نوشته اصلی توسط nimasaboor
                  خدا قوت
                  اول تشکر برای شروع این فعالیت
                  دوم : اگر امکان دارد برنامه های نوشته شده که در سایت www.obdev.com قرار دارد را تحلیل کنید. من قبلا چند برنامه اش را دانلود کردم ولی چیز زیادی متوجه نشدم در ضمن خیلی هم علاقه دارم و همچنین چند پروژه در ذهنم هست که به ارتباط usb نیاز دارد.
                  اگر کسی بتواند کمکی بکند خدا خیرش بدهد و اگر کسی کمک نمی کند باز هم خدا خیرش بدهد.
                  موفق باشید
                  تو این هفته به اونجا هم می رسیم.
                  بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                  اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                  دیدگاه


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

                    جالبه
                    ولی تا مثال عملی نباشه مفهومی نمیفهمیم میشه یه برنامه هم بزارین؟
                    ترجیحا بیسیــــــــــــــــــــــــــــــــــــــــــــــ ــــــک
                    علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                    دیدگاه


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

                      نوشته اصلی توسط omega_adiban
                      جالبه
                      ولی تا مثال عملی نباشه مفهومی نمیفهمیم میشه یه برنامه هم بزارین؟
                      ترجیحا بیسیــــــــــــــــــــــــــــــــــــــــــــــ ــــــک
                      پست ها رو با دقت بخونید متوجه میشید. اینقدر نگید مثال عملی، اول یه مقدماتی لازمه که بگم. نوبت به عمل هم میرسه
                      1. این درایور برای winavr نوشته شده ، اما شنیدم بسکام هم مشابه اون رو گذاشته توی آخرین ورژنش
                      2. توی خود سایت obdev زیاد مثال هستش.
                      بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                      اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                      دیدگاه


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



                        فصل دوم : ساختار یک دستگاه usb
                        انتقال های کنترلی، ساختار درخواست ها و پاسخ ها و descriptor ها
                        قسمت سوم



                        همانطور که گفتم این نوع انتقال برای شناسایی و پیکربندی دستگاه توسط میزبان(کامپیوتر) طراحی شده. ولی در پروتکل آن امکان ارسال و دریافت داده های عمومی هم پیش بینی شده. مثلا همین پروگرامر uabasp از همین انتقال استفاده کرده. چون حجم داده ها کمه ( تو پورت usb سرعت 2000bps به حساب نمیاد).

                        این نوع انتقال چند مرحله داره که تقریبا همش از دید ما پنهانه و obdev usb همه کارها رو خودش انجام میده.

                        یک انتقال کنترلی چه میزبان قصد نوشتن (ارسال) داشته باشه و چه خوندن (دریافت) سه مر حله داره :

                        الف ) مرحله setup
                        گفتیم که این نوع انتقال برای شناسایی و هماهنگی بین دستگاه و کامپیوتر طراحی شده، در این مرحله میزبان درخواستی رو که عموما برای شناسایی دستگاه هستش رو می فرسته. درخواست در قالب یک بسته 8 بایتی ارسال میشه که از قانون خاصی تبعییت می کنه.


                        جدول بالا به شما میگه که این 8 بایت چه جورین.
                        bmRequestType (بایت شماره 0) هر بیتش یه معنی داره و به طور کلی می گه که درخواست مربوط به چی چی هست و مرحله دوم انتقال کنترلی که مرحله تبادل داده هاست در چه جهتی هستش( کامپیوتر به دستگاه یا دستگاه به کامپیوتر).

                        bRequest (بایت 1) شماره در خواست رو تعیین می کنه که اون هم یه قواعدی داره که فعلا ما باهاش کاری نداریم.

                        wValue و wIndex (بایت های 2 و 3 و 4 و 5 ) برای تفهیم کامل خواسته استفاده میشن و زیاد هم برای ما مهم نیستند.

                        wLength (بایت 6 و 7 ) بیانگر این است که در مرحله دوم انتقال کنترلی که مرحله تبادل داده است چند بایت قرار است تبادل شود.





                        ب) مرحله تبادل داده
                        جهت تبادل داده و حجم آن در مرحله قبل تعیین شده(بیت 7 از bmRequestType برای جهت و wLength برای حجم آن) و در این مرحله داده ها در جهت و حجم تعیین شده مبادله می شوند. همین.




                        ج) مرحله وضعیت که یه سری احوال پرسی راجع به مرحله قبل انجام میشه. در obdev اتوماتیک هستش. البته یه سری جزئیات داره که فعلا بی خیال.



                        مشق شب : از روی این مدار یک بار بسازید.
                        فکر کنم به امید خدا کم کم باید وارد عمل بشیم.
                        پس درایور رو دانبود کنید :
                        http://www.obdev.com/downloads/avrus...b-20081022.zip

                        اما قبلش این پروگرامر رو بسازید. البته obdev میتونه چندین حالت سیم کشی داشته باشه. اما چون من پروگرامر usbasp رو موش آزمایشگاهی کردم و با تغییر برنامه اش با obdev کار می کنم و مثال های من هم مبتنی بر این سیم کشی هستش. پس همین مدار رو بسازید. و تست بگیرید. یعنی وقتی به کامپیوتر وصل کردید باید اون گوشه بنویسه USBASP و ... چیزای دیگه و بعدش پنجره Found new hardware بیاد و ... در غیر این صورت شما مشکل سخت افزاری دارید و باید حل کنیدش. من روی این برد های سوراخ دار ساختمش.



                        فایل هگز و نقشه ها و ...
                        http://www.fischl.de/usbasp/usbasp.2007-10-23.tar.gz

                        مرجع مدار :
                        http://www.fischl.de/usbasp/
                        بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                        اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                        دیدگاه


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

                          اقا حق با استـــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــــــــــــــــاد بزرگه

                          منو ببخشید
                          من قبلا این پروگرامر رو ساختم
                          سخت افزار درس بود
                          چون ویندوز میشناختش ولی وقتی میخاستم ای سی رو پروگرام کنم نمیشد..بازم میسازم با این تفاوت که استاد بزرگ نمیزاره کم بیارم :applause: :applause:
                          علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                          دیدگاه


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

                            نوشته اصلی توسط omega_adiban
                            اقا حق با استـــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــــــــــــــــاد بزرگه

                            منو ببخشید
                            من قبلا این پروگرامر رو ساختم
                            سخت افزار درس بود
                            چون ویندوز میشناختش ولی وقتی میخاستم ای سی رو پروگرام کنم نمیشد..بازم میسازم با این تفاوت که استاد بزرگ نمیزاره کم بیارم :applause: :applause:
                            خواهش می کنم
                            این پروگرامر خوب کار می کرد. من فقط برای اینکه از OBdev سر در بیارم داغونش کردم. البته بیشتر نرم افزارش رو که با یه پروگرام کردن درست میشه. ولی خوب شما حساب کنید یه مدار دست ساز رو بخواید روزی 30-40 دفعه پروگرام کنید و هر بار یه این کابل ISP رو قطع و وصل کنید چه بلایی سرش میاد.

                            بنابر این یه طوری بسازید که راحت پروگرام بشه. ترجیحا چند تا میکرو سوئیچ هم به پایه هاش بزنید شاید لازم شد. احتمالا اولین پروژه دماسنج با LM35 یا ولتمتره.
                            بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                            اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                            دیدگاه


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

                              ممنون از وقتی که میذارین
                              وکمک هاتون
                              علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                              دیدگاه

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