// SPI - Pan void SPI_Pan(char Pan) { // Checksum berechnen char CSum = 0xB2^0x31^0x50^0x01^Pan; NSSMD0 = 0; // Slave Select auf Low SPI0DAT = 0xB2; // Header 0xB2 while(!transmit_completed); // wait end of transmission transmit_completed = 0; // clear software transfert flag SPI0DAT = 0x31; // Address while(!transmit_completed); // wait end of transmission transmit_completed = 0; // clear software transfert flag SPI0DAT = 0x50; // Command -> Absolute Position while(!transmit_completed); // wait end of transmission transmit_completed = 0; // clear software transfert flag SPI0DAT = 0x01; // Data Length while(!transmit_completed); // wait end of transmission transmit_completed = 0; // clear software transfert flag SPI0DAT = Pan; // DataByte 1 -> Position High Byte while(!transmit_completed); // wait end of transmission transmit_completed = 0; // clear software transfert flag SPI0DAT = CSum; // Checksum while(!transmit_completed); // wait end of transmission transmit_completed = 0; // clear software transfert flag NSSMD0 = 1; // Slave Select auf High } // SPI Interrupt Servie Routine void SPI_ISR(void) interrupt 6 { if(SPIF==1) { transmit_completed = 1; // set software flag SPIF = 0; // Interrupt Flag löschen } }