اطلاعیه

Collapse
No announcement yet.

مشکل در ارسال اطلاعات با USART

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

    مشکل در ارسال اطلاعات با USART

    سلام دوستان
    من دو میکرو رو با usart به هم متصل کرده ام ، اما 2 تا مشکل دارم .
    1 - وقتی از دستور :
    putchar('WS 4B'
    استفاده می کنم ، خطای زیر رو میده :
    character constant is too long
    چیکارش باید بکنم ؟

    2 - وقتی دستر زیر رو ارسال می کنم :
    putchar('SP'
    بعد این که در گیرنده با دستور زیر :
    a=getchar()
    دریافتش می کنم ، روی lcd فقط حرف اول ، یعنی "S" رو نشون میده .
    این رو هم چیکار کنم که اطلاعات فرستاده شده رو کامل نشون بده ؟

    #2
    پاسخ : مشکل در ارسال اطلاعات با USART

    سلام
    با چند putchar و getchar پشت سر هم کاراکترها را یکی یکی ارسال و دریافت کنید

    دیدگاه


      #3
      پاسخ : مشکل در ارسال اطلاعات با USART

      ممنون از نظرتون .
      اما حالا یه مشکل دیگه .
      من یه ماژول دارم که برای کار کردن باهاش باید به صورت سریال براش کد بفرستی که بعضی از کد ها مانند مثال بالا بیشتر از یک حرف هستند .
      یعنی مثلا برای این که مد کاری ماژول عوض بشه باید دستور "WS 4B "رو برای ماژول بفرستم .
      در این صورت باید چی کار کنم ؟

      دیدگاه


        #4
        پاسخ : مشکل در ارسال اطلاعات با USART

        نوشته اصلی توسط webyou
        ممنون از نظرتون .
        اما حالا یه مشکل دیگه .
        من یه ماژول دارم که برای کار کردن باهاش باید به صورت سریال براش کد بفرستی که بعضی از کد ها مانند مثال بالا بیشتر از یک حرف هستند .
        یعنی مثلا برای این که مد کاری ماژول عوض بشه باید دستور "WS 4B "رو برای ماژول بفرستم .
        در این صورت باید چی کار کنم ؟
        از printf استفاده کنید به این شکل :
        کد:
        printf("WS 4B ");
        البته ممکنه جواب نده رو بعضی ماژولها چون در ارتباط سریال توابع getchar و putchar بیشترین کاربرد رو دارن،امیدوارم واسه ماژول شما جواب بده

        دیدگاه


          #5
          پاسخ : مشکل در ارسال اطلاعات با USART

          سلام

          ممنون از این تاپیک خوبتون.

          یه سوال داشتم که ممنون میشم راهنماییم کنین!

          اگه بخاییم یه عدد سه رقمی یا چهار رقمی که از یه پورت ورودی خونده میشه رو بفرستیم، از چه تابعی باید استفاده کینم؟ و اینکه چه مدی (7بیتی، 8بیتی، 9بیتی) رو برا ارسال انتخاب کنیم، فرق میکنه تو نحوه خوندن؟
          قامت انسان با لباس انسانیت شکل می گیرد،
          والا مترسک جالیز را هم می توان لباسی فاخر پوشاند

          (عبدالرضا کشاورز)

          دیدگاه


            #6
            پاسخ : مشکل در ارسال اطلاعات با USART

            نوشته اصلی توسط --نیلوفر--
            سلام

            ممنون از این تاپیک خوبتون.

            یه سوال داشتم که ممنون میشم راهنماییم کنین!

            اگه بخاییم یه عدد سه رقمی یا چهار رقمی که از یه پورت ورودی خونده میشه رو بفرستیم، از چه تابعی باید استفاده کینم؟ و اینکه چه مدی (7بیتی، 8بیتی، 9بیتی) رو برا ارسال انتخاب کنیم، فرق میکنه تو نحوه خوندن؟
            سلام
            خودمم تو این موضوع گیر بودم. حالا که این موضوع برام روشن شد اینجا مطرح می کنم شاید بدرد شما بخوره:
            شما در ارتباط سریال د رحالت معمول هربار فقط یک کاراکتر اسکی می فرستید!
            http://www.asciitable.com/
            یعنی مثلا اگر عدد ۳ رقمی دارید تو یه حلقه باید هربار یکی از اون عدد ها رو (احتمالا اگه عدد باشه باید تبدیل به کاراکتر بشه) ارسال کنید و در مبدا داخل یه حلقه همه اونها را تحویل بگیرید و داخل یه رشته بهم متصل کنید.
            احتمالا برای سایر مدها هم این حالت صادق باشه

            دیدگاه


              #7
              پاسخ : مشکل در ارسال اطلاعات با USART

              سلام
              خودمم تو این موضوع گیر بودم. حالا که این موضوع برام روشن شد اینجا مطرح می کنم شاید بدرد شما بخوره:
              شما در ارتباط سریال د رحالت معمول هربار فقط یک کاراکتر اسکی می فرستید!
              http://www.asciitable.com/
              یعنی مثلا اگر عدد ۳ رقمی دارید تو یه حلقه باید هربار یکی از اون عدد ها رو (احتمالا اگه عدد باشه باید تبدیل به کاراکتر بشه) ارسال کنید و در مبدا داخل یه حلقه همه اونها را تحویل بگیرید و داخل یه رشته بهم متصل کنید.
              احتمالا برای سایر مدها هم این حالت صادق باشه
              ممنون از راهنماییتون.
              اگه بخام با اینراپت داده ها رو بگیرم، باید چی کار کنم که رشته کنمشون؟
              قامت انسان با لباس انسانیت شکل می گیرد،
              والا مترسک جالیز را هم می توان لباسی فاخر پوشاند

              (عبدالرضا کشاورز)

              دیدگاه


                #8
                پاسخ : مشکل در ارسال اطلاعات با USART

                نوشته اصلی توسط --نیلوفر--
                ممنون از راهنماییتون.
                اگه بخام با اینراپت داده ها رو بگیرم، باید چی کار کنم که رشته کنمشون؟
                سلام
                اگر اینترنت پرسرعت دارید دیدن این فیلم ها خالی از لطف نیست:
                http://www.eca.ir/forum2/index.php?topic=57531.0
                بخش ۴۶ به بعد راجع به usart هست
                اگر بازم سوالی بود در خدمتم

                دیدگاه


                  #9
                  پاسخ : مشکل در ارسال اطلاعات با USART

                  ممنون از راهنماییتون...

                  فیلم ها رو حتما نگاه میکنم، ولی میشه خودتون هم یکم توضیح بدین؟
                  قامت انسان با لباس انسانیت شکل می گیرد،
                  والا مترسک جالیز را هم می توان لباسی فاخر پوشاند

                  (عبدالرضا کشاورز)

                  دیدگاه


                    #10
                    پاسخ : مشکل در ارسال اطلاعات با USART

                    برید به وبلاگ زیر . تمرین های 1 و 2 مربوط به دریافت سریال با وقفه است . توضیحات باهاش نوشته شده.
                    mortazavi91.mihanblog.com
                    راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                    کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                    نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                    انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                    دیدگاه


                      #11
                      پاسخ : مشکل در ارسال اطلاعات با USART

                      ممنون بابت لینکتون آقای RubeuS

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

                      (عبدالرضا کشاورز)

                      دیدگاه


                        #12
                        پاسخ : مشکل در ارسال اطلاعات با USART

                        خب چرا رشته رو دریافت نمیکنید و با تابع atoi تبدیلش نمیکنید به عدد؟

                        head<=
                        ...تشکر خدا...
                        [img width=97 height=100]http://mahdi3d.persiangig.com/image/5280543_t.jpg[/img]

                        دیدگاه


                          #13
                          پاسخ : مشکل در ارسال اطلاعات با USART

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

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

                          (عبدالرضا کشاورز)

                          دیدگاه


                            #14
                            پاسخ : مشکل در ارسال اطلاعات با USART

                            نوشته اصلی توسط --نیلوفر--
                            ممنون بابت لینکتون آقای RubeuS

                            ولی مشکل من هنوز حل نشده! من با دریافت عدد سه یا چهار رقمی مشکل دارم، نه با دریافت رشته!
                            ممنون میشم اگه راهنماییم کنین...
                            عدد 3 4 رقمی یک ظرف دو بایتی میخواد. میتونید پیش خودتون قرارداد کنید که بایت اول دریافتی MSByte (بایت پر ارزش) و بایت بعدی LSByte ( بایت کم ارزش) باشد. دفعه اول که وقفه خوردید UDR را میخونید و داخل یک متغییر سراسری از نوع int میریزید. (مشکلی نداره 1 بایت میخونید و تو 2 بایت میریزید)
                            دوباره که وقفه خوردید متغییر int رو 8 بیت به چپ شیفت بدید و با محتویات UDR یای منطقی(OR ) کنید و دوباره داخل متغییر int بریزید. حالا شما در متغییر int سراسری عدد مربوطه را دارید.


                            راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                            کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                            نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                            http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                            انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                            دیدگاه


                              #15
                              پاسخ : مشکل در ارسال اطلاعات با USART

                              عدد 3 4 رقمی یک ظرف دو بایتی میخواد. میتونید پیش خودتون قرارداد کنید که بایت اول دریافتی MSByte (بایت پر ارزش) و بایت بعدی LSByte ( بایت کم ارزش) باشد. دفعه اول که وقفه خوردید UDR را میخونید و داخل یک متغییر سراسری از نوع int میریزید. (مشکلی نداره 1 بایت میخونید و تو 2 بایت میریزید)
                              دوباره که وقفه خوردید متغییر int رو 8 بیت به چپ شیفت بدید و با محتویات UDR یای منطقی(OR ) کنید و دوباره داخل متغییر int بریزید. حالا شما در متغییر int سراسری عدد مربوطه را دارید.
                              ممنون بابت توضیحاتتون... و اینکه اینقدر زیاد سوال میپرسم!

                              خب اون وقت چطوری باید عددم رو تو دو مرحله بفرستم؟

                              یه سوال دیگه هم دارم: مهم نیس که اطلاعات رو چند بیتی بفرستم؟ منظورم مودهای 7بیتی و 8بیتی و 9بیتیه. واینکه آیا لازمه که هر بایت رو چندین بار بفرستم؟ اونطور که بقیه میگن، خطای سریال بالاست و اگه سیم رابطش بلندتر از 10سانت باشه، بیشتر هم میشه...
                              قامت انسان با لباس انسانیت شکل می گیرد،
                              والا مترسک جالیز را هم می توان لباسی فاخر پوشاند

                              (عبدالرضا کشاورز)

                              دیدگاه

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