OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [software/] [app/] [buzzer.c] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
/*
2
C0 = 16.35
3
C#0 = 17.32
4
DO = 18.35
5
D#O = 19.45
6
EO = 20.60
7
F0 = 21.83
8
F#0 = 23.12
9
G0 = 24.50
10
G#O = 25.96
11
A0 = 27.50
12
A#0 = 29.14
13
BO = 30.87
14
 
15
C1 = 32.70
16
C#1 = 34.65
17
D1 = 36.71
18
D#1 = 38.89
19
E1 = 41.20
20
F1 = 43.65
21
F#1 = 46.25
22
G1 = 49.00
23
G#1 = 51.91
24
A1 = 55.00
25
A#1 = 58.27
26
B1 = 61.74
27
 
28
C2 = 65.41
29
C#2 = 69.30
30
D2 = 73.42
31
D#2 = 77.78
32
E2 = 82.41
33
F2 = 87.31
34
F#2 = 92.50
35
G2 = 98.00
36
G#2 = 103.83
37
A2 = 110.00
38
A#2 = 116.54
39
B2 = 123.47
40
 
41
C3 = 130.81
42
C#3 = 138.59
43
D3 = 146.83
44
D#3 = 155.56
45
E3 = 164.81
46
F3 = 174.61
47
F#3 = 185.00
48
G3 = 196.00
49
G#3 = 207.65
50
A3 = 220.00
51
A#3 = 233.08
52
B3 = 246.94
53
 
54
C4 = 261.63
55
C#4 = 277.18
56
D4 = 293.66
57
D#4 = 311.13
58
E4 = 329.63
59
F4 = 349.23
60
F#4 = 369.99
61
G4 = 392.00
62
G#4 = 415.30
63
A4 = 440.00
64
A#4 = 466.16
65
B4 = 493.88
66
 
67
C5 = 523.25
68
C#5 = 554.37
69
D5 = 587.33
70
D#5 = 622.25
71
E5 = 659.26
72
F5 = 698.46
73
F#5 = 739.99
74
G5 = 783.99
75
G#5 = 830.61
76
A5 = 880.00
77
A#5 = 932.33
78
B5 = 987.77
79
 
80
C6 = 1046.50
81
C#6 = 1108.73
82
D6 = 1174.66
83
D#6 = 1244.51
84
E6 = 1318.51
85
F6 = 1396.91
86
F#6 = 1479.98
87
G6 = 1567.98
88
G#6 = 1661.22
89
A6 = 1760.00
90
A#6 = 1864.66
91
B6 = 1975.53
92
 
93
C7 = 2093.00
94
C#7 = 2217.46
95
D7 = 2349.32
96
D#7 = 2489.02
97
E7 = 2637.02
98
F7 = 2793.83
99
F#7 = 2959.96
100
G7 = 3135.96
101
G#7 = 3322.44
102
A7 = 3520.00
103
A#7 = 3729.31
104
B7 = 3951.07
105
*/
106
 
107
#include <hf-risc.h>
108
 
109
#define BUZZER_PIN      0x08
110
 
111
volatile int32_t freq = 1, extio_out;
112
 
113
void compare_handler(void){
114
        COMPARE = COUNTER + (CPU_SPEED / freq);
115
        extio_out ^= BUZZER_PIN;
116
        EXTIO_OUT = extio_out;
117
}
118
 
119
int main(void){
120
        extio_out = 0;
121
        EXTIO_OUT = extio_out;
122
 
123
        // register counter compare interrupt
124
        interrupt_register(IRQ_COMPARE, compare_handler);
125
 
126
        // initialize compare registers, clear compare irqs
127
        COMPARE = COUNTER + (CPU_SPEED/1000);
128
 
129
        // set interrupt mask (unmask peripheral interrupts)
130
        IRQ_MASK = IRQ_COMPARE;
131
 
132
        // global interrupts enable
133
        IRQ_STATUS = 1;
134
 
135
 
136
        for(;;){
137
                // play a chromatic scale from C4 to B4
138
                freq = 262;     delay_ms(250);
139
                freq = 277;     delay_ms(250);
140
                freq = 294;     delay_ms(250);
141
                freq = 311;     delay_ms(250);
142
                freq = 330;     delay_ms(250);
143
                freq = 349;     delay_ms(250);
144
                freq = 370;     delay_ms(250);
145
                freq = 392;     delay_ms(250);
146
                freq = 415;     delay_ms(250);
147
                freq = 440;     delay_ms(250);
148
                freq = 466;     delay_ms(250);
149
                freq = 494;     delay_ms(250);
150
 
151
                // pause for 1 s
152
                freq = 1;       delay_ms(1000);
153
        }
154
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.