Forum: Mikrocontroller und Digitale Elektronik Warum delay vor Versenden über UART?


von Valentin (Gast)


Lesenswert?

Mahlzeit Forum,

ich möchte gerne ein Geräte über den UART ansteuern. Ich empfange die 
Daten mittels Polling. Ich habe bemerkt, dass ich das Gerät nur 
ansteuern kann, wenn ich vor und nach dem Versenden ein delay einbaue.

for( i = 0; i < 2; i++)
_delay_ms(8000);


send_command("Befehl");

for( i = 0; i < 2; i++)
_delay_ms(8000);


An was liegt das???

von Arne (Gast)


Lesenswert?

Wer versendet? PC oder "Gerät"? Kann es sein, dass du das Senderegister 
überfährst, weil du nicht auf ein leeres TxRegister abprüfst?

von Ralf (Gast)


Lesenswert?

> ich möchte gerne ein Geräte über den UART ansteuern.
Schön...
WELCHES Gerät willst du mit WAS ansteuern? Mehr Infos = mehr Hilfe.

> An was liegt das???
Mit den paar Infos: Keine Ahnung :)

Ralf

von Hannes (Gast)


Lesenswert?

Ein delay von jeweils 16 Sekunden????

Was soll das denn sein?

von Valentin (Gast)


Lesenswert?

Hallo,
sorry für die etwas karge Beschreibung.Ich steuere über eine Arduino 
Board (16MHz, Atmega 2560) ein Pumpensystem an. Wie gesagt kontrolliere 
ich die Daten mittels Polling und möchte auch Befehle mit...

void send_char(unsigned char data)
{
  while (!(UCSR0A & (1 << UDRE0)));
  UDR0 = data;
}

void send(char *string)
{
  while(*string)
  {
    send_char(*string);
    string++;
  }
  send_char(0x0D);
}

...versenden. Wenn ich aber ohne diese delays arbeite klappt das nicht 
mit dem Ansteuern.

von Valentin (Gast)


Lesenswert?

Sorry, ich will nicht pushen. Hat aber keiner eine Idee was ich da 
falsch mach bzw. anders mache muss, sodass das ohne das delay klappt. VG

von Falk B. (falk)


Lesenswert?

@  Valentin (Gast)

>Sorry, ich will nicht pushen. Hat aber keiner eine Idee was ich da
>falsch mach bzw. anders mache muss, sodass das ohne das delay klappt. VG

Du solltest etwas über Netiquette lesen und lernen und anschließend 
VOLLSTÄNDIGEN Quelltext als ANHANG posten.

MfG
Falk

von Helfer (Gast)


Lesenswert?

Klappt die Kommunikation, wenn statt Pumpensystem ein PC mit 
Terminalprogramm angeschlossen ist?

Wenn nein, liegt etwas grundsätzlich im Argen. Es kann dann helfen, den 
kompletten Arduino-Code zu zeigen.

Wenn ja, sollte man in das Datenblatt des Pumpensystems schauen, ob bei 
der seriellen Kommunikation mit dem Pumpensystem etwas zu beachten ist.

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.