Test mbed1.
Revision 0:7ac9830cbaa5, committed 2014-03-12
- Comitter:
- mja054
- Date:
- Wed Mar 12 06:32:33 2014 +0000
- Child:
- 1:1019095e41c4
- Commit message:
- Test mbed1
Changed in this revision
--- /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