RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Giao tiếp UART với dsPIC30F

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • cindar
    Nhập môn đệ tử
    • Nov 2010
    • 2

    #1

    Giao tiếp UART với dsPIC30F

    Hiện đang làm giao tiếp PC với dsPIC30F nhưng gặp một số vướng mắc sau:
    kí tự nhận đuợc trên máy tính toàn là các kí tự @%$#&
    em đã config baud trên máy tính là 9600,terminal là 9600,dsPIC cũng 9600
    em đã mô phỏng với MPLAB SIM chạy rất tốt nhưng nạp vào kit thì toàn ra chữ tượng hình

    Code:
    //---------------------------------//
    //----------include file-----------//
    //---------------------------------//
    #include "p30F4011.h"
    #include <uart.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    //---------------------------------//
    //--------- config bits -----------//
    //---------------------------------//
    	_FOSC(CSW_FSCM_OFF & FRC_PLL4);				//32MHZ
    	_FWDT(WDT_OFF);								//
    	_FBORPOR(PBOR_OFF & MCLR_EN);				//
    	_FGS(CODE_PROT_OFF);						//
    	
    
    #define	Fcy	8000000								//Tan so thuc thi lenh
    #define baudvalue	9600
    #define baudcalc (Fcy/baudvalue)/16-1
    #define _ISR_PSV __attribute__((interrupt, auto_psv))
    
    /*** khai bao bien cho UART ***/  
    unsigned int U1MODEvalue;/* Holds the value of uart config reg */
    unsigned int U1STAvalue; /* Holds the information regarding uart TX & RX interrupt modes */  
    char Txdata[] = {'M','i','c','r','o','c','h','i','p',' ','I','C','D','2','\0'};
    
    void init_uart(void);
    
    int main(void)
    {
    	init_uart();
    	for(;;)
    	{
    		while(BusyUART1());
    		putsUART1((unsigned int*)Txdata);
    	}
    }
    
    void init_uart(void)
    {
    /* Turn off UART1module */
        CloseUART1();
    /* Configure uart1 receive and transmit interrupt */
        ConfigIntUART1(UART_RX_INT_EN & UART_RX_INT_PR6 & 
                       UART_TX_INT_DIS & UART_TX_INT_PR2);
    /* Configure UART1 module to transmit 8 bit data with one stopbit  */
        U1MODEvalue = UART_EN & UART_IDLE_CON & 
                      UART_DIS_WAKE & UART_DIS_LOOPBACK  &
                      UART_DIS_ABAUD & UART_NO_PAR_8BIT  &
                      UART_1STOPBIT;
        U1STAvalue  = UART_INT_TX_BUF_EMPTY  &  
                      UART_TX_PIN_NORMAL &
                      UART_TX_ENABLE & UART_INT_RX_3_4_FUL &
                      UART_ADR_DETECT_DIS &
                      UART_RX_OVERRUN_CLEAR;
        OpenUART1(U1MODEvalue, U1STAvalue, baudcalc);
        return;
    }
    void _ISR_PSV _U1RXInterrupt(void)
    {
    	//code here
    	IFS0bits.U1RXIF = 0;/* xoa co ngat */
    }
    ban đầu em chạy với thạch anh 10MHZ PPLx8,ko đuợc nên sau đó chuyển qua FRC_PPL4
    em không hiểu sai chỗ nào nhưng nó chạy loạn xạ quá.
    anh nào có kinh nghiệm làm về cái này giúp em với
    Last edited by cindar; 25-10-2011, 03:56 PM.
  • cindar
    Nhập môn đệ tử
    • Nov 2010
    • 2

    #2
    có vẻ như ít người quan tâm tới dsPIC nhỉ.
    em đã tự giải quyết được.
    Cảm ơn mọi người

    Comment

    • baolvq
      Nhập môn đệ tử
      • Jul 2012
      • 4

      #3
      Bạn có thể gửi đề tài về dspic cho mình tham khảo với được không

      tks!

      Comment

      • nangvang
        Đệ tử 1 túi
        • Nov 2010
        • 23

        #4
        mình nghĩ bạn nên xem lại phần cứng đi. e rằng bạn đang bị sai ở kết nối chân TX và RX với pc. thử đảo thứ tự 2 chân đó đi xem

        Comment

        • thanh_binh91
          Nhập môn đệ tử
          • May 2011
          • 1

          #5
          chịu thôi khó lắm

          Comment

          • chung_ga
            Nhập môn đệ tử
            • Dec 2012
            • 2

            #6
            em cũng mới tìm hiểu về dspic ạ, bác nào đi trước, biết rồi chỉ cho em với, bắt đầu là đọc tín hiệu cảm biến và hiển thị trên máy tính ạ

            Comment

            • lamcdt
              Nhập môn đệ tử
              • Aug 2012
              • 4

              #7
              Mấy a ơi, cứu em với: Em đang giao tiếp giữa con dspic30f4011 bằng UART nhưng khi cho them timer 5 vào con nhận thì nó không thể nảo nhận dữ liệu được nữa. Nhờ mấy sư phụ giúp em với. em làm cả tuần rùi mà không được. Haizzz

              Comment

              Working...