Add comments, bugfixes, merge avr-atmega128rfa1 platform changes to avr-raven
This commit is contained in:
parent
f1f32c8e6a
commit
519cce0019
@ -291,6 +291,7 @@ raven_gui_loop(process_event_t ev, process_data_t data)
|
|||||||
} else switch (ev) {
|
} else switch (ev) {
|
||||||
case SERIAL_CMD:
|
case SERIAL_CMD:
|
||||||
/* Check for command from serial port, execute it. */
|
/* Check for command from serial port, execute it. */
|
||||||
|
/* Note cmd frame is written in an interrupt - delays here can cause overwriting by next command */
|
||||||
PRINTF("\nCommand %d length %d done %d",cmd.cmd,cmd.len,cmd.done);
|
PRINTF("\nCommand %d length %d done %d",cmd.cmd,cmd.len,cmd.done);
|
||||||
if (cmd.done){
|
if (cmd.done){
|
||||||
/* Execute the waiting command */
|
/* Execute the waiting command */
|
||||||
|
@ -30,8 +30,7 @@
|
|||||||
*
|
*
|
||||||
* @(#)$$
|
* @(#)$$
|
||||||
*/
|
*/
|
||||||
/* Test github commit from windows 7 TortoiseGit */
|
|
||||||
/* Test github commit from Vista TortoiseGit */
|
|
||||||
/**
|
/**
|
||||||
* \file
|
* \file
|
||||||
* Configuration for Atmel Raven
|
* Configuration for Atmel Raven
|
||||||
@ -40,7 +39,7 @@
|
|||||||
* Simon Barner <barner@in.tum.de>
|
* Simon Barner <barner@in.tum.de>
|
||||||
* David Kopf <dak664@embarqmail.com>
|
* David Kopf <dak664@embarqmail.com>
|
||||||
*/
|
*/
|
||||||
/* Test git commit */
|
|
||||||
#ifndef __CONTIKI_CONF_H__
|
#ifndef __CONTIKI_CONF_H__
|
||||||
#define __CONTIKI_CONF_H__
|
#define __CONTIKI_CONF_H__
|
||||||
|
|
||||||
@ -75,6 +74,10 @@ unsigned long clock_seconds(void);
|
|||||||
#define RIME_CONF_BROADCAST_ANNOUNCEMENT_MAX_TIME CLOCK_CONF_SECOND * 524UL /* Default uses 600UL */
|
#define RIME_CONF_BROADCAST_ANNOUNCEMENT_MAX_TIME CLOCK_CONF_SECOND * 524UL /* Default uses 600UL */
|
||||||
#define COLLECT_CONF_BROADCAST_ANNOUNCEMENT_MAX_TIME CLOCK_CONF_SECOND * 524UL /* Default uses 600UL */
|
#define COLLECT_CONF_BROADCAST_ANNOUNCEMENT_MAX_TIME CLOCK_CONF_SECOND * 524UL /* Default uses 600UL */
|
||||||
|
|
||||||
|
/* The 1284p can use TIMER2 with the external 32768Hz crystal to keep time. Else TIMER0 is used. */
|
||||||
|
/* The sleep timer in raven-lcd.c also uses the crystal and adds a TIMER2 interrupt routine if not already define by clock.c */
|
||||||
|
#define AVR_CONF_USE32KCRYSTAL 0
|
||||||
|
|
||||||
/* COM port to be used for SLIP connection. Not tested on Raven */
|
/* COM port to be used for SLIP connection. Not tested on Raven */
|
||||||
#define SLIP_PORT RS232_PORT_0
|
#define SLIP_PORT RS232_PORT_0
|
||||||
|
|
||||||
@ -168,15 +171,17 @@ unsigned long clock_seconds(void);
|
|||||||
#define CHANNEL_802_15_4 26
|
#define CHANNEL_802_15_4 26
|
||||||
/* AUTOACK receive mode gives better rssi measurements, even if ACK is never requested */
|
/* AUTOACK receive mode gives better rssi measurements, even if ACK is never requested */
|
||||||
#define RF230_CONF_AUTOACK 1
|
#define RF230_CONF_AUTOACK 1
|
||||||
/* Request 802.15.4 ACK on all packets sent (else autoretry) */
|
/* Request 802.15.4 ACK on all packets sent (else autoretry). This is primarily for testing. */
|
||||||
#define SICSLOWPAN_CONF_ACK_ALL 0
|
#define SICSLOWPAN_CONF_ACK_ALL 0
|
||||||
/* Number of auto retry attempts 0-15 (0 implies don't use extended TX_ARET_ON mode with CCA) */
|
/* Number of auto retry attempts 0-15 (0 implies don't use extended TX_ARET_ON mode with CCA) */
|
||||||
#define RF230_CONF_AUTORETRIES 2
|
#define RF230_CONF_AUTORETRIES 2
|
||||||
#define SICSLOWPAN_CONF_FRAG 1
|
#define SICSLOWPAN_CONF_FRAG 1
|
||||||
//Most browsers reissue GETs after 3 seconds which stops frag reassembly, longer MAXAGE does no good
|
/* Most browsers reissue GETs after 3 seconds which stops fragment reassembly so a longer MAXAGE does no good */
|
||||||
#define SICSLOWPAN_CONF_MAXAGE 3
|
#define SICSLOWPAN_CONF_MAXAGE 3
|
||||||
|
/* How long to wait before terminating an idle TCP connection. Smaller to allow faster sleep. Default is 120 seconds */
|
||||||
|
#define UIP_CONF_WAIT_TIMEOUT 5
|
||||||
|
|
||||||
#elif 0 /* Contiki-mac radio cycling */
|
#elif 1 /* Contiki-mac radio cycling */
|
||||||
//#define NETSTACK_CONF_MAC nullmac_driver
|
//#define NETSTACK_CONF_MAC nullmac_driver
|
||||||
#define NETSTACK_CONF_MAC csma_driver
|
#define NETSTACK_CONF_MAC csma_driver
|
||||||
#define NETSTACK_CONF_RDC contikimac_driver
|
#define NETSTACK_CONF_RDC contikimac_driver
|
||||||
@ -190,14 +195,18 @@ unsigned long clock_seconds(void);
|
|||||||
#define NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE 8
|
#define NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE 8
|
||||||
|
|
||||||
#elif 1 /* cx-mac radio cycling */
|
#elif 1 /* cx-mac radio cycling */
|
||||||
|
/* RF230 does clear-channel assessment in extended mode (autoretries>0) */
|
||||||
|
#define RF230_CONF_AUTORETRIES 1
|
||||||
|
#if RF230_CONF_AUTORETRIES
|
||||||
#define NETSTACK_CONF_MAC nullmac_driver
|
#define NETSTACK_CONF_MAC nullmac_driver
|
||||||
//#define NETSTACK_CONF_MAC csma_driver
|
#else
|
||||||
|
#define NETSTACK_CONF_MAC csma_driver
|
||||||
|
#endif
|
||||||
#define NETSTACK_CONF_RDC cxmac_driver
|
#define NETSTACK_CONF_RDC cxmac_driver
|
||||||
#define NETSTACK_CONF_FRAMER framer_802154
|
#define NETSTACK_CONF_FRAMER framer_802154
|
||||||
#define NETSTACK_CONF_RADIO rf230_driver
|
#define NETSTACK_CONF_RADIO rf230_driver
|
||||||
#define CHANNEL_802_15_4 26
|
#define CHANNEL_802_15_4 26
|
||||||
#define RF230_CONF_AUTOACK 1
|
#define RF230_CONF_AUTOACK 1
|
||||||
#define RF230_CONF_AUTORETRIES 1
|
|
||||||
#define SICSLOWPAN_CONF_FRAG 1
|
#define SICSLOWPAN_CONF_FRAG 1
|
||||||
#define SICSLOWPAN_CONF_MAXAGE 3
|
#define SICSLOWPAN_CONF_MAXAGE 3
|
||||||
#define CXMAC_CONF_ANNOUNCEMENTS 0
|
#define CXMAC_CONF_ANNOUNCEMENTS 0
|
||||||
|
@ -107,22 +107,30 @@ SIGNATURE = {
|
|||||||
};
|
};
|
||||||
FUSES ={.low = 0xe2, .high = 0x99, .extended = 0xff,};
|
FUSES ={.low = 0xe2, .high = 0x99, .extended = 0xff,};
|
||||||
|
|
||||||
|
/*----------------------Configuration of EEPROM---------------------------*/
|
||||||
|
/* Use existing EEPROM if it passes the integrity test, else reinitialize with build values */
|
||||||
|
|
||||||
/* Put default MAC address in EEPROM */
|
/* Put default MAC address in EEPROM */
|
||||||
#if WEBSERVER
|
#if WEBSERVER
|
||||||
extern uint8_t mac_address[8]; //These are defined in httpd-fsdata.c via makefsdata.h
|
extern uint8_t mac_address[8]; //These are defined in httpd-fsdata.c via makefsdata.h
|
||||||
extern uint8_t server_name[16];
|
extern uint8_t server_name[16];
|
||||||
extern uint8_t domain_name[30];
|
extern uint8_t domain_name[30];
|
||||||
#else
|
#else
|
||||||
uint8_t mac_address[8] EEMEM = {0x02, 0x11, 0x22, 0xff, 0xfe, 0x33, 0x44, 0x55};
|
uint8_t mac_address[8] PROGMEM = {0x02, 0x11, 0x22, 0xff, 0xfe, 0x33, 0x44, 0x55};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CHANNEL_802_15_4
|
||||||
|
uint8_t rf_channel[2] EEMEM = {CHANNEL_802_15_4, ~CHANNEL_802_15_4};
|
||||||
|
#else
|
||||||
|
uint8_t rf_channel[2] EEMEM = {22, ~22};
|
||||||
|
#endif
|
||||||
|
volatile uint8_t eeprom_channel;
|
||||||
static uint8_t get_channel_from_eeprom() {
|
static uint8_t get_channel_from_eeprom() {
|
||||||
uint8_t eeprom_channel;
|
// volatile uint8_t eeprom_channel;
|
||||||
uint8_t eeprom_check;
|
uint8_t eeprom_check;
|
||||||
|
eeprom_channel = eeprom_read_byte(&rf_channel[0]);
|
||||||
eeprom_channel = eeprom_read_byte((uint8_t *)9);
|
eeprom_check = eeprom_read_byte(&rf_channel[1]);
|
||||||
eeprom_check = eeprom_read_byte((uint8_t *)10);
|
|
||||||
|
|
||||||
if(eeprom_channel==~eeprom_check)
|
if(eeprom_channel==~eeprom_check)
|
||||||
return eeprom_channel;
|
return eeprom_channel;
|
||||||
@ -149,15 +157,22 @@ static uint16_t get_panaddr_from_eeprom(void) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void calibrate_rc_osc_32k();
|
||||||
|
|
||||||
/*-------------------------Low level initialization------------------------*/
|
/*-------------------------Low level initialization------------------------*/
|
||||||
/*------Done in a subroutine to keep main routine stack usage small--------*/
|
/*------Done in a subroutine to keep main routine stack usage small--------*/
|
||||||
void initialize(void)
|
void initialize(void)
|
||||||
{
|
{
|
||||||
//calibrate_rc_osc_32k(); //CO: Had to comment this out
|
|
||||||
watchdog_init();
|
watchdog_init();
|
||||||
watchdog_start();
|
watchdog_start();
|
||||||
|
|
||||||
|
#define CONFIG_STACK_MONITOR 1
|
||||||
|
#if CONFIG_STACK_MONITOR
|
||||||
|
extern uint16_t __bss_end;
|
||||||
|
__bss_end = 0x4242;
|
||||||
|
*(uint16_t *)(&__bss_end+100) = 0x4242;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RAVEN_LCD_INTERFACE
|
#ifdef RAVEN_LCD_INTERFACE
|
||||||
/* First rs232 port for Raven 3290 port */
|
/* First rs232 port for Raven 3290 port */
|
||||||
rs232_init(RS232_PORT_0, USART_BAUD_38400,USART_PARITY_NONE | USART_STOP_BITS_1 | USART_DATA_BITS_8);
|
rs232_init(RS232_PORT_0, USART_BAUD_38400,USART_PARITY_NONE | USART_STOP_BITS_1 | USART_DATA_BITS_8);
|
||||||
@ -170,6 +185,24 @@ void initialize(void)
|
|||||||
/* Redirect stdout to second port */
|
/* Redirect stdout to second port */
|
||||||
rs232_redirect_stdout(RS232_PORT_1);
|
rs232_redirect_stdout(RS232_PORT_1);
|
||||||
clock_init();
|
clock_init();
|
||||||
|
|
||||||
|
#define CONF_CALIBRATE_OSCCAL 0
|
||||||
|
#if CONF_CALIBRATE_OSCCAL
|
||||||
|
{
|
||||||
|
extern uint8_t osccal_calibrated;
|
||||||
|
uint8_t i;
|
||||||
|
printf_P(PSTR("\nBefore calibration OSCCAL=%x\n"),OSCCAL);
|
||||||
|
for (i=0;i<10;i++) {
|
||||||
|
calibrate_rc_osc_32k();
|
||||||
|
printf_P(PSTR("Calibrated=%x\n"),osccal_calibrated);
|
||||||
|
//#include <util/delay_basic.h>
|
||||||
|
//#define delay_us( us ) ( _delay_loop_2(1+(us*F_CPU)/4000000UL) )
|
||||||
|
// delay_us(50000);
|
||||||
|
}
|
||||||
|
clock_init();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ANNOUNCE_BOOT
|
#if ANNOUNCE_BOOT
|
||||||
printf_P(PSTR("\n*******Booting %s*******\n"),CONTIKI_VERSION_STRING);
|
printf_P(PSTR("\n*******Booting %s*******\n"),CONTIKI_VERSION_STRING);
|
||||||
#endif
|
#endif
|
||||||
@ -346,6 +379,28 @@ main(void)
|
|||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
process_run();
|
process_run();
|
||||||
|
|
||||||
|
#if CONFIG_STACK_MONITOR
|
||||||
|
extern uint16_t __bss_end;
|
||||||
|
if (*(uint16_t *)(&__bss_end+100) != 0x4242) {
|
||||||
|
printf_P(PSTR("\nStack Warning, overflow within 100 bytes!\n"));
|
||||||
|
if (__bss_end != 0x4242) {
|
||||||
|
__bss_end = 0x4242;
|
||||||
|
printf_P(PSTR("\n!!!!!!!Stack Overflow!!!!!!!!\n"));
|
||||||
|
}
|
||||||
|
*(uint16_t *)(&__bss_end+100) = 0x4242;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* Clock.c can trigger a periodic RF PLL calibration */
|
||||||
|
extern uint8_t rf230_calibrated;
|
||||||
|
if (rf230_calibrated) {
|
||||||
|
printf_P(PSTR("\nRF230 calibrated!"));
|
||||||
|
rf230_calibrated=0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//Various entry points for debugging in AVR simulator
|
//Various entry points for debugging in AVR simulator
|
||||||
// NETSTACK_RADIO.send(packetbuf_hdrptr(), 42);
|
// NETSTACK_RADIO.send(packetbuf_hdrptr(), 42);
|
||||||
// process_poll(&rf230_process);
|
// process_poll(&rf230_process);
|
||||||
|
Loading…
Reference in New Issue
Block a user