اطلاعیه

Collapse
No announcement yet.

ارتباط avr با arm

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

    #16
    پاسخ : ارتباط avr با arm

    ممنون

    دیدگاه


      #17
      پاسخ : ارتباط avr با arm

      آقای ایمان فر
      من منتظرم.... :wow:

      دیدگاه


        #18
        پاسخ : ارتباط avr با arm

        سلام
        بفرمایید :job:
        فایل های پیوست شده
        زندگی یعنی امید و حرکت
        کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
        سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
        برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
        به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

        دیدگاه


          #19
          پاسخ : ارتباط avr با arm

          مممممممممممممممممممممممممنون
          :wow:

          دیدگاه


            #20
            پاسخ : ارتباط avr با arm

            سلام
            من دو تا برنامه نوشتم برای ارتباط سریال ARM , AVR نوشتم
            هر دو :
            بیت توازن ندارند. یک Stop Bit . ارسال اطلاعات هشت بیت هشت بیت . نرخ انتقال هر دو هم 9600 و مد اسنکرون
            ولی LSB , Msb توی ارم برنامه ر یزی شد ولی توی AVR تنظیماتش رو پیدا نکردم ! توی ارم اول LSB رو می فرستم
            دو تا ARM و دو تا AVR راه افتادند ولی یک ارم و یک ای وی ار نه !
            به غیر از این ها چی چیز هایی باید هماهنگ بشه
            با اون کد هایی هم که داده بودید نتوستم راه اندازی کنم !
            اینم کدهای که نوشتیم
            مشکلش کجاست ؟؟ :cry:
            کد:
            #include <mega32a.h> 
            #include <lcd.h>
            #include <delay.h>
            #include <stdio.h>
            #asm
              .equ __lcd_port= 0x1B //PORTA 
            #endasm
            #define Lenght_Array 10
            
            unsigned char LCD_Show [ Lenght_Array ] ;
            
            void LCD_Initialization ( void ) {
             lcd_init (16) ;
             lcd_clear () ;
             lcd_gotoxy (0 , 0) ;
            }
            void Sender_Initialization ( unsigned int baud ) {
             UBRRH = 0 ;
             UBRRL = baud ;
             //UCSRB |= (1 << RXEN ) | (1 << TXEN ); // Turn on the transmission and reception circuitry 
             UCSRB |= (1 << TXEN );
             UCSRC |= (1 << URSEL ) | (1 << UCSZ0 ) | (1 << UCSZ1 ); // Use 8- bit character sizes - URSEL bit set to select the UCRSC register 
            }
            void USART_TOSend ( int ByteToSend ) {
             while (( UCSRA & (1 << UDRE )) == 0) {}; // Do nothing until UDR is ready for more data to be written to it
             UDR = ByteToSend ; // Send out the byte value in the variable " ByteToSend "
            }
            
            void main () {
             DDRC = 0X01 ;
               LCD_Initialization () ;
               Sender_Initialization ( 0x33 ) ;
               PORTC = 0X01 ; 
               delay_ms (50) ;
               PORTC = 0X00 ; 
               delay_ms (50) ;
            while (1) { 
               USART_TOSend ( 5 ) ;
               PORTC = 0X01 ; 
               delay_ms (50) ;
               PORTC = 0X00 ; 
               delay_ms (50) ; 
               sprintf ( LCD_Show , "%d" , UDR) ; //sprintf ( char array , "String Text ..." , variable )
               lcd_puts ( LCD_Show ) ;
            این کد AVR بود
            اینم کد ARM
            کد:
            #include <AT91SAM7X256.H> 
            #include "delay.h"
            #include "usart.h"
            #include "TFTLCD.h"
            #include "nature.h"
            #define Lenght_Array 10
            char PORTRAIT = 0; 
            char data;
            char  A ;
            
            char *q="receive data";
            int a;
            int i = 0;
            
            
            int main (void) {
            tftlcd_init();
            
            usart0_init(2,9600);
            while (1) {
               tftlcd_puts(q,BLUE,GREEN,1);
               delay_ms(20);
              A = getkey();   
               tftlcd_putchar(A,BLUE,GREEN,1);
               delay_ms(100);  
            }

            اگه میشه یه نگاهی بهش بندازید
            ممنون

            دیدگاه


              #21
              پاسخ : ارتباط avr با arm

              والا برنامه ARM که مشکلی نداره ولی برنامه AVR رو نمیدونم با چه کامپایلری نوشتی
              دستوراتش حدودا قابل فهمه ولی مثل کدویژن نیست و منم تقریبا فقط با کدویژن بلدم
              اما یه جا یه کاراکتر ارسال کردی تو برنامه AVR که عدد 5 رو ارسال میکنه. خب این مشکل سازه چون شما اون ور توی برنامه ARM از tftlcd_putchar(A,BLUE,GREEN,1); از این استفاده کردین و اینم میاد کاراکتر مربوط به عدد 5 رو نشون بده که اصلا برای lcd تعریف نشده (کاراکتر های کوچکتر از 0x20 تعریف نشدن) پس به نظرم به جای ارسال 5 بیا '5' رو ارسال کن. در واقع '5' همون 0x35 هست.
              برای فهم مطالب بالا جدول کداسکی رو بخون که متوجه بشی اون اعدادی که گفتم از کجا آوردم
              زندگی یعنی امید و حرکت
              کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
              سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
              برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
              به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

              دیدگاه


                #22
                پاسخ : ارتباط avr با arm

                اول ممنون از جوابتون
                الان داره یه اتفاقاتی میفته
                ینی کاراکتر ها توسط میکرو ها ارسال میشن و روی صفحه های نمایش هم یه چیزایی نمایش داده میشه
                ولی اون کاراکتر هایی که میخوایم و توسط میکرو ها ارسال میشه روی صفحه نمایش به درستی نمایش داده نمیشه.اون چیزی که نمایش داده بیشتر یه حروف چینی هست.tft کاراکتر عجیبی نشون میده
                lcd کاراکتری توی avr هم چیزای عجیبی نشون میده
                مشکل توی داده هامونه
                مییشه راهنمایی کنید.
                ممنون

                دیدگاه


                  #23
                  پاسخ : ارتباط avr با arm

                  نوشته اصلی توسط امیر بمانی
                  اول ممنون از جوابتون
                  الان داره یه اتفاقاتی میفته
                  ینی کاراکتر ها توسط میکرو ها ارسال میشن و روی صفحه های نمایش هم یه چیزایی نمایش داده میشه
                  ولی اون کاراکتر هایی که میخوایم و توسط میکرو ها ارسال میشه روی صفحه نمایش به درستی نمایش داده نمیشه.اون چیزی که نمایش داده بیشتر یه حروف چینی هست.tft کاراکتر عجیبی نشون میده
                  lcd کاراکتری توی avr هم چیزای عجیبی نشون میده
                  مشکل توی داده هامونه
                  مییشه راهنمایی کنید.
                  ممنون
                  خوبه
                  پس حدسم درست بود
                  برنامتو بزار برام ببینم چه کردی
                  زندگی یعنی امید و حرکت
                  کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                  سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                  برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                  به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                  دیدگاه


                    #24
                    پاسخ : ارتباط avr با arm

                    بفر مایید این کد avr
                    کد:
                    #include <mega32a.h> 
                    #include <lcd.h>
                    #include <delay.h>
                    #include <stdio.h>
                    #asm
                      .equ __lcd_port= 0x1B //PORTA 
                    #endasm
                    #define Lenght_Array 10
                    //unsigned char ReceivedByte ;
                    
                    unsigned char LCD_Show [ Lenght_Array ] ;
                    unsigned char S = 'V';
                    void LCD_Initialization ( void ) {
                     lcd_init (16) ;
                     lcd_clear () ;
                     lcd_gotoxy (0 , 0) ;
                    }
                    void USART_Init( unsigned int baud )
                    {
                     /* Set baud rate */
                     UBRRH = (unsigned char)(baud>>8);
                     UBRRL = (unsigned char)baud;
                     /* Enable receiver and transmitter */
                     UCSRB = (1<<RXEN)|(1<<TXEN);
                     /* Set frame format: 8data, 2stop bit */
                     //UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
                     UCSRC |= 0X26;
                    }
                    void USART_Transmit( unsigned char data )
                    {
                     /* Wait for empty transmit buffer */
                     while ( !( UCSRA & (1<<UDRE)) );
                     /* Put data into buffer, sends the data */
                     UDR = data;
                    }
                    /*
                    unsigned char USART_Receive( void )
                    {
                     //Wait for data to be received 
                     while ( !(UCSRA & (1<<RXC)) );
                     //Get and return received data from buffer 
                     return UDR;
                    }
                    */
                    /*
                    void Sender_Initialization ( unsigned int baud ) {
                     UBRRH = 0 ;
                     UBRRL = baud ;
                     UCSRB |= 0X08; // Turn on the transmission and reception circuitry 
                     //UCSRB |= (1 << TXEN );
                     UCSRC |= 0X26; // Use 8- bit character sizes - URSEL bit set to select the UCRSC register 
                     //URSEL = 0 LSB
                     //URSEL = 1 MSB
                    }
                    void USART_TOSend ( unsigned char ByteToSend ) {
                     while (( UCSRA & (1 << UDRE )) == 0) {}; // Do nothing until UDR is ready for more data to be written to it
                     UDR = ByteToSend ; // Send out the byte value in the variable " ByteToSend "
                    }
                    
                    
                    
                    
                    void USART_TORecieve ( void ) {
                     while (( UCSRA & (1 << RXC )) == 0) {}; // Do nothing until data have been received and is ready to be read from UDR
                     ReceivedByte = UDR ; // Fetch the received byte value into the variable " ReceivedByte "
                    }
                    */
                    
                    
                    void main () {
                    
                    
                     DDRC = 0X01 ;
                       LCD_Initialization () ;
                       //Sender_Initialization ( 0x19 ) ;
                       USART_Init ( 0x19 );
                       PORTC = 0X01 ; 
                       delay_ms (50) ;
                       PORTC = 0X00 ; 
                       delay_ms (50) ;
                    while (1) { 
                       //USART_TORecieve (); 
                       //USART_TOSend ( S ) ;
                       //ReceivedByte = USART_Receive ();
                       USART_Transmit (S);
                       PORTC = 0X01 ; 
                       delay_ms (50) ;
                       PORTC = 0X00 ; 
                       delay_ms (50) ; 
                       sprintf ( LCD_Show , "%s" , UDR ) ; //sprintf ( char array , "String Text ..." , variable )
                       lcd_puts ( LCD_Show ) ;      
                       }
                    }
                    کد آرم هم که همونه
                    راستی محیط برنامه نویسیه avr کدویژنه
                    به خاطر تابع هاش احساس کردید توی یه محیط دیگست

                    دیدگاه


                      #25
                      پاسخ : ارتباط avr با arm

                      به نظرم همه چی درسته و باید AVR کاراکتر 'V' رو به ARM ارسال کنه.
                      میگم زمین مدار AVR و ARM رو یکی کردی؟

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

                      دیدگاه


                        #26
                        پاسخ : ارتباط avr با arm

                        سلام
                        سپاس برای همه ی کمک هایی که کردین
                        ارتباط سریال ARM و AVR درست شد !
                        :wow: :wow: :nice: :nice: :nerd: :icon_razz: :agree:
                        کد:
                        #include <AT91SAM7X256.H> 
                        #include "delay.h"
                        #include "usart.h"
                        #include "TFTLCD.h"
                        #include "nature.h"
                        #define Lenght_Array 10
                        char PORTRAIT = 0; 
                        char data;
                        char  A ;
                        
                        char *q="receive data";
                        int a;
                        int i = 0;
                        
                        
                        int main (void) {
                        tftlcd_init();
                        
                        usart0_init(2,9600);
                        while (1) {
                           tftlcd_puts(q,BLUE,GREEN,1);
                           delay_ms(20);
                          A = getkey();   
                           tftlcd_putchar(A,BLUE,GREEN,1);
                           delay_ms(100);  
                        }
                        کد:
                        #include <mega32a.h> 
                        #include <lcd.h>
                        #include <delay.h>
                        #include <stdio.h>
                        #asm
                          .equ __lcd_port= 0x1B //PORTA 
                        #endasm
                        #define Lenght_Array 10
                        #define MainClock 8000000
                        #define BAUD 19200
                        #define UBRR (( MainClock ) / ( BAUD * 16 ) - 1 )
                        //unsigned char ReceivedByte ;
                        
                        //unsigned char ReceivedByte ;
                        
                        unsigned char LCD_Show [ Lenght_Array ] ;
                        //unsigned char S = 0x65;
                        unsigned char S = 'S';
                        unsigned char l;
                        int i;
                        void LCD_Initialization ( void ) {
                         lcd_init (16) ;
                         lcd_clear () ;
                         lcd_gotoxy (0 , 0) ;
                        }
                        void USART_Init( unsigned int baud )
                        {
                         /* Set baud rate */
                         UBRRH = (unsigned char)(baud>>8);
                         UBRRL = (unsigned char)baud;
                         /* Enable receiver and transmitter */
                         UCSRB = (1<<RXEN)|(1<<TXEN);
                         /* Set frame format: 8data, 2stop bit */
                         //UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
                         //UCSRC |= 0X26;
                         UCSRC |= 0XA6;
                        }
                        void USART_Transmit( unsigned char data )
                        {
                         /* Wait for empty transmit buffer */
                         while ( !( UCSRA & (1<<UDRE)) );
                         /* Put data into buffer, sends the data */
                         UDR = data;
                        }
                        /*
                        unsigned char USART_Receive( void )
                        {
                         //Wait for data to be received 
                         while ( !(UCSRA & (1<<RXC)) );
                         //Get and return received data from buffer 
                         return UDR;
                        }
                        */
                        /*
                        void Sender_Initialization ( unsigned int baud ) {
                         UBRRH = 0 ;
                         UBRRL = baud ;
                         UCSRB |= 0X08; // Turn on the transmission and reception circuitry 
                         //UCSRB |= (1 << TXEN );
                         UCSRC |= 0X26; // Use 8- bit character sizes - URSEL bit set to select the UCRSC register 
                         //URSEL = 0 LSB
                         //URSEL = 1 MSB
                        }
                        void USART_TOSend ( unsigned char ByteToSend ) {
                         while (( UCSRA & (1 << UDRE )) == 0) {}; // Do nothing until UDR is ready for more data to be written to it
                         UDR = ByteToSend ; // Send out the byte value in the variable " ByteToSend "
                        }
                        
                        
                        
                        
                        void USART_TORecieve ( void ) {
                         while (( UCSRA & (1 << RXC )) == 0) {}; // Do nothing until data have been received and is ready to be read from UDR
                         ReceivedByte = UDR ; // Fetch the received byte value into the variable " ReceivedByte "
                        }
                        */
                        
                        
                        void main () {
                        
                        
                         DDRC = 0X01 ;
                           LCD_Initialization () ;
                           //Sender_Initialization ( 0x19 ) ;
                           USART_Init ( UBRR );
                           PORTC = 0X01 ; 
                           delay_ms (50) ;
                           PORTC = 0X00 ; 
                           delay_ms (50) ;
                           lcd_init(16);
                           lcd_gotoxy(0,0);
                           lcd_puts("Robotic");
                           delay_ms(1000);
                           lcd_clear();
                        while (1) { 
                           //USART_TORecieve (); 
                           //USART_TOSend ( S ) ;
                           //ReceivedByte = USART_Receive ();
                           USART_Transmit (S);
                           PORTC = 0X01 ; 
                           delay_ms (50) ;
                           PORTC = 0X00 ; 
                           delay_ms (50) ; 
                           l = 0x65; 
                           sprintf ( LCD_Show , "data=%d" , l ) ; //sprintf ( char array , "String Text ..." , variable )
                           for(i=0;i<16;i++)
                           {
                            lcd_gotoxy(i,0);
                            lcd_putchar ( LCD_Show[i] ) ;
                            
                           }      
                        }
                        }

                        دیدگاه


                          #27
                          پاسخ : ارتباط avr با arm

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

                          دیدگاه


                            #28
                            پاسخ : ارتباط avr با arm

                            اقای علی ایمانی فر بابت همه ی کمک ها و وقتی که گذاشتید واقعا ممنونم :rolleyes: :rolleyes:
                            Baud rate رو با define و فرمول داخل برنامه گذاشتم به جای محاسبه ی مستقیم عدد :
                            کد:
                            #define MainClock 8000000
                            #define BAUD 19200
                            #define UBRR (( MainClock ) / ( BAUD * 16 ) - 1 )
                            و بیت URSEL رو داخل رجیستر UCSRC یک کردم !
                            باز هم بابت وقتی که دوستان گذاشتن سپاس گذارم !

                            دیدگاه

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