اطلاعیه

Collapse
No announcement yet.

uIP یک پشتهٔ TCP/IP خوب برای AVR

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

    #31
    پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

    خب الان میخوایم از این کتابخونه استفاده کنیم
    بعد از دانلود uIP-0.9_ENC28J60_v2.0.zip و خارج کردن آن از حالت فشرده 22 تا فایل خواهیم داشت که من در حدی که متوجه شدم توضیحشون میدم براتون :

    1 و 2 : app.c و app.h : این 2 تا فایل که یکی هدر و دیگری کد برنامه هست ، یه برنامه نمونه هست که برای نمونه اینجا به هر کانکشن جدید Welcome و برای هر دستور OK رو برمیگردونه

    3 و 4 : ax88796.c و ax88796.h : ما کاری به این فایل ها نداریم ولی درایور این چیپ هستند که ما استفاده نمیکنیم

    5 : compiler.h : یه سری تعریف هایی که استفاده شده توی برنامه رو اینجا به صورت ماکرو تعریف کرده

    6 و 7 : delay.c و delay.h : هم آمده برای تاخیر های استفاده شده تابع نوشته ، توی این فقط باید حواسمون به مقدار فرکانس CPU باشه که تو زمان بندی ها مشکل پیش نیاد

    8 و 9 : enc28j60.c و enc28j60.h : این 2 تا فایلی هستند که برای ارتباط میکرو با ENC28J60 نیاز داریم
    توی هدر باید پایه هایی که برای ارتباط SPI با این IC استفاده میکنید رو مشخص کنید :

    [code=c]// ENC28J60 PINS CONFIGURATION
    #define ENC28J60_CONTROL_PORT PORTB
    #define ENC28J60_CONTROL_DDR DDRB
    #define ENC28J60_CONTROL_CS 4

    #define ENC28J60_SCK_PIN 7
    #define ENC28J60_MISO_PIN 6
    #define ENC28J60_MOSI_PIN 5
    #define ENC28J60_SS_PIN 4
    //[/code]
    بقیه چیزاشو هنوز وقت نکردم در بیارم ولی چیز زیادی که نیاز به دونستن باشه برای کاربر نداره میکرو میدونه و ENC28J60

    10 : main.c که متن اصلی برنامه هست که بعدا توضیح میدم

    11 و 12 : nic.c و nic.h :
    [code=html5]/************************************************** ***************************
    * Module Name: NIC Driver Interface for uIP-AVR Port
    *
    * Created By: Louis Beaudoin (www.embedded-creations.com)
    *
    * Original Release: November 16, 2003
    *
    * Module Description:
    * Provides three functions to interface with a NIC driver
    * These functions can be called directly from the main uIP control loop
    * to send packets from uip_buf and uip_appbuf, and store incoming packets to
    * uip_buf
    *
    *
    ************************************************** ***************************/[/code]
    یه ماژوله که باید توی برنامه main صدا زده بشه و وضیفشم ارسال و دریافت اطلاعات هست
    چیزی که توی هدر این فایل مهمه
    [code=c]#define NIC_CHOICE ENC28J60[/code]
    هست که باید چیپی که استفاده میکنید رو انتخاب کنید تا توابع و تعاریف مربوط به همون IC استفاده بشه

    13 و 14 : rtl8019.c و rtl8019.h : این 2تا هم بربوط به یه IC دیگه هست که باز ما باش کاری نداریم

    15 و 16 : uip.c و uip.h :
    [code=html5]/**
    * \file
    * Header file for the uIP TCP/IP stack.
    * \author Adam Dunkels <adam@dunkels.com>
    *
    * The uIP TCP/IP stack header file contains definitions for a number
    * of C macros that are used by uIP programs as well as internal uIP
    * structures, TCP/IP header structures and function declarations.
    *
    */[/code]
    این فایل ها فایل هایی از پشته TCP/IP هستند که باید در برنامه اصلی فراخوانی شوند
    یه سری کارای مهم میکنه ولی ما بش کار نداریم و فقط ازش استفاده میکنیم

    17 و 18 : uip_arch.c و uip_arch.h :
    [code=html5]/**
    * \file
    * Declarations of architecture specific functions.
    * \author Adam Dunkels <adam@dunkels.com>
    */[/code]
    یه سری تعریف که بازم بشون کار نداریم و فقط استفاده میکنیم

    19 و 20 : uip_arp.c و uip_arp.h :
    [code=html5]/**
    * \file
    * Macros and definitions for the ARP module.
    * \author Adam Dunkels <adam@dunkels.com>
    */[/code]
    یه سری تعریف و ماکرو برای ماژول ARP هست که قسمتی از uIP هست
    Address Resolution Protocol
    http://en.wikipedia.org/wiki/Address...ution_Protocol

    21 : uipopt.h : که فایل مهمی هست و ما باش زیاد کار داریم
    [code=html5]/**
    * \file
    * Configuration options for uIP.
    * \author Adam Dunkels <adam@dunkels.com>
    *
    * This file is used for tweaking various configuration options for
    * uIP. You should make a copy of this file into one of your project's
    * directories instead of editing this example "uipopt.h" file that
    * comes with the uIP distribution.
    */[/code]
    توی این فایل تنظیمات IP ، MAC ، Netmask ، آدرس روتر و ... رو میشه تنظیم کرد

    و فایل 22 : VERSION.h : که هیچی نیست فقط یه سری اطلاعات در مورد نویسنده ها و کتابخونه ها هست ( همشون کامنت هستند )

    تا اینجا فایل های کتابخونه رو یاد گرفتیم در ادامه نحوه استفاده کردن و کامپایل برنامه رو یاد خواهیم گرفت
    درایور شبکه و nRF24L01
    کاتالوگ محصولات
    کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
    شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
    فروش اسيلوسکوپ GWinstek GOS-630FC

    دیدگاه


      #32
      پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

      خب وقتشه یکم کار عملی کنیم
      برای استفاده از این کتابخونه من از IDE شرکت Atmel استفاده میکنم
      یه پروژه جدید میسازیم من میکرو رو Atmega32 انتخاب کردم
      اول اطلاعات داخل فایل main.c رو کپی کرده و توی فایل اصلی برناممون past میکنیم
      و بقیه فایل ها رو با راست کلیک کردن بر روی پروژه و add و بعد Existing Items به پروژه اضافه میکنیم
      و تمام بزنید کامپایل تا برنامه کامپایل شه
      البته همونطور که در بالا گفتم میتونید IP مورد نظر خودتونو انتخاب کنید و بر اساس شماتیک بردتون پایه های SPI رو تنظیم کنید
      من توی این پروژه IP رو 192.168.1.10 قرار دادم و Port شماره 23 رو باز کردم کل پروژه و فایل hex رو میتونید دانلود کنید ( برای تست سخت افزار )

      http://bastamdxp.persiangig.com/imag...Wellcom.rar/dl

      من از این ماژول استفاده کردم :


      که توی 12 پین داره و یه ریگولاتور 5 به 3.3 که روی برد قرار داره و این هم شماتیم ماژول ( ولی خیلی واضح نیست )


      من از یه سخت افزار ساده استفاده کردم :


      حالا بعد از پروگرام کردن میکرو صفحه CMD رو باز میکنیم و عبارت ping 192.186.1.10 رو وارد میکنیم و enter میزنیم :


      همونطور که میبینید ping داریم پس ارتباطمون بر قراره الان میخوایم ببینیم Welcome و OK رو چطوری میتونیم بگیریم
      برای این کار نیاز به نرم افزار Hercules داریم که میتونید از لینک زیر دانلود کنید :

      http://new.hwg.cz/files/download/sw/...ules_3-2-8.exe

      این برنامه نیاز به نصب نداره و با اجرای فایل اصلی برنامه باز میشه در صفحه باز شده از تب های بالا Test Mode را انتخاب کرده
      و همانند عکس تنظیمات را وارد کنید :


      همانطور که میبینید IP و Port رو وارد کردم و بعد از زدن Connect میبینید که برای ما عبارت Welcome و دو تا OK برمیگردونه
      توی کادرهای پایین که جلوشون Send نوشته عبارتی رو تایپ کنید و بزنید Send میبینید که اون عبارت برای ماژول و میکرو ارسال میشه و میکرو OK رو برای ماژول و بعد برای ما میفرسته


      خب تا اینجا تونستیم یه برنامه ساده را روی برد تست کنیم و هم Ping بگیریم و هم به کانکشن جدید Welcome و برای هر پیام ارسالی OK را دریافت کنیم
      درایور شبکه و nRF24L01
      کاتالوگ محصولات
      کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
      شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
      فروش اسيلوسکوپ GWinstek GOS-630FC

      دیدگاه


        #33
        پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

        خب اونایی ک مثل من با کدویژن کار میکنن چطوری میتونن از این کتابخونه ها استفاده کنن آیا؟؟

        دیدگاه


          #34
          پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

          نوشته اصلی توسط reza.falahi
          خب اونایی ک مثل من با کدویژن کار میکنن چطوری میتونن از این کتابخونه ها استفاده کنن آیا؟؟
          خب فرقی نمیکنه باید بشینید یکم کتغییر ها رو تغییر بدید یا برنامه رو بخونید و بازنویسی کنید
          یا Atmel Studio نصب کنید و کار کنید

          http://eshop.eca.ir/%D8%A8%D8%B1%D8%...net-board.html

          البته میتونید برد ECA رو بخرید همراهش کدهای بیشتر کامپایلر ها از جمله کدویژن
          راهنمای استفاده از دستگاه
          شماتیک دستگاه
          برنامه های نمونه برای کامپایلر CodeVisionAVR ( در CD محصول )
          برنامه های نمونه برای کامپایلر BASCOM-AVR ( در CD محصول )
          برنامه های نمونه برای کامپایلر Atmel Studio ( در CD محصول )
          برنامه های نمونه برای کامپایلر WINAVR ( در CD محصول )
          درایور شبکه و nRF24L01
          کاتالوگ محصولات
          کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
          شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
          فروش اسيلوسکوپ GWinstek GOS-630FC

          دیدگاه


            #35
            پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

            ضمن تشکر از شما در باره پستی که در ارتباط با شبکه گذاشتید من در این مورد سوالی داشتم.
            من داشتم با کتابخانه ای که شما درباره UIP که مربوط به شبکه با ENC28J60 بود کار میکردم ولی متوجه نشدم چطوری باید داده هایی که از طرف شبکه برای ما می اید را تجزیه تحلیل کرد؟
            برای مثال ما می خواهیم یه صفحه loging بسازیم که یوزر و پسورد را از کاربر بگیرد و بعد برای تجزیه به میکرو بفرستد ما چطور میتونیم به این اطلاعات دسترسی داشته باشیم؟ :read:
            (روش کار من وب سرور است)

            اضافه شده در تاریخ :
            کسی نبود پاسخ من را بدهد :sad: :sad: :sad:

            oo: oo: oo:
            قنديل، تنديس قطره هايي است كه تسليم جاذبه زمين نشدند. "چگوآرا"

            دیدگاه


              #36
              پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

              نوشته اصلی توسط Mohsen_22
              ضمن تشکر از شما در باره پستی که در ارتباط با شبکه گذاشتید من در این مورد سوالی داشتم.
              من داشتم با کتابخانه ای که شما درباره UIP که مربوط به شبکه با ENC28J60 بود کار میکردم ولی متوجه نشدم چطوری باید داده هایی که از طرف شبکه برای ما می اید را تجزیه تحلیل کرد؟
              برای مثال ما می خواهیم یه صفحه loging بسازیم که یوزر و پسورد را از کاربر بگیرد و بعد برای تجزیه به میکرو بفرستد ما چطور میتونیم به این اطلاعات دسترسی داشته باشیم؟ :read:
              (روش کار من وب سرور است)
              سلام
              خب دقیق نخوندی توابعشو
              داخلش توابعی داره Get Variable همچین چیزی الان دقیق یادم نیست بعد شما که درخواست رو میدید Web رو برای شما میفرسته و بعد از کلیک کردن بر روی مثلا یه دکمه اطلاعات رو برای شما برمیگردونه
              و شما با صدا کردن این تابع Get Variable میتونید اطلاعات رو بخونید
              به مثال هایی که زده شده و با اوی LED رو خاموش و روشن میکنن دقت کن متوچه میشی چیکار کرده مثلا L1 رو که میفرسته میکرو میاد و LED رو روشن میکنه و ...
              درایور شبکه و nRF24L01
              کاتالوگ محصولات
              کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
              شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
              فروش اسيلوسکوپ GWinstek GOS-630FC

              دیدگاه


                #37
                پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

                pdf که آقای رستمی گذاشته بود الآن دیگه لینکش خرابه اگه میشه بزارینش دوباره !
                برای دریافت یک رشته از پورت شبکه باید چیکار کنیم ؟؟
                میخام ی رشته رو بگیرم و روی ال سی دی نشون بدم !!
                میشه از uip_new data استفاده کرد!!

                دیدگاه


                  #38
                  پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

                  یک سوال دیگر
                  چرا برای این برنامه شبکه وقتی کابل اترنت را وصل میکنیم در حالت automatically ip کارنمیکند و باید ip را تنطیم کنیم ؟
                  قنديل، تنديس قطره هايي است كه تسليم جاذبه زمين نشدند. "چگوآرا"

                  دیدگاه


                    #39
                    پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

                    نوشته اصلی توسط Mohsen_22
                    یک سوال دیگر
                    چرا برای این برنامه شبکه وقتی کابل اترنت را وصل میکنیم در حالت automatically ip کارنمیکند و باید ip را تنطیم کنیم ؟
                    برای این حالت ، این پشته باید از مود DHCP پشتیبانی کند و این مود در آن فعال باشد تا به کلاینتی (مثلاً کامپیوتر کاربر) که به آن وصل می شود بصورت اتوماتیک IP دهد

                    دیدگاه


                      #40
                      پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

                      چطوری میشه با این برنامه دریافت کرد؟؟
                      برای ارسال uip_send()a داریم اما برای دریافت باید چیکار کنیم آیا؟؟

                      دیدگاه


                        #41
                        پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

                        نوشته اصلی توسط بسطام بیرامی
                        سلام
                        خب دقیق نخوندی توابعشو
                        داخلش توابعی داره Get Variable همچین چیزی الان دقیق یادم نیست بعد شما که درخواست رو میدید Web رو برای شما میفرسته و بعد از کلیک کردن بر روی مثلا یه دکمه اطلاعات رو برای شما برمیگردونه
                        و شما با صدا کردن این تابع Get Variable میتونید اطلاعات رو بخونید
                        به مثال هایی که زده شده و با اوی LED رو خاموش و روشن میکنن دقت کن متوچه میشی چیکار کرده مثلا L1 رو که میفرسته میکرو میاد و LED رو روشن میکنه و ...
                        سلام من هرچه قدر باهاش ور رفتم نشد :eek: oo:
                        من دارم یک وب سرور طراخی میکنم ولی هرکاری میکنم نه میشود برایش دستورات http فرستاد نه دیتا دریافت کرد.
                        چطوری باید دستورات http را فرستاد من با کتابخانه ای که در کدویژن بود کارکردم ولی این خیلی فرق میکه چطوری باید مثل این مثالی که من از کدویژن براتون گذاشتم توی این حالت uip دستور ارسال و دریافت کرد؟

                        http://s4.picofile.com/file/81861121...28j60.rar.html

                        اضافه شده در تاریخ :
                        کسی نیست با این برنامه یک صفحه browser را با ip مشخص باز کرده باشه و در اون صفحه کلمه hello نوشته باشه
                        من هر کاری با app.c انجام میدم به جواب نمیرسم .
                        محض رضای خدا یکی من را راهنمایی کنه دیگه دارم دیونه میشم oo: oo: oo: oo:
                        :read: :read:
                        قنديل، تنديس قطره هايي است كه تسليم جاذبه زمين نشدند. "چگوآرا"

                        دیدگاه


                          #42
                          پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

                          نوشته اصلی توسط Mohsen_22
                          کسی نیست با این برنامه یک صفحه browser را با ip مشخص باز کرده باشه و در اون صفحه کلمه hello نوشته باشه
                          من هر کاری با app.c انجام میدم به جواب نمیرسم .
                          محض رضای خدا یکی من را راهنمایی کنه دیگه دارم دیونه میشم oo: oo: oo: oo:
                          :read: :read:
                          شما از کدهایی که بقیه واسه نوشتن یک صفحه html استفاده کردن استفاده کن و اونو توی تابع uip send بزار فک نکنم دیگه مشکلی باشه !!
                          البته شماره پورت رو هم به 80 تغییر بده چون این شماره پورت برای صفحات وب استفاده میشه !!

                          دیدگاه


                            #43
                            پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

                            نوشته اصلی توسط بسطام بیرامی
                            خب وقتشه یکم کار عملی کنیم
                            برای استفاده از این کتابخونه من از IDE شرکت Atmel استفاده میکنم
                            یه پروژه جدید میسازیم من میکرو رو Atmega32 انتخاب کردم
                            اول اطلاعات داخل فایل main.c رو کپی کرده و توی فایل اصلی برناممون past میکنیم
                            و بقیه فایل ها رو با راست کلیک کردن بر روی پروژه و add و بعد Existing Items به پروژه اضافه میکنیم
                            و تمام بزنید کامپایل تا برنامه کامپایل شه
                            البته همونطور که در بالا گفتم میتونید IP مورد نظر خودتونو انتخاب کنید و بر اساس شماتیک بردتون پایه های SPI رو تنظیم کنید
                            من توی این پروژه IP رو 192.168.1.10 قرار دادم و Port شماره 23 رو باز کردم کل پروژه و فایل hex رو میتونید دانلود کنید ( برای تست سخت افزار )

                            http://bastamdxp.persiangig.com/imag...Wellcom.rar/dl

                            من از این ماژول استفاده کردم :


                            که توی 12 پین داره و یه ریگولاتور 5 به 3.3 که روی برد قرار داره و این هم شماتیم ماژول ( ولی خیلی واضح نیست )


                            من از یه سخت افزار ساده استفاده کردم :


                            حالا بعد از پروگرام کردن میکرو صفحه CMD رو باز میکنیم و عبارت ping 192.186.1.10 رو وارد میکنیم و enter میزنیم :


                            همونطور که میبینید ping داریم پس ارتباطمون بر قراره الان میخوایم ببینیم Welcome و OK رو چطوری میتونیم بگیریم
                            برای این کار نیاز به نرم افزار Hercules داریم که میتونید از لینک زیر دانلود کنید :

                            http://new.hwg.cz/files/download/sw/...ules_3-2-8.exe

                            این برنامه نیاز به نصب نداره و با اجرای فایل اصلی برنامه باز میشه در صفحه باز شده از تب های بالا Test Mode را انتخاب کرده
                            و همانند عکس تنظیمات را وارد کنید :


                            همانطور که میبینید IP و Port رو وارد کردم و بعد از زدن Connect میبینید که برای ما عبارت Welcome و دو تا OK برمیگردونه
                            توی کادرهای پایین که جلوشون Send نوشته عبارتی رو تایپ کنید و بزنید Send میبینید که اون عبارت برای ماژول و میکرو ارسال میشه و میکرو OK رو برای ماژول و بعد برای ما میفرسته


                            خب تا اینجا تونستیم یه برنامه ساده را روی برد تست کنیم و هم Ping بگیریم و هم به کانکشن جدید Welcome و برای هر پیام ارسالی OK را دریافت کنیم


                            سلام آقای بیرامی
                            ممکنه بفرمایید برای برنامه نویسی و کمپایل کردن ، از چه نرم افزاری استفاده کردین؟

                            دیدگاه


                              #44
                              پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

                              نوشته اصلی توسط seramo


                              سلام آقای بیرامی
                              ممکنه بفرمایید برای برنامه نویسی و کمپایل کردن ، از چه نرم افزاری استفاده کردین؟
                              خط دومو میخوندید نوشتم :

                              برای استفاده از این کتابخونه من از IDE شرکت Atmel استفاده میکنم
                              یه پروژه جدید میسازیم من میکرو رو Atmega32 انتخاب کردم
                              درایور شبکه و nRF24L01
                              کاتالوگ محصولات
                              کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                              شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                              فروش اسيلوسکوپ GWinstek GOS-630FC

                              دیدگاه


                                #45
                                پاسخ : uIP یک پشتهٔ TCP/IP خوب برای AVR

                                نوشته اصلی توسط بسطام بیرامی
                                خط دومو میخوندید نوشتم :

                                برای استفاده از این کتابخونه من از IDE شرکت Atmel استفاده میکنم
                                یه پروژه جدید میسازیم من میکرو رو Atmega32 انتخاب کردم

                                آخه مهندس جان ؛ اطلاعات داخل فایل main.c رو کپی کردم و بعدش هم کتابخونه هارو هم معرفی کردم. بعد از build کردن هم این پیغامو میده:

                                Build succeeded.
                                ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

                                اما فایل hex در پوشه debug نمیسازه تا پروگرم کنم...!!
                                مشکل از چی میتونه باشه...
                                سه هفتس در گیر یه پینگ گرفتن شدم. ولی ارزششو داره...!!!
                                راستی از 6.2 atmel studio استفاده میکنم

                                دیدگاه

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