1

我在下面为闪光灯编写了代码!在 CodeVision 作为我的第一个程序!与 ATmega16。

但我不能用extreme burner 对其进行编程。CodeVision 编译它时出现0 个错误和0 个警告。Extreme 刻录机成功加载 .hex 文件。但是当我点击Read all按钮时,我无法继续。我看到这个报告:powering on => power on failed => can not communicate with target chip。最后我收到了这条消息:No data read!

我不知道什么是正确的保险丝位的值以及如何正确设置它们。

#include <mega16.h>
#include <delay.h>
void main(void)
{
  PORTA=0x00;
  DDRA=0x01;
  while (1)
  {
    PORTA.0 = 1;
    delay_ms(200);
    PORTA.0 = 0;
    delay_ms(500);
  }
}
4

4 回答 4

1

为什么要“阅读全部”?我认为您的意图是对您的设备进行编程,而不是读出它的记忆。

但是您真正的问题是与设备的连接无法正常工作。查看您的编程适配器的手册或教程,了解如何使用它。

以下(不完整)列表可能包含最常见的错误:

  • 您的程序员的操作系统驱动程序没有正确安装/您的操作系统没有正确识别它
  • 设备的 ISP 接口未正确连接到您的编程器
    • MISO - MISO, MOSI - MOSI, CLK - CLK, GND - GND, RESET - RESET, VCC - VCC
    • 重新检查它。也许您的接线方案是从连接器的错误/另一侧(插头正面与插头背面与针头顶部)看的。
  • 与编程器的 VCC 连接并不意味着它将为设备供电。这是程序员的依赖。有些(这可能是设计更好的)仅使用 VCC 连接来确定目标电压水平以正确设置数据信号线。因此,您可能需要单独为设备供电
  • 程序员速度设置为高。新的 AVR 设置为 1Mhz,这对于更高的 ISP 数据速率会变慢。
  • 您不小心错误地配置了 AVR 保险丝位,因此无法再访问它。您可能弄乱了时钟设置。
于 2014-07-11T12:00:38.920 回答
1

看起来您的问题在于 ATmega16 根本没有通电。请记住,您的程序员专门对目标施加电源,然后您需要自己为其供电。这可能是许多廉价开发板的问题。

虽然你按下Read all而不是ProgramWrite你的编程程序会有什么很奇怪,但考虑到这个问题,这个错误会以任何一种方式弹出。

要确定它是否通电,通常开发板会有一个电源 LED,但如果你没有那种指示,请用万用表检查 atmega16 的 VCC 和 GND 引脚。从下图中,您可以看到您可以检查引脚 10 和 11 处的这些引脚,但我建议您检查引脚 10 和 31,以避免意外将它们短路在一起。

在此处输入图像描述

如果事实证明您的设备已通电,那么您确实需要检查您的 SPI 连接,因为 AVR 是通过 SPI 端口编程的。如果它们连接得很好,您可以使用逻辑分析仪检查它们是否真的在发送数据。如果他们没有发送数据,那么你的实际程序员有问题

如果事实证明这些都很好并且功能正常,那么我敢打赌你的 Atmega16 是有缺陷的或假冒的。

于 2014-07-14T03:39:51.517 回答
1

问题不在于编码/编译过程。您收到的错误表明该程序员已被识别并且它正在工作,这会给您带来以下可能的问题:

  1. 编程器和芯片之间的连接,

    • 6根线:VCC->VCC,GND->GND,CLK->CLK,RESET->RESET,MOSI->MOSI,MISO->MOISO。如果仍然无法正常工作,请尝试反转最后两根电线。
  2. 该芯片之前已编程,没有外部晶体将无法运行。

    • 用两个 22pF 陶瓷电容器将晶体连接到 XTAL 引脚,尝试不同的晶体值:8、4、1 或更小。
  3. 如果您可以更改程序员的速度,请将其设置为最慢。“Usbasp 有一个用于慢速设备编程的跳线,请查看您的程序员指南”。

  4. 如果可用,请尝试不同的芯片。

于 2014-07-20T17:14:25.653 回答
1

新芯片需要慢速编程。usbasp中有模式可以做到这一点。然后使用新的fusebit设置并用慢速写入它们。然后你就可以正常使用了

于 2016-10-01T13:30:09.120 回答