Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:b3c7c9d52c61, 2010-12-04 (annotated)
- Committer:
- guruimage
- Date:
- Sat Dec 04 06:49:44 2010 +0000
- Revision:
- 0:b3c7c9d52c61
HW3B_Part1_runAtTrigger
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| guruimage | 0:b3c7c9d52c61 | 1 | #include "mbed.h" |
| guruimage | 0:b3c7c9d52c61 | 2 | |
| guruimage | 0:b3c7c9d52c61 | 3 | DigitalOut myled(LED1); |
| guruimage | 0:b3c7c9d52c61 | 4 | Serial pc(USBTX, USBRX); |
| guruimage | 0:b3c7c9d52c61 | 5 | DigitalOut out(p18); |
| guruimage | 0:b3c7c9d52c61 | 6 | struct timeval |
| guruimage | 0:b3c7c9d52c61 | 7 | { |
| guruimage | 0:b3c7c9d52c61 | 8 | unsigned long long tv_sec; /* Seconds. */ |
| guruimage | 0:b3c7c9d52c61 | 9 | unsigned long long tv_usec; /* Microseconds. */ |
| guruimage | 0:b3c7c9d52c61 | 10 | }; |
| guruimage | 0:b3c7c9d52c61 | 11 | void Timer2_IRQHandler(void); |
| guruimage | 0:b3c7c9d52c61 | 12 | void setupTrigger(void); |
| guruimage | 0:b3c7c9d52c61 | 13 | void runAtTrigger(void(*trigFunc)(struct timeval *tv)); |
| guruimage | 0:b3c7c9d52c61 | 14 | void (*mytrigFunc)(struct timeval *tv); |
| guruimage | 0:b3c7c9d52c61 | 15 | void trigFunc(struct timeval *tv); |
| guruimage | 0:b3c7c9d52c61 | 16 | void getTime(struct timeval *tv); |
| guruimage | 0:b3c7c9d52c61 | 17 | timeval globalTime; |
| guruimage | 0:b3c7c9d52c61 | 18 | int main() { |
| guruimage | 0:b3c7c9d52c61 | 19 | |
| guruimage | 0:b3c7c9d52c61 | 20 | setupTrigger(); |
| guruimage | 0:b3c7c9d52c61 | 21 | while(1){ |
| guruimage | 0:b3c7c9d52c61 | 22 | wait(1); |
| guruimage | 0:b3c7c9d52c61 | 23 | out=!out; |
| guruimage | 0:b3c7c9d52c61 | 24 | myled=!myled; |
| guruimage | 0:b3c7c9d52c61 | 25 | } |
| guruimage | 0:b3c7c9d52c61 | 26 | |
| guruimage | 0:b3c7c9d52c61 | 27 | } |
| guruimage | 0:b3c7c9d52c61 | 28 | |
| guruimage | 0:b3c7c9d52c61 | 29 | |
| guruimage | 0:b3c7c9d52c61 | 30 | void setupTrigger(void){ |
| guruimage | 0:b3c7c9d52c61 | 31 | LPC_SC->PCONP |= 1 << 22; //power on timer 2; |
| guruimage | 0:b3c7c9d52c61 | 32 | LPC_PINCON->PINSEL0 |= 0x00000300;//use capture cap2.0 (pin 30) |
| guruimage | 0:b3c7c9d52c61 | 33 | LPC_PINCON->PINMODE0 |=0x00000100;//set pin mode of pin30(p0.04) as repeter |
| guruimage | 0:b3c7c9d52c61 | 34 | LPC_TIM2->TCR = 0x2; // Reset and set to timer mode |
| guruimage | 0:b3c7c9d52c61 | 35 | LPC_TIM2->CTCR = 0x00000003; //increment TC on rising and falling edge |
| guruimage | 0:b3c7c9d52c61 | 36 | LPC_TIM2->CCR = 0x00000007; //trigger interrupt on rising and falling edge |
| guruimage | 0:b3c7c9d52c61 | 37 | LPC_TIM2->TCR = 1; // Enable Timer |
| guruimage | 0:b3c7c9d52c61 | 38 | |
| guruimage | 0:b3c7c9d52c61 | 39 | // Enable the ISR vector |
| guruimage | 0:b3c7c9d52c61 | 40 | NVIC_SetVector (TIMER2_IRQn, (uint32_t)&Timer2_IRQHandler); |
| guruimage | 0:b3c7c9d52c61 | 41 | NVIC_EnableIRQ(TIMER2_IRQn); |
| guruimage | 0:b3c7c9d52c61 | 42 | } |
| guruimage | 0:b3c7c9d52c61 | 43 | void Timer2_IRQHandler(void) |
| guruimage | 0:b3c7c9d52c61 | 44 | { |
| guruimage | 0:b3c7c9d52c61 | 45 | myled=!myled; |
| guruimage | 0:b3c7c9d52c61 | 46 | LPC_TIM2->IR = 63; |
| guruimage | 0:b3c7c9d52c61 | 47 | runAtTrigger(trigFunc); |
| guruimage | 0:b3c7c9d52c61 | 48 | } |
| guruimage | 0:b3c7c9d52c61 | 49 | void runAtTrigger(void (*trigFunc) (struct timeval *tv)){ |
| guruimage | 0:b3c7c9d52c61 | 50 | |
| guruimage | 0:b3c7c9d52c61 | 51 | (*trigFunc)(&globalTime); |
| guruimage | 0:b3c7c9d52c61 | 52 | } |
| guruimage | 0:b3c7c9d52c61 | 53 | void trigFunc(struct timeval *tv){ |
| guruimage | 0:b3c7c9d52c61 | 54 | getTime(tv); |
| guruimage | 0:b3c7c9d52c61 | 55 | printf("time is %llu!\r\n",tv->tv_usec); |
| guruimage | 0:b3c7c9d52c61 | 56 | } |
| guruimage | 0:b3c7c9d52c61 | 57 | void getTime(struct timeval *tv){ |
| guruimage | 0:b3c7c9d52c61 | 58 | tv->tv_sec =(unsigned long long int) 10; |
| guruimage | 0:b3c7c9d52c61 | 59 | tv->tv_usec=(unsigned long long int) 10000; |
| guruimage | 0:b3c7c9d52c61 | 60 | } |