Test mbed1.

Dependencies:   mbed-src

Committer:
mja054
Date:
Thu Mar 13 16:35:52 2014 +0000
Revision:
2:9f7506fa29d4
Parent:
1:1019095e41c4
Tested for 1ms to 10s;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mja054 0:7ac9830cbaa5 1 #include "mbed.h"
mja054 0:7ac9830cbaa5 2 #include <math.h>
mja054 0:7ac9830cbaa5 3 #include "InterruptManager.h"
mja054 0:7ac9830cbaa5 4 #include "TPM_init.h"
mja054 1:1019095e41c4 5 #include "SLCD.h"
mja054 1:1019095e41c4 6 #define BAUD_RATE 9600
mja054 0:7ac9830cbaa5 7
mja054 0:7ac9830cbaa5 8 #define NVIC_ISER 0xE000E100
mja054 0:7ac9830cbaa5 9 #define NVIC_ISPR 0xE000E200
mja054 0:7ac9830cbaa5 10
mja054 0:7ac9830cbaa5 11 #define SIM_SOPT2_ADDRESS 0x40048004
mja054 0:7ac9830cbaa5 12 #define SIM_SCGC6_ADDRESS 0x4004803C
mja054 0:7ac9830cbaa5 13
mja054 0:7ac9830cbaa5 14
mja054 0:7ac9830cbaa5 15 DigitalOut out(PTD3);
mja054 0:7ac9830cbaa5 16 DigitalOut green(LED1);
mja054 2:9f7506fa29d4 17 DigitalOut red(LED2);
mja054 0:7ac9830cbaa5 18 Serial pc(USBTX, USBRX);
mja054 0:7ac9830cbaa5 19 Timer timer;
mja054 1:1019095e41c4 20 SLCD slcd;
mja054 0:7ac9830cbaa5 21
mja054 0:7ac9830cbaa5 22 unsigned int flag;
mja054 0:7ac9830cbaa5 23 unsigned int modulo_val = 48000;
mja054 0:7ac9830cbaa5 24 unsigned int prescale_val = 0;
mja054 1:1019095e41c4 25 volatile unsigned val = 10;
mja054 0:7ac9830cbaa5 26 void TPM0_handler_test();
mja054 0:7ac9830cbaa5 27
mja054 0:7ac9830cbaa5 28 void init_test()
mja054 0:7ac9830cbaa5 29 {
mja054 0:7ac9830cbaa5 30 NVIC_SetVector(TPM0_IRQn, (uint32_t) TPM0_handler_test);
mja054 0:7ac9830cbaa5 31 NVIC_SetPriority(TPM0_IRQn, 0);
mja054 0:7ac9830cbaa5 32
mja054 0:7ac9830cbaa5 33 TPM0_init(modulo_val, prescale_val);
mja054 0:7ac9830cbaa5 34
mja054 0:7ac9830cbaa5 35 NVIC_EnableIRQ(TPM0_IRQn);
mja054 0:7ac9830cbaa5 36
mja054 0:7ac9830cbaa5 37 wait(5);
mja054 0:7ac9830cbaa5 38 TPM0_start();
mja054 0:7ac9830cbaa5 39 }
mja054 0:7ac9830cbaa5 40
mja054 0:7ac9830cbaa5 41 void TPM0_handler_test() {
mja054 0:7ac9830cbaa5 42 unsigned int overflow = TPM0_SC_read() & 0x000000C0;
mja054 0:7ac9830cbaa5 43 if(overflow == 0xC0) {
mja054 0:7ac9830cbaa5 44 TPM0_clear_overflow();
mja054 0:7ac9830cbaa5 45 NVIC_ClearPendingIRQ(TPM0_IRQn);
mja054 0:7ac9830cbaa5 46 flag++;
mja054 1:1019095e41c4 47 if (flag == val) {
mja054 1:1019095e41c4 48 out = !out;
mja054 2:9f7506fa29d4 49 red = !red;
mja054 1:1019095e41c4 50 flag = 0;
mja054 1:1019095e41c4 51 }
mja054 0:7ac9830cbaa5 52 // green = !green;
mja054 0:7ac9830cbaa5 53 }
mja054 0:7ac9830cbaa5 54 }
mja054 0:7ac9830cbaa5 55
mja054 1:1019095e41c4 56 void read()
mja054 1:1019095e41c4 57 {
mja054 1:1019095e41c4 58 char c = (char) pc.getc();
mja054 1:1019095e41c4 59 green = !green;
mja054 1:1019095e41c4 60 if (c == '1') {
mja054 1:1019095e41c4 61 slcd.printf("%c",c);
mja054 1:1019095e41c4 62 val = 1;
mja054 1:1019095e41c4 63 } else if (c == '2') {
mja054 1:1019095e41c4 64 slcd.printf("%c", c);
mja054 1:1019095e41c4 65 val = 100;
mja054 1:1019095e41c4 66 } else if (c == '3') {
mja054 1:1019095e41c4 67 slcd.printf("%c",c);
mja054 1:1019095e41c4 68 val = 1000;
mja054 1:1019095e41c4 69 } else if (c == '4') {
mja054 1:1019095e41c4 70 slcd.printf("%c",c);
mja054 1:1019095e41c4 71 val = 10000;
mja054 1:1019095e41c4 72 } else if (c == '5') {
mja054 1:1019095e41c4 73 val = 100000;
mja054 1:1019095e41c4 74 } else {
mja054 1:1019095e41c4 75 slcd.printf("E");
mja054 1:1019095e41c4 76 return;
mja054 1:1019095e41c4 77 }
mja054 1:1019095e41c4 78 }
mja054 1:1019095e41c4 79
mja054 0:7ac9830cbaa5 80 int main() {
mja054 0:7ac9830cbaa5 81 flag = 0;
mja054 1:1019095e41c4 82 green = 0;
mja054 2:9f7506fa29d4 83 red = 0;
mja054 0:7ac9830cbaa5 84 pc.baud(BAUD_RATE);
mja054 1:1019095e41c4 85 pc.attach(read);
mja054 1:1019095e41c4 86 slcd.printf("nesl");
mja054 0:7ac9830cbaa5 87 init_test();
mja054 0:7ac9830cbaa5 88 while(1) {
mja054 0:7ac9830cbaa5 89 if (flag == 1000) {
mja054 2:9f7506fa29d4 90 // green = !green;
mja054 0:7ac9830cbaa5 91 flag = 0;
mja054 0:7ac9830cbaa5 92 }
mja054 0:7ac9830cbaa5 93 }
mja054 0:7ac9830cbaa5 94 /*
mja054 0:7ac9830cbaa5 95 while(1) {
mja054 0:7ac9830cbaa5 96 green = !green;
mja054 0:7ac9830cbaa5 97 out = !out;
mja054 0:7ac9830cbaa5 98 wait(0.5);
mja054 0:7ac9830cbaa5 99 out = !out;
mja054 0:7ac9830cbaa5 100 wait(0.5);
mja054 0:7ac9830cbaa5 101 }
mja054 0:7ac9830cbaa5 102 */
mja054 0:7ac9830cbaa5 103 }