Fork of Smoothie to port to mbed non-LPC targets.

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

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?

UserRevisionLine numberNew 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 }