我和我的一些朋友花了很多时间,但经过数小时的搜索、尝试和“调试”,我们能够解决问题。我希望这可以帮助遇到同样问题的其他人解决它。
问题是 ISP,在我的例子中是 USB-Prog 3.3,对我的 Atmega8来说太快了,它只以 1MHz 的速度运行。所以有两种可能的解决方案:
我在某处发红,ISP 的速度不得超过底层微控制器速度的 1/4。
以下几行节省了我的一天:
它将 Atmega8 设置为 8MHz,并给它 64ms 来启动该频率。
avrdude -p atmega8 -P usb -c avrispv2 -U lfuse:w:0xe4:m -U hfuse:w:0xd9:m -B 22
这是 avrdude 联机帮助页的摘录:
`-B BITCLOCK'
Specify the bit clock period for the JTAG interface or the ISP
clock (JTAG ICE only). The value is a floating-point number in
microseconds. The default value of the JTAG ICE results in about
1 microsecond bit clock period, suitable for target MCUs running
at 4 MHz clock and above. Unlike certain parameters in the
STK500, the JTAG ICE resets all its parameters to default values
when the programming software signs off from the ICE, so for MCUs
running at lower clock speeds, this parameter must be specified on
the command-line.
此外,我想推荐适用于 Android 的AVR Fuse Calculator - 它似乎对微控制器程序员来说是一个非常有用的工具。