2013-08-22 66 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。愛特梅爾社區充滿活力,樂於助人。