Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.51 KB | None | 0 0
  1. /*
  2.  * mn.c
  3.  *
  4.  *  Created on: 2017 Sep 05 16:55:50
  5.  *  Author: Tobias Gent
  6.  */
  7.  
  8. #include "APDS_9660.h"
  9. #include "Shift.h"
  10. #include "BCD.h"
  11. #include <Dave.h>
  12.  
  13.  
  14. volatile int isr_flag = 0;
  15. uint32_t TimerId,status2;
  16.  
  17.  
  18.  
  19.  
  20. int main(void) {
  21.     int input;
  22.     uint8_t data[1];
  23.     uint8_t data2[1];
  24.  
  25.     uint8_t data3[] = {0xff};
  26.  
  27.     uint32_t pin_status;
  28.  
  29.     DAVE_STATUS_t status;
  30.  
  31.     status = DAVE_Init(); /* Initialization of DAVE APPs */
  32.  
  33.  
  34.     if (status != DAVE_STATUS_SUCCESS) {
  35.         /* Placeholder for error handler code. The while loop below can be replaced with an user error handler. */
  36.         XMC_DEBUG("DAVE APPs initialization failed\n");
  37.  
  38.         while (1U) {
  39.  
  40.         }
  41.     }
  42.     setupAll();
  43.  
  44.     while (1U) {
  45.  
  46.         fsm();
  47.         if(manuell == true){
  48.             manuell();
  49.             APDS_EnableGestureSensor(false);
  50.         }
  51.         if(gesture == true){
  52.             gesture();
  53.              APDS_EnableGestureSensor(true);
  54.         }
  55.         if(voice == true){
  56.             voice();
  57.              APDS_EnableGestureSensor(false);
  58.         }
  59.     }
  60.  
  61. }
  62.  
  63. void manuell(){
  64.    
  65.     if(DIGITAL_IO_GetInput(&UP)){
  66.         UART_Transmit(&UART_0, UP, sizeof(UP));
  67.     }
  68.     if(DIGITAL_IO_GetInput(&DOWN)){
  69.         UART_Transmit(&UART_0, DOWN, sizeof(DOWN));
  70.     }
  71.     if(DIGITAL_IO_GetInput(&LEFT)){
  72.         UART_Transmit(&UART_0, LEFT, sizeof(LEFT));
  73.     }
  74.     if(DIGITAL_IO_GetInput(&RIGHT)){
  75.         UART_Transmit(&UART_0, RIGHT, sizeof(RIGHT));
  76.     }
  77.     if(input == LED_WHITE){
  78.         DIGITAL_IO_ToggleOutput(&LED_WHITE);
  79.         UART_Transmit(&UART_0, LED_WHITE_VALUE, sizeof(LED_WHITE_VALUE));
  80.     }
  81.     if(input == LED_RED){
  82.         DIGITAL_IO_ToggleOutput(&LED_RED);
  83.         UART_Transmit(&UART_0, LED_WHITE_VALUE, sizeof(LED_RED_VALUE));
  84.     }
  85.     if(input == LED_GREEN){
  86.         DIGITAL_IO_ToggleOutput(&LED_GREEN);
  87.         UART_Transmit(&UART_0, LED_WHITE_VALUE, sizeof(LED_GREEN_VALUE));
  88.     }
  89.     if(input == LED_BLUE){
  90.         DIGITAL_IO_ToggleOutput(&LED_BLUE);
  91.         UART_Transmit(&UART_0, LED_WHITE_VALUE, sizeof(LED_BLUE_VALUE));
  92.     }
  93.    
  94. }
  95. void setupAll(){
  96.     PIN_INTERRUPT_Enable(&PIN_INTERRUPT_0);
  97.     APDS_Init();
  98.     setupBCD();
  99.     setupShift();
  100. }
  101.  
  102. void gesture(){
  103.         if (isr_flag == 1) {
  104.  
  105.             PIN_INTERRUPT_Disable(&PIN_INTERRUPT_0);
  106.  
  107.             handleGesture();
  108.             isr_flag = 0;
  109.             PIN_INTERRUPT_Enable(&PIN_INTERRUPT_0);
  110.            
  111.         }
  112. }
  113.  
  114. void voice(){
  115.  
  116. }
  117.  
  118.  
  119. void fsm(){
  120.     uint8_t* data;
  121.         DIGITAL_IO_SetOutputHigh(&CE);
  122.         DIGITAL_IO_SetOutputHigh(&CP);
  123.         delay(250);
  124.         DIGITAL_IO_SetOutputHigh(&PL);
  125.         DIGITAL_IO_SetOutputLow(&CE);
  126.         input = read(data);
  127.         DIGITAL_IO_SetOutputLow(&PL);
  128.     switch(input){
  129.         case MODE_1:
  130.             manuell = true;
  131.             gesture = false;
  132.             voice = false;
  133.             break;
  134.         case MODE_2:
  135.             gesture = true;
  136.             manuell = false;
  137.             voice = false;
  138.             break;
  139.         case MODE_3:
  140.             gesture = false;
  141.             manuell = false;
  142.             voice = false;
  143.             break;
  144.     }
  145. }
  146.  
  147. void handleGesture() {
  148.     if (APDS_IsGestureAvailable()) {
  149.         switch (APDS9960_ReadGesture()) {
  150.  
  151.         case DIR_DOWN:
  152.         UART_Transmit(&UART_0, DOWN, sizeof(DOWN));
  153.             break;
  154.         case DIR_LEFT:
  155.         UART_Transmit(&UART_0, LEFT, sizeof(LEFT));
  156.             break;
  157.         case DIR_RIGHT:
  158.         UART_Transmit(&UART_0, RIGHT, sizeof(RIGHT));
  159.             break;
  160.         case DIR_UP:
  161.         UART_Transmit(&UART_0, UP, sizeof(UP));
  162.             break;
  163.         }
  164.     }
  165. }
  166.  
  167. void attachInterrupt(void)
  168. {
  169.     isr_flag = 1;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement