標(biāo)題: 最基本的AVR串口通訊調(diào)試有問(wèn)題,請(qǐng)大神賜教 [打印本頁(yè)]

作者: PythonS    時(shí)間: 2018-11-2 17:08
標(biāo)題: 最基本的AVR串口通訊調(diào)試有問(wèn)題,請(qǐng)大神賜教
使用的是ATMega644PA,晶振12Mhz,熔絲位設(shè)置為如下圖
在串口通訊里顯示的數(shù)據(jù)有問(wèn)題,不知道為什么,請(qǐng)大家?guī)臀铱纯?br />
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

//常量聲明
#define BAUD 9600
#define FOSC  12000000
//全局變量聲明
unsigned char Transmit

//函數(shù)聲明
void Port_Init(void);   //端口初始化配置
void Usart_Init(void);  //USART寄存器設(shè)置
void Usart_PutChar(unsigned char cTXData);  //字節(jié)發(fā)送函數(shù)


int main(void)
{
    Port_Init();
    Usart_Init();

    Transmit = 0x12;

    Usart_PutChar(Transmit);

    sei();          //使能全局中斷

    while(1)
    {


    }
}

//端口狀態(tài)初始化設(shè)置函數(shù)
void Port_Init()
{
    PORTD = 0X00;          //USART的發(fā)送接收端口分別為PD0和PD1
    DDRD |= (1 << PD1);   //PD0為接收端口,置為輸入口;PD1為發(fā)送端口,置為輸出口
}

//USART寄存器配置函數(shù)
void Usart_Init()
{

    UCSR0B = 0x00;//先關(guān)閉串口,因?yàn)橐O(shè)置波特率
      UCSR0A = 0X00;
      unsigned int UBRR;
    UBRR = FOSC/16/BAUD-1;
    UBRR0H = (uint8_t)(UBRR>>8);
    UBRR0L = (uint8_t)(UBRR);  //設(shè)置波特率

    UCSR0B |= (1 << TXEN0);    //發(fā)送使能
    UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00);  //異步,數(shù)據(jù)格式8,N,1


}


//字節(jié)發(fā)送函數(shù)
void Usart_PutChar(unsigned char cTXData)
{
    while( !(UCSR0A & (1 << UDRE0)) );  //只有數(shù)據(jù)寄存器為空時(shí)才能發(fā)送數(shù)據(jù)
    UDR0 = cTXData;
}



QQ截圖20181102170726.png (29.6 KB, 下載次數(shù): 54)

QQ截圖20181102170726.png

QQ截圖20181102170735.png (55.41 KB, 下載次數(shù): 61)

QQ截圖20181102170735.png

作者: PythonS    時(shí)間: 2018-11-5 08:34
不知道是波特率部分還是晶振部分的問(wèn)題?
還有我的USART部分的寄存器按照了datasheet編寫,應(yīng)該沒有問(wèn)題

作者: PythonS    時(shí)間: 2018-11-5 09:47
以上程序在串口助手1200的波特率設(shè)置下可以運(yùn)行,不知道為什么,是我的熔絲位設(shè)置有問(wèn)題嗎
作者: xbook_ben    時(shí)間: 2018-11-5 10:10
沒用過(guò)ATMega644PA,不過(guò)推薦樓主到Atmel的START上去看看,START實(shí)際是Atmel的一個(gè)在線生成驅(qū)動(dòng)庫(kù),基本包含了Atmel的所有芯片,只需要選擇相應(yīng)的芯片,簡(jiǎn)單配置一下,就可以生成相應(yīng)的驅(qū)動(dòng)代碼,網(wǎng)址:http://start.atmel.com/。
作者: PythonS    時(shí)間: 2018-11-7 11:24
xbook_ben 發(fā)表于 2018-11-5 10:10
沒用過(guò)ATMega644PA,不過(guò)推薦樓主到Atmel的START上去看看,START實(shí)際是Atmel的一個(gè)在線生成驅(qū)動(dòng)庫(kù),基本包 ...

多謝回復(fù),解決了問(wèn)題,是熔絲位設(shè)置的問(wèn)題,現(xiàn)在可以正常收發(fā)了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1