buzzer.c
Go to the documentation of this file.00001
00026 #include <includes.h>
00027 #include <math.h>
00028
00029 #define PI 3.14159265
00030
00031 int buzzer_hz = 4000;
00032 int buzzer_is_on = 0;
00033 int buzzer_hz_init = 600;
00034 int buzzer_hz_range = 300;
00035 int buzzer_period = 3000;
00036
00040 void buzzer_on(void){
00041 PWMMR0 = 60000000/buzzer_hz;
00042 PWMMR5 = PWMMR0/2;
00043 PWMLER = (1<<0)|(1<<5);
00044 }
00045
00049 void buzzer_off(void){
00050 PWMMR5 = 0;
00051 PWMLER = (1<<5);
00052 }
00053
00058 void buzzer_set_frequency(int hz){
00059 buzzer_hz = hz;
00060 if (buzzer_is_on){
00061 buzzer_on();
00062 }
00063 }
00064
00065 void buzzer_sine(int period){
00066 int i;
00067 buzzer_period = period;
00068 for(i = 0; i < buzzer_period; i++){
00069 buzzer_hz = buzzer_hz_init + buzzer_hz_range * sin(buzzer_period * PI/180);
00070 }
00071 if (buzzer_is_on){
00072 buzzer_on();
00073 }
00074 }