CC2420通信了

     2008.03.2-----2008.03.3

    莫名的發現我這128的實驗板的按鍵很不正常,算了,先不用它了,其實那鍵盤挺簡單,就是有時候是失靈了.不知道是我不程序不對呢,還是本來它們就有點不守規矩,讓我們費那麼大的力氣去弄.

    CC2420+mega128的範例CC2420DBK Examples Release在此下載(點擊即可).裏面一些範例,你都可以去實現,

我做的那個只是要它能通信而已,鍵盤我都去掉了,直接給用一些變量替代它了,如果你有按鍵,那就不需要動什麼了,只是覺得裏面按鍵只檢察一點PIN的電平,實在不是很規範.

    其實你只需要修改rf_blink_led.c文件就可以了,其他不用動.我修改如下,

  

    mid_Key = 1 ;
    up_Key 
= 2 ;
    
// Wait for the user to select node address, and initialize for basic RF operation
    while (TRUE) {
        
//if (JOYSTICK_CENTER_PRESSED()) {
        if ( mid_Key == 0{
            basicRfInit(
&rfRxInfo, 260x24200x1234);
            rfTxInfo.destAddr 
= 0x5678;
            printf(
"mid_Key ");
            
break;
        
//} else if (JOYSTICK_UP_PRESSED() || JOYSTICK_DOWN_PRESSED() || JOYSTICK_LEFT_PRESSED() || JOYSTICK_RIGHT_PRESSED()) {
        }
 else if (up_Key == 2){
            basicRfInit(
&rfRxInfo, 260x24200x5678);
            rfTxInfo.destAddr 
= 0x1234;
            printf(
"up_Key ");
            
break;
        }

    }

  如果你你還想在電腦上顯示一下,那可以添加點串口的函數功能文件.如下:

 

/*urat.h*/

#ifndef UART_H
#define UART_H

#include 
<avr/io.h>
#include 
<avr/pgmspace.h>
#include 
<stdio.h>

//初始化i/o
void IoInit(void);

//向UART寫一字節
//static 
int uart_putchar(char c, FILE *stream);

//從UART讀一字節
//static 
int uart_getchar(FILE *stream);

//static FILE mystdio = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);

#endif

 

/**//*urat.c*/

#include 
"uart.h"
/初始化i/o
void IoInit(void)
{
    
//UART初始化
    UCSR0C=0x06;    
    UBRR0H
=0;
    UBRR0L
=47;    //9600 baud
    UCSR0B=_BV(RXEN0)|_BV(TXEN0);/*(1<<RXCIE0)|(1<<TXCIE0)|*/
    
    
    
//i/o流UART連接
    
//fdevopen(usart_putchar,usart_getchar,0);    
}


//向UART寫一字節
//static 
int uart_putchar(char c, FILE *stream)
{
    
if(c==' ')
        uart_putchar(
' ', stream);
    loop_until_bit_is_set(UCSR0A,UDRE0);
    UDR0
=c;
    
return 0;
}


//從UART讀一字節
//static 
int uart_getchar(FILE *stream)
{
    loop_until_bit_is_set(UCSR0A,RXC0);
    
return UDR0;
}

然後再在rf_blink_led.c文件中的main函數裏緊接着

    PORT_INIT();
    SPI_INIT();

添加

 IoInit();
 static FILE mystdio = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);
 stderr=stdout = stdin = &mystdio ;

最後,你就在你的Makefile文件裏找到一大堆

SRC +=    的語句,然後在新起一行添加

SRC += uart.c

那就基本可以了,你可以在你任意的地方加printf(),scan()這樣的標準輸入輸出語句了,這樣比較好看點.

其實我沒用範例範例裏面的Makefile文件,我另弄的一個,不 過都差不多,如果編譯不通過,稍微修改一下下也不能大問題.

看效果呢,可以看接着串口的PC和LED的閃爍.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章