我是avr的新手。不能编程

时间:2014-07-10 19:12:42

标签: microcontroller avr atmega16

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

但是我无法用极端刻录机对它进行编程.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 个答案:

答案 0 :(得分:1)

你为什么要“全部阅读”?我认为你的目的是为你的设备编程而不是读出它的记忆。

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

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

  • 您的程序员的OS驱动程序未正确安装/您的 操作系统无法正确识别
  • 设备的ISP接口未正确连接到您的Programmer
    • MISO - MISO,MOSI - MOSI,CLK - CLK,GND - GND,RESET - RESET,VCC - VCC
    • 重新检查。也许你的接线方案是从连接器上的错误/另一侧看(插头前端与插头后部与插头顶部)。
  • VCC与编程器的连接并不意味着它将为设备供电。这是程序员的依赖。一些(这可能是更好设计的)仅使用VCC连接来确定目标电压,以正确设置数据信号线。因此,您可以单独为设备供电
  • 程序员速度设置为高。新的AVR设置为1Mhz,这将降低更高的ISP数据速率。
  • 您意外地将AVR保险丝位错误地复制,因此无法再访问它。你可能搞乱了时钟设置。

答案 1 :(得分:1)

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

虽然您按Read all而不是ProgramWrite或者您的编程程序会有什么问题很奇怪,但考虑到问题,这个错误会以任何一种方式出现。< / p>

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

enter image description here

如果结果表明您的设备已经上电,那么您需要检查SPI连接,因为AVR是通过SPI端口编程的。如果连接正常,您可以使用逻辑分析仪检查它们是否实际发送数据。如果他们没有发送数据,那么您的实际程序员就会遇到问题

如果事实证明那些是好的和功能性的,那么我敢打赌你的Atmega16有缺陷或伪造。

答案 2 :(得分:1)

问题不在编码/编译过程中。 你得到的错误表明程序员已被识别并且它正在工作,这会给你留下以下可能的问题:

  1. 程序员和芯片之间的连接,

    • 6线:VCC-> VCC,GND-> GND,CLK-> CLK,RESET-> RESET, MOSI-> MOSI,MISO-> MOISO 。 如果仍然无法正常工作,请尝试倒转最后两根电线。
  2. 之前已经对芯片进行了编程,并且在没有外部晶体的情况下无法运行。

    • 使用两个22pF陶瓷电容将晶体连接到XTAL引脚,尝试不同的晶振值:8,4,1或更低。
  3. 如果可以更改程序员速度,则将其设置为最慢。 &#34; Usbasp有慢速设备编程跳线,检查程序员指南&#34;。

  4. 尝试使用不同的芯片。

答案 3 :(得分:1)

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