اطلاعیه

Collapse
No announcement yet.

پرسش در خصوص UART 2 در ATEMEGA64

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

    پرسش در خصوص UART 2 در ATEMEGA64

    با سلام خدمت اساتید محترم. یک برد توسعه با میکروکنترلر ATMEGA64 موجود است. در کامپایلر بسکام چگونه می توان UART سخت افزاری شماره 2 این میکروکنترلر را فعال کرد؟ آیا برای این UART نیز امکان استفاده از وقفه ها وجود دارد؟
    لطفا در صورت امکان نمونه کد قرار دهید. با تشکر فراوان
    STM32 واقعا یه چیز دیگه است...

    #2
    پاسخ : پرسش در خصوص UART 2 در ATEMEGA64

    Config Com2 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Open "com2:" For Binary As #1
    print#1 , "a"
    اگر از دستور زیر استفاده کنید وقفه ورودی بافر فعال میشه
    Config Serialin1 = Buffered , Size = 20 , Bytematch = All

    و در این مکان ظاهر میشه:
    Serial1bytereceived:

    دیدگاه


      #3
      پاسخ : پرسش در خصوص UART 2 در ATEMEGA64

      ممنون از پاسخ شما. فقط در دستور Print متغیر a رو کجا مقدار دهی و تعریف کردید؟
      STM32 واقعا یه چیز دیگه است...

      دیدگاه


        #4
        پاسخ : پرسش در خصوص UART 2 در ATEMEGA64

        اینجا یک حرف هستش میتونه بایت یا هر چیزی باشه فرقی نمیکنه
        print#1 , "a" 'harf a

        دیدگاه


          #5
          پاسخ : پرسش در خصوص UART 2 در ATEMEGA64

          سلام. مجدد. من کد های زیر رو برای راه اندازی UART1 (واحد دوم UART) میکروکنترلر ATMEGA64 نوشتم. در این مدار که شماتیک آن در ذیل آمده میکروکنترلر ATMEGA8 در نقش یک فرستنده عمل می کنه. فرض کنید یک ماژول قرائت تگ RFID است و میکروی ATMEGA64 گیرنده اطلاعات است. به دلیل مشکل به هیچ عنوان امکان دریافت اطلاعات بر روی UART0 میکرو وجود نداره و الزاما باید UART1 رو بتونم فعال کنم. هدف من فعال کردن وقفه URXC و دریافت اطلاعات و ریختن آن ها در متغیری از نوع string با طول 10 است. با دستور input. لطفا راهنمایی بفرمایید.
          کد فرستنده

          'IN THE NAME OF ALLAH
          'Transimtter Side [Act as RFID Reader]
          $regfile = "m8def.dat"
          $crystal = 1000000
          $baud = 9600
          config LCD = 16x2
          config PORTB = Input
          dim a as string * 50
          config LCDPIN=PIN, db7=pind.7, db6=pind.6, db5=pind.5, db4=pind.4, e=pind.3, rs=pind.2
          enable interrupts
          initlcd
          Cursor off
          Cls
          lcd "SENDER"
          Do
          print "HELLO WORLD"
          waitms 400
          Loop
          end


          کد سمت گیرنده

          'IN THE NAME OF ALLAH
          'Rec. Side
          $regfile = "m64def.dat"
          $crystal = 1000000
          $baud1 = 9600
          $framesize = 60
          config LCD = 16x2
          config LCDPIN=PIN, db7=pind.7, db6=pind.6, db5=pind.5, db4=pind.4, e=pine.7, rs=pine.6
          enable interrupts
          dim A as string * 200
          Config Com2 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
          Config Serialin1 = Buffered , Size = 30 , Bytematch = All
          Open "COM2:" For Binary As #2
          initlcd
          cursor off
          Cls
          lcd "RECEIVER"
          Serial1bytereceived:
          input #2, A
          print #2, A
          lcd A
          Return
          End
          close #2

          اما متاسفانه امکان قرائت اطلاعات در سمت گیرنده وجود ندارد.
          STM32 واقعا یه چیز دیگه است...

          دیدگاه


            #6
            پاسخ : پرسش در خصوص UART 2 در ATEMEGA64

            for a= 1 to 30
            Dat(a) = Inkey()
            next
            ch=""
            for a=1 to 30
            ch=ch+dat(a)
            next
            waitms 400

            یک نمونه کد اجرا شده
            ch از نوع string*30
            dat(30) string*1
            جدیدترین ویرایش توسط yousef55; ۲۲:۳۶ ۱۳۹۵/۰۶/۲۱.

            دیدگاه

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