0

寻求一点帮助。我熟悉 PIC 微控制器,但从未使用过 Atmel。我需要在工作项目中使用 ATMEGA128,所以最近几天我一直在 Atmel Studio 6 中玩耍。

但是我遇到了一个问题,我什至无法让 LED 闪烁。

我正在使用 STK500 和 STK501 开发板以及 JTAGICE_MKII USB 调试器/编程器。

ATMEGA128 芯片是 TQFP 封装,位于 STK501 板上的插槽中。

我能够编程/读取芯片没有问题,并且我的代码构建没有错误(除了当我尝试使用 delay.h 库中使用的延迟函数时 - 但这是另一个问题)。

现在我只关心让 IO 工作。我有一个 2 位 PORTD 的跳线连接到 STK500 板上的 2 个 LED。

我在代码中所做的只是使用 DDRx 端口设置端口方向,然后将所有 PORTD 引脚设置为 0。LED 保持打开状态。

当我处于调试模式并打开监视窗口时,我可以破解代码并且监视窗口显示 PORTD 位确实全为 0,但 LED 仍然亮着。

到目前为止,我讨厌爱特梅尔。:)

有任何想法吗?谢谢

4

3 回答 3

0

你读过 STK500 的文档吗?LED 很可能被驱动为低电平有效。

于 2013-08-28T10:59:58.463 回答
0

您是否尝试将它们设置为逻辑 1?LED电路通常通过限流电阻将LED连接到Vcc,这意味着输出端口必须为0才能打开LED。

如果您将其设置为 1 并且 LED 熄灭,那么这将告诉您这是一个“低电平有效”信号,您可以相应地反转您的逻辑。

于 2013-08-28T10:33:12.433 回答
0

有两个步骤要遵循。首先设置引脚的“方向”,因为它们可以用作输入或输出。要使 D 寄存器引脚输出引脚:

DDRD = 0xFF;

这会将 D 寄存器上的所有引脚设置为输出引脚。先做这个。然后像这样的代码:

PORTD != 0x01;

将 D0 引脚设置为高电平。和像这样的代码

PORTD ^= 0x01; 

将切换引脚。

有关更多信息,请参阅本教程或访问此社区。Atmel 社区充满活力且乐于助人。

于 2017-05-20T20:20:49.087 回答