اطلاعیه

Collapse
No announcement yet.

مشکل در ارتباط سریال بین دو میکرو

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

    مشکل در ارتباط سریال بین دو میکرو

    سلام من دو تا میکرو را از طریق سریال به هم وصل کردم و میخوام از یکی یه کد بفرستم و تو اون یکی که به سون سگمنت وصله نشون بدم
    این برنامه تو پروتئوس جواب داده ولی تو سخت افزار هرچی از میکرو اول میفرستم یه چی دیگه تو سون سگمنت نشون میده نکته جال اینجاست که با عوض کردن کد بازم همون عدد قبیلو نشون میده
    به نظر شما دوستان مشکل کجاست؟؟؟؟؟؟؟؟؟

    #2
    پاسخ : مشکل در ارتباط سریال بین دو میکرو

    برنامه + فایل پروتئوس = راهنمایی صحیح :biggrin:
    امام علی (علیه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

    دیدگاه


      #3
      پاسخ : مشکل در ارتباط سریال بین دو میکرو

      چند نکته مهم در مورد ارتباط سریال (همراه با مثال): http://www.hesamnasimi.blogsky.com/1393/03/03/post-4

      دیدگاه


        #4
        پاسخ : مشکل در ارتباط سریال بین دو میکرو

        نوشته اصلی توسط mohamadalian
        چند نکته مهم در مورد ارتباط سریال (همراه با مثال): http://www.hesamnasimi.blogsky.com/1393/03/03/post-4

        دیدگاه


          #5
          پاسخ : مشکل در ارتباط سریال بین دو میکرو

          نوشته اصلی توسط Abbas Sarami
          برنامه + فایل پروتئوس = راهنمایی صحیح :biggrin:
          متاسفانه الان به فایلها دسترسی ندارم چون تو محل کارمه
          اگه میشه با توجه به توضیحاتی که دادم راهنمایی کنید.

          دیدگاه


            #6
            پاسخ : مشکل در ارتباط سریال بین دو میکرو

            ...ولی تو سخت افزار هرچی از میکرو اول میفرستم یه چی دیگه تو سون سگمنت نشون میده نکته جال اینجاست که با عوض کردن کد بازم همون عدد قبیلو نشون میده...
            احتمالاً مشکل مربوط به فیوزبیت کلاک میکروی شماهست
            از کریستال 11.0592 مگاهرتز در هر دو میکرو استفاده کنید
            فیوز بیت CKSEL 0~3 را 1111 قرار دهید
            فیوز بیت SUT0-1 را 11 قرار دهید

            ترجیحاً فیوزبیت CKOPT را فعال کنید و در صورتی که روی کریستال خازن گذاشتید حذفشون کنید

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

            دیدگاه


              #7
              پاسخ : مشکل در ارتباط سریال بین دو میکرو

              نوشته اصلی توسط Abbas Sarami
              احتمالاً مشکل مربوط به فیوزبیت کلاک میکروی شماهست
              از کریستال 11.0592 مگاهرتز در هر دو میکرو استفاده کنید
              فیوز بیت CKSEL 0~3 را 1111 قرار دهید
              فیوز بیت SUT0-1 را 11 قرار دهید

              ترجیحاً فیوزبیت CKOPT را فعال کنید و در صورتی که روی کریستال خازن گذاشتید حذفشون کنید

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


              اضافه شده در تاریخ :
              برنامه فرستنده:
              کد:
              #include <mega32a.h>
              
              #include <stdio.h>
              
              void main(void)
              {
              PORTA=0x00;
              DDRA=0x00;
              
              PORTB=0x00;
              DDRB=0x00;
              
              PORTC=0x00;
              DDRC=0x00;
              
              PORTD=0x04;
              DDRD=0x00;
              
              // USART initialization
              // Communication Parameters: 8 Data, 1 Stop, No Parity
              // USART Receiver: Off
              // USART Transmitter: On
              // USART Mode: Asynchronous
              // USART Baud Rate: 9600
              UCSRA=0x00;
              UCSRB=0x08;
              UCSRC=0x06;
              UBRRH=0x00;
              UBRRL=0x67;
              
              while (1)
                 {
                  if(PIND.2==0){
                      UDR = 0x55;
                  while(PIND.2==0);
                          }
                 }
              }

              برنامه گیرنده:


              کد:
              #include <mega32a.h>
              
              #ifndef RXB8
              #define RXB8 1
              #endif
              
              #ifndef TXB8
              #define TXB8 0
              #endif
              
              #ifndef UPE
              #define UPE 2
              #endif
              
              #ifndef DOR
              #define DOR 3
              #endif
              
              #ifndef FE
              #define FE 4
              #endif
              
              #ifndef UDRE
              #define UDRE 5
              #endif
              
              #ifndef RXC
              #define RXC 7
              #endif
              
              #define FRAMING_ERROR (1<<FE)
              #define PARITY_ERROR (1<<UPE)
              #define DATA_OVERRUN (1<<DOR)
              #define DATA_REGISTER_EMPTY (1<<UDRE)
              #define RX_COMPLETE (1<<RXC)
              
              // USART Receiver buffer
              #define RX_BUFFER_SIZE 8
              char rx_buffer[RX_BUFFER_SIZE];
              
              #if RX_BUFFER_SIZE <= 256
              unsigned char rx_wr_index,rx_rd_index,rx_counter;
              #else
              unsigned int rx_wr_index,rx_rd_index,rx_counter;
              #endif
              
              // This flag is set on USART Receiver buffer overflow
              bit rx_buffer_overflow;
              
              // USART Receiver interrupt service routine
              interrupt [USART_RXC] void usart_rx_isr(void)
              {
              char status,data;
              status=UCSRA;
              data=UDR;
              PORTA = UDR;
              if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
                {
                rx_buffer[rx_wr_index++]=data;
              #if RX_BUFFER_SIZE == 256
                // special case for receiver buffer size=256
                if (++rx_counter == 0) rx_buffer_overflow=1;
              #else
                if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
                if (++rx_counter == RX_BUFFER_SIZE)
                 {
                 rx_counter=0;
                 rx_buffer_overflow=1;
                 }
              #endif
                }
              }
              
              #ifndef _DEBUG_TERMINAL_IO_
              // Get a character from the USART Receiver buffer
              #define _ALTERNATE_GETCHAR_
              #pragma used+
              char getchar(void)
              {
              char data;
              while (rx_counter==0);
              data=rx_buffer[rx_rd_index++];
              #if RX_BUFFER_SIZE != 256
              if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
              #endif
              #asm("cli")
              --rx_counter;
              #asm("sei")
              return data;
              }
              #pragma used-
              #endif
              
              #include <stdio.h>
              
              
              void main(void)
              {
              PORTA=0x00;
              DDRA=0xFF;
              
              PORTB=0x00;
              DDRB=0x00;
              
              PORTC=0x00;
              DDRC=0x00;
              
              PORTD=0x00;
              DDRD=0x00;
              
              
              // USART initialization
              // Communication Parameters: 8 Data, 1 Stop, No Parity
              // USART Receiver: On
              // USART Transmitter: Off
              // USART Mode: Asynchronous
              // USART Baud Rate: 9600
              UCSRA=0x00;
              UCSRB=0x90;
              UCSRC=0x06;
              UBRRH=0x00;
              UBRRL=0x67;
              
              #asm("sei")
              
              while (1)
                 {
                 // Place your code here
              
                 }
              }

              اضافه شده در تاریخ :
              یه مسئله ای که هم هست اینکه هرچی میفرستم اون طرف فقط یک میخونه

              دیدگاه


                #8
                پاسخ : مشکل در ارتباط سریال بین دو میکرو

                با چه نرم افزاری پروگرام میکنی؟
                در کدویژن با تیک زدن صفر میشه
                ---------------------
                کریستالم 16 مگ هست ایا مشکل دارد؟؟
                خیر ؛ بهتره 11.0592MHz یا 14.7456MHz استفاده کنید
                ---------------------
                خازن هم دارد
                با فعال کردن فیوزبیت CKOPT ، خازن ها را حذف کنید

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

                دیدگاه


                  #9
                  پاسخ : مشکل در ارتباط سریال بین دو میکرو

                  سلام
                  برای دریافت از وقفه استفاده کن .
                  انجمن LABVIEW
                  http://www.eca.ir/forum2/index.php?board=279.0
                  اموزش میکروکنترلرهای AVR به زبان ساده
                  http://www.eca.ir/forum2/index.php/topic,7070.0.html

                  دیدگاه


                    #10
                    پاسخ : مشکل در ارتباط سریال بین دو میکرو

                    نوشته اصلی توسط nex2004
                    سلام
                    برای دریافت از وقفه استفاده کن .
                    از وقفه استفاده کردم

                    دیدگاه


                      #11
                      پاسخ : مشکل در ارتباط سریال بین دو میکرو

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

                      دیدگاه


                        #12
                        پاسخ : مشکل در ارتباط سریال بین دو میکرو

                        اگر جواب گرفتی خبر بده
                        باد می وزد ...
                        میتوانی در مقابلش هم دیوار بسازی ، هم آسیاب بادی
                        تصمیم با تو است ...

                        دیدگاه


                          #13
                          پاسخ : مشکل در ارتباط سریال بین دو میکرو

                          نوشته اصلی توسط atrobot
                          باید حتما کاریستال دوتاش یکی باشه و حتما حتما از کریستال خارجی استفاده شود .
                          کریستالام هر دوتاش یکین و خارجی هم هستن

                          دیدگاه


                            #14
                            پاسخ : مشکل در ارتباط سریال بین دو میکرو

                            نوشته اصلی توسط atrobot
                            اگر جواب گرفتی خبر بده
                            راستش یه جوابی گرفتم و اون مصادف بود با اخرین بار که یکی از میکروهام پروگرم شد و دیگه نمیشه این سومین میکرو هست که این اتفاق براش میوفته و دیگه پرو گرم نمیشه نمیدونم چشون میشه

                            دیدگاه


                              #15
                              پاسخ : مشکل در ارتباط سریال بین دو میکرو

                              نوشته اصلی توسط msadegh
                              راستش یه جوابی گرفتم و اون مصادف بود با اخرین بار که یکی از میکروهام پروگرم شد و دیگه نمیشه این سومین میکرو هست که این اتفاق براش میوفته و دیگه پرو گرم نمیشه نمیدونم چشون میشه
                              مطمئناً مربوط به کریستال و فیوزبیت هاست
                              CKOPT اگه فعاله حتماً خازن های کریستال را حذف کن
                              اگه خازن داری برشون دار و ببین پروگرام میشه ؟!
                              امام علی (علیه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                              دیدگاه

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