ja, idle ist aus.
spi läuft mit 72,75khz, also das langsamste was möglich ist.
Code:
a3972_Word0 &= 0x7FFFF; //Nur 19Bit!
a3972_Word0 &= ~(1 << WordSelect);
a3972_Word1 &= 0x7FFFF; //Nur 19Bit!
a3972_Word1 |= (1 << WordSelect);
char char1 = a3972_Word0 >> 16;
char char2 = a3972_Word0 >> 8;
char char3 = a3972_Word0 & 0xFF;
char char4 = a3972_Word1 >> 16;
char char5 = a3972_Word1 >> 8;
char char6 = a3972_Word1 & 0xFF;
UART_SendString("update - |");
PORTB &= ~(1 << PB2); //CS Low
_delay_us(1);
UART_SendChar(char1);
UART_SendChar(char2);
UART_SendChar(char3);
//word0
SPI_SendChar(char1); //D23 - D16
SPI_SendChar(char2); //D15 - D8
SPI_SendChar(char3); //D7 - D0
PORTB |= (1 << PB2); //CS High
_delay_us(1);
UART_SendString("|");
PORTB &= ~(1 << PB2); //CS Low
_delay_us(1);
UART_SendChar(char4);
UART_SendChar(char5);
UART_SendChar(char6);
//word1
SPI_SendChar(char4); //D23 - D16
SPI_SendChar(char5); //D15 - D8
SPI_SendChar(char6); //D7 - D0
_delay_us(1);
PORTB |= (1 << PB2); //CS High
UART_SendString("| - fertig\n");
Das ist ein Ausschnitt aus meinem Programm, welches die beiden Wörter an den Chip sendet. Die SPI Schnittstelle ist auch auf "MSB first" usw. eingestellt wie es das Datenblatt des A3972 fordert.
Lesezeichen