NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3799 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 18 از 18

موضوع: ارتباط avr باarm

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    Thumbs up ارتباط avr باarm

    سلام دوستان اگه کسی برنامه ای یا اطلاعاتی درباره ی ارتباط avr با arm ذاره لطفا در اختیار من هم بذارید مخصوصا arm atmel
    ممنون

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام

    چجور ارتباطی ؟؟؟

    مثلا ارتباط سریال که کار خاصی نداره کل زحمتش راه اندازی واحد usart هست
    اگر پروتکل خاصی مد نظرتون هست بفرمائید با جزئیات کار ... تا بهتر بشه راهنمائی کرد
    *** اللّهم عجّل لولیک الفرج ***

  4. #3
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    سلام.
    این از اون سوالا بود هاااا! مثل اینکه بیان سوال کنند چه خبر؟
    به احترام دوستانی که اینجا به بقیه کمک می کنند کمی برای مطرح کردن سوالمون وقت بذاریم (منم که فقط بلدم بقیه رو اندرز کنم! والله!).

    مدل میکروتون چه در avr چه در arm چیه؟
    چه نوع پروتکلی مد نظرتون هست؟
    چه محدودیت هایی در پیش رو دارید؟
    قبلا تجربه ای در ارتباط سریال داشتید؟
    به چه زبانی و برای چه کامپایلری؟
    داده ای که ارسال و یا دریافت می شه چه نوعی است؟
    و ...
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  5. کاربران : 3 تشکر کرده اند از شما Aghaeifar برای ارسال این پست سودمند:


  6. #4
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض

    دوستمون ارسال اولشون هست. شاید با جزئیات زیاد آشنا نباشه که پرسشون انقدر کلیه.
    با اجازه اساتید من کمی راهنمایشون کنم.

    دوست گرامی شما باید در سوالتون به جزئیات بیشتری اشاره کنید. اگر هم در زمینه میکرو زیاد آگاهی نداری بگید که هدفتون از این کار چیه تا بتونیم راه کار های ممکن رو بهتون پیشنهاد بدیم.
    مواردی هم که دوستان گفتن مد نظر قرار بدید.

    بهترین راه انتقال داده استفاده از پروتکل هایی هست که هر دو میکرو داشته باشند مانند usart یا spi .
    شما بعد از پیکربندی و تنظیمات لازم میکرو ها میتونید در برنامه تون داده رو ارسال کنید و در سمت گیرنده دریافت و داده رو پردازش کنید.
    الان با کدوم قسمت از کار آشنایی ندارید بگید تا کمک کنیم.
    سرزمین من\r

    دانلود کتاب آموزش پورت سریال در c#

    http://www.iranmicro.ir/forum/showthread.php?t=9629

  7. تشکرها از این نوشته :


  8. #5
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    پیش فرض

    نقل قول نوشته اصلی توسط shahrivar88 نمایش پست ها
    دوستمون ارسال اولشون هست. شاید با جزئیات زیاد آشنا نباشه که پرسشون انقدر کلیه.
    با اجازه اساتید من کمی راهنمایشون کنم.

    دوست گرامی شما باید در سوالتون به جزئیات بیشتری اشاره کنید. اگر هم در زمینه میکرو زیاد آگاهی نداری بگید که هدفتون از این کار چیه تا بتونیم راه کار های ممکن رو بهتون پیشنهاد بدیم.
    مواردی هم که دوستان گفتن مد نظر قرار بدید.

    بهترین راه انتقال داده استفاده از پروتکل هایی هست که هر دو میکرو داشته باشند مانند usart یا spi .
    شما بعد از پیکربندی و تنظیمات لازم میکرو ها میتونید در برنامه تون داده رو ارسال کنید و در سمت گیرنده دریافت و داده رو پردازش کنید.
    الان با کدوم قسمت از کار آشنایی ندارید بگید تا کمک کنیم.
    پروتکل spi
    atmega32 برا avr و at91sam7x256 برا arm
    نرم افزار keil برا arm و code vision برا avr
    ولی اگه کسی اطلاعاتی درباره اتصالات avr و arm داره حتما بگه فرقی نداره با کدوم میکروها کار کرده باشین
    حتی اگه lpc یا stm باشه
    داده ها هم عدد هستند و زبان برنامه نویسی هم c هست
    مشکل هم اینجاست که

    ممنون
    ویرایش توسط Niloufar.Male : 21-10-2013 در ساعت 23:30 دلیل: میکرو

  9. #6
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض

    شما به لینک زیر برید و کتاب آموزش سریع میکروکنترلر AVR رو دانلود کنید و بخش SPI رو از اون کتاب مطالعه کنید.

    AVR dot IR - صفحه اصلي

    راهندازی این پروتکل در ARM هم مشابه AVR است.
    با این کتاب شروع کنید اگر هم مشکلی داشتید بپرسید.
    سرزمین من\r

    دانلود کتاب آموزش پورت سریال در c#

    http://www.iranmicro.ir/forum/showthread.php?t=9629

  10. #7
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    پیش فرض

    دوستان من قبلا دو avr رو به هم وصل کردم و هیچ مشکلی هم نداشتم
    اما میگم شاید برای اتصال دو میکرو مختلف نیاز به تنظیمات خاصی باشه

  11. #8
    کاربر فعال processor آواتار ها
    تاریخ عضویت
    May 2010
    نام
    محمد صداقتی
    نوشته ها
    171
    تشکر
    124
    تشکر شده 262 بار در 120 پست

    پیش فرض

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

  12. تشکرها از این نوشته :


  13. #9
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    پیش فرض

    خوشم میاد قشنگ بحث رو باز میکنید
    ممنون

  14. #10
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    پیش فرض

    سلام
    من دو تا برنامه نوشتم براي ارتباط سريال ARM , AVR نوشتم
    هر دو :
    بيت توازن ندارند. يک Stop Bit . ارسال اطلاعات هشت بيت هشت بيت . نرخ انتقال هر دو هم 9600 و مد اسنکرون
    ولي LSB , Msb توي ارم برنامه ر يزي شد ولي توي AVR تنظيماتش رو پيدا نکردم ! توي ارم اول LSB رو مي فرستم
    دو تا 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 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 "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);   
    }
    از برد ارم اتمل کویر استفاده میکنم
    اگه ميشه يه نگاهي بهش بندازيد

    ممنون

  15. #11
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    خوب الان مشکل کجاست ؟
    برای این که از کارکرد برنامه هاتون مطمئن بشید میتونید میکرو ها رو به صورت جداگونه به کامپیوتر وصل کنید ببینید که مشکلی نداشته باشن!

  16. #12
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    پیش فرض

    نه هیچ مشکلی ندارن
    ولی arm و avr نمیتونن با هم ارتباط برقرار کنن

  17. #13
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    نقل قول نوشته اصلی توسط Niloufar.Male نمایش پست ها
    پروتکل spi
    atmega32 برا avr و at91sam7x256 برا arm
    نرم افزار keil برا arm و code vision برا avr
    ولی اگه کسی اطلاعاتی درباره اتصالات avr و arm داره حتما بگه فرقی نداره با کدوم میکروها کار کرده باشین
    حتی اگه lpc یا stm باشه
    داده ها هم عدد هستند و زبان برنامه نویسی هم c هست
    مشکل هم اینجاست که

    ممنون
    توی برنامه ای که گذاشتید از پروتکل usart استفاده شده !
    کد:
    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);    }
    اگه برنامه توی شبیه سازی جواب میده ، احتمالا پایه های مربوطه رو جابجا متصل کردید .
    شما باید پایه ی مروبطه رو مطابق زیر متصل کنید :
    rxd میکروکنترلر شماره ی یک به پایه ی txd میکروکنترلر شماره ی 2
    txd میکروکنترلر شماره ی یک به پایه ی rxd میکروکنترلر شماره ی 2
    گراند هر دو میکروکنترلر هم باید یکی باشه .
    اگه براتون امکان وصل کردن برد ها به کامپیوتر وجود نداره ، پایه های rxd و txd میکروکنترلر ها رو به هم وصل کنید ، با این کار داده ی سریال ارسالی به rxd از طریق txd به میکروکنترلر برمیگرده .

  18. #14
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    پیش فرض

    ممنون
    امتحان میکنم این رو که گفتید
    آره از usart استفاده کردیم
    بازم ممنون

  19. #15
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    پیش فرض

    نه جواب نمیده
    میشه یه نگاهی کنید به تنظیماتش که همه چی هماهنگ هست یا نه؟
    واقعا ممنون

  20. #16
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    چک کردن برنامه به دلیل عدم دسترسی به سخت افزار برای من امکان نداره ، اما در کل توی ارتباط سریال موارد زیر باید درست باشه :
    1- اتصال پایه ها
    2- برابر بودن بیت های توازن و تعداد بیت های ارسالی ( 7 بیتی یا 8 بیتی بودن داده های ارسالی )
    3- یکی بودن نرخ انتقال داده
    4-یکی بودن متغیر های ارسال و دریافت داده .
    توی برنامه ی AVR چک کنید ببینید با دستور USART_TOSend ( 5 ) ; کاراکتر اینترنت هم ارسال میشه یا نه .
    توی ارتباط شما هیچ داده ای از میکروکنترلر دیگه دریافت نیمکنید ؟

  21. تشکرها از این نوشته :


  22. #17
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    پیش فرض

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

  23. #18
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    61
    تشکر
    14
    تشکر شده 4 بار در 4 پست

    پیش فرض

    سپاس از همه ی کمک هاتون
    ارتباط سریال ARM و AVR درست شد !

    کد:
    #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] ) ;
            
          }            
    }
    }

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •