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.
Fork of Smoothie by
libs/MRI_Hooks.cpp@2:1df0b61d3b5a, 2014-02-28 (annotated)
- Committer:
- Michael J. Spencer
- Date:
- Fri Feb 28 18:52:52 2014 -0800
- Revision:
- 2:1df0b61d3b5a
Update to latest Smoothie.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Michael J. Spencer |
2:1df0b61d3b5a | 1 | #include "MRI_Hooks.h" |
| Michael J. Spencer |
2:1df0b61d3b5a | 2 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 3 | #include <sLPC17xx.h> |
| Michael J. Spencer |
2:1df0b61d3b5a | 4 | #include <mri.h> |
| Michael J. Spencer |
2:1df0b61d3b5a | 5 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 6 | // This is used by MRI to turn pins on and off when entering and leaving MRI. Useful for not burning everything down |
| Michael J. Spencer |
2:1df0b61d3b5a | 7 | // See http://smoothieware.org/mri-debugging |
| Michael J. Spencer |
2:1df0b61d3b5a | 8 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 9 | extern "C" { |
| Michael J. Spencer |
2:1df0b61d3b5a | 10 | static uint32_t _set_high_on_debug[5] = { |
| Michael J. Spencer |
2:1df0b61d3b5a | 11 | // (1 << 4) | (1 << 10) | (1 << 19) | (1 << 21), // smoothieboard stepper EN pins |
| Michael J. Spencer |
2:1df0b61d3b5a | 12 | 0, |
| Michael J. Spencer |
2:1df0b61d3b5a | 13 | 0, |
| Michael J. Spencer |
2:1df0b61d3b5a | 14 | 0, |
| Michael J. Spencer |
2:1df0b61d3b5a | 15 | 0, |
| Michael J. Spencer |
2:1df0b61d3b5a | 16 | 0 |
| Michael J. Spencer |
2:1df0b61d3b5a | 17 | }; |
| Michael J. Spencer |
2:1df0b61d3b5a | 18 | static uint32_t _set_low_on_debug[5] = { |
| Michael J. Spencer |
2:1df0b61d3b5a | 19 | 0, |
| Michael J. Spencer |
2:1df0b61d3b5a | 20 | 0, |
| Michael J. Spencer |
2:1df0b61d3b5a | 21 | // (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7), // smoothieboard heater outputs |
| Michael J. Spencer |
2:1df0b61d3b5a | 22 | 0, |
| Michael J. Spencer |
2:1df0b61d3b5a | 23 | 0, |
| Michael J. Spencer |
2:1df0b61d3b5a | 24 | 0 |
| Michael J. Spencer |
2:1df0b61d3b5a | 25 | }; |
| Michael J. Spencer |
2:1df0b61d3b5a | 26 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 27 | static uint32_t _previous_state[5]; |
| Michael J. Spencer |
2:1df0b61d3b5a | 28 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 29 | static LPC_GPIO_TypeDef* io; |
| Michael J. Spencer |
2:1df0b61d3b5a | 30 | static int i; |
| Michael J. Spencer |
2:1df0b61d3b5a | 31 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 32 | void __mriPlatform_EnteringDebuggerHook() |
| Michael J. Spencer |
2:1df0b61d3b5a | 33 | { |
| Michael J. Spencer |
2:1df0b61d3b5a | 34 | for (i = 0; i < 5; i++) |
| Michael J. Spencer |
2:1df0b61d3b5a | 35 | { |
| Michael J. Spencer |
2:1df0b61d3b5a | 36 | io = (LPC_GPIO_TypeDef*) (LPC_GPIO_BASE + (0x20 * i)); |
| Michael J. Spencer |
2:1df0b61d3b5a | 37 | io->FIOMASK &= ~(_set_high_on_debug[i] | _set_low_on_debug[i]); |
| Michael J. Spencer |
2:1df0b61d3b5a | 38 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 39 | _previous_state[i] = io->FIOPIN; |
| Michael J. Spencer |
2:1df0b61d3b5a | 40 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 41 | io->FIOSET = _set_high_on_debug[i]; |
| Michael J. Spencer |
2:1df0b61d3b5a | 42 | io->FIOCLR = _set_low_on_debug[i]; |
| Michael J. Spencer |
2:1df0b61d3b5a | 43 | } |
| Michael J. Spencer |
2:1df0b61d3b5a | 44 | } |
| Michael J. Spencer |
2:1df0b61d3b5a | 45 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 46 | void __mriPlatform_LeavingDebuggerHook() |
| Michael J. Spencer |
2:1df0b61d3b5a | 47 | { |
| Michael J. Spencer |
2:1df0b61d3b5a | 48 | for (i = 0; i < 5; i++) |
| Michael J. Spencer |
2:1df0b61d3b5a | 49 | { |
| Michael J. Spencer |
2:1df0b61d3b5a | 50 | io = (LPC_GPIO_TypeDef*) (LPC_GPIO_BASE + (0x20 * i)); |
| Michael J. Spencer |
2:1df0b61d3b5a | 51 | io->FIOMASK &= ~(_set_high_on_debug[i] | _set_low_on_debug[i]); |
| Michael J. Spencer |
2:1df0b61d3b5a | 52 | io->FIOSET = _previous_state[i] & (_set_high_on_debug[i] | _set_low_on_debug[i]); |
| Michael J. Spencer |
2:1df0b61d3b5a | 53 | io->FIOCLR = (~_previous_state[i]) & (_set_high_on_debug[i] | _set_low_on_debug[i]); |
| Michael J. Spencer |
2:1df0b61d3b5a | 54 | } |
| Michael J. Spencer |
2:1df0b61d3b5a | 55 | } |
| Michael J. Spencer |
2:1df0b61d3b5a | 56 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 57 | void set_high_on_debug(int port, int pin) |
| Michael J. Spencer |
2:1df0b61d3b5a | 58 | { |
| Michael J. Spencer |
2:1df0b61d3b5a | 59 | if ((port >= 5) || (port < 0)) |
| Michael J. Spencer |
2:1df0b61d3b5a | 60 | return; |
| Michael J. Spencer |
2:1df0b61d3b5a | 61 | if ((pin >= 32) || (pin < 0)) |
| Michael J. Spencer |
2:1df0b61d3b5a | 62 | return; |
| Michael J. Spencer |
2:1df0b61d3b5a | 63 | _set_high_on_debug[port] |= (1<<pin); |
| Michael J. Spencer |
2:1df0b61d3b5a | 64 | } |
| Michael J. Spencer |
2:1df0b61d3b5a | 65 | |
| Michael J. Spencer |
2:1df0b61d3b5a | 66 | void set_low_on_debug(int port, int pin) |
| Michael J. Spencer |
2:1df0b61d3b5a | 67 | { |
| Michael J. Spencer |
2:1df0b61d3b5a | 68 | if ((port >= 5) || (port < 0)) |
| Michael J. Spencer |
2:1df0b61d3b5a | 69 | return; |
| Michael J. Spencer |
2:1df0b61d3b5a | 70 | if ((pin >= 32) || (pin < 0)) |
| Michael J. Spencer |
2:1df0b61d3b5a | 71 | return; |
| Michael J. Spencer |
2:1df0b61d3b5a | 72 | _set_low_on_debug[port] |= (1<<pin); |
| Michael J. Spencer |
2:1df0b61d3b5a | 73 | } |
| Michael J. Spencer |
2:1df0b61d3b5a | 74 | } |
