2016-05-08 3 views
0

私はAtmelスタジオ環境でも開発している組み込みシステムでは新しく、 私は32MHzシステムclkでAtxmega128a1を使用しています。 私は(TB)タイマー、ASF上のUSARTドライバを定義し、main.cファイル内に以下のコードを書いて、最終的にすべてのタイマー割り込みオーバーフロー(0.05s)、 でPCの思考のいくつかの文字をPCに送信しようとしています。私はエラーなしでそれをデバッグしましたが、シリアルポート経由で何かを送信することに成功しませんでした。 誰でも私を助けたり、私に助言を与えることができます。アトメルスタジオXmegaタイマー/ USART

#include <asf.h> 

    volatile int flag=0; 
    uint8_t received_byte; 
    uint8_t tx_buf[] = "\n\rHello AVR world ! : "; 
    uint8_t tx_length = 22; 
    uint8_t i; 

    static void my_callback(void) 
    { 

     flag =1; 
    } 

    int main (void) 
    { 
/* Insert system clock initialization code here (sysclk_init()). */ 

    board_init(); 
    sysclk_init(); 
    static usart_rs232_options_t USART_SERIAL_OPTIONS = { 
      .baudrate = 9600, 
      .charlength = 8, 
      .paritytype = USART_PMODE_DISABLED_gc, 
      .stopbits = false 
    }; 
    usart_init_rs232(& USARTF0, &USART_SERIAL_OPTIONS); 


//usart_set_baudrate_precalculated(& USARTF0,0x00017700,0x01E84800); 

/* Insert application code here, after the board has been initialized. */ 
    if (flag==1) 
    { 

    //received_byte = usart_getchar(& USARTF0); 
    //if (received_byte == '\r') { 
      for (i = 0; i < tx_length; i++) 
      { 
      usart_putchar(& USARTF0, tx_buf[i]); 
      } 
    } 
     else 
     usart_putchar(& USARTF0, received_byte); 
      flag=0; 
    } 

答えて

0

私はあなたが関連するシステム・クロック・モジュールの初期化が欠けていると信じて:問題は、出力としてポートF上のTXピンをdefinningにあったREV1

sysclk_enable_module(SYSCLK_PORT_F, PR_USART0_bm); 
+0

はあなたに感謝: PORTF.DIRSET = PIN3_bm ; –

+0

@mahermansour:ああ、確かに別の落とし穴だよ。 –