Atmega @ 8MHZ延迟8倍到快

时间:2015-08-13 20:30:27

标签: c avr atmega avr-gcc avrdude

我对Atmegas蚂蚁AVR编程非常陌生,所以我希望你能原谅我这个noob问题:我有这个代码,它在1MHZ完美运行,但如果我将Atmega融合到内部8 MHZ同时改变F_CPU频率对于8 MHZ来说,LED是快速闪存的方式,似乎C编译器忽略了我的新频率。有人能帮助我吗?)?

#define F_CPU 8000000UL
#include <util/delay.h>
#include <avr/io.h>

int main(void)
{
  while(1)
  {
    //TODO:: Please write your application code
    /* set PC0 on PORTC (digital high) and delay for 500mS */
    PORTD &= ~_BV(PD5);
    _delay_ms(500);

    /*  PC0 on PORTC (digital 0) and delay for 500mS */
    PORTD |= _BV(PD5);
    _delay_ms(500);
  }
}

它是用这些命令编译的:

avr-gcc -g -Os -mmcu=atmega8  -c test.c 
avr-gcc -g -mmcu=atmega8 -dF_CPU=8000000UL -o flash.elf test.o
avr-objcopy -j .text -j .data -O ihex flash.elf flash.hex

非常感谢您的时间和帮助;) Delay.h:http://pastebin.com/wzppfma3

1 个答案:

答案 0 :(得分:0)

你应该改变AVR的内部保险丝工作在8MHz,仅在代码上写入是不够的,将lfuse设置为0xE4使AVR工作在8MHz