Hallo,
ich bin noch bei der seriellen Ansteuerung eines DAC-ICs mit der USART1
Schnittstelle meines Atmega324p. Die USART1 Schnittstelle habe ich dabei
als SPI-Schnittstelle laufen, allerdings funktioniert so meine
CLK-Leitung nicht, ich bekomme kein Signal raus.
Kann es daran liegen, dass ich meine USART0 Schnittstelle schon zur
Kommunikation mit einem FTDI (USB- Wandler IC) laufen habe und er mir so
den Zugriff vom USART1 auf den XCK1 verweigert? Es gibt ja nur einen XCK
für 2 USARTs.
Hier mein Code...
1 | void SPI_USART_Init()
|
2 | {
|
3 | UBRR1 = 0;
|
4 | /* Setting the XCKn port pin as output, enables master mode. */
|
5 |
|
6 | DDRD |= (1 << PD4);
|
7 | //XCK1_DDR |= (1<<XCK1);
|
8 | /* Set MSPI mode of operation and SPI data mode 0. */
|
9 | UCSR1C = (1<<UMSEL11)|(1<<UMSEL10)|(0<<UCPHA1)|(0<<UCPOL1);
|
10 | /* Enable receiver and transmitter. */
|
11 | UCSR1B = (1<<RXEN1)|(1<<TXEN1);
|
12 | /* Set baud rate. */
|
13 | /* IMPORTANT: The Baud Rate must be set after the transmitter is enabled
|
14 | */
|
15 | UBRR1 = 6;
|
16 | }
|
17 |
|
18 |
|
19 | unsigned char SPI2_MasterTransfer (unsigned char c1,unsigned char c2)
|
20 | {
|
21 | while (!(UCSR1A & (1<<UDRE1)));
|
22 |
|
23 | UCSR1A |= (1 << TXC1);
|
24 |
|
25 | UDR1 = c1;
|
26 | UDR1 = c2;
|
27 |
|
28 | //while (!(UCSR1A & (1<<RXC1)));
|
29 |
|
30 | return UDR1;
|
31 | }
|
32 |
|
33 | //Aufruf
|
34 | ReData = SPI_Transfer(110,110);
|
Vielen Dank
Achja, ich habe dies schon in einem alten Thread schon ähnlich
behandelt, aber ohne Lösung
(Beitrag "Uart als Spi macht Probleme")
Nun aber die neue Frage zum Zusammenhang mit dem FTDI und USART0.