Template for LPC1768
Dependencies: Gimbal MLX90620 Socket lwip-eth lwip-sys lwip mbed-rtos mbed
Fork of EkkoEye by
CoreISR.cpp@54:aaf6b5ceedd8, 2016-04-14 (annotated)
- Committer:
- gardnmc
- Date:
- Thu Apr 14 13:02:29 2016 +0000
- Revision:
- 54:aaf6b5ceedd8
- Parent:
- 53:72f350a6d09c
libs
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Mike | 53:72f350a6d09c | 1 | /* |
Mike | 53:72f350a6d09c | 2 | * CoreISR.cpp |
Mike | 53:72f350a6d09c | 3 | * |
Mike | 53:72f350a6d09c | 4 | * Created on: 12 Mar 2016 |
Mike | 53:72f350a6d09c | 5 | * Author: mike |
Mike | 53:72f350a6d09c | 6 | */ |
Mike | 53:72f350a6d09c | 7 | #include "mbed.h" |
Mike | 53:72f350a6d09c | 8 | #include "CGimbal.h" |
Mike | 53:72f350a6d09c | 9 | #include "base.h" |
Mike | 53:72f350a6d09c | 10 | |
Mike | 53:72f350a6d09c | 11 | |
Mike | 53:72f350a6d09c | 12 | extern int mgTick; |
Mike | 53:72f350a6d09c | 13 | extern CGimbal * pGimbal; |
Mike | 53:72f350a6d09c | 14 | extern DigitalIn xHome; |
Mike | 53:72f350a6d09c | 15 | extern DigitalIn yHome; |
Mike | 53:72f350a6d09c | 16 | extern Serial pc; |
Mike | 53:72f350a6d09c | 17 | |
Mike | 53:72f350a6d09c | 18 | |
Mike | 53:72f350a6d09c | 19 | |
Mike | 53:72f350a6d09c | 20 | /* |
Mike | 53:72f350a6d09c | 21 | * Core Stepper Timer, called every 20 us |
Mike | 53:72f350a6d09c | 22 | */ |
Mike | 53:72f350a6d09c | 23 | void Pulse() |
Mike | 53:72f350a6d09c | 24 | { |
Mike | 53:72f350a6d09c | 25 | |
Mike | 53:72f350a6d09c | 26 | mgTick++; |
Mike | 53:72f350a6d09c | 27 | |
Mike | 53:72f350a6d09c | 28 | // If m_TickCount (every 20us) has incremented to the defined step interval (1000us) then action may need to be taken |
Mike | 53:72f350a6d09c | 29 | if (pGimbal->m_TickCount > pGimbal->m_StepInterval) |
Mike | 53:72f350a6d09c | 30 | { |
Mike | 53:72f350a6d09c | 31 | if (pGimbal->m_TickCount & 0x01) // First (rising) edge of the pulse |
Mike | 53:72f350a6d09c | 32 | { |
Mike | 53:72f350a6d09c | 33 | if (pGimbal->m_xPulses) // Still need to move along x? |
Mike | 53:72f350a6d09c | 34 | { |
Mike | 53:72f350a6d09c | 35 | if (xHome) // Are we clear of the x Limit switch? |
Mike | 53:72f350a6d09c | 36 | { |
Mike | 53:72f350a6d09c | 37 | pGimbal->m_pXStepPin->write(1); |
Mike | 53:72f350a6d09c | 38 | } |
Mike | 53:72f350a6d09c | 39 | } |
Mike | 53:72f350a6d09c | 40 | if (pGimbal->m_yPulses) // Still need to move along y? |
Mike | 53:72f350a6d09c | 41 | { |
Mike | 53:72f350a6d09c | 42 | if (yHome) // Are we clear of the y Limit switch? |
Mike | 53:72f350a6d09c | 43 | { |
Mike | 53:72f350a6d09c | 44 | pGimbal->m_pYStepPin->write(1); |
Mike | 53:72f350a6d09c | 45 | } |
Mike | 53:72f350a6d09c | 46 | } |
Mike | 53:72f350a6d09c | 47 | pGimbal->m_TickCount++; |
Mike | 53:72f350a6d09c | 48 | } |
Mike | 53:72f350a6d09c | 49 | else |
Mike | 53:72f350a6d09c | 50 | { // Second (falling) edge of the pulse |
Mike | 53:72f350a6d09c | 51 | if (pGimbal->m_xPulses) |
Mike | 53:72f350a6d09c | 52 | { |
Mike | 53:72f350a6d09c | 53 | // This x pulse has been completed |
Mike | 53:72f350a6d09c | 54 | pGimbal->m_pXStepPin->write(0); |
Mike | 53:72f350a6d09c | 55 | pGimbal->m_xPulses --; |
Mike | 53:72f350a6d09c | 56 | } |
Mike | 53:72f350a6d09c | 57 | if (pGimbal->m_yPulses) |
Mike | 53:72f350a6d09c | 58 | { |
Mike | 53:72f350a6d09c | 59 | // This y pulse has been completed |
Mike | 53:72f350a6d09c | 60 | pGimbal->m_pYStepPin->write(0); |
Mike | 53:72f350a6d09c | 61 | pGimbal->m_yPulses --; |
Mike | 53:72f350a6d09c | 62 | } |
Mike | 53:72f350a6d09c | 63 | // Regardless of whether only x or only y falling edge was actioned, the window is now closed |
Mike | 53:72f350a6d09c | 64 | pGimbal->m_TickCount=0; |
Mike | 53:72f350a6d09c | 65 | } |
Mike | 53:72f350a6d09c | 66 | } |
Mike | 53:72f350a6d09c | 67 | else |
Mike | 53:72f350a6d09c | 68 | { |
Mike | 53:72f350a6d09c | 69 | pGimbal->m_TickCount++; |
Mike | 53:72f350a6d09c | 70 | } |
Mike | 53:72f350a6d09c | 71 | |
Mike | 53:72f350a6d09c | 72 | } |
Mike | 53:72f350a6d09c | 73 |