User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 6 của 6

Chủ đề: * GIAO TIẾP RS232 Từ MATLAB vdk AVR !HELP HELP

  1. #1
    svBK's Newbie
    Tham gia ngày
    Jan 2008
    Bài gửi
    12

    Mặc định * GIAO TIẾP RS232 Từ MATLAB vdk AVR !HELP HELP

    Lời đầu cho em xin gửi lời chúc sứcc khỏe tới anh em trong diễn đàn!
    Em đang làm đồ án tốt nghiệp về giao tiếp RS232 vavifdk atmega16 với nội dung như sau:[LIST]Từ matlab xuất một ký tự gửi tớ cổng com kết nối với vdk, vi dieu khiên đọc ký tự này rồi xử lý các công việc tiếp theo.

    Phần kết nối em đã làm được và đang chạy thử trên proteus, nhưng trong quá trình truyền dũ liệu từ matlab xuống vdk (chạy thử trên proteus) thì liên tục báo lỗi error framing mà em không biết tại sao, em đã thiết lập cỏng com trên matlab và uast giống hết nhau baudrate , bitstop, noe parity mà vẫn lỗi .mong các cao thủ chỉ giúp

    Đây là code trên codevisionavr

    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.03.4 Standard
    Automatic Program Generator
    © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 1/5/2011
    Author :
    Company :
    Comments:


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

    #include <mega16.h>

    #define RXB8 1
    #define TXB8 0
    #define UPE 2
    #define OVR 3
    #define FE 4
    #define UDRE 5
    #define RXC 7

    #define FRAMING_ERROR (1<<FE)
    #define PARITY_ERROR (1<<UPE)
    #define DATA_OVERRUN (1<<OVR)
    #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;
    if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
    {
    rx_buffer[rx_wr_index]=data;
    if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
    if (++rx_counter == RX_BUFFER_SIZE)
    {
    rx_counter=0;
    rx_buffer_overflow=1;
    };
    };
    }

    #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_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
    #asm("cli")
    --rx_counter;
    #asm("sei")
    return data;
    }
    #pragma used-
    #endif

    // Standard Input/Output functions
    #include <stdio.h>
    char k;
    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here

    // Reset Source checking
    if (MCUCSR & 1)
    {
    // Power-on Reset
    MCUCSR&=0xE0;
    // Place your code here

    }
    else if (MCUCSR & 2)
    {
    // External Reset
    MCUCSR&=0xE0;
    // Place your code here

    }
    else if (MCUCSR & 4)
    {
    // Brown-Out Reset
    MCUCSR&=0xE0;
    // Place your code here

    }
    else if (MCUCSR & 8)
    {
    // Watchdog Reset
    MCUCSR&=0xE0;
    // Place your code here

    }
    else if (MCUCSR & 0x10)
    {
    // JTAG Reset
    MCUCSR&=0xE0;
    // Place your code here

    };

    // Input/Output Ports initialization
    // Port A 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
    PORTA=0x00;
    DDRA=0x00;

    // 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
    // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0
    PORTC=0x00;
    DDRC=0x0F;

    // 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=P State0=P
    PORTD=0x03;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 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: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=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: Off
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=0x00;
    UCSRB=0x90;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x33;

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

    // Global enable interrupts
    #asm("sei")

    while (1)
    {

    k=getchar();
    if(k=='a'){PORTC.0=PORTC.1=PORTC.2=PORTC.3=0;}
    // Place your code here

    };
    }


    còn đây là code trên matlab

    s = ******('COM3');
    set (s, 'Baudrate',9600, 'Stopbits',1, 'Databits',8, 'Parity','none','outputBuffersize',512,'inputbuffe rsize',512);
    fopen(s);
    %do something
    fprintf(s,'%s','a');
    pause(50)
    fclose(s);
    delete(s);
    clear s;


    chạy trên proteus bị lỗi
    Đính kèm thu nhỏ Đính kèm thu nhỏ 1-6-2011 3-56-35 PM.jpg  

  2. #2
    Giảng Viên Avatar của nguoidanduong06
    Tham gia ngày
    Oct 2006
    Bài gửi
    364

    Mặc định Re: * GIAO TIẾP RS232 Từ MATLAB vdk AVR !HELP HELP

    Hi,

    bạn thử truyền 1 chuỗi dài hơn xem sao

    Rgs,

  3. #3
    svBK's Newbie
    Tham gia ngày
    Jul 2010
    Bài gửi
    5

    Mặc định Re: * GIAO TIẾP RS232 Từ MATLAB vdk AVR !HELP HELP

    Bạn làm thử theo code của mình nhé
    Tập tin đính kèm

  4. #4
    HUT's Student
    Tham gia ngày
    Sep 2009
    Bài gửi
    144

    Mặc định Re: * GIAO TIẾP RS232 Từ MATLAB vdk AVR !HELP HELP

    Quote Nguyên văn bởi alex_1912 Xem bài viết
    Bạn làm thử theo code của mình nhé
    Bạn này là bạn nào thế? Có phải Dũng ko? Mình nhìn thấy có code của Dũng!

  5. #5
    svBK's Newbie
    Tham gia ngày
    Jul 2010
    Bài gửi
    5

    Mặc định Re: * GIAO TIẾP RS232 Từ MATLAB vdk AVR !HELP HELP

    Quote Nguyên văn bởi storm21 Xem bài viết
    Bạn này là bạn nào thế? Có phải Dũng ko? Mình nhìn thấy có code của Dũng!
    ^^, mình vào bằng nick của em trai, quên mất pass của nick cũ rồi. Bạn là ai thế?

  6. #6
    HUT's Student
    Tham gia ngày
    Sep 2009
    Bài gửi
    144

    Mặc định Re: * GIAO TIẾP RS232 Từ MATLAB vdk AVR !HELP HELP

    Quote Nguyên văn bởi alex_1912 Xem bài viết
    ^^, mình vào bằng nick của em trai, quên mất pass của nick cũ rồi. Bạn là ai thế?
    Điệu cơ 2 đây
    Làm 1 bài toturial về cái này đi Dũng ơi!

+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Chủ đề tương tự

  1. Kinh nghiệm học tiếng Anh giao tiếp!!!!
    Gửi bởi thuy2412 trong mục English
    Trả lời: 0
    Bài cuối: 22-11-2010, 07:07 PM
  2. Giới Thiệu Cc Bản Giao Hởng
    Gửi bởi Jun trong mục Jazz - Soul - Other
    Trả lời: 3
    Bài cuối: 28-01-2003, 11:12 PM

Từ khóa (Tag) của chủ đề này

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube