AVR ATMEGA328p波特率误差/无串行连接

时间:2017-11-18 16:54:41

标签: c serial-port avr

我无法运行串行连接来测试我的AVR芯片。我目前认为这是因为F_CPU值,但我不是100%肯定。将程序加载到芯片上时,会出现为import Ember from 'ember'; export default Ember.Component.extend({ didRender() { console.log('"this" on didRender():'); console.log(this.$()); Ember.$('body').click(this.exampleMethod).click(); }, exampleMethod() { console.log('"this" on exampleMethod():'); // console.log(this.$()); This doesn't work console.log(Ember.$(this)); }, }); 定义的手动错误。我现在不知道从哪里开始发现错误。连接时,我的串行终端的控制台没有显示任何输出。

我创建了一个我最初加载的配置文件:

configGl​​obal.h

#error Systematischer Fehler der Baudrate größer 1%

USART.c

#ifndef F_CPU
#warning "F_CPU not yet defined, and will be set to 1MHz"
#define F_CPU 1000000UL
#endif

的main.c

#include "configGlobal.h"
#include <avr/io.h>
#include "USART.h"

#define BAUD 9600UL
#define BAUDRATE ((F_CPU) / (BAUD * 8UL) - 1) // set baud rate value for UBRR

void initUSART(void) {
    // Requires BAUD
    UBRR0H = (BAUDRATE >> 8) // Shift regisgter right by 8 bits to get upper 8 bits
    UBRR0L = BAUDRATE;
    UCSR0A |= (1 << U2X0);

    // Enable USART
    UCSR0B = (1 << TXEN0) | (1 << RXEN0); // Activate TX RX
    UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); // 8 data bits, 1 stop bit
}

AVRDUDE的输出

#include "configGlobal.h"
#include <avr/io.h>
#include <util/delay.h>
#include "USART.h"

int main(void) {

  char serialCharacter;

  // --- INITS --- //
  DDRB = 0xff;

  // Set up LED for output
  initUSART();
  printString("Hello World!\r\n");

  return 0;
}

1 个答案:

答案 0 :(得分:0)

编译错误是由于缺少&#34 ;;&#34;在USART.c(第10行)。 如果您不确定可用的波特率,可以检查波特率兼容性,例如: http://wormfood.net/avrbaudcalc.php

请记住,使用AVR内部RC振荡器作为时钟源可能会导致UART不稳定,因为频率不完全是8MHz(或CKDIV8 = 1时为1MHz)。

avrdude-log的底部表明设备设置不正确。你确定ATmega328是连接而不是ATmega328P吗?