mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
boards: remove chronos support
This commit is contained in:
parent
e09383d343
commit
ed3887ac5c
@ -1,15 +0,0 @@
|
||||
# Copyright (c) 2020 HAW Hamburg
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU Lesser
|
||||
# General Public License v2.1. See the file LICENSE in the top level
|
||||
# directory for more details.
|
||||
|
||||
config BOARD
|
||||
default "chronos" if BOARD_CHRONOS
|
||||
|
||||
config BOARD_CHRONOS
|
||||
bool
|
||||
default y
|
||||
select CPU_MODEL_CC430F6137
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_RTC
|
@ -1,5 +0,0 @@
|
||||
MODULE = board
|
||||
|
||||
DIRS = drivers
|
||||
|
||||
include $(RIOTBASE)/Makefile.base
|
@ -1 +0,0 @@
|
||||
USEMODULE += chronos-drivers
|
@ -1,8 +0,0 @@
|
||||
CPU = cc430
|
||||
CPU_MODEL = cc430f6137
|
||||
|
||||
# Put defined MCU peripherals here (in alphabetical order)
|
||||
FEATURES_PROVIDED += periph_timer
|
||||
FEATURES_PROVIDED += periph_rtc
|
||||
|
||||
# Various other features (if any)
|
@ -1,6 +0,0 @@
|
||||
# flasher configuration
|
||||
FLASHFILE ?= $(HEXFILE)
|
||||
FLASHER = mspdebug
|
||||
FFLAGS = rf2500 "prog $(FLASHFILE)"
|
||||
|
||||
INCLUDES += -I$(RIOTBOARD)/chronos/drivers/include
|
@ -1,106 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 INRIA
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_chronos
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief eZ430-chronos board initialization
|
||||
*
|
||||
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||
* @author Ludwig Knüpfer <ludwig.knuepfer@fu-berlin.de>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "board.h"
|
||||
#include "cpu.h"
|
||||
#include "irq.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "display.h"
|
||||
#include "display_putchar.h"
|
||||
|
||||
void cc430_cpu_init(void)
|
||||
{
|
||||
volatile uint16_t i;
|
||||
volatile unsigned char *ptr;
|
||||
|
||||
/* disable watchdog */
|
||||
WDTCTL = WDTPW + WDTHOLD;
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Enable 32kHz ACLK
|
||||
P5SEL |= 0x03; // Select XIN, XOUT on P5.0 and P5.1
|
||||
UCSCTL6 &= ~XT1OFF; // XT1 On, Highest drive strength
|
||||
UCSCTL6 |= XCAP_3; // Internal load cap
|
||||
|
||||
UCSCTL3 = SELA__XT1CLK; // Select XT1 as FLL reference
|
||||
UCSCTL4 = SELA__XT1CLK | SELS__DCOCLKDIV | SELM__DCOCLKDIV;
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Configure CPU clock for 12MHz
|
||||
_BIS_SR(SCG0); // Disable the FLL control loop
|
||||
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
|
||||
UCSCTL1 = DCORSEL_5; // Select suitable range
|
||||
UCSCTL2 = FLLD_1 + 0x16E; // Set DCO Multiplier
|
||||
_BIC_SR(SCG0); // Enable the FLL control loop
|
||||
|
||||
// Worst-case settling time for the DCO when the DCO range bits have been
|
||||
// changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx
|
||||
// UG for optimization.
|
||||
// 32 x 32 x 8 MHz / 32,768 Hz = 250000 = MCLK cycles for DCO to settle
|
||||
for (i = 0xFF; i > 0; i--); // Time for flag to set
|
||||
|
||||
// Loop until XT1 & DCO stabilizes, use do-while to insure that
|
||||
// body is executed at least once
|
||||
do {
|
||||
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
|
||||
SFRIFG1 &= ~OFIFG; // Clear fault flags
|
||||
}
|
||||
while ((SFRIFG1 & OFIFG));
|
||||
|
||||
// Disable all interrupts
|
||||
__disable_interrupt();
|
||||
// Get write-access to port mapping registers:
|
||||
PMAPPWD = 0x02D52;
|
||||
// Allow reconfiguration during runtime:
|
||||
PMAPCTL = PMAPRECFG;
|
||||
|
||||
// P2.7 = TA0CCR1A or TA1CCR0A output (buzzer output)
|
||||
ptr = &P2MAP0;
|
||||
*(ptr + 7) = PM_TA1CCR0A;
|
||||
P2OUT &= ~BIT7;
|
||||
P2DIR |= BIT7;
|
||||
|
||||
// P1.5 = SPI MISO input
|
||||
ptr = &P1MAP0;
|
||||
*(ptr + 5) = PM_UCA0SOMI;
|
||||
// P1.6 = SPI MOSI output
|
||||
*(ptr + 6) = PM_UCA0SIMO;
|
||||
// P1.7 = SPI CLK output
|
||||
*(ptr + 7) = PM_UCA0CLK;
|
||||
|
||||
// Disable write-access to port mapping registers:
|
||||
PMAPPWD = 0;
|
||||
// Re-enable all interrupts
|
||||
irq_enable();
|
||||
|
||||
}
|
||||
|
||||
void board_init(void)
|
||||
{
|
||||
cc430_cpu_init();
|
||||
lcd_init();
|
||||
init_display_putchar();
|
||||
DEBUG("DISP OK");
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
/**
|
||||
@defgroup boards_chronos Chronos
|
||||
@ingroup boards
|
||||
@brief Support for the chronos board
|
||||
|
||||
# Hardware
|
||||
|
||||
![TI eZ430-Chronos running RIOT]
|
||||
(http://riot-os.org/images/hardware-watch-riot.png)
|
||||
|
||||
# MCU
|
||||
| MCU | TI CC430F6137 |
|
||||
|:----------------------------- |:--------------------- |
|
||||
| Family | MSP430 |
|
||||
| Vendor | Texas Instruments |
|
||||
| Package | 64VQFN |
|
||||
| RAM | 4KiB |
|
||||
| Flash | 32KiB |
|
||||
| Frequency | 20MHz |
|
||||
| FPU | no |
|
||||
| Timers | 2 (2x 16bit) |
|
||||
| ADCs | 1x 8 channel 12-bit |
|
||||
| UARTs | 1 |
|
||||
| SPIs | 2 |
|
||||
| I2Cs | 1 |
|
||||
| Vcc | 2.0V - 3.6V |
|
||||
| Datasheet / Reference Manual | [Datasheet](http://www.ti.com/lit/gpn/cc430f6137) |
|
||||
| Board Manual | [User Guide](http://www.ti.com/lit/pdf/slau292)|
|
||||
|
||||
## Flashing RIOT
|
||||
|
||||
Flashing RIOT on the eZ430-Chronos is quite straight forward, just connect
|
||||
your eZ430-Chronos using the USB programming dongle to your host computer and
|
||||
type:
|
||||
|
||||
`make flash`
|
||||
|
||||
This should take care of everything!
|
||||
|
||||
# Vendor information
|
||||
|
||||
[TI Wiki](http://processors.wiki.ti.com/index.php/EZ430-Chronos)
|
||||
[MCU information](http://www.ti.com/product/cc430f6137)
|
||||
*/
|
@ -1,3 +0,0 @@
|
||||
MODULE = chronos-drivers
|
||||
|
||||
include $(RIOTBASE)/Makefile.base
|
@ -1,38 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 INRIA
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_chronos
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief eZ430-chronos battery readout (via ADC)
|
||||
*
|
||||
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||
* @author Ludwig Knüpfer <ludwig.knuepfer@fu-berlin.de>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdint.h>
|
||||
#include <cc430f6137.h>
|
||||
|
||||
#include "cc430-adc.h"
|
||||
|
||||
uint32_t battery_get_voltage(void)
|
||||
{
|
||||
uint32_t voltage;
|
||||
voltage = adc12_single_conversion(REFVSEL_1, ADC12SHT0_10, ADC12INCH_11);
|
||||
|
||||
/* Ideally we have A11=0->AVCC=0V ... A11=4095(2^12-1)->AVCC=4V
|
||||
* --> (A11/4095)*4V=AVCC --> AVCC=(A11*4)/4095 */
|
||||
voltage = (voltage * 2 * 2 * 1000) / 4095;
|
||||
return voltage;
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 INRIA
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_chronos
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief eZ430-chronos beeper
|
||||
*
|
||||
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||
* @author Ludwig Knüpfer <ludwig.knuepfer@fu-berlin.de>
|
||||
* @author mikoff
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdint.h>
|
||||
#include <cc430f6137.h>
|
||||
|
||||
#include "buzzer.h"
|
||||
#include "xtimer.h"
|
||||
|
||||
void buzzer_beep(uint8_t pitch, uint32_t duration)
|
||||
{
|
||||
// Reset TA1R, set up mode, TA1 runs from 32768Hz ACLK
|
||||
TA1CTL = TACLR | MC_1 | TASSEL__ACLK;
|
||||
|
||||
// Set PWM frequency
|
||||
TA1CCR0 = pitch;
|
||||
|
||||
// Enable IRQ, set output mode "toggle"
|
||||
TA1CCTL0 = OUTMOD_4;
|
||||
|
||||
// Allow buzzer PWM output on P2.7
|
||||
P2SEL |= BIT7;
|
||||
|
||||
xtimer_usleep(duration);
|
||||
|
||||
// Stop PWM timer
|
||||
TA1CTL &= ~(BIT4 | BIT5);
|
||||
|
||||
// Reset and disable buzzer PWM output
|
||||
P2OUT &= ~BIT7;
|
||||
P2SEL &= ~BIT7;
|
||||
TA1CCTL0 &= ~CCIE;
|
||||
}
|
@ -1,409 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_chronos
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief eZ430-chronos display driver
|
||||
*
|
||||
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||
* @author Ludwig Knüpfer <ludwig.knuepfer@fu-berlin.de>
|
||||
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
||||
* @author mikoff
|
||||
*
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <cc430f6137.h>
|
||||
|
||||
#include "display.h"
|
||||
|
||||
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);
|
||||
|
||||
/** Display flags */
|
||||
volatile s_display_flags_t display;
|
||||
|
||||
/** Global return string for itoa function */
|
||||
char itoa_str[8];
|
||||
|
||||
void lcd_init(void)
|
||||
{
|
||||
/* Clear entire display memory */
|
||||
LCDBMEMCTL |= LCDCLRBM + LCDCLRM;
|
||||
|
||||
/* LCD_FREQ = ACLK/16/8 = 256Hz */
|
||||
/* Frame frequency = 256Hz/4 = 64Hz, LCD mux 4, LCD on */
|
||||
LCDBCTL0 = (LCDDIV0 + LCDDIV1 + LCDDIV2 + LCDDIV3) | (LCDPRE0 + LCDPRE1) | LCD4MUX | LCDON;
|
||||
|
||||
/* LCB_BLK_FREQ = ACLK/8/4096 = 1Hz */
|
||||
LCDBBLKCTL = LCDBLKPRE0 | LCDBLKPRE1 | LCDBLKDIV0 | LCDBLKDIV1 | LCDBLKDIV2 | LCDBLKMOD0;
|
||||
|
||||
/* I/O to COM outputs */
|
||||
P5SEL |= (BIT5 | BIT6 | BIT7);
|
||||
P5DIR |= (BIT5 | BIT6 | BIT7);
|
||||
|
||||
/* Activate LCD output */
|
||||
LCDBPCTL0 = 0xFFFF; /* Select LCD segments S0-S15 */
|
||||
LCDBPCTL1 = 0x00FF; /* Select LCD segments S16-S22 */
|
||||
|
||||
#ifdef USE_LCD_CHARGE_PUMP
|
||||
/* Charge pump voltage generated internally, internal bias (V2-V4) generation */
|
||||
LCDBVCTL = LCDCPEN | VLCD_2_72;
|
||||
#endif
|
||||
}
|
||||
|
||||
void clear_display_all(void)
|
||||
{
|
||||
// Clear generic content
|
||||
clear_line(LINE1);
|
||||
clear_line(LINE2);
|
||||
}
|
||||
|
||||
void clear_display(void)
|
||||
{
|
||||
clear_line(LINE1);
|
||||
clear_line(LINE2);
|
||||
}
|
||||
|
||||
void clear_line(uint8_t line)
|
||||
{
|
||||
display_chars(switch_seg(line, LCD_SEG_L1_3_0, LCD_SEG_L2_5_0), NULL, SEG_OFF);
|
||||
|
||||
if (line == LINE1) {
|
||||
display_symbol(LCD_SEG_L1_DP1, SEG_OFF);
|
||||
display_symbol(LCD_SEG_L1_DP0, SEG_OFF);
|
||||
display_symbol(LCD_SEG_L1_COL, SEG_OFF);
|
||||
}
|
||||
/* line == LINE2 */
|
||||
else {
|
||||
display_symbol(LCD_SEG_L2_DP, SEG_OFF);
|
||||
display_symbol(LCD_SEG_L2_COL1, SEG_OFF);
|
||||
display_symbol(LCD_SEG_L2_COL0, SEG_OFF);
|
||||
}
|
||||
}
|
||||
|
||||
void write_lcd_mem(uint8_t *lcdmem, uint8_t bits, uint8_t bitmask, uint8_t state)
|
||||
{
|
||||
if (state == SEG_ON) {
|
||||
/* Clear segments before writing */
|
||||
*lcdmem = (uint8_t)(*lcdmem & ~bitmask);
|
||||
|
||||
/* Set visible segments */
|
||||
*lcdmem = (uint8_t)(*lcdmem | bits);
|
||||
}
|
||||
else if (state == SEG_OFF) {
|
||||
/* Clear segments */
|
||||
*lcdmem = (uint8_t)(*lcdmem & ~bitmask);
|
||||
}
|
||||
else if (state == SEG_ON_BLINK_ON) {
|
||||
/* Clear visible / blink segments before writing */
|
||||
*lcdmem = (uint8_t)(*lcdmem & ~bitmask);
|
||||
*(lcdmem + 0x20) = (uint8_t)(*(lcdmem + 0x20) & ~bitmask);
|
||||
|
||||
/* Set visible / blink segments */
|
||||
*lcdmem = (uint8_t)(*lcdmem | bits);
|
||||
*(lcdmem + 0x20) = (uint8_t)(*(lcdmem + 0x20) | bits);
|
||||
}
|
||||
else if (state == SEG_ON_BLINK_OFF) {
|
||||
/* Clear visible segments before writing */
|
||||
*lcdmem = (uint8_t)(*lcdmem & ~bitmask);
|
||||
|
||||
/* Set visible segments */
|
||||
*lcdmem = (uint8_t)(*lcdmem | bits);
|
||||
|
||||
/* Clear blink segments */
|
||||
*(lcdmem + 0x20) = (uint8_t)(*(lcdmem + 0x20) & ~bitmask);
|
||||
}
|
||||
else if (state == SEG_OFF_BLINK_OFF) {
|
||||
/* Clear segments */
|
||||
*lcdmem = (uint8_t)(*lcdmem & ~bitmask);
|
||||
|
||||
/* Clear blink segments */
|
||||
*(lcdmem + 0x20) = (uint8_t)(*(lcdmem + 0x20) & ~bitmask);
|
||||
}
|
||||
}
|
||||
|
||||
char *itoa(uint32_t n, uint8_t digits, uint8_t blanks)
|
||||
{
|
||||
uint8_t digits1 = digits;
|
||||
|
||||
/* Preset result string */
|
||||
memcpy(itoa_str, "0000000", 7);
|
||||
|
||||
/* Return empty string if number of digits is invalid (valid range for digits: 1-7) */
|
||||
if ((digits == 0) || (digits > 7)) {
|
||||
return (itoa_str);
|
||||
}
|
||||
|
||||
/* Numbers 0 .. 180 can be copied from itoa_conversion_table without conversion */
|
||||
if (n <= 180) {
|
||||
if (digits >= 3) {
|
||||
memcpy(itoa_str + (digits - 3), itoa_conversion_table[n], 3);
|
||||
}
|
||||
/* digits == 1 || 2 */
|
||||
else {
|
||||
memcpy(itoa_str, itoa_conversion_table[n] + (3 - digits), digits);
|
||||
}
|
||||
}
|
||||
/* For n > 180 need to calculate string content */
|
||||
else {
|
||||
/* Calculate digits from least to most significant number */
|
||||
do {
|
||||
itoa_str[digits - 1] = n % 10 + '0';
|
||||
n /= 10;
|
||||
}
|
||||
while (--digits > 0);
|
||||
}
|
||||
|
||||
/* Remove specified number of leading '0', always keep last one */
|
||||
uint8_t i = 0;
|
||||
while ((i < digits1 - 1) && (itoa_str[i] == '0')) {
|
||||
if (blanks > 0) {
|
||||
/* Convert only specified number of leading '0' */
|
||||
itoa_str[i] = ' ';
|
||||
blanks--;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return (itoa_str);
|
||||
}
|
||||
|
||||
void display_value1(uint8_t segments, uint32_t value, uint8_t digits, uint8_t blanks, uint8_t disp_mode)
|
||||
{
|
||||
char *str;
|
||||
|
||||
str = itoa(value, digits, blanks);
|
||||
|
||||
/* Display string in blink mode */
|
||||
display_chars(segments, str, disp_mode);
|
||||
}
|
||||
|
||||
void display_symbol(uint8_t symbol, uint8_t mode)
|
||||
{
|
||||
if (symbol <= LCD_SEG_L2_DP) {
|
||||
/* Get LCD memory address for symbol from table */
|
||||
uint8_t *lcdmem = (uint8_t *)segments_lcdmem[symbol];
|
||||
|
||||
/* Get bits for symbol from table */
|
||||
uint8_t bits = segments_bitmask[symbol];
|
||||
|
||||
/* Bitmask for symbols equals bits */
|
||||
uint8_t bitmask = bits;
|
||||
|
||||
/* Write LCD memory */
|
||||
write_lcd_mem(lcdmem, bits, bitmask, mode);
|
||||
}
|
||||
}
|
||||
|
||||
void display_char(uint8_t segment, char chr, uint8_t mode)
|
||||
{
|
||||
/* Write to single 7-segment character */
|
||||
if ((segment >= LCD_SEG_L1_3) && (segment <= LCD_SEG_L2_DP)) {
|
||||
uint8_t bits; /* Bits to write */
|
||||
|
||||
/* Get LCD memory address for segment from table */
|
||||
uint8_t *lcdmem = (uint8_t *)segments_lcdmem[segment];
|
||||
|
||||
/* Get bitmask for character from table */
|
||||
uint8_t bitmask = segments_bitmask[segment];
|
||||
|
||||
/* Get bits from font set */
|
||||
if ((chr >= 0x30) && (chr <= 0x5A)) {
|
||||
/* Use font set */
|
||||
bits = lcd_font[chr - 0x30];
|
||||
}
|
||||
else if (chr == 0x2D) {
|
||||
/* '-' not in font set */
|
||||
bits = BIT1;
|
||||
}
|
||||
else {
|
||||
/* Other characters map to ' ' (blank) */
|
||||
bits = 0;
|
||||
}
|
||||
|
||||
/* When addressing LINE2 7-segment characters need to swap high- and low-nibble, */
|
||||
/* because LCD COM/SEG assignment is mirrored against LINE1 */
|
||||
if (segment >= LCD_SEG_L2_5) {
|
||||
uint8_t bits1 = ((bits << 4) & 0xF0) | ((bits >> 4) & 0x0F);
|
||||
bits = bits1;
|
||||
|
||||
/* When addressing LCD_SEG_L2_5, need to convert ASCII '1' and 'L' to 1 bit, */
|
||||
/* because LCD COM/SEG assignment is special for this incomplete character */
|
||||
if (segment == LCD_SEG_L2_5) {
|
||||
if ((chr == '1') || (chr == 'L')) {
|
||||
bits = BIT7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Physically write to LCD memory */
|
||||
write_lcd_mem(lcdmem, bits, bitmask, mode);
|
||||
}
|
||||
}
|
||||
|
||||
void display_chars(uint8_t segments, char *str, uint8_t mode)
|
||||
{
|
||||
uint8_t length = 0; /* Write length */
|
||||
uint8_t char_start = 0; /* Starting point for consecutive write */
|
||||
|
||||
switch (segments) {
|
||||
/* LINE1 */
|
||||
case LCD_SEG_L1_3_0:
|
||||
length = 4;
|
||||
char_start = LCD_SEG_L1_3;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L1_2_0:
|
||||
length = 3;
|
||||
char_start = LCD_SEG_L1_2;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L1_1_0:
|
||||
length = 2;
|
||||
char_start = LCD_SEG_L1_1;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L1_3_1:
|
||||
length = 3;
|
||||
char_start = LCD_SEG_L1_3;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L1_3_2:
|
||||
length = 2;
|
||||
char_start = LCD_SEG_L1_3;
|
||||
break;
|
||||
|
||||
/* LINE2 */
|
||||
case LCD_SEG_L2_5_0:
|
||||
length = 6;
|
||||
char_start = LCD_SEG_L2_5;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L2_4_0:
|
||||
length = 5;
|
||||
char_start = LCD_SEG_L2_4;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L2_3_0:
|
||||
length = 4;
|
||||
char_start = LCD_SEG_L2_3;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L2_2_0:
|
||||
length = 3;
|
||||
char_start = LCD_SEG_L2_2;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L2_1_0:
|
||||
length = 2;
|
||||
char_start = LCD_SEG_L2_1;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L2_5_4:
|
||||
length = 2;
|
||||
char_start = LCD_SEG_L2_5;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L2_5_2:
|
||||
length = 4;
|
||||
char_start = LCD_SEG_L2_5;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L2_3_2:
|
||||
length = 2;
|
||||
char_start = LCD_SEG_L2_3;
|
||||
break;
|
||||
|
||||
case LCD_SEG_L2_4_2:
|
||||
length = 3;
|
||||
char_start = LCD_SEG_L2_4;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Write to consecutive digits */
|
||||
for (uint8_t i = 0; i < length; i++) {
|
||||
/* Use single character routine to write display memory */
|
||||
display_char(char_start + i, *(str + i), mode);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t switch_seg(uint8_t line, uint8_t index1, uint8_t index2)
|
||||
{
|
||||
if (line == LINE1) {
|
||||
return index1;
|
||||
}
|
||||
/* line == LINE2 */
|
||||
else {
|
||||
return index2;
|
||||
}
|
||||
}
|
||||
|
||||
void start_blink(void)
|
||||
{
|
||||
LCDBBLKCTL |= LCDBLKMOD0;
|
||||
}
|
||||
|
||||
void stop_blink(void)
|
||||
{
|
||||
LCDBBLKCTL &= ~LCDBLKMOD0;
|
||||
}
|
||||
|
||||
void clear_blink_mem(void)
|
||||
{
|
||||
LCDBMEMCTL |= LCDCLRBM;
|
||||
}
|
||||
|
||||
void set_blink_rate(uint8_t bits)
|
||||
{
|
||||
LCDBBLKCTL &= ~(BIT7 | BIT6 | BIT5);
|
||||
LCDBBLKCTL |= bits;
|
||||
}
|
||||
|
||||
void display_all_off(void)
|
||||
{
|
||||
uint8_t *lcdptr = (uint8_t *)0x0A20;
|
||||
for (uint8_t i = 1; i <= 12; i++) {
|
||||
*lcdptr = 0x00;
|
||||
lcdptr++;
|
||||
}
|
||||
}
|
@ -1,218 +0,0 @@
|
||||
/* *************************************************************************************************
|
||||
*
|
||||
* Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* ************************************************************************************************/
|
||||
|
||||
/* Basic display functions. */
|
||||
/* ************************************************************************************************* */
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief eZ430-chronos display driver character tables
|
||||
*
|
||||
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
||||
*
|
||||
*/
|
||||
|
||||
/* ************************************************************************************************* */
|
||||
/* Include section */
|
||||
#include <stdint.h>
|
||||
#include <cc430f6137.h>
|
||||
|
||||
#include "display.h"
|
||||
|
||||
/* ************************************************************************************************* */
|
||||
/* Global Variable section */
|
||||
|
||||
/* Table with memory bit assignment for digits "0" to "9" and characters "A" to "Z" */
|
||||
/* A */
|
||||
/* F B */
|
||||
/* G */
|
||||
/* E C */
|
||||
/* D */
|
||||
const uint8_t lcd_font[] = {
|
||||
SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F, /* Displays "0" */
|
||||
SEG_B + SEG_C, /* Displays "1" */
|
||||
SEG_A + SEG_B + SEG_D + SEG_E + SEG_G, /* Displays "2" */
|
||||
SEG_A + SEG_B + SEG_C + SEG_D + SEG_G, /* Displays "3" */
|
||||
SEG_B + SEG_C + SEG_F + SEG_G, /* Displays "4" */
|
||||
SEG_A + SEG_C + SEG_D + SEG_F + SEG_G, /* Displays "5" */
|
||||
SEG_A + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G, /* Displays "6" */
|
||||
SEG_A + SEG_B + SEG_C, /* Displays "7" */
|
||||
SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G, /* Displays "8" */
|
||||
SEG_A + SEG_B + SEG_C + SEG_D + SEG_F + SEG_G, /* Displays "9" */
|
||||
0, /* Displays " " (:) */
|
||||
0, /* Displays " " (;) */
|
||||
SEG_A + SEG_F + SEG_G, /* Displays "<" as high c */
|
||||
SEG_D + SEG_G, /* Displays "=" */
|
||||
0, /* Displays " " (>) */
|
||||
SEG_A + SEG_B + SEG_E + SEG_G, /* Displays "?" */
|
||||
0, /* Displays " " (@) */
|
||||
SEG_A + SEG_B + SEG_C + SEG_E + SEG_F + SEG_G, /* Displays "A" */
|
||||
SEG_C + SEG_D + SEG_E + SEG_F + SEG_G, /* Displays "b" */
|
||||
SEG_D + SEG_E + SEG_G, /* Displays "c" */
|
||||
SEG_B + SEG_C + SEG_D + SEG_E + SEG_G, /* Displays "d" */
|
||||
SEG_A + SEG_D + SEG_E + SEG_F + SEG_G, /* Displays "E" */
|
||||
SEG_A + SEG_E + SEG_F + SEG_G, /* Displays "f" */
|
||||
SEG_A + SEG_B + SEG_C + SEG_D + SEG_F + SEG_G, /* Displays "g" same as 9 */
|
||||
SEG_C + SEG_E + SEG_F + SEG_G, /* Displays "h" */
|
||||
SEG_E, /* Displays "i" */
|
||||
SEG_A + SEG_B + SEG_C + SEG_D, /* Displays "J" */
|
||||
SEG_D + SEG_F + SEG_G, /* Displays "k" */
|
||||
SEG_D + SEG_E + SEG_F, /* Displays "L" */
|
||||
SEG_A + SEG_B + SEG_C + SEG_E + SEG_F, /* Displays "M" */
|
||||
SEG_C + SEG_E + SEG_G, /* Displays "n" */
|
||||
SEG_C + SEG_D + SEG_E + SEG_G, /* Displays "o" */
|
||||
SEG_A + SEG_B + SEG_E + SEG_F + SEG_G, /* Displays "P" */
|
||||
SEG_A + SEG_B + SEG_C + SEG_F + SEG_G, /* Displays "q" */
|
||||
SEG_E + SEG_G, /* Displays "r" */
|
||||
SEG_A + SEG_C + SEG_D + SEG_F + SEG_G, /* Displays "S" same as 5 */
|
||||
SEG_D + SEG_E + SEG_F + SEG_G, /* Displays "t" */
|
||||
SEG_C + SEG_D + SEG_E, /* Displays "u" */
|
||||
SEG_C + SEG_D + SEG_E, /* Displays "v" same as u */
|
||||
SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G, /* Displays "W" */
|
||||
SEG_B + SEG_C + SEG_E + SEG_F + SEG_G, /* Displays "X" as H */
|
||||
SEG_B + SEG_C + SEG_D + SEG_F + SEG_G, /* Displays "Y" */
|
||||
SEG_A + SEG_B + SEG_D + SEG_E + SEG_G, /* Displays "Z" same as 2 */
|
||||
};
|
||||
|
||||
/* Table with memory address for each display element */
|
||||
const uint8_t *segments_lcdmem[] = {
|
||||
LCD_SYMB_AM_MEM,
|
||||
LCD_SYMB_PM_MEM,
|
||||
LCD_SYMB_ARROW_UP_MEM,
|
||||
LCD_SYMB_ARROW_DOWN_MEM,
|
||||
LCD_SYMB_PERCENT_MEM,
|
||||
LCD_SYMB_TOTAL_MEM,
|
||||
LCD_SYMB_AVERAGE_MEM,
|
||||
LCD_SYMB_MAX_MEM,
|
||||
LCD_SYMB_BATTERY_MEM,
|
||||
LCD_UNIT_L1_FT_MEM,
|
||||
LCD_UNIT_L1_K_MEM,
|
||||
LCD_UNIT_L1_M_MEM,
|
||||
LCD_UNIT_L1_I_MEM,
|
||||
LCD_UNIT_L1_PER_S_MEM,
|
||||
LCD_UNIT_L1_PER_H_MEM,
|
||||
LCD_UNIT_L1_DEGREE_MEM,
|
||||
LCD_UNIT_L2_KCAL_MEM,
|
||||
LCD_UNIT_L2_KM_MEM,
|
||||
LCD_UNIT_L2_MI_MEM,
|
||||
LCD_ICON_HEART_MEM,
|
||||
LCD_ICON_STOPWATCH_MEM,
|
||||
LCD_ICON_RECORD_MEM,
|
||||
LCD_ICON_ALARM_MEM,
|
||||
LCD_ICON_BEEPER1_MEM,
|
||||
LCD_ICON_BEEPER2_MEM,
|
||||
LCD_ICON_BEEPER3_MEM,
|
||||
LCD_SEG_L1_3_MEM,
|
||||
LCD_SEG_L1_2_MEM,
|
||||
LCD_SEG_L1_1_MEM,
|
||||
LCD_SEG_L1_0_MEM,
|
||||
LCD_SEG_L1_COL_MEM,
|
||||
LCD_SEG_L1_DP1_MEM,
|
||||
LCD_SEG_L1_DP0_MEM,
|
||||
LCD_SEG_L2_5_MEM,
|
||||
LCD_SEG_L2_4_MEM,
|
||||
LCD_SEG_L2_3_MEM,
|
||||
LCD_SEG_L2_2_MEM,
|
||||
LCD_SEG_L2_1_MEM,
|
||||
LCD_SEG_L2_0_MEM,
|
||||
LCD_SEG_L2_COL1_MEM,
|
||||
LCD_SEG_L2_COL0_MEM,
|
||||
LCD_SEG_L2_DP_MEM,
|
||||
};
|
||||
|
||||
/* Table with bit mask for each display element */
|
||||
const uint8_t segments_bitmask[] = {
|
||||
LCD_SYMB_AM_MASK,
|
||||
LCD_SYMB_PM_MASK,
|
||||
LCD_SYMB_ARROW_UP_MASK,
|
||||
LCD_SYMB_ARROW_DOWN_MASK,
|
||||
LCD_SYMB_PERCENT_MASK,
|
||||
LCD_SYMB_TOTAL_MASK,
|
||||
LCD_SYMB_AVERAGE_MASK,
|
||||
LCD_SYMB_MAX_MASK,
|
||||
LCD_SYMB_BATTERY_MASK,
|
||||
LCD_UNIT_L1_FT_MASK,
|
||||
LCD_UNIT_L1_K_MASK,
|
||||
LCD_UNIT_L1_M_MASK,
|
||||
LCD_UNIT_L1_I_MASK,
|
||||
LCD_UNIT_L1_PER_S_MASK,
|
||||
LCD_UNIT_L1_PER_H_MASK,
|
||||
LCD_UNIT_L1_DEGREE_MASK,
|
||||
LCD_UNIT_L2_KCAL_MASK,
|
||||
LCD_UNIT_L2_KM_MASK,
|
||||
LCD_UNIT_L2_MI_MASK,
|
||||
LCD_ICON_HEART_MASK,
|
||||
LCD_ICON_STOPWATCH_MASK,
|
||||
LCD_ICON_RECORD_MASK,
|
||||
LCD_ICON_ALARM_MASK,
|
||||
LCD_ICON_BEEPER1_MASK,
|
||||
LCD_ICON_BEEPER2_MASK,
|
||||
LCD_ICON_BEEPER3_MASK,
|
||||
LCD_SEG_L1_3_MASK,
|
||||
LCD_SEG_L1_2_MASK,
|
||||
LCD_SEG_L1_1_MASK,
|
||||
LCD_SEG_L1_0_MASK,
|
||||
LCD_SEG_L1_COL_MASK,
|
||||
LCD_SEG_L1_DP1_MASK,
|
||||
LCD_SEG_L1_DP0_MASK,
|
||||
LCD_SEG_L2_5_MASK,
|
||||
LCD_SEG_L2_4_MASK,
|
||||
LCD_SEG_L2_3_MASK,
|
||||
LCD_SEG_L2_2_MASK,
|
||||
LCD_SEG_L2_1_MASK,
|
||||
LCD_SEG_L2_0_MASK,
|
||||
LCD_SEG_L2_COL1_MASK,
|
||||
LCD_SEG_L2_COL0_MASK,
|
||||
LCD_SEG_L2_DP_MASK,
|
||||
};
|
||||
|
||||
/* Quick integer to array conversion table for most common integer values
|
||||
* discarding this would save aprox. 600 bytes codespace but increase cpu time
|
||||
* for displaying values */
|
||||
const uint8_t itoa_conversion_table[][3] = {
|
||||
"000", "001", "002", "003", "004", "005", "006", "007", "008", "009", "010", "011", "012", "013", "014", "015",
|
||||
"016", "017", "018", "019", "020", "021", "022", "023", "024", "025", "026", "027", "028", "029", "030", "031",
|
||||
"032", "033", "034", "035", "036", "037", "038", "039", "040", "041", "042", "043", "044", "045", "046", "047",
|
||||
"048", "049", "050", "051", "052", "053", "054", "055", "056", "057", "058", "059", "060", "061", "062", "063",
|
||||
"064", "065", "066", "067", "068", "069", "070", "071", "072", "073", "074", "075", "076", "077", "078", "079",
|
||||
"080", "081", "082", "083", "084", "085", "086", "087", "088", "089", "090", "091", "092", "093", "094", "095",
|
||||
"096", "097", "098", "099", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111",
|
||||
"112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127",
|
||||
"128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143",
|
||||
"144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159",
|
||||
"160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175",
|
||||
"176", "177", "178", "179", "180",
|
||||
};
|
@ -1,70 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 INRIA
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_chronos
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief eZ430-chronos putchar via display implementation
|
||||
*
|
||||
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
||||
* @author Ludwig Knüpfer <ludwig.knuepfer@fu-berlin.de>
|
||||
* @author Aleksandr Mikoff <sir.enmity@gmail.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "display.h"
|
||||
|
||||
extern void (*_putchar)(int c);
|
||||
|
||||
static char display_buf[11];
|
||||
|
||||
void putchar_to_display(int c);
|
||||
|
||||
void init_display_putchar(void)
|
||||
{
|
||||
memset(display_buf, '\0', 11);
|
||||
_putchar = putchar_to_display;
|
||||
}
|
||||
|
||||
void putchar_to_display(int c)
|
||||
{
|
||||
if (c == '\n') {
|
||||
display_buf[4] = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (display_buf[4]) {
|
||||
memset(display_buf, '\0', 11);
|
||||
}
|
||||
else {
|
||||
display_buf[0] = display_buf[1];
|
||||
display_buf[1] = display_buf[2];
|
||||
display_buf[2] = display_buf[3];
|
||||
display_buf[3] = display_buf[5];
|
||||
display_buf[5] = display_buf[6];
|
||||
display_buf[6] = display_buf[7];
|
||||
display_buf[7] = display_buf[8];
|
||||
display_buf[8] = display_buf[9];
|
||||
}
|
||||
|
||||
display_buf[9] = toupper(c);
|
||||
|
||||
clear_display_all();
|
||||
|
||||
display_chars(LCD_SEG_L1_3_0, display_buf, SEG_ON);
|
||||
display_chars(LCD_SEG_L2_5_0, display_buf + 4, SEG_ON);
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
#ifndef BATTERY_H
|
||||
#define BATTERY_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
uint32_t battery_get_voltage(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BATTERY_H */
|
@ -1,24 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
#ifndef BUZZER_H
|
||||
#define BUZZER_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void buzzer_beep(uint8_t pitch, uint32_t duration);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BUZZER_H */
|
@ -1,468 +0,0 @@
|
||||
/* *************************************************************************************************
|
||||
*
|
||||
* Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* *************************************************************************************************
|
||||
* Basic display functions.
|
||||
* ************************************************************************************************/
|
||||
|
||||
#ifndef DISPLAY_H
|
||||
#define DISPLAY_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define CLOCK_24HR (0)
|
||||
#define CLOCK_AM_PM (1)
|
||||
#define CLOCK_DISPLAY_SELECT (2)
|
||||
|
||||
|
||||
/* *************************************************************************************************
|
||||
* Global Variable section */
|
||||
|
||||
/** Set of display flags */
|
||||
typedef union {
|
||||
struct {
|
||||
/* Line1 + Line2 + Icons*/
|
||||
uint16_t full_update : 1; /**< 1 = Redraw all content */
|
||||
uint16_t partial_update : 1; /**< 1 = Update changes */
|
||||
|
||||
/* Line only */
|
||||
uint16_t line1_full_update : 1; /**< 1 = Redraw Line1 content */
|
||||
uint16_t line2_full_update : 1; /**< 1 = Redraw Line2 content */
|
||||
|
||||
/* Logic module data update flags */
|
||||
uint16_t update_time : 1; /**< 1 = Time was updated */
|
||||
uint16_t update_stopwatch : 1; /**< 1 = Stopwatch was updated */
|
||||
uint16_t update_temperature : 1; /**< 1 = Temperature was updated */
|
||||
uint16_t update_battery_voltage : 1; /**< 1 = Battery voltage was updated */
|
||||
uint16_t update_date : 1; /**< 1 = Date was updated */
|
||||
uint16_t update_alarm : 1; /**< 1 = Alarm time was updated */
|
||||
uint16_t update_acceleration : 1; /**< 1 = Acceleration data was updated */
|
||||
} flag; /**< Bitfield for the display flags */
|
||||
uint16_t all_flags; /**< Shortcut to all display flags (for reset) */
|
||||
} s_display_flags_t;
|
||||
|
||||
extern volatile s_display_flags_t display;
|
||||
|
||||
/* Constants defined in library */
|
||||
extern const uint8_t lcd_font[];
|
||||
extern const uint8_t *segments_lcdmem[];
|
||||
extern const uint8_t segments_bitmask[];
|
||||
extern const uint8_t itoa_conversion_table[][3];
|
||||
|
||||
/* ************************************************************************************************* */
|
||||
/* Defines section */
|
||||
|
||||
/* Display function modes */
|
||||
#define DISPLAY_LINE_UPDATE_FULL (BIT0)
|
||||
#define DISPLAY_LINE_UPDATE_PARTIAL (BIT1)
|
||||
#define DISPLAY_LINE_CLEAR (BIT2)
|
||||
|
||||
/* Definitions for line view style */
|
||||
#define DISPLAY_DEFAULT_VIEW (0u)
|
||||
#define DISPLAY_ALTERNATIVE_VIEW (1u)
|
||||
#define DISPLAY_ALTERNATIVE2_VIEW (2u)
|
||||
|
||||
/* Definitions for line access */
|
||||
#define LINE1 (1u)
|
||||
#define LINE2 (2u)
|
||||
|
||||
/* LCD display modes */
|
||||
#define SEG_OFF (0u)
|
||||
#define SEG_ON (1u)
|
||||
#define SEG_ON_BLINK_ON (2u)
|
||||
#define SEG_ON_BLINK_OFF (3u)
|
||||
#define SEG_OFF_BLINK_OFF (4u)
|
||||
|
||||
/* 7-segment character bit assignments */
|
||||
#define SEG_A (BIT4)
|
||||
#define SEG_B (BIT5)
|
||||
#define SEG_C (BIT6)
|
||||
#define SEG_D (BIT7)
|
||||
#define SEG_E (BIT2)
|
||||
#define SEG_F (BIT0)
|
||||
#define SEG_G (BIT1)
|
||||
|
||||
/* ------------------------------------------
|
||||
* LCD symbols for easier access
|
||||
*
|
||||
* xxx_SEG_xxx = Seven-segment character (sequence 5-4-3-2-1-0)
|
||||
* xxx_SYMB_xxx = Display symbol, e.g. "AM" for ante meridiem
|
||||
* xxx_UNIT_xxx = Display unit, e.g. "km/h" for kilometers per hour
|
||||
* xxx_ICON_xxx = Display icon, e.g. heart to indicate reception of heart rate data
|
||||
* xxx_L1_xxx = Item is part of Line1 information
|
||||
* xxx_L2_xxx = Item is part of Line2 information
|
||||
*/
|
||||
|
||||
//* Symbols for Line1 */
|
||||
#define LCD_SYMB_AM 0
|
||||
#define LCD_SYMB_PM 1
|
||||
#define LCD_SYMB_ARROW_UP 2
|
||||
#define LCD_SYMB_ARROW_DOWN 3
|
||||
#define LCD_SYMB_PERCENT 4
|
||||
|
||||
/* Symbols for Line2 */
|
||||
#define LCD_SYMB_TOTAL 5
|
||||
#define LCD_SYMB_AVERAGE 6
|
||||
#define LCD_SYMB_MAX 7
|
||||
#define LCD_SYMB_BATTERY 8
|
||||
|
||||
/* Units for Line1 */
|
||||
#define LCD_UNIT_L1_FT 9
|
||||
#define LCD_UNIT_L1_K 10
|
||||
#define LCD_UNIT_L1_M 11
|
||||
#define LCD_UNIT_L1_I 12
|
||||
#define LCD_UNIT_L1_PER_S 13
|
||||
#define LCD_UNIT_L1_PER_H 14
|
||||
#define LCD_UNIT_L1_DEGREE 15
|
||||
|
||||
/* Units for Line2 */
|
||||
#define LCD_UNIT_L2_KCAL 16
|
||||
#define LCD_UNIT_L2_KM 17
|
||||
#define LCD_UNIT_L2_MI 18
|
||||
|
||||
/* Icons */
|
||||
#define LCD_ICON_HEART 19
|
||||
#define LCD_ICON_STOPWATCH 20
|
||||
#define LCD_ICON_RECORD 21
|
||||
#define LCD_ICON_ALARM 22
|
||||
#define LCD_ICON_BEEPER1 23
|
||||
#define LCD_ICON_BEEPER2 24
|
||||
#define LCD_ICON_BEEPER3 25
|
||||
|
||||
/* Line1 7-segments */
|
||||
#define LCD_SEG_L1_3 26
|
||||
#define LCD_SEG_L1_2 27
|
||||
#define LCD_SEG_L1_1 28
|
||||
#define LCD_SEG_L1_0 29
|
||||
#define LCD_SEG_L1_COL 30
|
||||
#define LCD_SEG_L1_DP1 31
|
||||
#define LCD_SEG_L1_DP0 32
|
||||
|
||||
/* Line2 7-segments */
|
||||
#define LCD_SEG_L2_5 33
|
||||
#define LCD_SEG_L2_4 34
|
||||
#define LCD_SEG_L2_3 35
|
||||
#define LCD_SEG_L2_2 36
|
||||
#define LCD_SEG_L2_1 37
|
||||
#define LCD_SEG_L2_0 38
|
||||
#define LCD_SEG_L2_COL1 39
|
||||
#define LCD_SEG_L2_COL0 40
|
||||
#define LCD_SEG_L2_DP 41
|
||||
|
||||
/* Line1 7-segment arrays */
|
||||
#define LCD_SEG_L1_3_0 70
|
||||
#define LCD_SEG_L1_2_0 71
|
||||
#define LCD_SEG_L1_1_0 72
|
||||
#define LCD_SEG_L1_3_1 73
|
||||
#define LCD_SEG_L1_3_2 74
|
||||
|
||||
/* Line2 7-segment arrays */
|
||||
#define LCD_SEG_L2_5_0 90
|
||||
#define LCD_SEG_L2_4_0 91
|
||||
#define LCD_SEG_L2_3_0 92
|
||||
#define LCD_SEG_L2_2_0 93
|
||||
#define LCD_SEG_L2_1_0 94
|
||||
#define LCD_SEG_L2_5_2 95
|
||||
#define LCD_SEG_L2_3_2 96
|
||||
#define LCD_SEG_L2_5_4 97
|
||||
#define LCD_SEG_L2_4_2 98
|
||||
|
||||
/* LCD controller memory map */
|
||||
#define LCD_MEM_1 ((uint8_t*)0x0A20)
|
||||
#define LCD_MEM_2 ((uint8_t*)0x0A21)
|
||||
#define LCD_MEM_3 ((uint8_t*)0x0A22)
|
||||
#define LCD_MEM_4 ((uint8_t*)0x0A23)
|
||||
#define LCD_MEM_5 ((uint8_t*)0x0A24)
|
||||
#define LCD_MEM_6 ((uint8_t*)0x0A25)
|
||||
#define LCD_MEM_7 ((uint8_t*)0x0A26)
|
||||
#define LCD_MEM_8 ((uint8_t*)0x0A27)
|
||||
#define LCD_MEM_9 ((uint8_t*)0x0A28)
|
||||
#define LCD_MEM_10 ((uint8_t*)0x0A29)
|
||||
#define LCD_MEM_11 ((uint8_t*)0x0A2A)
|
||||
#define LCD_MEM_12 ((uint8_t*)0x0A2B)
|
||||
|
||||
/* Memory assignment */
|
||||
#define LCD_SEG_L1_0_MEM (LCD_MEM_6)
|
||||
#define LCD_SEG_L1_1_MEM (LCD_MEM_4)
|
||||
#define LCD_SEG_L1_2_MEM (LCD_MEM_3)
|
||||
#define LCD_SEG_L1_3_MEM (LCD_MEM_2)
|
||||
#define LCD_SEG_L1_COL_MEM (LCD_MEM_1)
|
||||
#define LCD_SEG_L1_DP1_MEM (LCD_MEM_1)
|
||||
#define LCD_SEG_L1_DP0_MEM (LCD_MEM_5)
|
||||
#define LCD_SEG_L2_0_MEM (LCD_MEM_8)
|
||||
#define LCD_SEG_L2_1_MEM (LCD_MEM_9)
|
||||
#define LCD_SEG_L2_2_MEM (LCD_MEM_10)
|
||||
#define LCD_SEG_L2_3_MEM (LCD_MEM_11)
|
||||
#define LCD_SEG_L2_4_MEM (LCD_MEM_12)
|
||||
#define LCD_SEG_L2_5_MEM (LCD_MEM_12)
|
||||
#define LCD_SEG_L2_COL1_MEM (LCD_MEM_1)
|
||||
#define LCD_SEG_L2_COL0_MEM (LCD_MEM_5)
|
||||
#define LCD_SEG_L2_DP_MEM (LCD_MEM_9)
|
||||
#define LCD_SYMB_AM_MEM (LCD_MEM_1)
|
||||
#define LCD_SYMB_PM_MEM (LCD_MEM_1)
|
||||
#define LCD_SYMB_ARROW_UP_MEM (LCD_MEM_1)
|
||||
#define LCD_SYMB_ARROW_DOWN_MEM (LCD_MEM_1)
|
||||
#define LCD_SYMB_PERCENT_MEM (LCD_MEM_5)
|
||||
#define LCD_SYMB_TOTAL_MEM (LCD_MEM_11)
|
||||
#define LCD_SYMB_AVERAGE_MEM (LCD_MEM_10)
|
||||
#define LCD_SYMB_MAX_MEM (LCD_MEM_8)
|
||||
#define LCD_SYMB_BATTERY_MEM (LCD_MEM_7)
|
||||
#define LCD_UNIT_L1_FT_MEM (LCD_MEM_5)
|
||||
#define LCD_UNIT_L1_K_MEM (LCD_MEM_5)
|
||||
#define LCD_UNIT_L1_M_MEM (LCD_MEM_7)
|
||||
#define LCD_UNIT_L1_I_MEM (LCD_MEM_7)
|
||||
#define LCD_UNIT_L1_PER_S_MEM (LCD_MEM_5)
|
||||
#define LCD_UNIT_L1_PER_H_MEM (LCD_MEM_7)
|
||||
#define LCD_UNIT_L1_DEGREE_MEM (LCD_MEM_5)
|
||||
#define LCD_UNIT_L2_KCAL_MEM (LCD_MEM_7)
|
||||
#define LCD_UNIT_L2_KM_MEM (LCD_MEM_7)
|
||||
#define LCD_UNIT_L2_MI_MEM (LCD_MEM_7)
|
||||
#define LCD_ICON_HEART_MEM (LCD_MEM_2)
|
||||
#define LCD_ICON_STOPWATCH_MEM (LCD_MEM_3)
|
||||
#define LCD_ICON_RECORD_MEM (LCD_MEM_1)
|
||||
#define LCD_ICON_ALARM_MEM (LCD_MEM_4)
|
||||
#define LCD_ICON_BEEPER1_MEM (LCD_MEM_5)
|
||||
#define LCD_ICON_BEEPER2_MEM (LCD_MEM_6)
|
||||
#define LCD_ICON_BEEPER3_MEM (LCD_MEM_7)
|
||||
|
||||
/* Bit masks for write access */
|
||||
#define LCD_SEG_L1_0_MASK (BIT2+BIT1+BIT0+BIT7+BIT6+BIT5+BIT4)
|
||||
#define LCD_SEG_L1_1_MASK (BIT2+BIT1+BIT0+BIT7+BIT6+BIT5+BIT4)
|
||||
#define LCD_SEG_L1_2_MASK (BIT2+BIT1+BIT0+BIT7+BIT6+BIT5+BIT4)
|
||||
#define LCD_SEG_L1_3_MASK (BIT2+BIT1+BIT0+BIT7+BIT6+BIT5+BIT4)
|
||||
#define LCD_SEG_L1_COL_MASK (BIT5)
|
||||
#define LCD_SEG_L1_DP1_MASK (BIT6)
|
||||
#define LCD_SEG_L1_DP0_MASK (BIT2)
|
||||
#define LCD_SEG_L2_0_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4)
|
||||
#define LCD_SEG_L2_1_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4)
|
||||
#define LCD_SEG_L2_2_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4)
|
||||
#define LCD_SEG_L2_3_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4)
|
||||
#define LCD_SEG_L2_4_MASK (BIT3+BIT2+BIT1+BIT0+BIT6+BIT5+BIT4)
|
||||
#define LCD_SEG_L2_5_MASK (BIT7)
|
||||
#define LCD_SEG_L2_COL1_MASK (BIT4)
|
||||
#define LCD_SEG_L2_COL0_MASK (BIT0)
|
||||
#define LCD_SEG_L2_DP_MASK (BIT7)
|
||||
#define LCD_SYMB_AM_MASK (BIT1+BIT0)
|
||||
#define LCD_SYMB_PM_MASK (BIT0)
|
||||
#define LCD_SYMB_ARROW_UP_MASK (BIT2)
|
||||
#define LCD_SYMB_ARROW_DOWN_MASK (BIT3)
|
||||
#define LCD_SYMB_PERCENT_MASK (BIT4)
|
||||
#define LCD_SYMB_TOTAL_MASK (BIT7)
|
||||
#define LCD_SYMB_AVERAGE_MASK (BIT7)
|
||||
#define LCD_SYMB_MAX_MASK (BIT7)
|
||||
#define LCD_SYMB_BATTERY_MASK (BIT7)
|
||||
#define LCD_UNIT_L1_FT_MASK (BIT5)
|
||||
#define LCD_UNIT_L1_K_MASK (BIT6)
|
||||
#define LCD_UNIT_L1_M_MASK (BIT1)
|
||||
#define LCD_UNIT_L1_I_MASK (BIT0)
|
||||
#define LCD_UNIT_L1_PER_S_MASK (BIT7)
|
||||
#define LCD_UNIT_L1_PER_H_MASK (BIT2)
|
||||
#define LCD_UNIT_L1_DEGREE_MASK (BIT1)
|
||||
#define LCD_UNIT_L2_KCAL_MASK (BIT4)
|
||||
#define LCD_UNIT_L2_KM_MASK (BIT5)
|
||||
#define LCD_UNIT_L2_MI_MASK (BIT6)
|
||||
#define LCD_ICON_HEART_MASK (BIT3)
|
||||
#define LCD_ICON_STOPWATCH_MASK (BIT3)
|
||||
#define LCD_ICON_RECORD_MASK (BIT7)
|
||||
#define LCD_ICON_ALARM_MASK (BIT3)
|
||||
#define LCD_ICON_BEEPER1_MASK (BIT3)
|
||||
#define LCD_ICON_BEEPER2_MASK (BIT3)
|
||||
#define LCD_ICON_BEEPER3_MASK (BIT3)
|
||||
|
||||
|
||||
/* *************************************************************************************************
|
||||
* API section
|
||||
*/
|
||||
|
||||
/* Physical LCD memory write */
|
||||
/* *************************************************************************************************
|
||||
* @fn write_segment
|
||||
* @brief Write to one or multiple LCD segments
|
||||
* @param lcdmem Pointer to LCD byte memory
|
||||
* bits Segments to address
|
||||
* bitmask Bitmask for particular display item
|
||||
* mode On, off or blink segments
|
||||
* @return
|
||||
* ************************************************************************************************/
|
||||
void write_lcd_mem(uint8_t *lcdmem, uint8_t bits, uint8_t bitmask, uint8_t state);
|
||||
|
||||
/* Display init / clear */
|
||||
/* *************************************************************************************************
|
||||
* @fn lcd_init
|
||||
* @brief Erase LCD memory. Init LCD peripheral.
|
||||
* @param none
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void lcd_init(void);
|
||||
|
||||
/* *************************************************************************************************
|
||||
* @fn clear_display
|
||||
* @brief Erase LINE1 and LINE2 segments. Keep icons.
|
||||
* @param none
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void clear_display(void);
|
||||
|
||||
/* *************************************************************************************************
|
||||
* @fn clear_display_all
|
||||
* @brief Erase LINE1 and LINE2 segments. Clear also function-specific content.
|
||||
* @param none
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void clear_display_all(void);
|
||||
|
||||
/* *************************************************************************************************
|
||||
* @fn clear_line
|
||||
* @brief Erase segments of a given line.
|
||||
* @param uint8_t line LINE1, LINE2
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void clear_line(uint8_t line);
|
||||
|
||||
/* Blinking function */
|
||||
/* *************************************************************************************************
|
||||
* @fn start_blink
|
||||
* @brief Start blinking.
|
||||
* @param none
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void start_blink(void);
|
||||
|
||||
/* *************************************************************************************************
|
||||
* @fn stop_blink
|
||||
* @brief Stop blinking.
|
||||
* @param none
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void stop_blink(void);
|
||||
|
||||
/* *************************************************************************************************
|
||||
* @fn stop_blink
|
||||
* @brief Clear blinking memory.
|
||||
* @param none
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void clear_blink_mem(void);
|
||||
|
||||
/* *************************************************************************************************
|
||||
* @fn set_blink_rate
|
||||
* @brief Set blink rate register bits.
|
||||
* @param none
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void set_blink_rate(uint8_t bits);
|
||||
|
||||
/* Character / symbol draw functions */
|
||||
/* *************************************************************************************************
|
||||
* @fn display_char
|
||||
* @brief Write to 7-segment characters.
|
||||
* @param uint8_t segment A valid LCD segment
|
||||
* uint8_t chr Character to display
|
||||
* uint8_t mode SEG_ON, SEG_OFF, SEG_BLINK
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void display_char(uint8_t segment, char chr, uint8_t mode);
|
||||
|
||||
/* *************************************************************************************************
|
||||
* @FN display_chars
|
||||
* @brief Write to consecutive 7-segment characters.
|
||||
* @param uint8_t segments LCD segment array
|
||||
* uint8_t * str Pointer to a string
|
||||
* uint8_t mode SEG_ON, SEG_OFF, SEG_BLINK
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void display_chars(uint8_t segments, char *str, uint8_t mode);
|
||||
|
||||
/* *************************************************************************************************
|
||||
* @fn display_symbol
|
||||
* @brief Switch symbol on or off on LCD.
|
||||
* @param uint8_t symbol A valid LCD symbol (index 0..42)
|
||||
* uint8_t state SEG_ON, SEG_OFF, SEG_BLINK
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void display_symbol(uint8_t symbol, uint8_t mode);
|
||||
|
||||
/* Set_value display functions */
|
||||
/* *************************************************************************************************
|
||||
* @fn display_value1
|
||||
* @brief Generic decimal display routine. Used exclusively by set_value function.
|
||||
* @param uint8_t segments LCD segments where value is displayed
|
||||
* uint32_t value Integer value to be displayed
|
||||
* uint8_t digits Number of digits to convert
|
||||
* uint8_t blanks Number of leadings blanks in itoa result string
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void display_value1(uint8_t segments, uint32_t value, uint8_t digits, uint8_t blanks, uint8_t disp_mode);
|
||||
|
||||
/* Integer to string conversion */
|
||||
/* *************************************************************************************************
|
||||
* @fn itoa
|
||||
* @brief Generic integer to array routine. Converts integer n to string.
|
||||
* Default conversion result has leading zeros, e.g. "00123"
|
||||
* Option to convert leading '0' into whitespace (blanks)
|
||||
* @param uint32_t n integer to convert
|
||||
* uint8_t digits number of digits
|
||||
* uint8_t blanks fill up result string with number of whitespaces instead of leading zeros
|
||||
* @return uint8_t string
|
||||
* ************************************************************************************************/
|
||||
char *itoa(uint32_t n, uint8_t digits, uint8_t blanks);
|
||||
|
||||
/* Segment index helper function */
|
||||
/* *************************************************************************************************
|
||||
* @fn switch_seg
|
||||
* @brief Returns index of 7-segment character. Required for display routines that can draw
|
||||
* information on both lines.
|
||||
* @param uint8_t line LINE1, LINE2
|
||||
* uint8_t index1 Index of LINE1
|
||||
* uint8_t index2 Index of LINE2
|
||||
* @return uint8
|
||||
* ************************************************************************************************/
|
||||
uint8_t switch_seg(uint8_t line, uint8_t index1, uint8_t index2);
|
||||
|
||||
/* *************************************************************************************************
|
||||
* @fn display_all_off
|
||||
* @brief Sets everything of on the display
|
||||
* @param none
|
||||
* @return none
|
||||
* ************************************************************************************************/
|
||||
void display_all_off(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DISPLAY_H */
|
@ -1,22 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
#ifndef DISPLAY_PUTCHAR_H
|
||||
#define DISPLAY_PUTCHAR_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void init_display_putchar(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DISPLAY_PUTCHAR_H */
|
@ -1,59 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2013,2015 Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_chronos
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Header for the chronos board
|
||||
*
|
||||
* @author unknown
|
||||
*/
|
||||
|
||||
#ifndef BOARD_H
|
||||
#define BOARD_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Define the CPU model for the <msp430.h>
|
||||
*/
|
||||
#ifndef __CC430F6137__
|
||||
#define __CC430F6137__
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @name Xtimer configuration
|
||||
* @{
|
||||
*/
|
||||
#define XTIMER_WIDTH (16)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name MSP430 core configuration
|
||||
* @{
|
||||
*/
|
||||
/** @todo Move this to the periph_conf.h */
|
||||
#define MSP430_INITIAL_CPU_SPEED 7372800uL
|
||||
#define F_CPU MSP430_INITIAL_CPU_SPEED
|
||||
#define F_RC_OSCILLATOR 32768
|
||||
#define MSP430_HAS_DCOR 1
|
||||
#define MSP430_HAS_EXTERNAL_CRYSTAL 1
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BOARD_H */
|
||||
/** @} */
|
@ -1,27 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
#ifndef BUTTONS_H
|
||||
#define BUTTONS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// Button ports
|
||||
#define BUTTON_STAR_PIN (BIT2)
|
||||
#define BUTTON_NUM_PIN (BIT1)
|
||||
#define BUTTON_UP_PIN (BIT4)
|
||||
#define BUTTON_DOWN_PIN (BIT0)
|
||||
#define BUTTON_BACKLIGHT_PIN (BIT3)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BUTTONS_H */
|
@ -1,61 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 INRIA
|
||||
* 2015 Freie Universität Berlin
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser General
|
||||
* Public License v2.1. See the file LICENSE in the top level directory for more
|
||||
* details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_chronos
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief Chronos peripheral configuration
|
||||
*
|
||||
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
||||
*/
|
||||
|
||||
#ifndef PERIPH_CONF_H
|
||||
#define PERIPH_CONF_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @name Clock configuration
|
||||
* @{
|
||||
*/
|
||||
/** @todo Move all clock configuration code here from the board.h */
|
||||
#define CLOCK_CORECLOCK (12000000U)
|
||||
|
||||
#define CLOCK_CMCLK CLOCK_CORECLOCK /* no divider programmed */
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Timer configuration
|
||||
* @{
|
||||
*/
|
||||
#define TIMER_NUMOF (1U)
|
||||
#define TIMER_BASE (TIMER_A0)
|
||||
#define TIMER_CHAN (5)
|
||||
#define TIMER_ISR_CC0 (TIMER0_A0_VECTOR)
|
||||
#define TIMER_ISR_CCX (TIMER0_A1_VECTOR)
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name UART configuration
|
||||
* @{
|
||||
*/
|
||||
#define UART_NUMOF (0U)
|
||||
/** @} */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* PERIPH_CONF_H */
|
@ -1,51 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 INRIA
|
||||
* 2015 Kaspar Schleiser <kaspar@schleiser.de>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup boards_chronos
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief eZ430-chronos getchar/putchar dummy implementation
|
||||
*
|
||||
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
static void _dummy(int c)
|
||||
{
|
||||
(void)c;
|
||||
}
|
||||
|
||||
void (*_putchar)(int c) = _dummy;
|
||||
|
||||
int putchar(int c)
|
||||
{
|
||||
_putchar(c);
|
||||
return c;
|
||||
}
|
||||
|
||||
int getchar(void)
|
||||
{
|
||||
/* dummy implementation */
|
||||
return EOF;
|
||||
}
|
||||
|
||||
ssize_t write(int fildes, const void *buf, size_t nbyte)
|
||||
{
|
||||
(void)fildes;
|
||||
(void)buf;
|
||||
(void)nbyte;
|
||||
return -1;
|
||||
}
|
Loading…
Reference in New Issue
Block a user