contiki code style changes and copyright update + added source to ARCH instead of SOURCEFILES in platform Makefile

This commit is contained in:
Jelmer Tiete 2013-05-29 00:41:06 +02:00
parent 0a4a14aacb
commit 9810bfbcfd
4 changed files with 119 additions and 103 deletions

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2010, Swedish Institute of Computer Science. * Copyright (c) 2013, Swedish Institute of Computer Science.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -54,22 +54,25 @@ AUTOSTART_PROCESSES(&tlc59116_process);
static struct etimer et; static struct etimer et;
static uint8_t count = 0; static uint8_t count = 0;
PROCESS_THREAD(tlc59116_process, ev, data) { PROCESS_THREAD(tlc59116_process, ev, data)
{
PROCESS_BEGIN(); PROCESS_BEGIN();
{ {
/* Start and setup the led driver with default values, eg outputs on and pwm enabled and 0. */ /* Start and setup the led driver with default values, eg outputs on and pwm enabled and 0. */
tlc59116_init(); tlc59116_init();
while (1) { while(1) {
tlc59116_led(count,0x00); tlc59116_led(count, 0x00);
tlc59116_led((count+1)%16,0x20); tlc59116_led((count + 1) % 16, 0x20);
tlc59116_led((count+2)%16,0x40); tlc59116_led((count + 2) % 16, 0x40);
tlc59116_led((count+3)%16,0xFF); tlc59116_led((count + 3) % 16, 0xFF);
count++; count++;
if(count>15) count=0; if(count > 15) {
count = 0;
}
etimer_set(&et, BLINK_INTERVAL); etimer_set(&et, BLINK_INTERVAL);
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));

View file

@ -17,7 +17,7 @@ ARCH=msp430.c leds.c watchdog.c xmem.c \
checkpoint-arch.c slip.c slip_uart0.c \ checkpoint-arch.c slip.c slip_uart0.c \
z1-phidgets.c sht11.c sht11-sensor.c light-sensor.c \ z1-phidgets.c sht11.c sht11-sensor.c light-sensor.c \
battery-sensor.c sky-sensors.c tmp102.c temperature-sensor.c light-ziglet.c \ battery-sensor.c sky-sensors.c tmp102.c temperature-sensor.c light-ziglet.c \
relay-phidget.c relay-phidget.c tlc59116.c
CONTIKI_TARGET_DIRS = . dev apps net CONTIKI_TARGET_DIRS = . dev apps net
ifndef CONTIKI_TARGET_MAIN ifndef CONTIKI_TARGET_MAIN
@ -33,7 +33,7 @@ CFLAGS += -DMACID=$(nodemac)
endif endif
CONTIKI_TARGET_SOURCEFILES += $(ARCH) $(UIPDRIVERS) CONTIKI_TARGET_SOURCEFILES += $(ARCH) $(UIPDRIVERS)
CONTIKI_TARGET_SOURCEFILES += i2cmaster.c adxl345.c tlc59116.c CONTIKI_TARGET_SOURCEFILES += i2cmaster.c adxl345.c
MCU=msp430f2617 MCU=msp430f2617
include $(CONTIKI)/cpu/msp430/Makefile.msp430 include $(CONTIKI)/cpu/msp430/Makefile.msp430

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2010, Swedish Institute of Computer Science. * Copyright (c) 2013, Swedish Institute of Computer Science.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -32,7 +32,7 @@
/** /**
* \file * \file
* Device drivers for tlc5916 i2c led driver on Zolertia Z1. * Device drivers for tlc59116 i2c led driver on Zolertia Z1.
* See http://www.ti.com/product/tlc59116 for datasheet. * See http://www.ti.com/product/tlc59116 for datasheet.
* \author * \author
* Jelmer Tiete, VUB <jelmer@tiete.be> * Jelmer Tiete, VUB <jelmer@tiete.be>
@ -47,117 +47,129 @@
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Write to a register. /* Write to a register.
args: * args:
reg register to write to * reg register to write to
val value to write * val value to write
*/ */
void void
tlc59116_write_reg(uint8_t reg, uint8_t val) { tlc59116_write_reg(uint8_t reg, uint8_t val)
uint8_t tx_buf[] = {reg, val}; {
uint8_t tx_buf[] = { reg, val };
i2c_transmitinit(TLC59116_ADDR); i2c_transmitinit(TLC59116_ADDR);
while (i2c_busy()); while(i2c_busy());
PRINTFDEBUG("I2C Ready to TX\n"); PRINTFDEBUG("I2C Ready to TX\n");
i2c_transmit_n(2, tx_buf); i2c_transmit_n(2, tx_buf);
while (i2c_busy()); while(i2c_busy());
PRINTFDEBUG("WRITE_REG 0x%02X @ reg 0x%02X\n", val, reg); PRINTFDEBUG("WRITE_REG 0x%02X @ reg 0x%02X\n", val, reg);
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Write several registers from a stream. /* Write several registers from a stream.
args: * args:
len number of bytes to write * len number of bytes to write
data pointer to where the data is written from * data pointer to where the data is written from
*
First byte in stream must be the register address to begin writing to. * First byte in stream must be the register address to begin writing to.
The data is then written from second byte and increasing. */ * The data is then written from second byte and increasing.
*/
void void
tlc59116_write_stream(uint8_t len, uint8_t *data) { tlc59116_write_stream(uint8_t len, uint8_t * data)
{
i2c_transmitinit(TLC59116_ADDR); i2c_transmitinit(TLC59116_ADDR);
while (i2c_busy()); while(i2c_busy());
PRINTFDEBUG("I2C Ready to TX(stream)\n"); PRINTFDEBUG("I2C Ready to TX(stream)\n");
i2c_transmit_n(len, data); // start tx and send conf reg i2c_transmit_n(len, data); // start tx and send conf reg
while (i2c_busy()); while(i2c_busy());
PRINTFDEBUG("WRITE_STR %u B to 0x%02X\n", len, data[0]); PRINTFDEBUG("WRITE_STR %u B to 0x%02X\n", len, data[0]);
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Read one register. /* Read one register.
args: * args:
reg what register to read * reg what register to read
returns the value of the read register * returns the value of the read register
*/ */
uint8_t uint8_t
tlc59116_read_reg(uint8_t reg) { tlc59116_read_reg(uint8_t reg)
{
uint8_t retVal = 0; uint8_t retVal = 0;
uint8_t rtx = reg; uint8_t rtx = reg;
PRINTFDEBUG("READ_REG 0x%02X\n", reg); PRINTFDEBUG("READ_REG 0x%02X\n", reg);
/* transmit the register to read */ /* transmit the register to read */
i2c_transmitinit(TLC59116_ADDR); i2c_transmitinit(TLC59116_ADDR);
while (i2c_busy()); while(i2c_busy());
i2c_transmit_n(1, &rtx); i2c_transmit_n(1, &rtx);
while (i2c_busy()); while(i2c_busy());
/* receive the data */ /* receive the data */
i2c_receiveinit(TLC59116_ADDR); i2c_receiveinit(TLC59116_ADDR);
while (i2c_busy()); while(i2c_busy());
i2c_receive_n(1, &retVal); i2c_receive_n(1, &retVal);
while (i2c_busy()); while(i2c_busy());
return retVal; return retVal;
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Read several registers in a stream. /* Read several registers in a stream.
args: * args:
reg what register to start reading from * reg what register to start reading from
len number of bytes to read * len number of bytes to read
whereto pointer to where the data is saved * whereto pointer to where the data is saved
*/ */
void void
tlc59116_read_stream(uint8_t reg, uint8_t len, uint8_t *whereto) { tlc59116_read_stream(uint8_t reg, uint8_t len, uint8_t * whereto)
{
uint8_t rtx = reg; uint8_t rtx = reg;
PRINTFDEBUG("READ_STR %u B from 0x%02X\n", len, reg); PRINTFDEBUG("READ_STR %u B from 0x%02X\n", len, reg);
/* transmit the register to start reading from */ /* transmit the register to start reading from */
i2c_transmitinit(TLC59116_ADDR); i2c_transmitinit(TLC59116_ADDR);
while (i2c_busy()); while(i2c_busy());
i2c_transmit_n(1, &rtx); i2c_transmit_n(1, &rtx);
while (i2c_busy()); while(i2c_busy());
/* receive the data */ /* receive the data */
i2c_receiveinit(TLC59116_ADDR); i2c_receiveinit(TLC59116_ADDR);
while (i2c_busy()); while(i2c_busy());
i2c_receive_n(len, whereto); i2c_receive_n(len, whereto);
while (i2c_busy()); while(i2c_busy());
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Set pwm value for individual led. Make sure PWM mode is enabled. /* Set pwm value for individual led. Make sure PWM mode is enabled.
*/ * args:
* led led output -> 0 till 15
* pwm led pwm value
*/
void void
tlc59116_led(uint8_t led, uint8_t pwm) { tlc59116_led(uint8_t led, uint8_t pwm)
if (led<0 | led>15) { {
if(led < 0 | led > 15) {
PRINTFDEBUG("TLC59116: wrong led value."); PRINTFDEBUG("TLC59116: wrong led value.");
}else{ } else {
tlc59116_write_reg(led+TLC59116_PWM0, pwm); tlc59116_write_reg(led + TLC59116_PWM0, pwm);
} }
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Init the led driver: ports, pins, registers, interrupts (none enabled), I2C, /* Init the led driver: ports, pins, registers, interrupts (none enabled), I2C,
default threshold values etc. * default threshold values etc.
*/ */
void void
tlc59116_init(void) { tlc59116_init(void)
{
/* Set up ports and pins for I2C communication */ /* Set up ports and pins for I2C communication */
i2c_enable(); i2c_enable();
@ -165,14 +177,15 @@ tlc59116_init(void) {
tlc59116_write_reg(TLC59116_MODE1, TLC59116_MODE1_DEFAULT); tlc59116_write_reg(TLC59116_MODE1, TLC59116_MODE1_DEFAULT);
tlc59116_write_reg(TLC59116_MODE2, TLC59116_MODE2_DEFAULT); tlc59116_write_reg(TLC59116_MODE2, TLC59116_MODE2_DEFAULT);
/*Set all PWM values to 0x00 (off)*/ /*Set all PWM values to 0x00 (off) */
//This would maybe be better with a SWRST /*This would maybe be better with a SWRST */
uint8_t tx_buf[] = {TLC59116_PWM0_AUTOINCR,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; uint8_t tx_buf[] =
tlc59116_write_stream(17,&tx_buf); { TLC59116_PWM0_AUTOINCR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
tlc59116_write_stream(17, &tx_buf);
/* set all leds to PWM control */ /* set all leds to PWM control */
tlc59116_write_reg(TLC59116_LEDOUT0,TLC59116_LEDOUT_PWM); tlc59116_write_reg(TLC59116_LEDOUT0, TLC59116_LEDOUT_PWM);
tlc59116_write_reg(TLC59116_LEDOUT1,TLC59116_LEDOUT_PWM); tlc59116_write_reg(TLC59116_LEDOUT1, TLC59116_LEDOUT_PWM);
tlc59116_write_reg(TLC59116_LEDOUT2,TLC59116_LEDOUT_PWM); tlc59116_write_reg(TLC59116_LEDOUT2, TLC59116_LEDOUT_PWM);
tlc59116_write_reg(TLC59116_LEDOUT3,TLC59116_LEDOUT_PWM); tlc59116_write_reg(TLC59116_LEDOUT3, TLC59116_LEDOUT_PWM);
} }

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2010, Swedish Institute of Computer Science. * Copyright (c) 2013, Swedish Institute of Computer Science.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -53,66 +53,66 @@
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* Init the led driver: ports, pins, registers, I2C*/ /* Init the led driver: ports, pins, registers, I2C*/
void tlc59116_init(void); void tlc59116_init(void);
/* Write to a register. /* Write to a register.
args: * args:
reg register to write to * reg register to write to
val value to write * val value to write
*/ */
void tlc59116_write_reg(uint8_t reg, uint8_t val); void tlc59116_write_reg(uint8_t reg, uint8_t val);
/* Write several registers from a stream. /* Write several registers from a stream.
args: * args:
len number of bytes to read * len number of bytes to read
data pointer to where the data is read from * data pointer to where the data is read from
First byte in stream must be the register address to begin writing to. * First byte in stream must be the register address to begin writing to.
The data is then written from the second byte and increasing. The address byte * The data is then written from the second byte and increasing. The address byte
is not included in length len. * is not included in length len.
*/ */
void tlc59116_write_stream(uint8_t len, uint8_t *data); void tlc59116_write_stream(uint8_t len, uint8_t * data);
/* Read one register. /* Read one register.
args: * args:
reg what register to read * reg what register to read
returns the value of the read register * returns the value of the read register
*/ */
uint8_t tlc59116_read_reg(uint8_t reg); uint8_t tlc59116_read_reg(uint8_t reg);
/* Read several registers in a stream. /* Read several registers in a stream.
args: * args:
reg what register to start reading from * reg what register to start reading from
len number of bytes to read * len number of bytes to read
whereto pointer to where the data is saved * whereto pointer to where the data is saved
*/ */
void tlc59116_read_stream(uint8_t reg, uint8_t len, uint8_t *whereto); void tlc59116_read_stream(uint8_t reg, uint8_t len, uint8_t * whereto);
/* Set pwm value for individual led /* Set pwm value for individual led
args: * args:
led led output -> 0 till 15 * led led output -> 0 till 15
pwm led pwm value * pwm led pwm value
*/ */
void tlc59116_led(uint8_t led, uint8_t pwm); void tlc59116_led(uint8_t led, uint8_t pwm);
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* Application definitions, change if required by application. */ /* Application definitions, change if required by application. */
/* Suggested defaults according to the data sheet etc */ /* Suggested defaults according to the data sheet etc */
#define TLC59116_MODE1_DEFAULT 0x80 // #define TLC59116_MODE1_DEFAULT 0x00 // Default (no sub or all call) + OSC on
#define TLC59116_MODE2_DEFAULT 0x00 // #define TLC59116_MODE2_DEFAULT 0x00 // Default (output change on stop)
#define TLC59116_LEDOUT_PWM 0xAA // LDRx = 01 -> PWM, 4 leds per reg: 01010101 -> 0xAA #define TLC59116_LEDOUT_PWM 0xAA // LDRx = 01 -> PWM; 4 leds per reg: 01010101b -> 0xAA
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* Reference definitions, should not be changed */ /* Reference definitions, should not be changed */
/* TLC59116 slave address */ /* TLC59116 slave address */
#define TLC59116_ADDR 0x60 //7bit adress, 8bit write adress: 0xC0 #define TLC59116_ADDR 0x60 //7bit adress, 8bit write adress: 0xC0
//address with all address pins pulled to ground //address with all address pins pulled to ground
/* TLC59116 registers */ /* TLC59116 registers */
#define TLC59116_MODE1 0x00 #define TLC59116_MODE1 0x00
#define TLC59116_MODE2 0x01 #define TLC59116_MODE2 0x01
#define TLC59116_PWM0_AUTOINCR 0xA2 // #define TLC59116_PWM0_AUTOINCR 0xA2 //auto increment address for first pwm register
#define TLC59116_PWM0 0x02 #define TLC59116_PWM0 0x02
#define TLC59116_PWM1 0x03 #define TLC59116_PWM1 0x03
#define TLC59116_PWM2 0x04 #define TLC59116_PWM2 0x04
@ -139,4 +139,4 @@ void tlc59116_led(uint8_t led, uint8_t pwm);
/* More registers follow, but not used in this implementation */ /* More registers follow, but not used in this implementation */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
#endif /* ifndef __ADXL345_H__ */ #endif /* ifndef __TLC59116_H__ */