Public feed
#533433
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers#include <stdio.h>#define TMC_WRITE 0x00#define TMC_READ 0x01#define TMC_RAM 0x80#define TMC_REG 0x00#define SWITCH_BYTE_ORDERunsigned char tmc_spi_data_tx[4], tmc_spi_data_rx[4];void to_4_byte_binary(long *arg){ long tmp; int i; tmp = *arg; for(i=0; i<32; i++) { if((i%8)==0) { printf(" "); } printf("%u",(int)((tmp&0x80000000)>>31)); tmp=tmp<<1; } printf("\n");}void to_1_byte_binary(char *arg){ int i; for(i=0; i<8; i++) { printf("%u",(int)(((*arg)&0x80)>>7)); (*arg)=(*arg)<<1; } printf("\n");}void tmc_tranceive(unsigned char preamble, unsigned long data) {#ifdef SWITCH_BYTE_ORDER tmc_spi_data_tx[0] = data & 0x0000FF; tmc_spi_data_tx[1] = (data & 0x00FF00) >> 8; tmc_spi_data_tx[2] = (data & 0xFF0000) >> 16; tmc_spi_data_tx[3] = preamble; to_4_byte_binary((long*)tmc_spi_data_tx);#else tmc_spi_data_tx[0] = preamble; tmc_spi_data_tx[1] = (data & 0xFF0000) >> 16; tmc_spi_data_tx[2] = (data & 0x00FF00) >> 8; tmc_spi_data_tx[3] = data & 0x0000FF; to_4_byte_binary((long*)tmc_spi_data_tx);#endif}inline void tmc_writeRAM(unsigned char address, unsigned long data) { tmc_tranceive(TMC_RAM | (address<<1) | TMC_WRITE, data);}inline void tmc_writeREG(unsigned char address, unsigned long data) { tmc_tranceive(TMC_REG | (address<<1) | TMC_WRITE, data);}inline void tmc_readRAM(unsigned char address) { tmc_tranceive(TMC_RAM | (address<<1) | TMC_READ, 0l);}inline void tmc_readREG(unsigned char address) { tmc_tranceive(TMC_REG | (address<<1) | TMC_READ, 0l);}int main(int argc, char* argv[]){ //0xB1998D ist 101100001 100110001 100011001 tmc_writeREG(0xD, 0x123); return 0;}