Test mbed1.

Dependencies:   mbed-src

Files at this revision

API Documentation at this revision

Comitter:
mja054
Date:
Wed Mar 12 06:32:33 2014 +0000
Child:
1:1019095e41c4
Commit message:
Test mbed1

Changed in this revision

TPM_init.cpp Show annotated file Show diff for this revision Revisions of this file
TPM_init.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-src.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TPM_init.cpp	Wed Mar 12 06:32:33 2014 +0000
@@ -0,0 +1,43 @@
+#include "TPM_init.h"
+
+void TPM0_init(unsigned int modulo_val, unsigned int prescale_val){
+
+    SIM->SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK;
+    SIM->SOPT2 &= ~(SIM_SOPT2_TPMSRC_MASK);
+    SIM->SOPT2 |= SIM_SOPT2_TPMSRC(1);
+        
+    SIM->SCGC6 |= SIM_SCGC6_TPM0_MASK;
+    
+    //Set all bits to zero
+    TPM0->SC = 0x0;
+        
+    //Reset COUNT value to zero
+    TPM0->CNT = 0x0;
+    
+    //Set modulo value
+    TPM0->MOD = modulo_val;
+    
+    //Set prescale value
+    TPM0->SC |= prescale_val;
+    
+    //Enable overflow interrupt
+    TPM0->SC |= TPM_SC_TOIE_MASK;
+}
+
+unsigned int TPM0_SC_read() {
+    unsigned int SC_value = TPM0->SC;
+    return SC_value;
+}
+unsigned int TPM0_CNT_read() {
+    unsigned int CNT_value = TPM0->CNT;
+    return CNT_value;
+}
+
+void TPM0_clear_overflow() {
+    TPM0->SC |= TPM_SC_TOF_MASK;
+}
+
+void TPM0_start() {   
+    
+    TPM0->SC |= TPM_SC_CMOD(1);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TPM_init.h	Wed Mar 12 06:32:33 2014 +0000
@@ -0,0 +1,24 @@
+#ifndef TPM_INIT_H
+#define TPM_INIT_H
+
+#include "mbed.h"
+
+#define SIM_SOPT2_ADDR 0x40048004
+#define SIM_SCGC6_ADDR 0x4004803C
+#define MCG_C1_ADDR     0x40064000
+#define TPM0_SC_ADDR    0x40038000
+#define TPM0_C0SC_ADDR  0x4003800C
+#define TPM0_CNT_ADDR  0x40038004
+#define TPM0_MOD_ADDR  0x40038008
+#define TPM0_CONF_ADDR  0x40038084
+
+void print_stuff(char* whatever);
+
+void TPM0_init(unsigned int modulo_val, unsigned int prescale_val);
+
+void TPM0_clear_overflow();
+unsigned int TPM0_CNT_read();
+unsigned int TPM0_SC_read();
+    
+void TPM0_start();
+#endif  
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Mar 12 06:32:33 2014 +0000
@@ -0,0 +1,71 @@
+#include "mbed.h"
+#include <math.h>
+#include "InterruptManager.h"
+#include "TPM_init.h"
+
+#define BAUD_RATE   921600
+
+#define NVIC_ISER   0xE000E100
+#define NVIC_ISPR   0xE000E200
+
+#define SIM_SOPT2_ADDRESS 0x40048004
+#define SIM_SCGC6_ADDRESS 0x4004803C
+
+
+DigitalOut out(PTD3);
+DigitalOut green(LED1);
+Serial pc(USBTX, USBRX);
+Timer timer;
+
+unsigned int flag;
+unsigned int modulo_val = 48000;
+unsigned int prescale_val = 0;
+
+void TPM0_handler_test();
+
+void init_test()
+{
+    NVIC_SetVector(TPM0_IRQn, (uint32_t) TPM0_handler_test);
+    NVIC_SetPriority(TPM0_IRQn, 0);
+
+    TPM0_init(modulo_val, prescale_val);
+
+    NVIC_EnableIRQ(TPM0_IRQn);
+    
+    wait(5);
+    TPM0_start();
+}
+
+void TPM0_handler_test() {
+    unsigned int overflow = TPM0_SC_read() & 0x000000C0; 
+    if(overflow == 0xC0) {
+        TPM0_clear_overflow();
+        NVIC_ClearPendingIRQ(TPM0_IRQn);
+        flag++;
+        out = !out;
+//        green = !green;
+    }
+}
+
+int main() {
+    flag = 0;
+    pc.baud(BAUD_RATE);
+    
+    init_test();
+
+    while(1) {
+        if (flag == 1000) {
+            green = !green;
+            flag = 0;
+        }
+    }
+/*
+    while(1) {
+        green = !green;
+        out = !out;
+        wait(0.5);
+        out = !out;
+        wait(0.5);
+    }
+*/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-src.lib	Wed Mar 12 06:32:33 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-src/#a7168c414ef2