OSDN Git Service

Step 10 added.
[kozos-expbrd/kozos_expbrd.git] / firm / junk / 10 / bootload / led.c
1 #include "led.h"
2 #include "defines.h"
3
4 #define H8_3069F_PADDR  ((volatile uint8 *)0xFEE009)
5 #define H8_3069F_PADR   ((volatile uint8 *)0xFFFFD9)
6
7 #define MASK_LEDG   (1 << 2)
8 #define MASK_LEDR   (1 << 3)
9 #define MASK_LED1   (1 << 6)
10 #define MASK_LED2   (1 << 7)
11
12 int led_init(void)
13 {
14   volatile uint8 mask = MASK_LED1 | MASK_LED2 | MASK_LEDG | MASK_LEDR;
15
16   /*
17    * ¥Ý¡¼¥È¥Ç¥£¥ì¥¯¥·¥ç¥ó¤òÀßÄꤹ¤ëÁ°¤Ë¥Ç¡¼¥¿¥ì¥¸¥¹¥¿¤ò½é´ü²½¤¹¤ë¡£
18    * ÉéÏÀÍý¤Ê¤Î¤Ç¡¢½é´üÃͤΥ¼¥í¤À¤È½ÐÎϤˤ·¤¿»þÅÀ¤ÇÅÀÅô¾õÂ֤Ȥʤ롣
19    */
20   *H8_3069F_PADR |= mask;
21
22   /*
23    * ¥Ý¡¼¥ÈA¤Î¥Ó¥Ã¥È2,3,6,7¤Ï½ÐÎϥݡ¼¥È¤È¤·¤ÆÀßÄꤹ¤ë¡£
24    *
25    * ¥Ç¡¼¥¿¥Ç¥£¥ì¥¯¥·¥ç¥ó¥ì¥¸¥¹¥¿¤ÏWrite Only¤Ê¤Î¤Ç¡¢
26    * Â¾¤Î¥Ó¥Ã¥È¤ÎÀßÄ꤬ɬÍפˤʤä¿»þÅÀ¤Ç¡¢
27    * ¥Ý¡¼¥ÈÆþ½ÐÎÏÀßÄê¤ò¤Þ¤È¤á¤Æ´ÉÍý¤¹¤ë¤è¤¦¤Ê
28    * ²¿¤é¤«¤ÎÂкö¤¬É¬ÍפȤʤë¤À¤í¤¦¡£
29    */
30   *H8_3069F_PADDR = 0xCC;
31
32   return 0;
33 }
34
35 int led_write(led_target_t target, led_state_t state)
36 {
37   volatile uint8 mask = 0x00;
38
39   switch (target) {
40     case Led1:
41       mask = MASK_LED1;
42       break;
43     case Led2:
44       mask = MASK_LED2;
45       break;
46     case LedG:
47       mask = MASK_LEDG;
48       break;
49     case LedR:
50       mask = MASK_LEDR;
51       break;
52     default:
53       return -1;
54   }
55
56   switch (state) {
57     case LedOn:
58       *H8_3069F_PADR &= ~mask;
59       break;
60     case LedOff:
61       *H8_3069F_PADR |= mask;
62       break;
63     default:
64       return -1;
65   }
66
67   return 0;
68 }
69
70 int led_toggle(led_target_t target)
71 {
72   volatile uint8 mask = 0x00;
73
74   switch (target) {
75     case Led1:
76       mask = MASK_LED1;
77       break;
78     case Led2:
79       mask = MASK_LED2;
80       break;
81     case LedG:
82       mask = MASK_LEDG;
83       break;
84     case LedR:
85       mask = MASK_LEDR;
86       break;
87     default:
88       return -1;
89   }
90
91   if (*H8_3069F_PADR & mask) {
92     *H8_3069F_PADR &= ~mask;
93   } else {
94     *H8_3069F_PADR |= mask;
95   }
96
97   return 0;
98 }
99