• R/O
  • SSH
  • HTTPS

autokey: 提交


Commit MetaInfo

修訂1 (tree)
時間2009-02-01 21:19:50
作者yama_e

Log Message

v0.1初期インポート

Change Summary

差異

--- autokey/trunk/Usart.c (nonexistent)
+++ autokey/trunk/Usart.c (revision 1)
@@ -0,0 +1,123 @@
1+/*
2+ * Copyright (c) 2009, Yama
3+ * All rights reserved.
4+ *
5+ *
6+ * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
7+ *
8+ * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
9+ * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
10+ * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、<組織>の名前またはコントリビューターの名前を使用してはならない。
11+ * 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
12+ */
13+
14+/*!
15+ @file HardwareInit.c
16+ @brief ハードウェアの初期化をします
17+ @author 山崎裕司
18+ @date 7-jan-09, new
19+*/
20+
21+/* SPLINT 用Define */
22+#ifdef S_SPLINT_S /* splint 稼働時用判定 */
23+
24+/* コンパイル時に設定されるdefine */
25+#ifndef __AVR_ATtiny2313__
26+#define __AVR_ATtiny2313__
27+#endif
28+
29+#endif /* SPLINT 用Define */
30+
31+#include <stdbool.h> /* true */
32+#include <ctype.h>
33+#include <avr/io.h>
34+#include <avr/interrupt.h>
35+#include <avr/pgmspace.h>
36+#include "Usart.h"
37+
38+RxBuffer rbuf;
39+
40+void InitUsart(void)
41+{
42+ rbuf.cdata[0] = '\0';
43+ rbuf.CRLF = false;
44+}
45+
46+
47+void InitUsartLower(void)
48+{
49+ rbuf.pos = 0;
50+ rbuf.data[0] = '\0';
51+}
52+
53+/*!
54+ @brief ピンチェンジ割り込み vector 12
55+*/
56+ISR(/*@unused@*/USART_RX_vect )
57+{
58+ uint8_t rdata;
59+ uint8_t cnt;
60+
61+ rdata = UDR;
62+ if( ( UCSRA & (USART_FE_MASK | USART_DOR_MASK | USART_PE_MASK) ) != 0 )
63+ { /* 受信エラー処理 */
64+ return; /* なにもせずリターン */
65+ }
66+ if( ( isprint(rdata) != 0 ) ) /* 表示可能文字であれば */
67+ {
68+ rbuf.data[rbuf.pos] = rdata;
69+ rbuf.data[rbuf.pos + 1] = '\0';
70+ if(rbuf.pos < (sizeof(rbuf.data) - 2))
71+ { /* バッファーの残りが2個以上のとき書込み位置を++ */
72+ rbuf.pos++;
73+ }
74+ }
75+ else /* 表示可能文字以外のとき */
76+ {
77+ if(rdata == '\n')
78+ { /* 改行を受信したら */
79+ rbuf.CRLF = true;
80+
81+ for(cnt = 0; cnt < sizeof(rbuf.data); cnt++)
82+ { /* 受信データ退避 */
83+ rbuf.cdata[cnt] = rbuf.data[cnt];
84+ if(rbuf.cdata[cnt] == '\0' )
85+ {
86+ break;
87+ }
88+ }
89+ rbuf.pos = 0; /* バッファポジションクリア */
90+ rbuf.data[0] = '\0'; /* 受信バッファクリア */
91+ }
92+ }
93+}
94+
95+uint8_t CheckCRLF(void)
96+{
97+ return rbuf.CRLF;
98+}
99+
100+
101+char * GetBufPointer(void)
102+{
103+ return (char *)(rbuf.cdata);
104+}
105+
106+void UART_write(char c)
107+{
108+ /*@ -whileempty @*/while( (UCSRA & USART_UDRE_MASK ) == 0); /* 送信可能状態となるまで待機 */
109+ UDR = (uint8_t)c;
110+}
111+
112+void SendText_P(PGM_P buf) /* Program space */
113+{
114+ char c;
115+ while((c = pgm_read_byte(buf)) != (char)0)
116+ {
117+ UART_write(c);
118+ buf++;
119+ }
120+
121+ UART_write('\r'); /* 改行コード */
122+ UART_write('\n'); /* 改行コード */
123+}
--- autokey/trunk/AutoKey.c (nonexistent)
+++ autokey/trunk/AutoKey.c (revision 1)
@@ -0,0 +1,180 @@
1+/*
2+ * Copyright (c) 2009, Yama
3+ * All rights reserved.
4+ *
5+ *
6+ * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
7+ *
8+ * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
9+ * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
10+ * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、<組織>の名前またはコントリビューターの名前を使用してはならない。
11+ * 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
12+ */
13+
14+/*!
15+ @file PulseBoard.c
16+ @brief main関数記述起動後の動作及び起動後の動作です。
17+ @author 山崎裕司
18+ @date 9-jan-09, new
19+*/
20+
21+/* SPLINT 用Define */
22+#ifdef S_SPLINT_S /* splint 稼働時用判定 */
23+
24+/* コンパイル時に設定されるdefine */
25+#ifndef __AVR_ATtiny2313__
26+#define __AVR_ATtiny2313__
27+#endif
28+
29+#endif /* SPLINT 用Define */
30+
31+#include <stdbool.h> /* true */
32+#include <stdlib.h> /* NULL malloc */
33+#include <errno.h> /* ERANGEを使用するために必要 */
34+#include <ctype.h>
35+#include <avr/wdt.h>
36+#include <string.h> /* strtok */
37+#include "Modules.h"
38+
39+/* ローカル関数 */
40+char * FuncKey(char * arg);
41+char * FuncVer(char * arg);
42+char * CommandCheck(char *buf);
43+
44+/* コマンドリスト */
45+
46+typedef struct {
47+ char Com; /* コマンドキャラクタ */
48+ char* (*func)(char * arg); /* 戻り値エラーメッセージ 0:エラーなし*/
49+} CommList;
50+
51+const CommList CList[] = {
52+ {(char)'V', FuncVer}, /* バージョン表示 */
53+ {(char)'K', FuncKey} /* キー制御 */
54+};
55+
56+#define BASE10 10 /* 10進数 strtol用 */
57+
58+#define MAX_COMMAND_NUM (sizeof(CList)/sizeof(CommList))
59+
60+
61+typedef struct {
62+ uint8_t Key; /* 1~12 */
63+ bool On; /* On:1 Off :0 */
64+} KeyStatus;
65+
66+/*!
67+ @brief 起動及びメインループ
68+ @return returnしてはいけない
69+*/
70+int main(void)
71+{
72+ (void)GetResetSetRegi(WDT_USE_1S); /*!< リセット情報取得 ウォッチドッグ使用 */
73+ (void)hardwareInit(); /* ハードウェア初期化 リターン未使用 */
74+ InitUsart(); /* RX受信バッファの初期化 */
75+ InitUsartLower(); /* RX受信バッファローレベル層初期化 */
76+ ResetKey(); /* キー状態の初期化 */
77+
78+
79+ //UART_write('\r'); /* 改行コード */
80+ //UART_write('\n'); /* 改行コード */
81+ SendText_P( PSTR(WAKEUP_MESSAGES)); /* 起動メッセージ */
82+ while(true)
83+ {
84+ /* WDTクリア */
85+ wdt_reset();
86+ if(CheckCRLF() == true)
87+ { /* コマンドチェック */
88+ (void)CommandCheck(GetBufPointer());
89+ }
90+ }
91+ /*@notreached@*/
92+ return 0;
93+}
94+
95+char * CommandCheck(char *buf)
96+{
97+ char * err_msg; /* エラーメッセージ */
98+ uint8_t cnt; /* コマンドチェックカウンタ */
99+
100+ if( *buf != COMMAND_START_CHARACTER)
101+ { /* コマンドは!から始まる そうでない場合はバッファ初期化 */
102+ err_msg = PSTR(ERROR_NOT_COMMAND);
103+ goto err;
104+ }
105+ /* コマンドチェック */
106+ /* 1.コマンドキャラクター */
107+ buf++;
108+ if( isalpha(*buf) == 0)
109+ {
110+ err_msg = PSTR(ERROR_UNDEFINE_COMMAND);
111+ goto err;
112+ }
113+ /* コマンドリストよりコマンドチェック */
114+ for(cnt = 0; cnt < MAX_COMMAND_NUM ; cnt++)
115+ {
116+ /* コマンドは1文字であること */
117+ if( ( *buf == CList[cnt].Com ) && (( isspace(*(buf+1)) != 0) || (*(buf+1) == 0) ) )
118+ {
119+ err_msg = CList[cnt].func(buf);
120+ if( err_msg != NULL)
121+ {
122+ goto err;
123+ }
124+ InitUsart();
125+ break;
126+ }
127+ }
128+ return NULL;
129+
130+err: /* エラー処理 */
131+ InitUsart();
132+ SendText_P(err_msg);
133+
134+ return err_msg;
135+}
136+
137+/* arg = "K 1 1" -> キー1 ON */
138+/* = "K 12 0" -> キー12 OFF */
139+char * FuncKey(char * arg)
140+{
141+ KeyStatus ks; /* キーステータス キー?をON Off */
142+ uint8_t on; /* ONOFF情報 */
143+ char *next; /* strtolエンドポインタ */
144+ char *sep; /* セパレータ位置保存 */
145+
146+ arg++;
147+ /* パラメータ抽出 */
148+ if( *arg != COMMAND_SEPARATER_CHARACTER)
149+ return PSTR(ERROR_SEPARATER); /* セパレーターエラー */
150+ arg++;
151+ if( NULL == (sep = strchr(arg,COMMAND_SEPARATER_CHARACTER)))
152+ return PSTR(ERROR_SEPARATER); /* セパレーターエラー */
153+ *sep = NULL;
154+ ks.Key = (uint8_t)strtol((const char*)arg, &next, BASE10); /* 第1パラメータ */
155+ if( arg == next )
156+ return PSTR(ERROR_KEY_PARAMETER); /* 第1パラメータエラー */
157+ if( ks.Key < MIN_KEY_NUM || ks.Key > MAX_KEY_NUM)
158+ return PSTR(ERROR_KEY_NUMBER); /* キー番号エラー */
159+
160+ arg = sep + 1;
161+ on = (uint8_t)strtol(arg, &next, BASE10); /* 第2パラメータ */
162+ if( arg == next )
163+ return PSTR(ERROR_ON_PARAMETER); /* 第2パラメータエラー */
164+ if( on < MIN_ON_NUM || on > MAX_ON_NUM)
165+ return PSTR(ERROR_ON_NUMBER); /* オン番号エラー */
166+ ks.On = (( on == ON_PARA_INT_ON ) ? ON_PARA_BOOL_ON : ON_PARA_BOOL_OFF );
167+
168+ ChangeKeyStatus(ks.Key,ks.On);
169+
170+ SendText_P(PSTR(OK_KEY_SETTING));
171+ /*@notreached@*/
172+ return NULL;
173+
174+}
175+
176+char * FuncVer(char * arg)
177+{
178+ SendText_P(PSTR(VERSION_STRING));
179+ return NULL;
180+}
--- autokey/trunk/HardwareInit.c (nonexistent)
+++ autokey/trunk/HardwareInit.c (revision 1)
@@ -0,0 +1,116 @@
1+/*
2+ * Copyright (c) 2009, Yama
3+ * All rights reserved.
4+ *
5+ *
6+ * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
7+ *
8+ * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
9+ * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
10+ * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、<組織>の名前またはコントリビューターの名前を使用してはならない。
11+ * 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
12+ */
13+
14+/*!
15+ @file HardwareInit.c
16+ @brief ハードウェアの初期化をします
17+ @author 山崎裕司
18+ @date 7-jan-09, new
19+*/
20+
21+/* SPLINT 用Define */
22+#ifdef S_SPLINT_S /* splint 稼働時用判定 */
23+
24+/* コンパイル時に設定されるdefine */
25+#ifndef __AVR_ATtiny2313__
26+#define __AVR_ATtiny2313__
27+#endif
28+
29+#endif /* SPLINT 用Define */
30+
31+#include <avr/io.h>
32+#include <avr/interrupt.h>
33+#include <avr/wdt.h>
34+#include "HardwareInit.h"
35+#include "Usart.h"
36+
37+/* グローバル変数 */
38+static uint8_t Reset = 0;/*!< リセット情報取得及び保持 */
39+
40+/* ローカル関数 */
41+int hardwareInit(void);
42+uint8_t GetResetSetRegi(uint8_t wdtcsr);
43+
44+/* ■■■ MCUポートセッティング ■■■
45+AutoKey 2009.1.9
46+No. Name Pin-No. Net name IO Description
47+1 PA0 5 nouse IN プルダウン
48+2 PA1 4 nouse IN プルダウン
49+3 PA2 1 RES IN リセットピン(ROM書込み用)
50+4 PB0 12 nouse IN プルダウン
51+5 PB1 13 nouse IN プルダウン
52+6 PB2 14 /OE OUT 74HC595出力許可 プルアップ
53+7 PB3 15 /SCLR OUT 74HC595シフトレジスタクリア
54+8 PB4 16 RCK OUT 74HC595ラッチ信号
55+9 PB5 17 MOSI IN ROM書込み用
56+10 PB6 18 MISO OUT ROM書込み用 74HC595シリアルデータ出力
57+11 PB7 19 SCK OUT ROM書込み用 74HC595シリアルクロック
58+12 PD0 2 U_RXD IN UART RXD(ホスト側送信)
59+13 PD1 3 U_TXD OUT UART TXD(ホスト側受信)
60+14 PD2 6 nouse IN プルダウン
61+15 PD3 7 nouse IN プルダウン
62+16 PD4 8 nouse IN プルダウン
63+17 PD5 9 nouse IN プルダウン
64+18 PD6 11 nouse IN プルダウン
65+
66+*/
67+
68+/*!
69+ @brief ハードウェア初期化関数
70+ @return HARDINIT_NO_ERROR
71+*/
72+int hardwareInit(void)
73+{
74+ int ret = HARDINIT_NO_ERROR;
75+
76+ /* Prepearing Port Output */
77+ PORTB = PORT_BIT3_H | PORT_BIT2_H; /* /SCLR:H /OE:H */
78+ PORTD = PORT_BIT1_H; /* TXD:H */
79+
80+ /* Port setting */
81+ DDRA = DDR_ALLINPUT; /* PORTAは全て入力 */
82+ DDRB = DDR_BIT7_OUT | DDR_BIT6_OUT | DDR_BIT4_OUT | DDR_BIT3_OUT | DDR_BIT2_OUT; /* OUT 7,6,4,3,2 */
83+ DDRD = DDR_BIT1_OUT; /* 出力は1のみ */
84+
85+ /* UART */
86+ UBRRH = BPS_38400H;
87+ UBRRL = BPS_38400L; /* 38400bps */
88+ //UCSRA = UCSRA_RESET;
89+ UCSRB = UCSRB_SET;
90+ //UCSRC = UCSRC_RESET;
91+
92+ /* 出口処理 */
93+ sei();/*! 割り込み解除 - Set enable interrupt */
94+
95+ return ret;
96+}
97+
98+/*!
99+ @brief リセット情報取得関数
100+ @return ビットマスク
101+ PON_RESET 0x01 電源ONリセット
102+ EXT_RESET 0x02 外部リセット
103+ BOR_RESET 0x04 電圧低下検知リセット
104+ WDT_RESET 0x08 ウォッチドッグタイマリセット
105+*/
106+uint8_t GetResetSetRegi(uint8_t wdtcsr)
107+{
108+ Reset = MCUSR & 0x0f; /* WDRF:WDT BORF:BOR EXTRF:External PORF:PowerOnReset */
109+ MCUSR = 0; /* 電源ON後直ちにクリア */
110+ wdt_reset(); /* ウォッチドッグ設定前にタイマをクリア */
111+ WDTCSR |= WDCE_set; /* WDE及びWDP3-0を変更前に1にセットする。自動的に0にクリアされる */
112+ WDTCSR = wdtcsr; /* 1秒ウォッチ WDT割り込みは未使用 WDTスタート */
113+
114+ return Reset;
115+}
116+
--- autokey/trunk/default/Makefile (nonexistent)
+++ autokey/trunk/default/Makefile (revision 1)
@@ -0,0 +1,87 @@
1+###############################################################################
2+# Makefile for the project AutoKey
3+###############################################################################
4+
5+## General Flags
6+PROJECT = AutoKey
7+MCU = attiny2313
8+TARGET = AutoKey.elf
9+CC = avr-gcc.exe
10+
11+## Options common to compile, link and assembly rules
12+COMMON = -mmcu=$(MCU)
13+
14+## Compile options common for all C compilation units.
15+CFLAGS = $(COMMON)
16+CFLAGS += -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
17+CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
18+
19+## Assembly specific flags
20+ASMFLAGS = $(COMMON)
21+ASMFLAGS += $(CFLAGS)
22+ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
23+
24+## Linker flags
25+LDFLAGS = $(COMMON)
26+LDFLAGS += -Wl,-Map=AutoKey.map
27+
28+
29+## Intel Hex file production flags
30+HEX_FLASH_FLAGS = -R .eeprom
31+
32+HEX_EEPROM_FLAGS = -j .eeprom
33+HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
34+HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
35+
36+
37+## Objects that must be built in order to link
38+OBJECTS = AutoKey.o HardwareInit.o Usart.o 74HC595.o KeyCtrl.o
39+
40+## Objects explicitly added by the user
41+LINKONLYOBJECTS =
42+
43+## Build
44+all: $(TARGET) AutoKey.hex AutoKey.eep AutoKey.lss size
45+
46+## Compile
47+AutoKey.o: ../AutoKey.c
48+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
49+
50+HardwareInit.o: ../HardwareInit.c
51+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
52+
53+Usart.o: ../Usart.c
54+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
55+
56+74HC595.o: ../74HC595.c
57+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
58+
59+KeyCtrl.o: ../KeyCtrl.c
60+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
61+
62+##Link
63+$(TARGET): $(OBJECTS)
64+ $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
65+
66+%.hex: $(TARGET)
67+ avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@
68+
69+%.eep: $(TARGET)
70+ -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
71+
72+%.lss: $(TARGET)
73+ avr-objdump -h -S $< > $@
74+
75+size: ${TARGET}
76+ @echo
77+ @avr-size -C --mcu=${MCU} ${TARGET}
78+
79+## Clean target
80+.PHONY: clean
81+clean:
82+ -rm -rf $(OBJECTS) AutoKey.elf dep/* AutoKey.hex AutoKey.eep AutoKey.lss AutoKey.map
83+
84+
85+## Other dependencies
86+-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
87+
--- autokey/trunk/Usart.h (nonexistent)
+++ autokey/trunk/Usart.h (revision 1)
@@ -0,0 +1,67 @@
1+/*
2+ * Copyright (c) 2009, Yama
3+ * All rights reserved.
4+ *
5+ *
6+ * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
7+ *
8+ * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
9+ * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
10+ * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、<組織>の名前またはコントリビューターの名前を使用してはならない。
11+ * 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
12+ */
13+
14+
15+#define USART_RDATA_READY 1 /* 受信データレディ */
16+#define USART_RDATA_EMPTY 0 /* 受信データ空き */
17+#define USART_RDATA_ERROR -1 /* 受信エラー */
18+#define USART_RXC_MASK 0x80
19+#define USART_TXC_MASK 0x40
20+#define USART_FE_MASK 0x10
21+#define USART_DOR_MASK 0x08
22+#define USART_PE_MASK 0x02
23+#define USART_UDRE_MASK 0x20
24+
25+
26+/* UART */
27+/* UBRRH : USART Baud Rate Register High-Byte */
28+/* UBRRL : USART Baud Rate Resister Low-Byte */
29+/* UCSRA : USART Control and Status Register A */
30+/* Bit7 RXC : USART Receive Complete Flag */
31+/* Bit6 TXC : USART Transmit Complete Flag */
32+/* Bit5 UDRE : USART Data Register Empty Flag */
33+/* Bit4 FE : USART Framing Error Flag */
34+/* Bit3 DOR : Data OverRun Flag */
35+/* Bit2 UPE : USART Parity Error Flag */
36+/* Bit1 U2X : Double the USART Transmit Speed */
37+/* Bit0 MPCP : Multi-Processor Comminucation Mode */
38+#define USART_UCSRA_RESET (uint8_t)0x20
39+/* UCSRB : USART Control and Status Register B */
40+/* Bit7 RXCIE : Receive Complete Interrupt Enable */
41+/* Bit6 TXCIE : Transmit Complete Interrupt Enable */
42+/* Bit5 UDRIE : Transmit Data Register Empty Interrupt Enable */
43+/* Bit4 RXEN : Receiver Enable */
44+/* Bit3 TXEN : Transmiter Enable */
45+/* Bit2 UCSZ2 : Caracter size */
46+/* Bit1 RXB8 : Receive Data bit 8 */
47+/* Bit0 TXB8 : Transmit Data bit 8 */
48+#define USART_UCSRB_RESET (uint8_t)0x00
49+/* 受信割り込み可 受信可 送信可 */
50+#define USART_UCSRB_SET (uint8_t)0x98
51+/* UCSRC : USART Control and Status Register C */
52+/* Bit7 - */
53+/* Bit6 UMSEL : USART Mode Select */
54+/* Bit5,4 UPM : Parity */
55+/* Bit3 USBS : Stop Bit Select */
56+/* Bit2,1 UCSZ1,0 : Character size */
57+/* Bit0 UCPOL : Clock Polarity */
58+/* UDR : USART I/O Data Resiter */
59+#define USART_UCSRC_RESET (uint8_t)0x06
60+
61+typedef struct {
62+ uint8_t data[16];
63+ uint8_t cdata[16];
64+ uint8_t pos;
65+ uint8_t CRLF;
66+} RxBuffer;
67+
--- autokey/trunk/HardwareInit.h (nonexistent)
+++ autokey/trunk/HardwareInit.h (revision 1)
@@ -0,0 +1,169 @@
1+/*
2+ * Copyright (c) 2009, Yama
3+ * All rights reserved.
4+ *
5+ *
6+ * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
7+ *
8+ * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
9+ * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
10+ * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、<組織>の名前またはコントリビューターの名前を使用してはならない。
11+ * 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
12+ */
13+
14+/*!
15+ @file HardwareInit.h
16+ @brief ハードウェア初期化関連ヘッダ
17+ マクロ定義
18+ 関数プロトタイプ
19+ @author 山崎裕司
20+ @date 9-jan-09, new
21+*/
22+
23+/* マクロ定義 */
24+/*!
25+ @brief hardwareInit()関数戻り値
26+ エラー系マクロ定義
27+
28+ @author 山崎裕司
29+ @date 9-jan-09, new
30+ */
31+#define HARDINIT_NO_ERROR 0 /*!< エラーなし */
32+
33+/*!
34+ @brief GetResetInfo()関数戻り値
35+ エラー系マクロ定義
36+
37+ @author 山崎裕司
38+ @date 9-jan-09, new
39+ */
40+#define PON_RESET 0x01 /*!< 電源ONリセット */
41+#define EXT_RESET 0x02 /*!< 外部リセット */
42+#define BOR_RESET 0x04 /*!< 電圧低下検知リセット */
43+#define WDT_RESET 0x08 /*!< ウォッチドッグタイマリセット */
44+#define STATUS_READY 0x80 /*!< ステータスバイト準備OK */
45+
46+/*!
47+ @brief GetResetInfo()設定値
48+ エラー系マクロ定義
49+
50+ @author 山崎裕司
51+ @date 9-jan-09, new
52+ */
53+#define WDT_USE_1S 0x1f /*!< ウォッチドッグタイマ使用(1秒) */
54+#define WDT_NOUSE 0x00 /*!< ウォッチドッグタイマ未使用 */
55+
56+/* セッティング系定義 */
57+/* @brief ビット操作系 */
58+#define DDR_BIT0_IN (uint8_t)0x00 /*!< Data Direction Register BIT0 bitmask - IN *******0 */
59+#define DDR_BIT0_OUT (uint8_t)0x01 /*!< Data Direction Register BIT0 bitmask - OUT *******1 */
60+#define DDR_BIT1_IN (uint8_t)0x00 /*!< Data Direction Register BIT1 bitmask - IN ******0* */
61+#define DDR_BIT1_OUT (uint8_t)0x02 /*!< Data Direction Register BIT1 bitmask - OUT ******1* */
62+#define DDR_BIT2_IN (uint8_t)0x00 /*!< Data Direction Register BIT2 bitmask - IN *****0** */
63+#define DDR_BIT2_OUT (uint8_t)0x04 /*!< Data Direction Register BIT2 bitmask - OUT *****1** */
64+#define DDR_BIT3_IN (uint8_t)0x00 /*!< Data Direction Register BIT3 bitmask - IN ****0*** */
65+#define DDR_BIT3_OUT (uint8_t)0x08 /*!< Data Direction Register BIT3 bitmask - OUT ****1*** */
66+#define DDR_BIT4_IN (uint8_t)0x00 /*!< Data Direction Register BIT4 bitmask - IN ***0**** */
67+#define DDR_BIT4_OUT (uint8_t)0x10 /*!< Data Direction Register BIT4 bitmask - OUT ***1**** */
68+#define DDR_BIT5_IN (uint8_t)0x00 /*!< Data Direction Register BIT5 bitmask - IN **0***** */
69+#define DDR_BIT5_OUT (uint8_t)0x20 /*!< Data Direction Register BIT5 bitmask - OUT **1***** */
70+#define DDR_BIT6_IN (uint8_t)0x00 /*!< Data Direction Register BIT6 bitmask - IN *0****** */
71+#define DDR_BIT6_OUT (uint8_t)0x40 /*!< Data Direction Register BIT6 bitmask - OUT *1****** */
72+#define DDR_BIT7_IN (uint8_t)0x00 /*!< Data Direction Register BIT7 bitmask - IN 0******* */
73+#define DDR_BIT7_OUT (uint8_t)0x80 /*!< Data Direction Register BIT7 bitmask - OUT 1******* */
74+#define DDR_ALLINPUT (uint8_t)( DDR_BIT7_IN | DDR_BIT6_IN | DDR_BIT5_IN | DDR_BIT4_IN \
75+ | DDR_BIT3_IN | DDR_BIT2_IN | DDR_BIT1_IN | DDR_BIT0_IN ) /*!< DDR ALL input pins */
76+#define DDR_ALLOUTPUT (uint8_t)( DDR_BIT7_OUT | DDR_BIT6_OUT | DDR_BIT5_OUT | DDR_BIT4_OUT \
77+ | DDR_BIT3_OUT | DDR_BIT2_OUT | DDR_BIT1_OUT | DDR_BIT0_OUT ) /*!< DDR ALL output pins */
78+
79+#define PORT_BIT0_H (uint8_t)0x01 /*!< PORTピンビット0H出力 */
80+#define PORT_BIT1_H (uint8_t)0x02 /*!< PORTピンビット1H出力 */
81+#define PORT_BIT2_H (uint8_t)0x04 /*!< PORTピンビット2H出力 */
82+#define PORT_BIT3_H (uint8_t)0x08 /*!< PORTピンビット3H出力 */
83+#define PORT_BIT4_H (uint8_t)0x10 /*!< PORTピンビット4H出力 */
84+#define PORT_BIT5_H (uint8_t)0x20 /*!< PORTピンビット5H出力 */
85+#define PORT_BIT6_H (uint8_t)0x40 /*!< PORTピンビット6H出力 */
86+#define PORT_BIT7_H (uint8_t)0x80 /*!< PORTピンビット7H出力 */
87+
88+#define WDCE_set (uint8_t)0x08 /*!< ウォッチドッグ変更許可 bitmask set ****1*** */
89+
90+/* UART */
91+/* UBRRH : USART Baud Rate Register High-Byte */
92+/* UBRRL : USART Baud Rate Resister Low-Byte */
93+/* UCSRA : USART Control and Status Register A */
94+/* Bit7 RXC : USART Receive Complete Flag */
95+/* Bit6 TXC : USART Transmit Complete Flag */
96+/* Bit5 UDRE : USART Data Register Empty Flag */
97+/* Bit4 FE : USART Framing Error Flag */
98+/* Bit3 DOR : Data OverRun Flag */
99+/* Bit2 UPE : USART Parity Error Flag */
100+/* Bit1 U2X : Double the USART Transmit Speed */
101+/* Bit0 MPCP : Multi-Processor Comminucation Mode */
102+#define UCSRA_RESET (uint8_t)0x20
103+/* UCSRB : USART Control and Status Register B */
104+/* Bit7 RXCIE : Receive Complete Interrupt Enable */
105+/* Bit6 TXCIE : Transmit Complete Interrupt Enable */
106+/* Bit5 UDRIE : Transmit Data Register Empty Interrupt Enable */
107+/* Bit4 RXEN : Receiver Enable */
108+/* Bit3 TXEN : Transmiter Enable */
109+/* Bit2 UCSZ2 : Caracter size */
110+/* Bit1 RXB8 : Receive Data bit 8 */
111+/* Bit0 TXB8 : Transmit Data bit 8 */
112+#define UCSRB_RESET (uint8_t)0x00
113+/* 受信割り込み可 受信可 送信可 */
114+#define UCSRB_SET (uint8_t)0x98
115+/* UCSRC : USART Control and Status Register C */
116+/* Bit7 - */
117+/* Bit6 UMSEL : USART Mode Select */
118+/* Bit5,4 UPM : Parity */
119+/* Bit3 USBS : Stop Bit Select */
120+/* Bit2,1 UCSZ1,0 : Character size */
121+/* Bit0 UCPOL : Clock Polarity */
122+/* UDR : USART I/O Data Resiter */
123+#define UCSRC_RESET (uint8_t)0x06
124+
125+#define BPS_38400H (uint8_t)0
126+#define BPS_38400L (uint8_t)12
127+
128+/* 74HC595 Device driver */
129+#define SCLR_BIT PORT_BIT3_H /*!< /SCLRビット */
130+#define RCK_BIT PORT_BIT4_H /*!< RCKビット */
131+#define OE_BIT PORT_BIT2_H /*!< /OEビット */
132+
133+/* USI */
134+/* USIの初期設定 */
135+/* USICR : USI Control Resister */
136+/* Bit7 USISIE : Start Condition Interrupt Enable */
137+/* -> use Default(0) */
138+/* Bit6 USIOIE : Counter Overflow Interrupt Enable */
139+/* -> use Default(0) */
140+/* Bit5,4 USIWM1,0 : Wire Mode */
141+/* -> 3wire (USIWM1:0 USIWM0:1) */
142+/* Bit3,2 USICS1,0 : Clock Source Select */
143+/* -> Counter Overflow(USICS1:0 USICS0:1) */
144+/* Bit1 USICLK : USI Clock Strobe */
145+/* -> use default(0) */
146+/* Bit0 USI Toggle Clock Port Pin */
147+/* -> use default(0) */
148+/* Bit 7 6 5 4 3 2 1 0 */
149+/* 0 0 0 1 0 0 0 0 */
150+#define USI_INIT (uint8_t)0x10
151+/* Bit 7 6 5 4 3 2 1 0 */
152+/* 0 0 0 1 0 0 1 1 */
153+#define USI_CLOCK_STROBE (uint8_t)0x13
154+/* Bit 7 6 5 4 3 2 1 0 */
155+/* 0 0 0 1 0 0 0 1 */
156+#define USI_CLOCK_STROBE_L (uint8_t)0x11
157+/* USISR USI Status Resiter */
158+/* Bit7 USISIF : Start Condition Interrupt Flag */
159+/* -> no use */
160+/* Bit6 USIOIF : Counter Overflow Interrupt Flag */
161+/* -> set(1) : This Flag Clear */
162+/* Bit5 USIPF : Stop Condition Flag */
163+/* -> no use */
164+/* Bit4 USIDC : Data Output Collision Flag */
165+/* -> no use */
166+/* Bit3-0 USICNT3-0 : Counter Value */
167+/* -> no use */
168+#define USI_FLAG_CLEAR (uint8_t)0x40
169+#define USI_MASK_USIOIF (uint8_t)0x40
--- autokey/trunk/74HC595.c (nonexistent)
+++ autokey/trunk/74HC595.c (revision 1)
@@ -0,0 +1,98 @@
1+/*
2+ * Copyright (c) 2009, Yama
3+ * All rights reserved.
4+ *
5+ *
6+ * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
7+ *
8+ * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
9+ * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
10+ * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、<組織>の名前またはコントリビューターの名前を使用してはならない。
11+ * 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
12+ */
13+
14+
15+#include <avr/io.h>
16+#include "HardwareInit.h"
17+
18+
19+void ResetParaIO(void);
20+void SetParaIO(uint16_t sdata);
21+void SendUsi(uint8_t data);
22+
23+/*!
24+ @brief 74HC595リセット関数
25+ /SCLRでFFをクリアした後RCK(/CS)で出力をラッチする
26+*/
27+void ResetParaIO(void)
28+{
29+ /* AVR起動時状態 */
30+ /* MISO(SI):L /OE:H RCK:L /SCLR:H SCK:L */
31+ /* 出力:ディセーブル */
32+ /* シフトレジスタクリア:未初期化状態 */
33+ /* チップセレクト:ネゲート */
34+ /* 出力ラッチデータ:不定(ただし出力はHi-Z) */
35+ /* この関数終了時時は次の状態となる */
36+ /* 出力:イネーブル */
37+ /* シフトレジスタクリア:初期化状態(すべて0) */
38+ /* チップセレクト:ネゲート */
39+ /* 出力ラッチデータ:すべてL */
40+ /* この関数で行う処理 */
41+ /* 1. /SCLRをL */
42+ /* 2. RCKをH->L (初期化完了) */
43+ /* 3. /SCLRをH */
44+ /* 4. /OEをL (出力イネーブル) */
45+ /* MISO(SI):L /OE:L RCK:L /SCLR:H SCK:L */
46+
47+ PORTB &= ~SCLR_BIT; /* /SCLRビットをL */
48+ PORTB |= RCK_BIT; /* RCKビットをH */
49+ PORTB &= ~RCK_BIT; /* RCKビットをL */
50+ PORTB |= SCLR_BIT; /* /SCLRビットをH */
51+ PORTB &= ~OE_BIT; /* OEビットをL */
52+
53+ /* USIの初期設定 */
54+ USICR = USI_INIT; /* USI初期化 3線式 カウンタ使用 */
55+}
56+
57+/*!
58+ @brief 74HC595リセット関数
59+ /SCLRでFFをクリアした後RCKで出力をラッチする
60+*/
61+void SetParaIO(uint16_t sdata)
62+{
63+ /* AVR起動時状態 */
64+ /* MISO(SI):L /OE:L RCK:L /SCLR:H SCK:L */
65+ /* この関数で行う処理 */
66+ /* 1. USI上位8ビット出力 */
67+ /* 2. USI下位8ビット出力 */
68+ /* 3. RCK H->L */
69+ /* 4. MISO(SI):L */
70+ /* MISO(SI):- /OE:L RCK:L /SCLR:H SCK:L */
71+
72+ SendUsi((uint8_t)(sdata >> 8));
73+ SendUsi((uint8_t)sdata);
74+ PORTB |= RCK_BIT; /* RCKビットをH */
75+ PORTB &= ~RCK_BIT; /* RCKビットをL */
76+
77+}
78+
79+
80+/*!
81+ @brief USI同期シリアル出力関数
82+ SCK 立ち上がりエッジ MSBファースト 8ビット
83+ クロックレート: Hz
84+*/
85+#define CLOCK_BITS 8
86+void SendUsi(uint8_t data)
87+{
88+ uint8_t cnt;
89+ USIDR = data; /* データセット */
90+ //USISR = USISR & USI_FLAG_CLEAR; /* Overflowフラグクリア */
91+ //do{
92+ for ( cnt = 0; cnt < CLOCK_BITS; cnt++)
93+ {
94+ USICR = USI_CLOCK_STROBE_L; /* カウンター動作 */
95+ USICR = USI_CLOCK_STROBE; /* カウンター動作 */
96+ }
97+ //}while( ( USISR & USI_MASK_USIOIF) == 0); /* 8ビット出力後USIOIFは1となる */
98+}
--- autokey/trunk/ReadMe.txt (nonexistent)
+++ autokey/trunk/ReadMe.txt (revision 1)
@@ -0,0 +1,26 @@
1+--------------------------------------------------------------------
2+Copyright (c) 2009 Yama
3+All rights reserved.
4+
5+Redistribution and use in source and binary forms, with or without
6+modification, are permitted provided that the following conditions
7+are met:
8+1. Redistributions of source code must retain the above copyright
9+ notice, this list of conditions and the following disclaimer.
10+2. Redistributions in binary form must reproduce the above copyright
11+ notice, this list of conditions and the following disclaimer in the
12+ documentation and/or other materials provided with the distribution.
13+3. The name of the author may not be used to endorse or promote products
14+ derived from this software without specific prior written permission.
15+
16+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26+
--- autokey/trunk/KeyCtrl.c (nonexistent)
+++ autokey/trunk/KeyCtrl.c (revision 1)
@@ -0,0 +1,58 @@
1+/*
2+ * Copyright (c) 2009, Yama
3+ * All rights reserved.
4+ *
5+ *
6+ * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
7+ *
8+ * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
9+ * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
10+ * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、<組織>の名前またはコントリビューターの名前を使用してはならない。
11+ * 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
12+ */
13+
14+
15+#include <avr/io.h>
16+#include "Modules.h"
17+
18+static Key keydata;
19+
20+void ResetParaIO(void);
21+void SetParaIO(uint16_t sdata);
22+
23+void ResetKey(void);
24+
25+void ResetKey(void)
26+{
27+ keydata.u.byte = 0;
28+ ResetParaIO();
29+}
30+
31+void ChangeKeyStatus(uint8_t Key, bool On)
32+{
33+ /* パラメータチェックは行わない */
34+ if(Key == 0)
35+ { /* 全てのキーに対して */
36+ if(On == ON_PARA_BOOL_ON)
37+ { /* 全てON */
38+ keydata.u.byte = ON_PARA_ALL_ON;
39+ }
40+ else
41+ { /* 全てのキーがOFF */
42+ keydata.u.byte = ON_PARA_ALL_OFF;
43+ }
44+ }
45+ else
46+ { /* 個々のキーに対して */
47+ if(On == ON_PARA_BOOL_ON)
48+ { /* ONにする */
49+ keydata.u.byte |= (uint16_t)1 << (Key - 1);
50+ }
51+ else
52+ { /* Offにする */
53+ keydata.u.byte &= ~( (uint16_t)1<< (Key - 1));
54+ }
55+ }
56+ SetParaIO(keydata.u.byte);
57+
58+}
--- autokey/trunk/Modules.h (nonexistent)
+++ autokey/trunk/Modules.h (revision 1)
@@ -0,0 +1,93 @@
1+/*
2+ * Copyright (c) 2009, Yama
3+ * All rights reserved.
4+ *
5+ *
6+ * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
7+ *
8+ * ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
9+ * バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
10+ * 書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、<組織>の名前またはコントリビューターの名前を使用してはならない。
11+ * 本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
12+ */
13+
14+#include <stdbool.h> /* true */
15+#include <avr/pgmspace.h>
16+
17+
18+#define WDT_USE_1S 0x1f /*!< ウォッチドッグタイマ使用(1秒) */
19+#define WDT_NOUSE 0x00 /*!< ウォッチドッグタイマ未使用 */
20+
21+/* 関数定義 */
22+int hardwareInit(void);
23+uint8_t GetResetSetRegi(uint8_t wdtcsr);
24+
25+/* パラレルIO制御 */
26+void ResetParaIO(void);
27+void SetParaIO(uint16_t sdata);
28+void SendUsi(uint8_t data);
29+
30+/* キー制御 */
31+void ResetKey(void);
32+void ChangeKeyStatus(uint8_t Key, bool On); /* Key 1~12, On:true Off:false */
33+
34+/* UART制御 */
35+void InitUsart(void);
36+void InitUsartLower(void);
37+uint8_t CheckCRLF(void);
38+char * GetBufPointer(void);
39+
40+void SendText_P(PGM_P buf);
41+
42+typedef struct {
43+ uint16_t K1:1;
44+ uint16_t K2:1;
45+ uint16_t K3:1;
46+ uint16_t K4:1;
47+ uint16_t K5:1;
48+ uint16_t K6:1;
49+ uint16_t K7:1;
50+ uint16_t K8:1;
51+ uint16_t K9:1;
52+ uint16_t K10:1;
53+ uint16_t K11:1;
54+ uint16_t K12:1;
55+ uint16_t RSV:4;
56+}KeyBit;
57+
58+typedef struct {
59+ union
60+ {
61+ uint16_t byte;
62+ KeyBit bit;
63+ }u;
64+} Key;
65+
66+#define MIN_KEY_NUM 0 /* キーは1から12 0指定時すべてのキーに対してのコマンド */
67+#define MAX_KEY_NUM 12 /* キーは1から12 0指定時すべてのキーに対してのコマンド */
68+#define MIN_ON_NUM 0 /* ONは0から1 */
69+#define MAX_ON_NUM 1 /* ONは0から1 */
70+#define ON_PARA_INT_ON 1 /* 1(true)のときON */
71+#define ON_PARA_INT_OFF 0 /* 0(false)のときOFF */
72+#define ON_PARA_BOOL_ON true /* 1(true)のときON */
73+#define ON_PARA_BOOL_OFF false /* 0(false)のときOFF */
74+#define ON_PARA_ALL_ON 0x0fff /* 全てのキーがON */
75+#define ON_PARA_ALL_OFF 0x0000 /* 全てのキーがOFF */
76+
77+#define COMMAND_START_CHARACTER '!' /* コマンド開始キャラクター */
78+#define COMMAND_SEPARATER_CHARACTER ' ' /* コマンドセパレータキャラクター */
79+
80+/* AVRコンパイラの制約でリテラルをROMに配置するには一度配列に置かないといけない */
81+/* エラー系応答文字列 */
82+#define ERROR_NOT_COMMAND "!E0" /* コマンドではない */
83+#define ERROR_UNDEFINE_COMMAND "!E1" /* 未定義のコマンド */
84+#define ERROR_KEY_PARAMETER "!E2" /* キーパラメータエラー */
85+#define ERROR_KEY_NUMBER "!E3" /* キー番号指定エラー */
86+#define ERROR_ON_PARAMETER "!E4" /* ONパラメータエラー */
87+#define ERROR_ON_NUMBER "!E5" /* キー番号指定エラー */
88+#define ERROR_SEPARATER "!E6" /* コマンドパラメータのセパレータキャラクタエラー */
89+
90+/* 正常系文字列応答 */
91+#define WAKEUP_MESSAGES "!W" /* 起動メッセージ */
92+#define OK_KEY_SETTING "!P" /* 設定OK Pass */
93+#define VERSION_STRING "!V 0.1" /* バージョン文字列 */
Show on old repository browser