اطلاعیه

Collapse
No announcement yet.

مشکل در راه اندازی ماژول em18

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

    مشکل در راه اندازی ماژول em18

    سلام . من چند روز پیش از فروشگاه eca ماژول em18 رو خریدم. الان پایه 1 رو به 5 ولت و پایه 3 رو به گراند داده ام.پایه 6 رو هم دادم به 5 ولت. ولی خروجی پایه 2همیشه روی 2.3 ولته. برای تست یه led به پایه 3 وصل کردم ولی جواب نمیده. کسی میتونه بگه مشکل از کجاست؟

    #2
    پاسخ : مشکل در راه اندازی ماژول em18

    این تاپیک چه ربطی به AVR داره؟ :-?
    بگذریم ...
    نوشته اصلی توسط hamedtahamtan
    پایه 1 رو به 5 ولت
    درسته :agree:
    نوشته اصلی توسط hamedtahamtan
    پایه 3 رو به گراند داده ام
    غلطه ؛ پایه 2 GND هست :NO:
    نوشته اصلی توسط hamedtahamtan
    پایه 6 رو هم دادم به 5 ولت
    با این کار درگاه سریالش فعال میشه :agree:
    نوشته اصلی توسط hamedtahamtan
    خروجی پایه 2همیشه روی 2.3 ولته.
    خوب اشتباه وصلش کردی :mrgreen: باید از پایه 3 خروجی بگیری



    موفق باشید
    امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

    دیدگاه


      #3
      پاسخ : مشکل در راه اندازی ماژول em18

      اولا که ممنون . تو دیتاشیتش برعکس نوشته بوددیا اون دیتاشیتی که دسته منه برای این مدل نیست احتمالا.
      اما چند تا مشکل دیگه ای که اینجا بهشون بر خوردم رو اینجا بگم اگه کسی میدونه چرا راهنماییم کنه.
      اولین مشکلم اینه: من این مدار بالا رو بستم و فقط ال ای دی رو مستقیم دادم به پایه 3. برای تغذیه هم از یه شارژر موبایل 5.5 ولت استتفاده کردم. زمانی که ماژول به تنهایی روی برده خوب کار میکنه و تا 10 سانتی متری جواب میده اما وقتی که میکروکنترلر رو به مدار اضافه میکنم دیگه بیشتر از 2 سانتی جواب نمیده.
      مشکل دومم هم اینه که . این برنامه ای هست که من ازش استفاده میکنم.
      کد:
      [code]
      
      $regfile = "m16def.dat"
      $crystal = 8000000
      $baud = 9600
      
      Config Lcd = 16 * 2
      Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , _
                  Rs = Portb.5 , E = Portb.4
      
      Dim E As Byte , P As Byte
      Dim C(12)as String * 1
      Dim Code As String * 10
      
      Cursor Off
      
      
      Do
        Cls : Lcd "<<insert Card>>"
      
      
      
        Step1:
         Incr E
         C(e) = Waitkey()
      
         If E < 12 Then Goto Step1
      
      
      
        For E = 1 To 12
        Incr P
         Mid(code , P , 1) = C(e)
      
        Next
      
      
        E = 0 : P = 0
        Cls : Lcd Code
       Wait 4
      
      Loop
      [/code]
      وقتی که من کارت رو میگیرم بالاش این کد رو نشون میده030090a92b00 اگه صبر کنم تا زمانی که ویت 4 ثانیه تموم شه و کارت رو دوباره بکشم همین رو نشون میده اما اگه در زمان همون wait دوباره بکشم عدد دفعه بعدی اینطوری تغییر می کنه 030030090a92 و بعد از اون هر بار که کارت بکشی این عدد رو نشون میدهb00030090a92

      و مورد سوم هم اینکه این دو عدد اول که میگن تو همه کارتا یکیه باید دقیقا چند باشه؟ یه جا نوشته بود 2f اما برای من 03 هست
      چهارم هم اینکه 2 تا پایه برای آنتن داره. من هیچ جا ندیدم براش آنتن بگذارن. اما ااگه من بخوام برای امنیت بیشتر خود دستگاه رو جدا بگذارم و فقط آنتنش رو بیارم بیرون امکان پذیر هست؟
      در مورد رشته هایی که میگیره هم آیا امکانش هست که اونها رو به عدد تبدیل کرد؟

      دیدگاه


        #4
        پاسخ : مشکل در راه اندازی ماژول em18

        برو تو هلپ بسکام و دستور
        config serial in
        رو سرچ کن
        با این دستور هر زمان که وقفه سخت افزاری روی پورت سریال اتفاق بیوفته برنامه ی مورد نظرت رو انجام میده
        اونجا میتونی با انجام یه سری تاخیر ها عملا 4 ثانیه رو رد کنی و مشکلت حل بشه
        در ضمن تا با بسکام حرفه ای نشدی هرگز از دستوراتی مانند:
        کد:
        Enable Urxc
        On Urxc S1
        استفاده نکن.

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

        دیدگاه


          #5
          پاسخ : مشکل در راه اندازی ماژول em18

          خیلی ممنون از راهنماییتون اما با استفاده از این دستوری که شما گفتید راه نیافتادم(نفهمیدم چیکارش کنم.
          اگه میشه دوستان به سوال هایی که گذاشتم جواب بدن.

          نوشته اصلی توسط hamedtahamtan
          اولا که ممنون . تو دیتاشیتش برعکس نوشته بوددیا اون دیتاشیتی که دسته منه برای این مدل نیست احتمالا.
          اما چند تا مشکل دیگه ای که اینجا بهشون بر خوردم رو اینجا بگم اگه کسی میدونه چرا راهنماییم کنه.
          اولین مشکلم اینه: من این مدار بالا رو بستم و فقط ال ای دی رو مستقیم دادم به پایه 3. برای تغذیه هم از یه شارژر موبایل 5.5 ولت استتفاده کردم. زمانی که ماژول به تنهایی روی برده خوب کار میکنه و تا 10 سانتی متری جواب میده اما وقتی که میکروکنترلر رو به مدار اضافه میکنم دیگه بیشتر از 2 سانتی جواب نمیده.
          مشکل دومم هم اینه که . این برنامه ای هست که من ازش استفاده میکنم.
          کد:
          [code]
          
          $regfile = "m16def.dat"
          $crystal = 8000000
          $baud = 9600
          
          Config Lcd = 16 * 2
          Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , _
                      Rs = Portb.5 , E = Portb.4
          
          Dim E As Byte , P As Byte
          Dim C(12)as String * 1
          Dim Code As String * 10
          
          Cursor Off
          
          
          Do
            Cls : Lcd "<<insert Card>>"
          
          
          
            Step1:
             Incr E
             C(e) = Waitkey()
          
             If E < 12 Then Goto Step1
          
          
          
            For E = 1 To 12
            Incr P
             Mid(code , P , 1) = C(e)
          
            Next
          
          
            E = 0 : P = 0
            Cls : Lcd Code
           Wait 4
          
          Loop
          [/code]
          وقتی که من کارت رو میگیرم بالاش این کد رو نشون میده030090a92b00 اگه صبر کنم تا زمانی که ویت 4 ثانیه تموم شه و کارت رو دوباره بکشم همین رو نشون میده اما اگه در زمان همون wait دوباره بکشم عدد دفعه بعدی اینطوری تغییر می کنه 030030090a92 و بعد از اون هر بار که کارت بکشی این عدد رو نشون میدهb00030090a92

          و مورد سوم هم اینکه این دو عدد اول که میگن تو همه کارتا یکیه باید دقیقا چند باشه؟ یه جا نوشته بود 2f اما برای من 03 هست
          چهارم هم اینکه 2 تا پایه برای آنتن داره. من هیچ جا ندیدم براش آنتن بگذارن. اما ااگه من بخوام برای امنیت بیشتر خود دستگاه رو جدا بگذارم و فقط آنتنش رو بیارم بیرون امکان پذیر هست؟
          در مورد رشته هایی که میگیره هم آیا امکانش هست که اونها رو به عدد تبدیل کرد؟


          خوب در مورد مشکل قاطی کردن دیتا ها من خواستم از طریق وقفه استفاده کنم. از URXC استفاده کردم به این ترتیب
          کد:
          $regfile = "m16def.dat"
          $crystal = 8000000
          '$baud = 9600
          'Config Serialout = Buffered , Size = 20
          Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
          
          
          
          Config Lcd = 16 * 2
          Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , _
                      Rs = Portb.5 , E = Portb.4
          Dim E As Byte , P As Byte
          Dim C(12)as String * 1
          Dim Code As String * 10
          Dim X As Byte
          Cursor Off
          Enable Interrupts
          Enable Urxc
          On Urxc Getserial
          
          E = 0
          Do
          Loop
          
          
          
          Getserial:
          Cls
          For E = 1 To 12
          
          C(e) = Waitkey()
          Lcd C(e)
          Next E
          
          
           Return
           End
          اما دیتاهایی که میگرفتم چند تاش کم بود. در واقع بار 3 تا از کاراکتر های وسطش رو جا می اندازه و دفعات بعد هم قاطیشون میکنه. نمیدونم چرا؟
          البته من تا حالا از این تابع استفاده نکردم. شاید من اشتباه ازش استفاده میکنم.

          من خودم برای حل این مشکل ابتدا مشکلش رو پیدا کردم و بعد هم با یه روش که خودم خیلی باهاش حال نکردم حلش کردم.روشم رو میگم امادنبال یه روش بهترم لطفا کمک کنید.
          برای این کار ابتدا گفتم از اونجایی که همه کارتها اولشون یکی هست و اینم خوندم اولش 0و3 بود ، توی حلقه ای که دیتا رو میگرفتم گفتم اگه دیتای اول و دوم رو گرفتی و دیدی 0 و 3 نبودن از اول بگیر که تا حدودی مشکل رو حل کرد اما فقط 50 درصد.
          بعد از اون چک کردم و دیدم مشکل اصلی از اینه که وقتی دیتایی روی پرت سریال ارسال میشه ولی خونده نمیشه روی بافر سریال ریخته میشه و ما باید اون رو پاک کنیم.برای همین آخر برنامه با یه دستور مسخره بافر رو پاک کردم. فقط هم 3 تا کاراکتر توی بافر ریخته میشه منم همونقدر از بافر رو پاک میکنم. البته خودم اصلا با این دستور حال نکردم.که برنامه به این صورت در اومد
          کد:
          $regfile = "m16def.dat"
          $crystal = 8000000
          '$baud = 9600
          'Config Serialout = Buffered , Size = 20
          Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
          Config Portd.6 = Input
          Portd.6 = 0
          
          
          Config Lcd = 16 * 2
          Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , _
                      Rs = Portb.5 , E = Portb.4
          Dim E As Byte , P As Byte
          Dim C(12)as String * 1
          Dim Code As String * 10
          
          Cursor Off
          Dim X As Byte
          
          Do
            Cls : Lcd "<<insert Card>>"
          
          
          
          
            Locate 2 , 1
          
            Step1:
          
            For E = 1 To 12
             C(e) = Waitkey()
             If C(1) <> "0" Then Goto Step1
             If E = 2 And C(2) <> "3" Then Goto Step1
          
            Next E
          
          
          
           For E = 1 To 12
            Incr P
             Mid(code , P , 1) = C(e)
          
            Next
          
          
            E = 0 : P = 0
            Cls : Lcd Code
           Wait 4
           For E = 1 To 4
           X = Inkey()
           Next E
          Loop
          حالا اگه کسی راه بهتر یا دستور بهتری داره ممنون میشم راهمون بندازه
          بقیه سوال ها رو هم ممنون میشم جواب بدین. اونها هم تا حدودی تو حوضه همین AVR هستن دیگه. هر سوالی هم که مربوط به این انجمن نمیشه بگید تا تو انجمن مربوطه خودش بپرسم. ممنون

          دیدگاه

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