diff target-utils/buzplayer/melplay.c @ 81:8a200d65c6a0

buzplayer: play implemented
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 27 Oct 2016 04:39:48 +0000
parents
children 158dd05fb9f9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/target-utils/buzplayer/melplay.c	Thu Oct 27 04:39:48 2016 +0000
@@ -0,0 +1,26 @@
+#include "types.h"
+#include "melody.h"
+
+extern struct melentry *melody_buf_start, *melody_buf_tailptr;
+
+#define	ARMIO_LOAD_TIM	(*(volatile u16 *) 0xFFFE4808)
+#define	BUZZ_LIGHT_REG	(*(volatile u16 *) 0xFFFE480E)
+
+void
+melody_play()
+{
+	struct melentry *p;
+	int count;
+
+	wait_for_tdma_frame();
+	for (p = melody_buf_start; p < melody_buf_tailptr; p++) {
+		if (p->tone) {
+			ARMIO_LOAD_TIM = p->tone;
+			BUZZ_LIGHT_REG = 1;
+		} else
+			BUZZ_LIGHT_REG = 0;
+		for (count = p->dur; count; count--)
+			wait_for_tdma_frame();
+		BUZZ_LIGHT_REG = 0;
+	}
+}