Test mbed1.

Dependencies:   mbed-src

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include <math.h>
00003 #include "InterruptManager.h"
00004 #include "TPM_init.h"
00005 #include "SLCD.h"
00006 #define BAUD_RATE   9600
00007 
00008 #define NVIC_ISER   0xE000E100
00009 #define NVIC_ISPR   0xE000E200
00010 
00011 #define SIM_SOPT2_ADDRESS 0x40048004
00012 #define SIM_SCGC6_ADDRESS 0x4004803C
00013 
00014 
00015 DigitalOut out(PTD3);
00016 DigitalOut green(LED1);
00017 DigitalOut red(LED2);
00018 Serial pc(USBTX, USBRX);
00019 Timer timer;
00020 SLCD slcd;
00021 
00022 unsigned int flag;
00023 unsigned int modulo_val = 48000;
00024 unsigned int prescale_val = 0;
00025 volatile unsigned val = 10;
00026 void TPM0_handler_test();
00027 
00028 void init_test()
00029 {
00030     NVIC_SetVector(TPM0_IRQn, (uint32_t) TPM0_handler_test);
00031     NVIC_SetPriority(TPM0_IRQn, 0);
00032 
00033     TPM0_init(modulo_val, prescale_val);
00034 
00035     NVIC_EnableIRQ(TPM0_IRQn);
00036     
00037     wait(5);
00038     TPM0_start();
00039 }
00040 
00041 void TPM0_handler_test() {
00042     unsigned int overflow = TPM0_SC_read() & 0x000000C0; 
00043     if(overflow == 0xC0) {
00044         TPM0_clear_overflow();
00045         NVIC_ClearPendingIRQ(TPM0_IRQn);
00046         flag++;
00047         if (flag == val) {
00048             out = !out;
00049             red = !red;
00050             flag = 0;
00051         }
00052 //        green = !green;
00053     }
00054 }
00055 
00056 void read()
00057 {
00058     char c = (char) pc.getc();
00059     green = !green;
00060     if (c == '1') {
00061         slcd.printf("%c",c);
00062         val = 1;
00063     } else if (c == '2') {
00064         slcd.printf("%c", c);
00065         val = 100;
00066     } else if (c == '3') {
00067         slcd.printf("%c",c);
00068         val = 1000;
00069     } else if (c == '4') {
00070         slcd.printf("%c",c);
00071         val = 10000;
00072     } else if (c == '5') {
00073         val = 100000;
00074     } else {
00075         slcd.printf("E");
00076         return;
00077     }
00078 }
00079 
00080 int main() {
00081     flag = 0;
00082     green = 0;
00083     red = 0;
00084     pc.baud(BAUD_RATE);
00085     pc.attach(read);
00086     slcd.printf("nesl");
00087     init_test();
00088     while(1) {
00089         if (flag == 1000) {
00090  //           green = !green;
00091             flag = 0;
00092         }
00093     }
00094 /*
00095     while(1) {
00096         green = !green;
00097         out = !out;
00098         wait(0.5);
00099         out = !out;
00100         wait(0.5);
00101     }
00102 */
00103 }