Skip to content

Commit

Permalink
[Chronos]
Browse files Browse the repository at this point in the history
* changed display driver interface from uint8_t* to char*
* fixed hardware timer interrupt
* ported cc1100 driver
* added simple test application for radio

[msb430]
* fixex config and flashrom

[cc110x_ng]
* removed dependency from sysconfig
  • Loading branch information
OlegHahm committed Dec 9, 2010
1 parent a356dc2 commit cf3b704
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 27 deletions.
31 changes: 21 additions & 10 deletions chronos/drivers/cc430-cc1100.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

#include <cpu.h>
#include <irq.h>
#include <cc1100_ng.h>
#include <arch_cc1100.h>

#warning CC430_CC1100 NOT WORKING
/* TODO: defines... */
#define CC1100_GDO0 (0)
#define CC1100_GDO1 (1)
#define CC1100_GDO2 (2)
#include <cc430_.h>
#include <msp430/rf1a.h>

#define CC1100_GDO0 IOCFG0
#define CC1100_GDO1 IOCFG1
#define CC1100_GDO2 IOCFG2

int cc1100_get_gdo0(void) {
return CC1100_GDO0;
Expand All @@ -35,32 +37,41 @@ void cc1100_after_send(void)
}

void cc1100_gdo0_enable(void) {
RF1AIFG &= ~RF1AIV_RFIFG0;
RF1AIE |= RF1AIV_RFIFG0;
}

void cc1100_gdo0_disable(void) {
RF1AIE &= ~RF1AIV_RFIFG0;
RF1AIFG &= ~RF1AIV_RFIFG0;
}

void cc1100_gdo2_disable(void) {
RF1AIFG &= ~RF1AIV_RFIFG2;
RF1AIE &= ~RF1AIV_RFIFG2;
}

void cc1100_gdo2_enable(void) {
RF1AIE &= ~RF1AIV_RFIFG2;
RF1AIFG |= RF1AIV_RFIFG2;
}

void cc1100_init_interrupts(void) {
uint8_t state = disableIRQ(); /* Disable all interrupts */
restoreIRQ(state); /* Enable all interrupts */
}

