From d78e451d6bb81823c77d421e327a738bc54dc943 Mon Sep 17 00:00:00 2001
From: Joe Zhao <ztuowen@gmail.com>
Date: Fri, 16 May 2014 16:23:50 +0800
Subject: Added Machine State

---
 rs422lib/main.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

(limited to 'rs422lib/main.c')

diff --git a/rs422lib/main.c b/rs422lib/main.c
index 8f6ec49..7f7ea11 100644
--- a/rs422lib/main.c
+++ b/rs422lib/main.c
@@ -3,6 +3,8 @@
 #include"rsbus.h"
 #include"sysctl.h"
 
+int cnt=0;
+
 void port_init(void)
 {
     P1DIR |= BIT0+BIT6;      // P1.0 P1.6 output
@@ -14,6 +16,29 @@ void received(unsigned char* str,int len)
 	rsbus_w(0,str,len);
 }
 
+// Timer A0 interrupt service routine
+#pragma vector=TIMER0_A0_VECTOR
+__interrupt void Timer_A0 (void)
+{
+	++cnt;
+	if (cnt==25)
+	{
+		STATE(0)=(STATE(0)+1)&0xFF;
+		cnt=0;
+		P1OUT^=BIT6;
+	}
+}
+
+//TIMER A0 initialize -
+// desired value: 5ms
+void TimerA0_Init(void)
+{
+	// Configure TimerA0
+	TA0CTL = TASSEL_2 + MC_1 +ID_3 ;      // Source: SMCLK=4MHz, UP mode, DIV by 8 -> 0.5M
+	TA0CCR0 = 20000;					// 0.5MHz / 20000 -> 25Hz -> 40ms
+	TA0CCTL0 = CCIE;                  	// CCR0 interrupt enabled
+}
+
 void init_devices(void)
 {
 	WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
@@ -29,6 +54,7 @@ void init_devices(void)
 
 	sysctl_init();
 	port_init();
+	TimerA0_Init();
 	rsbus_init(&received);
 
 	_BIS_SR(GIE);
-- 
cgit v1.2.3-70-g09d2