Forum: Mikrocontroller und Digitale Elektronik Atmega USART-SPI 16 Bit Übertragung


von usart (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe folgendes Programm fürs Senden:
1
unsigned char write(uint16_t data){
2
3
  CLRSSLINE
4
  // Wait for empty transmit buffer.
5
  do {} while( (UCSR1A & (1<<UDRE1)) == 0 );
6
  
7
  // Send data.
8
  UDR1 = (uint8_t)(data>>8);
9
  
10
  // Wait for transfer to complete and return received value.
11
  do {} while( (UCSR1A & (1<<RXC1)) == 0 );
12
13
  // Wait for empty transmit buffer.
14
  do {} while( (UCSR1A & (1<<UDRE1)) == 0 );
15
16
  // Send data.
17
  UDR1 = (uint8_t)(data & 255);
18
  
19
  // Wait for transfer to complete and return received value.
20
  do {} while( (UCSR1A & (1<<RXC1)) == 0 );
21
22
  SETSSLINE
23
24
  return UDR1;
25
26
}

Jetzt geht die gelbe SSLINE aber schon hoch, bevor das zweite Byte 
geschrieben wurde. Wodurch kommt das?

von Spess53 (Gast)


Lesenswert?

Hi

> do {} while( (UCSR1A & (1<<UDRE1)) == 0 );

Damit testest du ob der Sendepuffer frei ist, aber nicht ob die Sendung 
beendet ist. Teste auf TXC.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.