2008.03.2-----2008.03.3
莫名的發現我這128的實驗板的按鍵很不正常,算了,先不用它了,其實那鍵盤挺簡單,就是有時候是失靈了.不知道是我不程序不對呢,還是本來它們就有點不守規矩,讓我們費那麼大的力氣去弄.
CC2420+mega128的範例CC2420DBK Examples Release在此下載(點擊即可).裏面一些範例,你都可以去實現,
我做的那個只是要它能通信而已,鍵盤我都去掉了,直接給用一些變量替代它了,如果你有按鍵,那就不需要動什麼了,只是覺得裏面按鍵只檢察一點PIN的電平,實在不是很規範.
其實你只需要修改rf_blink_led.c文件就可以了,其他不用動.我修改如下,
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, 26, 0x2420, 0x1234);
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, 26, 0x2420, 0x5678);
rfTxInfo.destAddr = 0x1234;
printf("up_Key ");
break;
}
}
如果你你還想在電腦上顯示一下,那可以添加點串口的函數功能文件.如下:
#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
#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的閃爍.