2013-08-22 69 views
0

寻找一点帮助。 我熟悉PIC单片机,但从未使用过Atmel。 我需要在工作中使用ATMEGA128,因此最近几天我一直在Atmel Studio 6中玩耍。First Atmel Project

我有一个问题,但我什至不能让LED闪烁。

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

ATMEGA128芯片是STK501板上的插座中的TQFP封装。

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

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

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

当我处于调试模式并且打开了监视窗口时,我可以打开代码,并且监视窗口显示PORTD位确实全部为0,但LED保持点亮。

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

任何想法? 谢谢

回答

0

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

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

0

您是否阅读过STK500的文档?很可能,LED被驱动为低电平。

0

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

DDRD = 0xFF; 

这将设置D寄存器中的所有引脚为输出引脚。先做这件事。然后代码如下:

PORTD != 0x01; 

将设置D0引脚为高电平。而代码像

PORTD ^= 0x01; 

将切换引脚。

请参阅this tutorial了解更多信息或访问this community。爱特梅尔社区充满活力,乐于助人。