Code funktioniert in main(), aber nicht über Funktion?

#1693358
Lesenswert?

Hallo zusammen,
hoffe Ihr könnt mir helfen - ich stecke an ein einer Banalität fest.

Ich rufe in Programm bin_io_test_v1 die Funktion fgets zum Einlesen 
eines Strings auf zwei Arten auf:

a) Einmal direkt in main() - der z.Z. auskommentierte Code. Dann 
funktioniert das wunderbar.
b) Und zum zweiten über die Funktion UART_readline, welche den 
identischen Code in eine Funktion auslagert. Dann läuft er mir glatt 
über die fgets funktion hinweg, ohne auf Eingabe zu warten.

Macht gerade keinen Sinn. Verdächtigt habe ich bis jetzt:
- Die Benutzung von fdevopen (laut FAQ nicht reentrant)
- Uart nutzt interrupts für get und put

Im Detail (Kompletter Programmcode attached).
  /* Ask for command and store result in string s */
  UART_readline(PSTR("Enter command. \r\n"), s);

  /* Ask for command and store result in string s */
  /*printf_P(PSTR("Enter command. \r\n"));

  wdt_disable();
  fgets(s, sizeof(s)-1, stdin);
  wdt_enable(WDTO_500MS);

  s[strlen(s)-2] = 0;  // drop the ending \r\n
  printf_P(PSTR("You entered '%s'\r\n"),s);

  */

Nutze AVR Studio.

Irgendwelche Ideen, an was das liegen mag?

Danke
Axel
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren