Advertisement
Guest User

Untitled

a guest
Apr 4th, 2018
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.50 KB | None | 0 0
  1. /*
  2.   Trinamic TMC2130 Example
  3. */
  4.  
  5. #include "SPI.h"
  6. #include "tmc2130\tmc2130.ino"
  7.  
  8.  
  9. #define EN_PIN    7 //enable (CFG6)
  10. #define DIR_PIN   8 //direction
  11. #define STEP_PIN  9 //step
  12.  
  13. #define CS_PIN   10 //chip select
  14. #define MOSI_PIN 11 //SDI (Master-Out-Slave-In)
  15. #define MISO_PIN 12 //SDO (Master-In-Slave-Out)
  16. #define SCK_PIN  13 //clock
  17.  
  18. //
  19. byte dataPin   = 4; //step
  20. byte shiftPin  = 5; //direction
  21. byte storePin  = 6; //enable (CFG6)
  22.  
  23.  
  24.  
  25. /*
  26.  * SPI DATAGRAM
  27.  * 40 Bit
  28.  *
  29.  * MSB
  30.  * ---
  31.  *
  32.  * Schreibzugriff:
  33.  * 39    -> 1
  34.  * 38-32 -> 7 Bit Adresse (Register)
  35.  *
  36.  * Lesezugriff:
  37.  * 39-32 -> 8 Bit SPI Status
  38.  *
  39.  * Rest
  40.  * ---
  41.  *  
  42.  * 3 mal 8 Bit Daten
  43.  *
  44.  */
  45.  
  46.  /*
  47.   * Bei einem Lesezugriff werden die gelesenen Daten mit dem nächsten(!) Zugriff zurückgegeben
  48.   * In jedem Fall werden in den Bits 39 bis 32 das Register SPI_STATUS
  49.   * übertragen
  50.   */
  51.  
  52.  
  53. int counter = 0;
  54. int leds;
  55.  
  56. void loop()
  57. {
  58.   static uint32_t last_time=0;
  59.   uint32_t ms = millis();
  60.   uint32_t data;
  61.   uint8_t s;
  62.    
  63.   if((ms-last_time) > 100) //run every 1s
  64.   {
  65.     last_time = ms;
  66.  
  67.     /*
  68.     //show REG_IOIN
  69.     s = tmc_read(REG_IOIN, &data);
  70.     //Serial.print("REG_IOIN: ");
  71.     //Serial.print(data, BIN);
  72.     //Serial.print("\n");
  73.     //Serial.print("REG_IOIN, DIR: ");
  74.     //Serial.print(((data>>(DIR))&0x1), BIN);
  75.     //Serial.print("\n");
  76.     */
  77.  
  78.     //show REG_GSTAT
  79.     /*
  80.     s = tmc_read(REG_GSTAT, &data);
  81.     Serial.print("GSTAT:     0b");
  82.     Serial.print(data, BIN);
  83.     Serial.print("\n");
  84.     Serial.print("SPI_STATUS: 0b");
  85.     Serial.print(s, BIN);
  86.     if(s & 0x01) Serial.print(" reset");
  87.     if(s & 0x02) Serial.print(" error");
  88.     if(s & 0x04) Serial.print(" sg2");
  89.     if(s & 0x08) Serial.print(" standstill");
  90.     Serial.print("\n");
  91.     */
  92.  
  93.     //show REG_DRVSTATUS
  94.     s = tmc_read(REG_DRVSTATUS, &data);
  95.     //Serial.print("DRVSTATUS: 0b");
  96.     //Serial.print(data, BIN);
  97.     //Serial.print("\n");
  98.     Serial.print("STALL: ");
  99.     Serial.print(data&0b1111111111, DEC);
  100.     Serial.print("\n");
  101.  
  102.     leds = 0b00000000;
  103.  
  104.     int bla = data & 0b1111111111;
  105.    
  106.     if(bla < 30){
  107.         leds |= 0b10000000;
  108.     }
  109.     if(bla < 60){
  110.         leds |=0b01000000;
  111.     }
  112.     if(bla < 90){
  113.         leds |= 0b00100000;
  114.     }
  115.     if(bla < 120){
  116.         leds |=0b00010000;
  117.     }
  118.     if(bla < 150){
  119.         leds |= 0b00001000;
  120.     }
  121.     if(bla < 180){
  122.         leds |= 0b00000100;
  123.     }
  124.     if(bla < 210){
  125.         leds |= 0b00000010;
  126.     }
  127.     if(bla < 240){
  128.         leds |= 0b00000001;
  129.     }
  130.  
  131.     // shorthand:
  132.     // int blub = bla / 30
  133.     // leds |= (0b10000000 >> blub)
  134.  
  135.    digitalWrite(storePin, LOW);
  136.    shiftOut(dataPin, shiftPin, MSBFIRST, leds);
  137.    digitalWrite(storePin, HIGH);
  138.  
  139.  
  140.     /*
  141.     //show REG_LOST_STEPS
  142.     s = tmc_read(REG_LOST_STEPS, &data);
  143.     Serial.print("LOST STEPS: ");
  144.     Serial.print(data, DEC);
  145.     Serial.print("\n");
  146.     */
  147.    
  148.     //Serial.print("SPI_STATUS: 0b");
  149.     //Serial.print(s, BIN);
  150.     //if(s & 0x01) Serial.print(" reset");
  151.     //if(s & 0x02) Serial.print(" error");
  152.     //if(s & 0x04) Serial.print(" sg2");
  153.     //if(s & 0x08) Serial.print(" standstill");
  154.     //Serial.print("\n");
  155.    
  156.     //s = tmc_read(REG_COOLCONF, &data);
  157.     //Serial.print("REG_COOLCONF: 0b");
  158.     //Serial.print(data, HEX);
  159.     //Serial.print("\n");
  160.     //Serial.print("\n");
  161.   }
  162.  
  163.   //make steps
  164.   digitalWrite(STEP_PIN, HIGH);
  165.   delayMicroseconds(100);
  166.   digitalWrite(STEP_PIN, LOW);
  167.   delayMicroseconds(100);
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement