Moin,
@Dirk bist Du sicher das dass richtig ist?
9600 Baud ist langsamer..
CodeBox C
spiUsartxInit( spiUsart , 9600 , USART_SPI_MODE0 , USART_SPI_MSB_FIRST );
als wenn ich z.B
CodeBox C
spiUsartxInit( spiUsart , 40 , USART_SPI_MODE0 , USART_SPI_MSB_FIRST );
nehme..
Müsste es nicht eigentlich bei höheren Baudraten schneller gehen und nichts anders herum 0.o?
Hier initialisiere ich das Modul..
CodeBox C
void spiUsartxInit( spiIO_t *usartx , uint16_t baud , usartxSpiMode_enum mode , usartxSpiDataOrder_enum dataOrder )
{
usartx->ports.spi->DIRSET = (1<<usartx->bitPos.mosi);
usartx->ports.spi->DIRSET = (1<<usartx->bitPos.sck);
usartx->ports.spi->DIRCLR = (1<<usartx->bitPos.miso);
/* master spi mode */
usartx->usartUnit->CTRLC = USART_CMODE_MSPI_gc;
/* set baudrate */
usartx->usartUnit->BAUDCTRLA = SPI_USART_CALC_BSEL( baud ) & 0x00FF;
usartx->usartUnit->BAUDCTRLB = ( SPI_USART_CALC_BSEL( baud ) & 0x0F00 ) >> 8;
switch ( dataOrder )
{
case USART_SPI_LSB_FIRST:
{
usartx->usartUnit->CTRLC |= ( 1<<USARTx_UDORD_bp ); // lsb first
}break;
case USART_SPI_MSB_FIRST:
{
usartx->usartUnit->CTRLC &= ~( 1<<USARTx_UDORD_bp ); // msb first
}break;
default:
{
usartx->usartUnit->CTRLC |= ( 1<<USARTx_UDORD_bp ); // lsb first
}
}
/* set spi mode */
switch ( mode )
{
case USART_SPI_MODE0: // Rising, sample | Falling, setup
{
usartx->ports.spi->PIN1CTRL &= ~( PORT_INVEN_bm ); // clear inverted mode
usartx->usartUnit->CTRLC &= ~( 1<<USARTx_UCPHA_bp );
}break; // mode 0
case USART_SPI_MODE1: // Rising, setup | Falling, sample
{
usartx->ports.spi->PIN1CTRL &= ~( PORT_INVEN_bm ); // clear inverted mode
usartx->usartUnit->CTRLC |= ( 1<<USARTx_UCPHA_bp );
}break; // mode 1
case USART_SPI_MODE2: // Falling, sample | Rising, setup
{
usartx->ports.spi->PIN1CTRL |= (PORT_INVEN_bm); // set inverted mode
usartx->usartUnit->CTRLC &= ~(1<<USARTx_UCPHA_bp);
}break; // mode 2
case USART_SPI_MODE3: // Falling, setup | Rising, sample
{
usartx->ports.spi->PIN1CTRL |= (PORT_INVEN_bm); // set inverted mode
usartx->usartUnit->CTRLC |= (1<<USARTx_UCPHA_bp);
}break; // mode 3
default: // Falling, setup | Rising, sample
{
usartx->ports.spi->PIN1CTRL |= (PORT_INVEN_bm); // set inverted mode
usartx->usartUnit->CTRLC |= (1<<USARTx_UCPHA_bp);
}break; // mode 3
}
PR.PRPC &= ~PR_USART0_bm; // enable USART
/* enable spi receive enable & transmit enable */
usartx->usartUnit->CTRLB |= ( ( 1<<USARTx_RXEN_bp ) | ( 1<<USARTx_TXEN_bp ) );
}