mirror of
https://github.com/travisgoodspeed/goodwatch
synced 2024-11-22 16:59:57 +00:00
Merge branch 'master' of git@github.com:travisgoodspeed/goodwatch.git into alarm
# Conflicts: # firmware/Makefile # firmware/apps/alarm.c # firmware/apps/alarm.h # firmware/rtc.c
This commit is contained in:
commit
9daf841882
@ -7,12 +7,12 @@ CC = msp430-gcc -mmcu=cc430f6137 -Wall -I. -Os
|
|||||||
|
|
||||||
BSL = ../bin/cc430-bsl.py -r 38400 -p $(PORT)
|
BSL = ../bin/cc430-bsl.py -r 38400 -p $(PORT)
|
||||||
|
|
||||||
modules=rtcasm.o main.o lcd.o lcdtext.o rtc.o keypad.o apps.o applist.o buzzer.o \
|
modules=rtcasm.o main.o lcd.o lcdtext.o rtc.o keypad.o apps.o applist.o \
|
||||||
sidebutton.o power.o uart.o monitor.o ucs.o \
|
sidebutton.o power.o uart.o monitor.o ucs.o buzz.o \
|
||||||
radio.o packet.o dmesg.o codeplug.o rng.o \
|
radio.o packet.o dmesg.o codeplug.o rng.o \
|
||||||
libs/assembler.o libs/morse.o
|
libs/assembler.o libs/morse.o
|
||||||
|
|
||||||
apps= apps/clock.o apps/alarm.o apps/rpn.o apps/hex.o apps/stopwatch.o apps/dice.o \
|
apps= apps/clock.o apps/rpn.o apps/hex.o apps/stopwatch.o apps/dice.o \
|
||||||
apps/rngapp.o apps/tuner.o apps/morse.o apps/beacon.o apps/iclicker.o \
|
apps/rngapp.o apps/tuner.o apps/morse.o apps/beacon.o apps/iclicker.o \
|
||||||
apps/submenu.o
|
apps/submenu.o
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "codeplug.h"
|
#include "codeplug.h"
|
||||||
#include "power.h"
|
#include "power.h"
|
||||||
#include "dmesg.h"
|
#include "dmesg.h"
|
||||||
|
#include "buzz.h"
|
||||||
#include "gittag.h" //Autogenerated
|
#include "gittag.h" //Autogenerated
|
||||||
|
|
||||||
//Handy libraries. These are tested host-side.
|
//Handy libraries. These are tested host-side.
|
||||||
|
@ -15,10 +15,6 @@ const struct app apps[]={
|
|||||||
{.name="clock", .init=clock_init, .draw=clock_draw, .exit=clock_exit,
|
{.name="clock", .init=clock_init, .draw=clock_draw, .exit=clock_exit,
|
||||||
.keypress=clock_keypress
|
.keypress=clock_keypress
|
||||||
},
|
},
|
||||||
//Alarm
|
|
||||||
{.name="alarm", .init=alarm_init, .draw=alarm_draw, .exit=alarm_exit,
|
|
||||||
.keypress=alarm_keypress
|
|
||||||
},
|
|
||||||
//Stopwatch
|
//Stopwatch
|
||||||
{.name="timer", .init=stopwatch_init, .draw=stopwatch_draw, .exit=stopwatch_exit,
|
{.name="timer", .init=stopwatch_init, .draw=stopwatch_draw, .exit=stopwatch_exit,
|
||||||
.keypress=stopwatch_keypress
|
.keypress=stopwatch_keypress
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
//Non-radio apps first.
|
//Non-radio apps first.
|
||||||
#include "apps/clock.h"
|
#include "apps/clock.h"
|
||||||
#include "apps/alarm.h"
|
|
||||||
#include "apps/stopwatch.h"
|
#include "apps/stopwatch.h"
|
||||||
#include "apps/rpn.h"
|
#include "apps/rpn.h"
|
||||||
#include "apps/hex.h"
|
#include "apps/hex.h"
|
||||||
|
60
firmware/buzz.c
Normal file
60
firmware/buzz.c
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*! \file buzz.c
|
||||||
|
\brief Handy buzzer functions.
|
||||||
|
|
||||||
|
These are currently untested, as the buzzer causes the GoodWatch20
|
||||||
|
to glitch out. We hope to have proper buzzer support in the
|
||||||
|
GoodWatch21.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include<msp430.h>
|
||||||
|
|
||||||
|
#include<stdio.h>
|
||||||
|
|
||||||
|
//! Make a quick buzz.
|
||||||
|
void buzz(unsigned int count){
|
||||||
|
//Start the timer.
|
||||||
|
if(count){
|
||||||
|
//Output select mode for P2.7.
|
||||||
|
P2DIR|=0x80;
|
||||||
|
P2SEL|=0x80;
|
||||||
|
|
||||||
|
//P2.7 might need high drive strength for the piezo.
|
||||||
|
//P2DS|=0x80;
|
||||||
|
|
||||||
|
|
||||||
|
TA1CCR0 = count;
|
||||||
|
TA1CTL |= MC__UP;
|
||||||
|
}else{
|
||||||
|
//Stop the timer when it's not in use.
|
||||||
|
TA1CTL = TACLR | TASSEL__SMCLK | MC__STOP;
|
||||||
|
|
||||||
|
//Input mode for the pin, so we don't accidentally leak power.
|
||||||
|
P2DIR&=~0x80;
|
||||||
|
P2SEL&=~0x80;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//! Initializes the buzzer port.
|
||||||
|
void buzz_init(){
|
||||||
|
TA1CTL=0;
|
||||||
|
|
||||||
|
//Unlock port mapping.
|
||||||
|
PMAPKEYID=0x2d52;
|
||||||
|
if(PMAPCTL&1)
|
||||||
|
printf("Ugh, port mapping is locked.\n");
|
||||||
|
|
||||||
|
//Route timera1 to the pin. This might conflict with rng.c.
|
||||||
|
P2MAP7=PM_TA1CCR0A;;
|
||||||
|
|
||||||
|
//Lock port mapping.
|
||||||
|
PMAPKEYID=0x96a5;
|
||||||
|
|
||||||
|
|
||||||
|
TA1CTL = TACLR | TASSEL__SMCLK | MC__STOP;
|
||||||
|
TA1CCTL0 = OUTMOD_4;
|
||||||
|
TA1CCTL0 &= ~CCIE;
|
||||||
|
|
||||||
|
P2SEL|=0x80;
|
||||||
|
}
|
||||||
|
|
10
firmware/buzz.h
Normal file
10
firmware/buzz.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/*! \file buzz.h
|
||||||
|
\brief Handy buzzer functions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! Initializes the buzzer port.
|
||||||
|
void buzz_init();
|
||||||
|
|
||||||
|
//! Make a quick buzz.
|
||||||
|
void buzz(int);
|
||||||
|
|
@ -20,8 +20,8 @@ void key_init(){
|
|||||||
/* Columns 2.2, 2.1, 2.0, and 1.7 are set to output mode pulled
|
/* Columns 2.2, 2.1, 2.0, and 1.7 are set to output mode pulled
|
||||||
high, so that any low row indicates a button press. */
|
high, so that any low row indicates a button press. */
|
||||||
|
|
||||||
P2SEL=0x00; //All of port 2 are IO.
|
P2SEL&=~0x7F; //All of port 2 except the buzzer are IO.
|
||||||
P2DIR=BIT2|BIT1|BIT0; //Rows are input, columns are output.
|
P2DIR=BIT2|BIT1|BIT0; //These columns are output.
|
||||||
P2REN|=0xFF; //All resistor.
|
P2REN|=0xFF; //All resistor.
|
||||||
P2OUT=BIT2|BIT1|BIT0; //Pull all of them down.
|
P2OUT=BIT2|BIT1|BIT0; //Pull all of them down.
|
||||||
|
|
||||||
@ -30,6 +30,9 @@ void key_init(){
|
|||||||
P1REN|=0x80;
|
P1REN|=0x80;
|
||||||
P1OUT|=0x80; //Output high.
|
P1OUT|=0x80; //Output high.
|
||||||
|
|
||||||
|
|
||||||
|
P2DIR|=BIT7; // Buzzer is on P2.7.
|
||||||
|
|
||||||
//Trigger interrupts for keypresses so we needn't scan.
|
//Trigger interrupts for keypresses so we needn't scan.
|
||||||
P2IE|=BIT2|BIT1|BIT0;
|
P2IE|=BIT2|BIT1|BIT0;
|
||||||
}
|
}
|
||||||
@ -44,8 +47,8 @@ int key_row(){
|
|||||||
int row;
|
int row;
|
||||||
P1DIR|=0x80; //P1.7 out.
|
P1DIR|=0x80; //P1.7 out.
|
||||||
P1OUT|=0x80; //P1.7 high.
|
P1OUT|=0x80; //P1.7 high.
|
||||||
P2DIR= 0x07; //P2.0, 2.1, 2.2 out.
|
P2DIR|=0x07; //P2.0, 2.1, 2.2 out.
|
||||||
P2OUT= 0x07; //P2.0, 2.1, 2.2 high.
|
P2OUT|=0x07; //P2.0, 2.1, 2.2 high.
|
||||||
|
|
||||||
//We'll return this result, but after cleaning up.
|
//We'll return this result, but after cleaning up.
|
||||||
row=(P2IN>>3)&0x0F;
|
row=(P2IN>>3)&0x0F;
|
||||||
@ -60,8 +63,11 @@ int key_col(){
|
|||||||
int col;
|
int col;
|
||||||
P1DIR&=~0x80; //Input
|
P1DIR&=~0x80; //Input
|
||||||
P1OUT&=~0x80; //Low
|
P1OUT&=~0x80; //Low
|
||||||
P2DIR= 0xF8; //P2.1.3, 2.4, 2.5, 2.6 out
|
|
||||||
P2OUT= 0xF8; //P2.1.3, 2.4, 2.5, 2.6 high
|
P2DIR&=~0x07; //P2.3, 2.4, 2.5, 2.6 out
|
||||||
|
P2DIR|= 0x78;
|
||||||
|
P2OUT&=~0x07; //P2.3, 2.4, 2.5, 2.6 high
|
||||||
|
P2OUT|= 0x78;
|
||||||
|
|
||||||
//We'll return this result, but after cleaning up.
|
//We'll return this result, but after cleaning up.
|
||||||
col=((P2IN&0x7)<<1) | ((P2IN&0x80)>>7);
|
col=((P2IN&0x7)<<1) | ((P2IN&0x80)>>7);
|
||||||
|
@ -72,7 +72,7 @@ const int letterfont[]={
|
|||||||
E|G|C|D|B, //D
|
E|G|C|D|B, //D
|
||||||
A|F|E|G|D, //E
|
A|F|E|G|D, //E
|
||||||
A|G|F|E, //F
|
A|G|F|E, //F
|
||||||
A|F|E|C|D, //G
|
A|F|G|E|C|D, //G
|
||||||
F|G|E|C, //h
|
F|G|E|C, //h
|
||||||
F|E, //I, distinguished from a 1 by being on the left side.
|
F|E, //I, distinguished from a 1 by being on the left side.
|
||||||
E|B|C|D, //J
|
E|B|C|D, //J
|
||||||
|
@ -89,6 +89,15 @@ int main(void) {
|
|||||||
lcd_string("OSC INIT");
|
lcd_string("OSC INIT");
|
||||||
ucs_init();
|
ucs_init();
|
||||||
|
|
||||||
|
/* TODO Enable this once we have hardware with a working buzzer.
|
||||||
|
|
||||||
|
lcd_zero();
|
||||||
|
printf("buzz ");
|
||||||
|
lcd_string("BUZZINIT");
|
||||||
|
buzz_init();
|
||||||
|
buzz(1024);
|
||||||
|
*/
|
||||||
|
|
||||||
lcd_zero();
|
lcd_zero();
|
||||||
lcd_string("UARTINIT");
|
lcd_string("UARTINIT");
|
||||||
uart_init();
|
uart_init();
|
||||||
|
@ -164,7 +164,6 @@ void __attribute__ ((interrupt(RTC_VECTOR))) RTC_ISR (void){
|
|||||||
//! Sound the alarm
|
//! Sound the alarm
|
||||||
alarm_trigger();
|
alarm_trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 8: break; // RT0PSIFG
|
case 8: break; // RT0PSIFG
|
||||||
case 10: break; // RT1PSIFG
|
case 10: break; // RT1PSIFG
|
||||||
|
Loading…
Reference in New Issue
Block a user