اطلاعیه

Collapse
No announcement yet.

ارتباط میکرو و کامپیوتر به صورت سریال RS485

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

    #16
    پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

    من C بلد نیستم و نمیآ‌تونم برنامه تون رو بخونم
    پایه های RE و DE رو چی کار کردین؟

    دیدگاه


      #17
      پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

      با سلام.
      اون مشکل قبلی برطرف شد.
      فقط الان مشکل اینجاست که وقتی 2 تا کلمه میفرستم که با فاصله از هم جدا شده اولی میفرسته بعد 1 ثانیه 2حرف اول کلمه دوم رو میفرسته.مثلا اگر من salam chetori رو بفرستم روی lcd اول salam نشون داده میشه و بعد lcd پاک میشه و فقط ch نشون داده میشه.چرا اینجوریه؟انگار با فاصله مشکل داره.
      به تابع scanf ربطی داره؟؟
      از دوستانی که کدویژن کار میکنن خواهش میکنم منو راهنمایی کنن.

      دیدگاه


        #18
        پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

        کسی نیست مرا یاری کند؟! :cry:

        دیدگاه


          #19
          پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

          تاخیر یک ثانیه در گیرنده وجود داره که معلوم نیست چه تاثیری میزاره برای درست دریافت کردن کاراکترها از دستور getchar(); و از سه مرحله زیر استفاده بشه
          1- چک کردن بیت مربوط به رجیستر مربوط به حضور کاراکتر دریافتی
          2- اگر طبق بیت فوق کاراکتر دریافتی موجود بود در آرایه قرار بگیره
          3- در صورتیکه کد کاراکتر دریافتی 10 دسیمال یا به عبارتی line feed باشه آرایه اماده نوشتن است. خروج از حلقه

          دیدگاه


            #20
            پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

            میشه راجع به line feed یکم توضیح بدید؟ منظور همون enter هست؟؟ کی کدش تولید میشه؟؟
            راستی توی دستور scanf وقتی از %s برای رشته استفاده میکنیم space رو تشخیص نمیده. باید چیکار کرد؟!

            دیدگاه


              #21
              پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

              نوشته اصلی توسط gomato
              میشه راجع به line feed یکم توضیح بدید؟ منظور همون enter هست؟؟ کی کدش تولید میشه؟؟
              راستی توی دستور scanf وقتی از %s برای رشته استفاده میکنیم space رو تشخیص نمیده. باید چیکار کرد؟!
              line feed یک کاراکتر با کد 10 است که هنگام دریافت ان می توان تشخیص داد که استرینگ دریافتی به پایان رسیده.(در ارتباط میکرو با میکرو اینطوریه و در حالت کامپیوتر بایستی ازمایش بشه اخرین کاراکتر همینه یا چیز دیگه) برای دریافت استرینگ بجای scanf از
              DATA[ i ]=getchar();

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

              دیدگاه


                #22
                پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

                چطوری میشه فهمید که آخرین کاراکتر دریافتی چی هست؟!

                دیدگاه


                  #23
                  پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

                  نوشته اصلی توسط gomato
                  چطوری میشه فهمید که آخرین کاراکتر دریافتی چی هست؟!
                  یک برنامه آزمایشی ساده بنویسید یک استرینگ ارسال کرده و به صورت کاراکتر به کاراکتر دریافت کنید کاراکتر دریافتی بعد از آخرین کاراکتر استرینگ ، آخرین کاراکتر خواهد بود.

                  دیدگاه


                    #24
                    پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

                    من یه برنامه ساده نوشتم ولی فقط همون استرینگی که ارسال میکنم نشون میده کاراکتر اضافی نداره !!!
                    توی کامپوترم با #C برنامه نوشتم برای ارسال استرینگ.
                    دیگه نمیدونم چطوری باید فهمید اون کاراکتر آخری چیه؟
                    اینم برنامه من :

                    while(1)
                    {

                    loop:
                    if(UCSRA.7==0) goto loop;

                    DATA[0]=getchar();

                    lcd_puts(DATA);

                    }

                    دیدگاه


                      #25
                      پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

                      نوشته اصلی توسط gomato
                      من یه برنامه ساده نوشتم ولی فقط همون استرینگی که ارسال میکنم نشون میده کاراکتر اضافی نداره !!!
                      توی کامپوترم با #C برنامه نوشتم برای ارسال استرینگ.
                      دیگه نمیدونم چطوری باید فهمید اون کاراکتر آخری چیه؟
                      اینم برنامه من :

                      while(1)
                      {

                      loop:
                      if(UCSRA.7==0) goto loop;

                      DATA[0]=getchar();

                      lcd_puts(DATA);

                      }
                      خیلی از کاراکترها توسط ال سی دی قابل نمایش نیست پس باید کد کاراکتر مثلا از طریق برنامه زیر نمایش داده شود


                      while(1)
                      {
                      if(UCSRA.7==0)
                      continue;
                      sprintf(data," %d ",getchar());
                      lcd_puts(data);
                      }

                      دیدگاه


                        #26
                        پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

                        آقا دستت درد نکنه. همون 10 رو میفرسته آخر رشته...
                        حالا من حلقه اصلیو چطوری بنویسم؟!
                        از این 10 چطوری استفاده کنم؟!
                        یه مثال بزنی ممنون میشم :nerd:

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

                        دیدگاه


                          #27
                          پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

                          نوشته اصلی توسط gomato
                          آقا دستت درد نکنه. همون 10 رو میفرسته آخر رشته...
                          حالا من حلقه اصلیو چطوری بنویسم؟!
                          از این 10 چطوری استفاده کنم؟!
                          یه مثال بزنی ممنون میشم :nerd:

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

                          while (1)
                          {
                          if(UCSRA.7!=0)
                          {
                          c=getchar();
                          if(c!=10)
                          {
                          sprintf(data,"%c",c);
                          lcd_puts(data);
                          }
                          }
                          .
                          .
                          .

                          }

                          در این مثال میکرو کاراکترهای دریافتی را دایما نمایش میده. در صورتیکه میکرو کار دیگری هم باید بکنه در قسمت نقطه چین دستورات اضافه خواهد شد. برای حالتیکه دستورات زیادی اضافه بشه و میکرو زمان کم بیاره بهتره از وقفه استفاده بشه.

                          دیدگاه


                            #28
                            پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

                            سلام
                            در مورد پایه های RE و DE من مشکل دارم!
                            باید ارتباط میکرو و کامپیوتر دو طرفه و RealTime باشه.
                            پایه RE و DE رو به هم وصل کردم و بعد به 1 پایه میکرو که بتونم با برنامه کنترلش کنم.
                            ولی صفر و یک کردنش درست انجام نمیشه. دریافت داریم ولی وقتی پایه 1 میشه و باید ارسال انجام بشه گیر میکنه...
                            برای ارسال هم من از keypad استفاده میکنم.با فشار یک کلید یک کاراکتر ارسال میشه و بعد دیگه گیر میکنه و پایه به حالت اول (صفر) بر نمیگرده.
                            مشکلش از کجاست؟!

                            دیدگاه


                              #29
                              پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

                              کسی نیست مرا یاری کند؟!

                              دیدگاه


                                #30
                                پاسخ : ارتباط میکرو و کامپیوتر به صورت سریال RS485

                                بچه ها من خیلی کارم گیره.
                                یعنی واقعا هیچ کی نمیتونه کمک کنه؟!

                                دیدگاه

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