interrupt (PORT2_VECTOR) __attribute__ ((naked)) cc1100_isr(void){
interrupt (CC1101_VECTOR) __attribute__ ((naked)) cc1100_isr(void){
__enter_isr();
/* Check IFG */
if (1 == 1) {
if (RF1AIFG & RF1AIV_RFIFG2) {
RF1AIFG &= ~RF1AIV_RFIFG2;
cc1100_gdo2_irq();
}
else if (2 == 2) {
if (RF1AIFG & RF1AIV_RFIFG0) {
RF1AIFG &= ~RF1AIV_RFIFG0;
RF1AIE &= ~RF1AIV_RFIFG0;
cc1100_gdo0_irq();
} else {
puts("cc1100_isr(): unexpected IFG!");
}
__exit_isr();
}
18 changes: 7 additions & 11 deletions chronos/drivers/display.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,15 @@
#include <string.h>

// driver
#include "cc430x613x.h"
#include "display.h"
#include <cc430x613x.h>
#include <display.h>


// *************************************************************************************************
// Prototypes section
void write_lcd_mem(uint8_t * lcdmem, uint8_t bits, uint8_t bitmask, uint8_t state);
void write_lcd_mem(uint8_t *lcdmem, uint8_t bits, uint8_t bitmask, uint8_t state);
void clear_line(uint8_t line);
void display_symbol(uint8_t symbol, uint8_t mode);
void display_char(uint8_t segment, uint8_t chr, uint8_t mode);
void display_chars(uint8_t segments, uint8_t * str, uint8_t mode);


// *************************************************************************************************
// Defines section
Expand Down Expand Up @@ -285,12 +282,12 @@ uint8_t * itoa(uint32_t n, uint8_t digits, uint8_t blanks)
// *************************************************************************************************
void display_value1(uint8_t segments, uint32_t value, uint8_t digits, uint8_t blanks, uint8_t disp_mode)
{
uint8_t * str;
uint8_t* str;

str = itoa(value, digits, blanks);

// Display string in blink mode
display_chars(segments, str, disp_mode);
display_chars(segments, (char*) str, disp_mode);
}


Expand Down Expand Up @@ -332,7 +329,7 @@ void display_symbol(uint8_t symbol, uint8_t mode)
// uint8_t mode SEG_ON, SEG_OFF, SEG_BLINK
// @return none
// *************************************************************************************************
void display_char(uint8_t segment, uint8_t chr, uint8_t mode)
void display_char(uint8_t segment, char chr, uint8_t mode)
{
uint8_t * lcdmem; // Pointer to LCD memory
uint8_t bitmask; // Bitmask for character
Expand Down Expand Up @@ -393,8 +390,7 @@ void display_char(uint8_t segment, uint8_t chr, uint8_t mode)
// uint8_t mode SEG_ON, SEG_OFF, SEG_BLINK
// @return none
// *************************************************************************************************
void display_chars(uint8_t segments, uint8_t * str, uint8_t mode)
{
void display_chars(uint8_t segments, char *str, uint8_t mode) {
uint8_t i;
uint8_t length = 0; // Write length
uint8_t char_start = 0; // Starting point for consecutive write
Expand Down
4 changes: 2 additions & 2 deletions chronos/drivers/display.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,8 +337,8 @@ void clear_blink_mem(void);
void set_blink_rate(uint8_t bits);

// Character / symbol draw functions
void display_char(uint8_t segment, uint8_t chr, uint8_t mode);
void display_chars(uint8_t segments, uint8_t * str, uint8_t mode);
void display_char(uint8_t segment, char chr, uint8_t mode);
void display_chars(uint8_t segments, char* str, uint8_t mode);
void display_symbol(uint8_t symbol, uint8_t mode);

// Time display function
Expand Down
2 changes: 1 addition & 1 deletion msb-430-common/Jamfile
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
SubDir TOP board msb-430-common ;

Module board : board_init.c debug_uart.c ;
Module config : config.c ;
Module board_config : board_config.c ;
UseModule board ;

SubInclude TOP cpu $(CPU) ;
10 changes: 10 additions & 0 deletions msb-430-common/config.c → msb-430-common/board_config.c
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
#include <stdint.h>
#include <string.h>
#include <board-conf.h>
#include <config.h>
#include <flashrom.h>

void config_load(void) {
if (*((uint16_t*) INFOMEM) == CONFIG_KEY) {
memcpy(&sysconfig, (char*) (INFOMEM + sizeof(CONFIG_KEY)), sizeof(sysconfig));
}
else {
config_save();
}
}

uint8_t config_save(void) {
configmem_t mem = { CONFIG_KEY, sysconfig };
return (flashrom_erase((uint8_t*) INFOMEM) && flashrom_write((uint8_t*) INFOMEM, (char*) &mem, sizeof(mem)));
Expand Down
2 changes: 1 addition & 1 deletion msb-430h/Jamfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

SubDir TOP board msb-430h ;

Module board_cc1100 : driver_cc1100.c ;
Module board_cc1100 : driver_cc1100.c : cc110x_spi ;

SubInclude TOP board msb-430-common ;
SubInclude TOP cpu $(CPU) ;
3 changes: 1 addition & 2 deletions msb-430h/driver_cc1100.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Boston, MA 02111-1307, USA. */
#include <cpu.h>
#include <irq.h>

#include <cc1100.h>
#include <cc1100_ng.h>
#include <arch_cc1100.h>

#define CC1100_GDO0 (P2IN & 0x02) // read serial I/O (GDO0)
Expand Down Expand Up @@ -340,4 +340,3 @@ puts("cc1100_isr()");
// if (system_state.POWERDOWN != 0) END_LPM3;
__exit_isr();
}

0 comments on commit cf3b704

Please sign in to comment.