ผมใส่ code ตามข้างล่างนี้ แล้วปรากฏว่า ค่าที่ออกมาทาง hyperterminal นั้นแสดงค่าไม่ถูกครับ ผมให้แสดง "1" แต่กลับออก ":"
ปล.ผมใช้ MPLAB X IDE v2.05 , c30 compiler 3.31 ,PICkit2 ในการเขียนครับ
[open_code]
#include <p30f4011.h>
#include "stdio.h"
#include "uart.h"
_FOSC(CSW_FSCM_OFF & XT_PLL4);
_FWDT(WDT_OFF);
#define Fcy 7372800.0
#define BAUD_RATE 115200.0
#define BAUD_RATE_GEN (Fcy/(16.0*BAUD_RATE))-1
char ch;
void init_uart()
{
unsigned int configU1MODE, configU1STA, BaudRate;
CloseUART1();
configU1MODE = UART_EN &UART_IDLE_CON& UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT;
configU1STA = UART_INT_TX_BUF_EMPTY & UART_TX_PIN_NORMAL & UART_INT_RX_CHAR & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR;
BaudRate = BAUD_RATE_GEN;
OpenUART1 (configU1MODE, configU1STA, BaudRate);
}
void Uart1_PrintStr(unsigned char *str_uart)
{
putsUART1((unsigned int *)str_uart);
while(BusyUART1());
}
void _ISR _U1RXInterrupt(void)
{
_U1RXIF = 0;
while(DataRdyUART1())
ch=ReadUART1();
}
void _ISR _U1TXInterrupt(void)
{
_U1TXIF = 0;
}
void delay(unsigned long int count1)
{
while(count1 > 0)
count1--;
}
int main(void)
{
init_uart();
ConfigIntUART1(UART_RX_INT_EN & UART_TX_INT_EN & UART_RX_INT_PR2 & UART_TX_INT_PR3);
while(1)
{
Uart1_PrintStr("1");
}
return 0;
}
[/close_code]
สอบถามเรื่อง dsPIC30f4011 เกี่ยวกับ UART แสดงค่าไม่ถูกต้องครับ
ปล.ผมใช้ MPLAB X IDE v2.05 , c30 compiler 3.31 ,PICkit2 ในการเขียนครับ
[open_code]
#include <p30f4011.h>
#include "stdio.h"
#include "uart.h"
_FOSC(CSW_FSCM_OFF & XT_PLL4);
_FWDT(WDT_OFF);
#define Fcy 7372800.0
#define BAUD_RATE 115200.0
#define BAUD_RATE_GEN (Fcy/(16.0*BAUD_RATE))-1
char ch;
void init_uart()
{
unsigned int configU1MODE, configU1STA, BaudRate;
CloseUART1();
configU1MODE = UART_EN &UART_IDLE_CON& UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT;
configU1STA = UART_INT_TX_BUF_EMPTY & UART_TX_PIN_NORMAL & UART_INT_RX_CHAR & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR;
BaudRate = BAUD_RATE_GEN;
OpenUART1 (configU1MODE, configU1STA, BaudRate);
}
void Uart1_PrintStr(unsigned char *str_uart)
{
putsUART1((unsigned int *)str_uart);
while(BusyUART1());
}
void _ISR _U1RXInterrupt(void)
{
_U1RXIF = 0;
while(DataRdyUART1())
ch=ReadUART1();
}
void _ISR _U1TXInterrupt(void)
{
_U1TXIF = 0;
}
void delay(unsigned long int count1)
{
while(count1 > 0)
count1--;
}
int main(void)
{
init_uart();
ConfigIntUART1(UART_RX_INT_EN & UART_TX_INT_EN & UART_RX_INT_PR2 & UART_TX_INT_PR3);
while(1)
{
Uart1_PrintStr("1");
}
return 0;
}
[/close_code]