Herrpaule

script adc

Feb 22nd, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 3.78 KB | None | 0 0
  1. <obj type="script/script2" sha="362a4413ceaefbe716480bf8f9c62eb3587fe6c0" uuid="d39e743cf47c9221f4e99c133430148cf74c68c5" name="script2_1" x="196" y="0">
  2.       <params/>
  3.       <attribs>
  4.          <text attributeName="script">
  5.             <sText><![CDATA[uint8_t *txbuf;
  6. uint8_t *rxbuf;
  7.  
  8. int pin = 0;
  9.  
  10. void setup(void){
  11.     static uint8_t _txbuf[8] __attribute__ ((section (".sram2")));
  12.     static uint8_t _rxbuf[8] __attribute__ ((section (".sram2")));
  13.     txbuf = _txbuf;
  14.     rxbuf = _rxbuf;
  15.  
  16.     palSetPadMode(GPIOA,2,PAL_MODE_OUTPUT_PUSHPULL);
  17.     palWritePad(GPIOA,2,1);
  18.     palSetPadMode(GPIOA,3,PAL_MODE_OUTPUT_PUSHPULL);
  19.     palWritePad(GPIOA,3,1);
  20. }
  21.  
  22. void loop(void){
  23.  
  24.    
  25.     txbuf[2] = 0b00000000;
  26.    
  27.         for(int pin=0; pin<8; pin++){
  28.  
  29.             txbuf[0] = pin < 4 ? 0b01100000 : 0b11100000;
  30.      
  31.             if (pin % 4 == 0) { // pin == 0 || pin == 4
  32.                 txbuf[1] = 0b00000000;
  33.             } else if (pin % 4 == 1) { // pin == 1 || pin == 5
  34.                 txbuf[1] = 0b00000010;
  35.             } else if (pin % 4 == 2) { // pin == 2 || pin == 6
  36.                 txbuf[1] = 0b00000001;
  37.             } else {
  38.                 txbuf[1] = 0b00000011;
  39.             }
  40.            
  41.  
  42.  
  43.        
  44.         palWritePad(GPIOA,3,0);
  45.         spiSelect(&SPID1);      // START SPI
  46.         spiSend(&SPID1,3,txbuf);
  47.         spiReceive(&SPID1,3,rxbuf);
  48.         spiUnselect(&SPID1);
  49.         palWritePad(GPIOA,3,1);
  50.  
  51.    
  52.         int z = (rxbuf[1] << 8| rxbuf[0]) << 16;
  53.  
  54.  
  55.  
  56.         if (pin == 0){
  57.             PExParameterChange(&parent->PExch[PARAM_INDEX_cv0_value],z,0xFFFD);
  58.         }
  59.         else if (pin == 1){
  60.             PExParameterChange(&parent->PExch[PARAM_INDEX_cv1_value],z,0xFFFD);
  61.         }
  62.         else if (pin == 2){
  63.             PExParameterChange(&parent->PExch[PARAM_INDEX_cv2_value],z,0xFFFD);
  64.         }
  65.         else if (pin == 3){
  66.             PExParameterChange(&parent->PExch[PARAM_INDEX_cv3_value],z,0xFFFD);
  67.         }
  68.         else if (pin == 4){
  69.             PExParameterChange(&parent->PExch[PARAM_INDEX_cv4_value],z,0xFFFD);
  70.         }
  71.         else if (pin == 5){
  72.             PExParameterChange(&parent->PExch[PARAM_INDEX_cv5_value],z,0xFFFD);
  73.         }
  74.         else if (pin == 6){
  75.             PExParameterChange(&parent->PExch[PARAM_INDEX_cv6_value],z,0xFFFD);
  76.         }
  77.         else if (pin == 7){
  78.             PExParameterChange(&parent->PExch[PARAM_INDEX_cv7_value],z,0xFFFD);
  79.         }
  80.        
  81.         chThdSleepMilliseconds(1);
  82.  
  83.         }
  84.        
  85.         txbuf[2] = 0b00000000;
  86.    
  87.         for(int pin=0; pin<8; pin++){
  88.  
  89.             txbuf[0] = pin < 4 ? 0b01100000 : 0b11100000;
  90.      
  91.             if (pin % 4 == 0) { // pin == 0 || pin == 4
  92.                 txbuf[1] = 0b00000000;
  93.             } else if (pin % 4 == 1) { // pin == 1 || pin == 5
  94.                 txbuf[1] = 0b00000010;
  95.             } else if (pin % 4 == 2) { // pin == 2 || pin == 6
  96.                 txbuf[1] = 0b00000001;
  97.             } else {
  98.                 txbuf[1] = 0b00000011;
  99.             }
  100.            
  101.  
  102.  
  103.        
  104.         palWritePad(GPIOA,2,0);
  105.         spiSelect(&SPID1);      // START SPI
  106.         spiSend(&SPID1,3,txbuf);
  107.         spiReceive(&SPID1,3,rxbuf);
  108.         spiUnselect(&SPID1);
  109.         palWritePad(GPIOA,2,1);
  110.  
  111.    
  112.         int z = 0x07FFFFFF - ((rxbuf[1] << 8| rxbuf[0]) << 16);
  113.    
  114.    
  115.         if (pin == 0){
  116.             PExParameterChange(&parent->PExch[PARAM_INDEX_p0_value],z,0xFFFD);
  117.         }
  118.         else if (pin == 1){
  119.             PExParameterChange(&parent->PExch[PARAM_INDEX_p1_value],z,0xFFFD);
  120.         }
  121.         else if (pin == 2){
  122.             PExParameterChange(&parent->PExch[PARAM_INDEX_p2_value],z,0xFFFD);
  123.         }
  124.         else if (pin == 3){
  125.             PExParameterChange(&parent->PExch[PARAM_INDEX_p3_value],z,0xFFFD);
  126.         }
  127.         else if (pin == 4){
  128.             PExParameterChange(&parent->PExch[PARAM_INDEX_p4_value],z,0xFFFD);
  129.         }
  130.         else if (pin == 5){
  131.             PExParameterChange(&parent->PExch[PARAM_INDEX_p5_value],z,0xFFFD);
  132.         }
  133.         else if (pin == 6){
  134.             PExParameterChange(&parent->PExch[PARAM_INDEX_p6_value],z,0xFFFD);
  135.         }
  136.         else if (pin == 7){
  137.             PExParameterChange(&parent->PExch[PARAM_INDEX_p7_value],(z),0xFFFD);
  138.         }
  139.        
  140.         chThdSleepMilliseconds(1);
  141.         }
  142.    
  143. }]]></sText>
  144.          </text>
  145.       </attribs>
Advertisement
Add Comment
Please, Sign In to add comment