diff --git a/Development/Software/Controller API/Controller API.vcxproj b/Development/Software/Controller API/Controller API.vcxproj index cbbfb7a196f637f0e68ce7c7749424b3d849104a..0647b5a2e745d5bd0e951f5aac5df99ec7acaa8f 100644 --- a/Development/Software/Controller API/Controller API.vcxproj +++ b/Development/Software/Controller API/Controller API.vcxproj @@ -18,7 +18,6 @@ <ClCompile Include="Sources\MessagePassing\Mailbox.cpp" /> <ClCompile Include="Sources\MessagePassing\Message.cpp" /> <ClCompile Include="Sources\Sensor\Joystick.cpp" /> - <ClCompile Include="Sources\Sensor\MPU9250.cpp" /> <ClCompile Include="Sources\Server.cpp" /> <ClCompile Include="Sources\Service\Service.cpp" /> <ClCompile Include="Sources\Source.cpp" /> @@ -32,7 +31,6 @@ <ClInclude Include="Headers\Service\GyroService.h" /> <ClInclude Include="Headers\Sensor\Joystick.h" /> <ClInclude Include="Headers\MessagePassing\Mailbox.h" /> - <ClInclude Include="Headers\Sensor\MPU9250.h" /> <ClInclude Include="Headers\Server.h" /> <ClInclude Include="Headers\Service\Service.h" /> <ClInclude Include="Headers\System\Thread.h" /> diff --git a/Development/Software/Controller API/Controller API.vcxproj.filters b/Development/Software/Controller API/Controller API.vcxproj.filters index 25ead8173dd5731f04e0dbfb36f8b0cf7f224e3c..6293c371b2ed107602edba39f4182972c28ad500 100644 --- a/Development/Software/Controller API/Controller API.vcxproj.filters +++ b/Development/Software/Controller API/Controller API.vcxproj.filters @@ -60,9 +60,6 @@ <ClCompile Include="Sources\Sensor\Joystick.cpp"> <Filter>Source Files\Sensors</Filter> </ClCompile> - <ClCompile Include="Sources\Sensor\MPU9250.cpp"> - <Filter>Source Files\Sensors</Filter> - </ClCompile> <ClCompile Include="Sources\Service\Service.cpp"> <Filter>Source Files\Services</Filter> </ClCompile> @@ -92,9 +89,6 @@ <ClInclude Include="Headers\Sensor\Joystick.h"> <Filter>Header Files\Sensors</Filter> </ClInclude> - <ClInclude Include="Headers\Sensor\MPU9250.h"> - <Filter>Header Files\Sensors</Filter> - </ClInclude> <ClInclude Include="Headers\Service\Service.h"> <Filter>Header Files\Services</Filter> </ClInclude> diff --git a/Development/Software/Default Controller/Default Controller.vcxproj b/Development/Software/Default Controller/Default Controller.vcxproj index edb48573a9b90e1ef7e44aa4bfce75d1c87d1a60..67274e0e1db15f74451696134aafd3308b583d06 100644 --- a/Development/Software/Default Controller/Default Controller.vcxproj +++ b/Development/Software/Default Controller/Default Controller.vcxproj @@ -15,8 +15,14 @@ <Text Include="README.txt" /> </ItemGroup> <ItemGroup> + <ClCompile Include="buttonInterrupt.cpp" /> + <ClCompile Include="MPU9250.cpp" /> <ClCompile Include="Source.cpp" /> </ItemGroup> + <ItemGroup> + <ClInclude Include="buttonInterrupt.h" /> + <ClInclude Include="MPU9250.h" /> + </ItemGroup> <PropertyGroup Label="Globals"> <ProjectGuid>{AC5B185E-4C05-4379-9A89-FF1D1CDA7775}</ProjectGuid> <RootNamespace>DefaultController</RootNamespace> diff --git a/Development/Software/Default Controller/Default Controller.vcxproj.filters b/Development/Software/Default Controller/Default Controller.vcxproj.filters index a17ea4ba9e09edf5ca8159d882a75796441efd23..54bd7720adde760ebe4fde3e6a9d13f0a16b311c 100644 --- a/Development/Software/Default Controller/Default Controller.vcxproj.filters +++ b/Development/Software/Default Controller/Default Controller.vcxproj.filters @@ -26,5 +26,19 @@ <ClCompile Include="Source.cpp"> <Filter>Source Files</Filter> </ClCompile> + <ClCompile Include="buttonInterrupt.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="MPU9250.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="MPU9250.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="buttonInterrupt.h"> + <Filter>Header Files</Filter> + </ClInclude> </ItemGroup> </Project> \ No newline at end of file diff --git a/Development/Software/Controller API/Sources/Sensor/MPU9250.cpp b/Development/Software/Default Controller/MPU9250.cpp similarity index 97% rename from Development/Software/Controller API/Sources/Sensor/MPU9250.cpp rename to Development/Software/Default Controller/MPU9250.cpp index 09a5bc260e3aece61316ddf55c60db0959646734..19f449a8314dcbb51ba0a54ba3e03b509e61cb95 100644 --- a/Development/Software/Controller API/Sources/Sensor/MPU9250.cpp +++ b/Development/Software/Default Controller/MPU9250.cpp @@ -2,7 +2,7 @@ @author Jonathan Krueger */ -#include +#include "MPU9250.h" #pragma region Definitions #define USER_CTRL 0x6A @@ -42,7 +42,7 @@ MPU9250::MPU9250() { spi->frequency(1000000); // set the mode - spi->mode(MRAA_SPI_MODE1); + spi->mode(SPI_MODE1); // ensure MSB is sent first spi->lsbmode(false); diff --git a/Development/Software/Controller API/Headers/Sensor/MPU9250.h b/Development/Software/Default Controller/MPU9250.h similarity index 100% rename from Development/Software/Controller API/Headers/Sensor/MPU9250.h rename to Development/Software/Default Controller/MPU9250.h diff --git a/Development/Software/Default Controller/Makefile.txt b/Development/Software/Default Controller/Makefile.txt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b29a82cd8df2bea03b55d77f16e08e0541934b1b 100644 --- a/Development/Software/Default Controller/Makefile.txt +++ b/Development/Software/Default Controller/Makefile.txt @@ -0,0 +1,13 @@ +all: Demo + +Demo: Button.o MPU.o +g++ -o Demo Source.cpp Button.o MPU.o -l mraa + +Button.o: buttonInterrupt.cpp +g++ -c -o Button.o buttonInterrupt.cpp + +MPU.o: MPU9250.cpp +g++ -c -o MPU.o MPU9250.cpp + +clean: +rm *.o Demo diff --git a/Development/Software/Default Controller/Source.cpp b/Development/Software/Default Controller/Source.cpp index ec616dfdafc0f2321c0466dec8d8930a1ccd4cf1..2e2a7140397f58bc72efa08d4693728acc6cfa7f 100644 --- a/Development/Software/Default Controller/Source.cpp +++ b/Development/Software/Default Controller/Source.cpp @@ -3,63 +3,35 @@ #include <string> #include <stdint.h> #include <unistd.h> -#include "mraa.hpp" - -using namespace mraa; +#include "MPU9250.h" +#include "buttonInterrupt.h" using namespace std; -#pragma region Definitions - -#define USER_CTRL 0x6A -#define WHO_AM_I 0x75 -#define AM_I_TRUE true - -#pragma endregion - int main(int argc, char **argv) { - // set up the mraa library - mraa_init(); - - // set the SPI channels - Spi* spi = new Spi(0); - - // set the frequency ( 10Mhz ) - spi->frequency(1000000); - - // set the mode - spi->mode(MRAA_SPI_MODE1); - - // ensure MSB is sent first - spi->lsbmode(false); - - usleep(1000000); - - // This disables I2C from the start - spi->write_word(0x10 | USER_CTRL); - - usleep(1000000); - - while (AM_I_TRUE) + if (buttonInterrupt() == -1) { - uint8_t result = spi->write_word(WHO_AM_I); - - cout << "I should be 0x71, I am " << hex << result << endl; - - usleep(1000000); + return -1; } - while (!AM_I_TRUE) + MPU9250 *instance = MPU9250::instance(); + + while (1) { - uint16_t gyroX = spi->write_word(0x43) | spi->write_word(0x44); - uint16_t gyroY = spi->write_word(0x45) | spi->write_word(0x46); - uint16_t gyroZ = spi->write_word(0x47) | spi->write_word(0x48); + float gyXh = instance->read(0x43); + float gyXl = instance->read(0x44); + float gyYh = instance->read(0x45); + float gyYl = instance->read(0x46); + float gyZh = instance->read(0x47); + float gyZl = instance->read(0x48); + + string state = (buttonState == 0) ? ("Not Pressed") : ("Pressed"); - cout << "X: " << hex << gyroX << " Y: " << hex << gyroY << " Z: " << hex << gyroZ << endl; + cout << "Gyro X: " << hex << gyXh << " Gyro Y: "<< hex << gyYh << " Gyro Z: " << hex << gyZh << "\t\t\tButton State: " << state << endl; usleep(1000000); } - delete spi; + return 0; } \ No newline at end of file diff --git a/Development/Software/Default Controller/Source1.cpp b/Development/Software/Default Controller/Source1.cpp deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Development/Software/Default Controller/buttonInterrupt.cpp b/Development/Software/Default Controller/buttonInterrupt.cpp new file mode 100644 index 0000000000000000000000000000000000000000..00a4935fb4a53d3b1085c1d94ecd6586d0c7a5af --- /dev/null +++ b/Development/Software/Default Controller/buttonInterrupt.cpp @@ -0,0 +1,32 @@ +#include "buttonInterrupt.h" + +void pressed(void* args) { + buttonState = 1; +} + +void released(void* args) { + buttonState = 0; +} + +int buttonInterrupt() { + + //initialize mraa + mraa_init(); + + //create mraa context + mraa_gpio_context context; + + //set context to GPIO 15 (J20:7) + context = mraa_gpio_init(15); + + if (context == NULL) { + return -1; + } + + mraa_gpio_dir(context, MRAA_GPIO_IN); + + mraa_gpio_isr(context, MRAA_GPIO_EDGE_FALLING, &pressed, NULL); + mraa_gpio_isr(context, MRAA_GPIO_EDGE_RISING, &released, NULL); + + return 0; +} diff --git a/Development/Software/Default Controller/buttonInterrupt.h b/Development/Software/Default Controller/buttonInterrupt.h new file mode 100644 index 0000000000000000000000000000000000000000..e48d887594b82eddf8e3822a090c1c7dd5c08055 --- /dev/null +++ b/Development/Software/Default Controller/buttonInterrupt.h @@ -0,0 +1,13 @@ +/* +* buttonInterrupt.c +* +* Created on: Feb 10, 2016 +* Author: Nik +*/ +#include <stdio.h> +#include <stdlib.h> +#include "mraa.h" + +static volatile int buttonState = 0; + +int buttonInterrupt(); \ No newline at end of file diff --git a/Development/Software/buttonInterrupt.c b/Development/Software/buttonInterrupt.c deleted file mode 100644 index 4cc463b44705ec0e5337b2f665a58e4bfc963767..0000000000000000000000000000000000000000 --- a/Development/Software/buttonInterrupt.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * buttonInterrupt.c - * - * Created on: Feb 10, 2016 - * Author: Nik - */ -#include <stdio.h> -#include <stdlib.h> -#include <mraa.h> - -static volatile int counter = 1; - -void interrupt(void* args) { - fprintf(stdout, "%d\n", counter); - counter++; -} - -int buttonInterrupt() { - - //initialize mraa - mraa_init(); - - //create mraa context - mraa_gpio_context context; - - //set context to GPIO 15 (J20:7) - context = mraa_gpio_init(15); - - if (context == NULL) { - return -1; - } else { - fprintf(stdout, "GPIO Initialized\n"); - } - - mraa_gpio_dir(context, MRAA_GPIO_IN); - - mraa_gpio_edge_t edge = MRAA_GPIO_EDGE_FALLING; - - mraa_gpio_isr(context, edge, &interrupt, NULL); - - // mraa_result_t result = mraa_gpio_isr_exit(context); - - // return result; - - return 0; -}