Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Trinamic TMC2130 Example
- */
- #include "SPI.h"
- #include "tmc2130\tmc2130.ino"
- #define EN_PIN 7 //enable (CFG6)
- #define DIR_PIN 8 //direction
- #define STEP_PIN 9 //step
- #define CS_PIN 10 //chip select
- #define MOSI_PIN 11 //SDI (Master-Out-Slave-In)
- #define MISO_PIN 12 //SDO (Master-In-Slave-Out)
- #define SCK_PIN 13 //clock
- //
- byte dataPin = 4; //step
- byte shiftPin = 5; //direction
- byte storePin = 6; //enable (CFG6)
- /*
- * SPI DATAGRAM
- * 40 Bit
- *
- * MSB
- * ---
- *
- * Schreibzugriff:
- * 39 -> 1
- * 38-32 -> 7 Bit Adresse (Register)
- *
- * Lesezugriff:
- * 39-32 -> 8 Bit SPI Status
- *
- * Rest
- * ---
- *
- * 3 mal 8 Bit Daten
- *
- */
- /*
- * Bei einem Lesezugriff werden die gelesenen Daten mit dem nächsten(!) Zugriff zurückgegeben
- * In jedem Fall werden in den Bits 39 bis 32 das Register SPI_STATUS
- * übertragen
- */
- int counter = 0;
- int leds;
- void loop()
- {
- static uint32_t last_time=0;
- uint32_t ms = millis();
- uint32_t data;
- uint8_t s;
- if((ms-last_time) > 100) //run every 1s
- {
- last_time = ms;
- /*
- //show REG_IOIN
- s = tmc_read(REG_IOIN, &data);
- //Serial.print("REG_IOIN: ");
- //Serial.print(data, BIN);
- //Serial.print("\n");
- //Serial.print("REG_IOIN, DIR: ");
- //Serial.print(((data>>(DIR))&0x1), BIN);
- //Serial.print("\n");
- */
- //show REG_GSTAT
- /*
- s = tmc_read(REG_GSTAT, &data);
- Serial.print("GSTAT: 0b");
- Serial.print(data, BIN);
- Serial.print("\n");
- Serial.print("SPI_STATUS: 0b");
- Serial.print(s, BIN);
- if(s & 0x01) Serial.print(" reset");
- if(s & 0x02) Serial.print(" error");
- if(s & 0x04) Serial.print(" sg2");
- if(s & 0x08) Serial.print(" standstill");
- Serial.print("\n");
- */
- //show REG_DRVSTATUS
- s = tmc_read(REG_DRVSTATUS, &data);
- //Serial.print("DRVSTATUS: 0b");
- //Serial.print(data, BIN);
- //Serial.print("\n");
- Serial.print("STALL: ");
- Serial.print(data&0b1111111111, DEC);
- Serial.print("\n");
- leds = 0b00000000;
- int bla = data & 0b1111111111;
- if(bla < 30){
- leds |= 0b10000000;
- }
- if(bla < 60){
- leds |=0b01000000;
- }
- if(bla < 90){
- leds |= 0b00100000;
- }
- if(bla < 120){
- leds |=0b00010000;
- }
- if(bla < 150){
- leds |= 0b00001000;
- }
- if(bla < 180){
- leds |= 0b00000100;
- }
- if(bla < 210){
- leds |= 0b00000010;
- }
- if(bla < 240){
- leds |= 0b00000001;
- }
- // shorthand:
- // int blub = bla / 30
- // leds |= (0b10000000 >> blub)
- digitalWrite(storePin, LOW);
- shiftOut(dataPin, shiftPin, MSBFIRST, leds);
- digitalWrite(storePin, HIGH);
- /*
- //show REG_LOST_STEPS
- s = tmc_read(REG_LOST_STEPS, &data);
- Serial.print("LOST STEPS: ");
- Serial.print(data, DEC);
- Serial.print("\n");
- */
- //Serial.print("SPI_STATUS: 0b");
- //Serial.print(s, BIN);
- //if(s & 0x01) Serial.print(" reset");
- //if(s & 0x02) Serial.print(" error");
- //if(s & 0x04) Serial.print(" sg2");
- //if(s & 0x08) Serial.print(" standstill");
- //Serial.print("\n");
- //s = tmc_read(REG_COOLCONF, &data);
- //Serial.print("REG_COOLCONF: 0b");
- //Serial.print(data, HEX);
- //Serial.print("\n");
- //Serial.print("\n");
- }
- //make steps
- digitalWrite(STEP_PIN, HIGH);
- delayMicroseconds(100);
- digitalWrite(STEP_PIN, LOW);
- delayMicroseconds(100);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement