اطلاعیه

Collapse
No announcement yet.

مشکل در اتصال max232 به میکرو

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

    مشکل در اتصال max232 به میکرو

    با سلام خدمت دوستان گرامی
    من max232 رو به میکرو وصل کردم کل ریجسترها رو درست تنطیم کردم وقتی از توابع getchar و putchar استفاده میکنم درست جواب میده و وقتی از طریق ترمینال codevision اطلاعات میفرستم رو پورت خروجی که تعریف کردم نشون میده ولی وفتی از وقفه خارجی استفاده میکنم و ریجسترها رو دوباره تنظیم میکنم،و مراحل قبلی ارسال رو دوباره تکرار میکنم رو پورت خروجی چیزی نشون نمیده،کسی هست که کمکم کنه ایا نحوه اتصال رو باید تغییر بدم،کسی هست که کمکم کنه؟؟؟؟؟؟؟؟ :nice: :nice: :angry:
    وه کو شیتان شیتی تو بوم

    #2
    پاسخ : مشکل در اتصال max232 به میکرو

    سلام محسن جان

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

    دیدگاه


      #3
      پاسخ : مشکل در اتصال max232 به میکرو

      سلام کاک سوران اینم کد
      کد:
      #include <mega16.h>
      #include <delay.h>
      #define xtal 8000000
      unsigned char data,red;
      interrupt [USART_RXC] void usart_rx_isr(void)
      {
      data=UDR;
      red=1;
      }
      \\-------------------------
      void main(){ 
      PORTA=0x00;
      DDRA=0xff;
      //-------------------------
      UCSRA=0x00;
      UCSRB=0x90;
      UCSRC=0x86;
      UBRRH=0x00;
      UBRRL=0x33;
      delay_ms(50);
      #asm("sei")
      //-------------------------
      while(1){
      if(red==1){
      PORTA=data;
      delay_ms(1000);
      red=0;
      }
      };
      }
      وه کو شیتان شیتی تو بوم

      دیدگاه


        #4
        پاسخ : مشکل در اتصال max232 به میکرو

        نوشته اصلی توسط سوران آراسته
        سلام محسن جان

        با هم حرف زدیماااا ...
        سورس رو بزار تا ببینیم چه کردی
        اینم شماتیک اتصال MAX232 به میکرو
        وه کو شیتان شیتی تو بوم

        دیدگاه


          #5
          پاسخ : مشکل در اتصال max232 به میکرو

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

          دیدگاه


            #6
            پاسخ : مشکل در اتصال max232 به میکرو

            نوشته اصلی توسط fbehzadi
            سلام به شما
            شبیه این مشکل برای منم پیش اومده
            شماتیک توی پروتیوس درسته
            بزای اینکه مشکل زودتر رفع شه فقط یه پیشنهاد میتونم بدم
            شما یه برنامه ی ساده تر بنویس(حتی اگه خواستین دربسکام) وتوش ازوقفه ها استفاده نکن چون درارتباطUARTگاهی وقفه ها باعث ایجاد مشکل میشن و ارتباط ممکنه یک طرفه بشه!و.....
            اینو برای این عرض کردم اگه مشکل سخت افزاری ونحوه اتصال در میان باشه خیلی زود کشف میشه چون
            بنده سورس شما رو بادقت نتوستم بررسی کنم
            با سلام خدمت دوست گرامی
            با برنامه ساده جواب گرفتم با اسفاده از روش اشاره گر یا Polling که با اسفاده از تابع های
            کد:
            getchar()
            putchar()
            ولی من میخوام با استفاده از وقفه دیتای ارسالی رو بخونم
            وه کو شیتان شیتی تو بوم

            دیدگاه


              #7
              پاسخ : مشکل در اتصال max232 به میکرو

              این برنامه هر بایتی که از سریال دریافت کنه روی پورت A نمایش میده
              و هر 500 میلی ثانیه کرکتر A را ارسال میکنه

              کد:
              /*****************************************************
              Chip type        : ATmega16
              AVR Core Clock frequency: 8.000000 MHz
              *****************************************************/
              
              #include <mega16.h>
              #include <delay.h>
              
              #ifndef RXB8 
              #define RXB8 1
              #define TXB8 0
              #define UPE 2
              #define DOR 3
              #define FE 4
              #define UDRE 5
              #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)
              
              
              interrupt [USART_RXC] void usart_rx_isr(void)
              {
              char status,data;
              status=UCSRA;
              data=UDR;
              if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
               {     
               
                PORTA = data;
               
               }
              }
              
              void putchar (char byt)
              {
              while((UCSRA & 0b00100000)==0); // ready to send
              UDR = byt;
              }
              
              
              void Send(char c)
              {
              #asm("cli")
              putchar(c);
              #asm("sei")
              }
              
              
              
              void main(void)
              {
              
              DDRA=0xFF;
              
              // USART initialization
              // Communication Parameters: 8 Data, 1 Stop, No Parity
              // USART Receiver: On
              // USART Transmitter: On
              // USART Mode: Asynchronous
              // USART Baud Rate: 9600
              UCSRA=0x00;
              UCSRB=0x98;
              UCSRC=0x86;
              UBRRH=0x00;
              UBRRL=0x33;
              
              #asm("sei")
              
              while (1)
                 {
                 Send('A');
                 delay_ms(500);
                 }
              }
              امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

              دیدگاه


                #8
                پاسخ : مشکل در اتصال max232 به میکرو

                سلام محسن جان

                اقا فایل زیر رو بگیر و تست کن.

                http://vip.eca.ir/sharing/uploads/13930868731.rar

                یادت باشه باید از کریستال 11.0592 مگاهرتز استفاده کنی.
                شماتیک هم به صورت زیر هست:

                http://vip.eca.ir/sharing/uploads/13705578261.rar
                عملکرد برنامه هم به این صورته که هر کاراکتری رو در هایپرترمینال بزنی معادل دسیمالش بر روی پورت A قرار می گیره.

                موفق باشی
                چرا ناراحتی پاتریک!
                + امروز ی بچه دیدم سرچهارراه گل میفروخت
                - از دیدنش ناراحت شدی؟
                + نه
                پس چی ناراحتت کرده
                + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                ------------------------------------------------------------------------------------------------------
                تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                ------------------------------------------------------------------------------------------------------
                محصولات

                دیدگاه


                  #9
                  پاسخ : مشکل در اتصال max232 به میکرو

                  سلام کاک سوران،ممنون
                  وه کو شیتان شیتی تو بوم

                  دیدگاه


                    #10
                    پاسخ : مشکل در اتصال max232 به میکرو

                    نوشته اصلی توسط Abbas Sarami
                    این برنامه هر بایتی که از سریال دریافت کنه روی پورت A نمایش میده
                    و هر 500 میلی ثانیه کرکتر A را ارسال میکنه

                    کد:
                    /*****************************************************
                    Chip type        : ATmega16
                    AVR Core Clock frequency: 8.000000 MHz
                    *****************************************************/
                    
                    #include <mega16.h>
                    #include <delay.h>
                    
                    #ifndef RXB8 
                    #define RXB8 1
                    #define TXB8 0
                    #define UPE 2
                    #define DOR 3
                    #define FE 4
                    #define UDRE 5
                    #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)
                    
                    
                    interrupt [USART_RXC] void usart_rx_isr(void)
                    {
                    char status,data;
                    status=UCSRA;
                    data=UDR;
                    if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
                     {     
                     
                      PORTA = data;
                     
                     }
                    }
                    
                    void putchar (char byt)
                    {
                    while((UCSRA & 0b00100000)==0); // ready to send
                    UDR = byt;
                    }
                    
                    
                    void Send(char c)
                    {
                    #asm("cli")
                    putchar(c);
                    #asm("sei")
                    }
                    
                    
                    
                    void main(void)
                    {
                    
                    DDRA=0xFF;
                    
                    // USART initialization
                    // Communication Parameters: 8 Data, 1 Stop, No Parity
                    // USART Receiver: On
                    // USART Transmitter: On
                    // USART Mode: Asynchronous
                    // USART Baud Rate: 9600
                    UCSRA=0x00;
                    UCSRB=0x98;
                    UCSRC=0x86;
                    UBRRH=0x00;
                    UBRRL=0x33;
                    
                    #asm("sei")
                    
                    while (1)
                       {
                       Send('A');
                       delay_ms(500);
                       }
                    }
                    مرسی عباس جان
                    وه کو شیتان شیتی تو بوم

                    دیدگاه

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