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

موضوع: ارتباط بین lpc1768 و atmega 8 از طریق uart

  1. #1
    عضو جدید
    تاریخ عضویت
    Jul 2015
    نوشته ها
    7
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض ارتباط بین lpc1768 و atmega 8 از طریق uart

    با سلام

    میخواستم بدونم میشه ارتباط بین lpc1768 و atmega 8 از طریق uart انجام داد؟ ایا این دو میکرو با هم سازگاری دارند؟

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

  3. #2
    کاربر علاقه مند 6759 آواتار ها
    تاریخ عضویت
    May 2012
    نوشته ها
    38
    تشکر
    9
    تشکر شده 16 بار در 6 پست

    پیش فرض

    سلام
    بله میشه
    سورس کد میکرو(دریافت کننده)
    .................................................. ............
    $regfile = "m8def.dat"
    $crystal = 4000000
    $baud = 9600
    $hwstack = 32
    $swstack = 10
    $framesize = 10
    '************************************************* ******************************
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    '************************************************* ******************************
    Dim Buffer As String * 15
    Dim B As Byte
    Dim Nhm As Byte
    '************************************************* ******************************
    Enable Interrupts
    Enable Urxc
    On Urxc Rcv
    '************************************************* ******************************
    Cls
    Do
    Home
    Lcd Buffer
    Buffer = ""
    B = 0
    Loop
    End
    '************************************************* ******************************
    Rcv:
    B = Inkey()
    Buffer = Buffer + Chr(b)
    Return
    .................................................. .................................................. ......................
    سورس کد 1768 (به عنوان فرستنده)
    #include <LPC17xx.h>
    #include "delay.h"
    SendByte0 (int D){
    while (!(LPC_UART0->LSR & 0x20));
    LPC_UART0->THR = D;
    }
    main(){
    unsigned int i;
    LPC_SC->PCLKSEL0=0x0;
    LPC_PINCON->PINSEL0=0x00000050;
    LPC_UART0->LCR=0x83;
    LPC_UART0->DLM=0;
    LPC_UART0->FDR=0xf3;
    LPC_UART0->DLL=97;
    LPC_UART0->LCR=0x03;
    LPC_UART0->FCR=0x07;

    while(1){
    for(i=0x30;i<=0x39;i++){
    delay_s(10);
    SendByte0 (i);
    }
    }
    }
    .................................................. ...............
    هدر delay هم در ضمیمه ی مجله 9 pmm موجود هست.

  4. #3
    عضو جدید
    تاریخ عضویت
    Jul 2015
    نوشته ها
    7
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط 6759 نمایش پست ها
    سلام
    بله میشه
    سورس کد میکرو(دریافت کننده)
    .................................................. ............
    $regfile = "m8def.dat"
    $crystal = 4000000
    $baud = 9600
    $hwstack = 32
    $swstack = 10
    $framesize = 10
    '************************************************* ******************************
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    '************************************************* ******************************
    Dim Buffer As String * 15
    Dim B As Byte
    Dim Nhm As Byte
    '************************************************* ******************************
    Enable Interrupts
    Enable Urxc
    On Urxc Rcv
    '************************************************* ******************************
    Cls
    Do
    Home
    Lcd Buffer
    Buffer = ""
    B = 0
    Loop
    End
    '************************************************* ******************************
    Rcv:
    B = Inkey()
    Buffer = Buffer + Chr(b)
    Return
    .................................................. .................................................. ......................
    سورس کد 1768 (به عنوان فرستنده)
    #include <LPC17xx.h>
    #include "delay.h"
    SendByte0 (int D){
    while (!(LPC_UART0->LSR & 0x20));
    LPC_UART0->THR = D;
    }
    main(){
    unsigned int i;
    LPC_SC->PCLKSEL0=0x0;
    LPC_PINCON->PINSEL0=0x00000050;
    LPC_UART0->LCR=0x83;
    LPC_UART0->DLM=0;
    LPC_UART0->FDR=0xf3;
    LPC_UART0->DLL=97;
    LPC_UART0->LCR=0x03;
    LPC_UART0->FCR=0x07;

    while(1){
    for(i=0x30;i<=0x39;i++){
    delay_s(10);
    SendByte0 (i);
    }
    }
    }
    .................................................. ...............
    هدر delay هم در ضمیمه ی مجله 9 pmm موجود هست.



    با تشکر

    فرستادن ارم مشکلی نداره فقط طرف avr دریافت انجام میشه ولی بدرستی انجام نمیشه و اعداد را اشتباه میگیرد.البته از وقفه در سمت avr استفاده نکردم. با کدویژن برنامه را نوشتم.




    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.04.4a Advanced
    Automatic Program Generator
    © Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
    Object moved


    Project :
    Version :
    Date : 9/19/2015
    Author : NeVaDa
    Company :
    Comments:




    Chip type : ATmega8
    Program type : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    ************************************************** ***/


    #include <mega8.h>
    #include <delay.h>
    #include <stdlib.h>
    // Alphanumeric LCD Module functions
    #asm
    .equ __lcd_port=0x18 ;PORTB
    #endasm
    #include <lcd.h>


    // Standard Input/Output functions
    #include <stdio.h>


    // Declare your global variables here


    void main(void)
    {
    int a,b,d=0,c=0;


    unsigned char str[],strr[];
    // Declare your local variables here


    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x00;


    // Port C initialization
    // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
    // State6=T State5=T State4=T State3=T State2=T State1=0 State0=0
    PORTC=0x00;
    DDRC=0x03;


    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x00;


    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    TCCR0=0x00;
    TCNT0=0x00;


    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;


    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;


    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    MCUCR=0x00;


    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;


    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 4800 (Double Speed Mode)
    UCSRA=0x02;
    UCSRB=0x18;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0xCF;


    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;


    // LCD module initialization
    lcd_init(16);


    while (1)
    {
    d=getchar();


    itoa(d,strr);
    lcd_gotoxy(0,0);
    lcd_puts(strr);
    delay_ms(50);
    lcd_clear();
    delay_ms(10);


    };
    }

  5. #4
    کاربر علاقه مند 6759 آواتار ها
    تاریخ عضویت
    May 2012
    نوشته ها
    38
    تشکر
    9
    تشکر شده 16 بار در 6 پست

    پیش فرض

    سلام
    یعنی چی دریافت به درستی انجام نمیشه؟؟؟
    باودریت میکروت رو بزار 9600 بعد با برنامه ی 1768 که گذاشتم چک کن ببین چی میشه!

  6. #5
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    در avr برای دریافت حتما از وقفه استفاده بشه چون بافر نداره. ولی در arm چون واحد سریال بافر داره، همیشه وقفه لازم نیست ولی باشه بهتره

  7. #6
    عضو جدید
    تاریخ عضویت
    Jul 2015
    نوشته ها
    7
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

    یعنی عمل uart انجام میشه و atmega8 هم دریافت رو انجام میده ولی مثلا عدد 0x10 رو 0x80 دریافت میکنه. تنظیمات دو تا میکرو کاملا یکسان هست.
    در مورد باودریت در سمت lpc1768 یه مقدار خطا داریم. مثلا برای باودریت 4800 مقدار 4807 بدست میاد و برای باودریت 9600 مقدار 9868 بدست میاد که از 1.1% خطا که در دیتا شیت ذکر شده بیشتره!
    حالا من برای باودریت کمتر از 9600 که از 1.1% خطا کمتر داریم هم امتحان کردم که نتیجه خیلی تغییری نمیکنه.

موضوعات مشابه

  1. uart در lpc1768
    توسط majid97 در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 4
    آخرين نوشته: 28-12-2013, 12:22
  2. خواندنايه در atmega 32
    توسط saate777 در انجمن AVR
    پاسخ: 11
    آخرين نوشته: 07-09-2013, 13:26
  3. خواندنايه در atmega 32
    توسط saate777 در انجمن AVR
    پاسخ: 2
    آخرين نوشته: 13-07-2013, 01:23
  4. ارتباط ماژول GPRS با atmega
    توسط dobidob در انجمن سایر موارد مرتبط با میکرو کنترلرها
    پاسخ: 7
    آخرين نوشته: 05-12-2011, 21:44
  5. َعدم وجود atmega
    توسط saeidhp در انجمن سایر موارد مرتبط با میکرو کنترلرها
    پاسخ: 8
    آخرين نوشته: 02-05-2011, 23:13

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

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