Forum: Compiler & IDEs fdevopen funktioniert nicht immer


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Pure (Gast)


Lesenswert?

Guten Morgen,
ich habe eine Frage, warum funktioniert fdevopennicht immer?
Ich habe ein Projekt in dem folgendes ohne Probleme funktioniert.
1
//sprintf (bufferr, "IN=%02x %d %d \n\r", AuxInput,Data_Array_Messwert[0],Data_Array_Messwert[1]);
2
      //uputs_(bufferr);

jedoch

vor der main loop
1
fdevopen(uputs_, NULL);

dann in im Programm
1
  //uputs_("Hallo\n\r");

das nicht mehr.

Verwende das Atmelstudio 7

Danke

von Dirk B. (dirkb2)


Lesenswert?

Pure schrieb:
> ich habe eine Frage, warum funktioniert fdevopennicht immer?

Was soll das heißen?

Gibt es eine Fehlermeldung vom Compiler?
Passiert einfach nichts?
Stürzt das System ab?

Pure schrieb:
> in dem folgendes ohne Probleme funktioniert.

Der Code ist auch auskommentiert.

von Kaj (Gast)


Lesenswert?


von Pure (Gast)


Lesenswert?

Dirk B. schrieb:
> Passiert einfach nichts?

Ja genau es passiert nichts.

Dirk B. schrieb:
> Der Code ist auch auskommentiert.

Ja beim Test war es einkommentiert.

Kaj schrieb:
> Einfach mal in die Doku gucken? Rueckgabewert der Funktion pruefen?

Ok das kann ich probieren.

von Rolf M. (rmagnus)


Lesenswert?

Pure schrieb:
> Dirk B. schrieb:
>> Der Code ist auch auskommentiert.
>
> Ja beim Test war es einkommentiert.

Dann zeig doch bitte den Code, der nicht wie erwartet funktioniert hat 
und nicht irgendwas anderes. Und mit deinem uputs_("Hallo\n\r") benutzt 
du das Device auch gar nicht. Also hat das Problem nichts mit dem zu 
tun, sondern mit uputs_() selbst.

von Markus F. (mfro)


Lesenswert?

... wenn Du den FILE pointer, der bei fdevopen() (hoffentlich) 
zurückgeliefert wird, nicht auffängst - wie willst Du dann auf den 
Stream schreiben?

Beitrag #6028964 wurde vom Autor gelöscht.
von Pure (Gast)


Lesenswert?

Guten Abend
Diese Kombi funktioniert


int uart1_putc(  char data)
{
    unsigned char tmphead;


    tmphead  = (UART1_TxHead + 1) & UART_TX_BUFFER_MASK;

    while ( tmphead == UART1_TxTail ){
        ;/* wait for free space in buffer */
    }

    UART1_TxBuf[tmphead] = data;
    UART1_TxHead = tmphead;

    /* enable UDRE interrupt */
    UART1_CONTROL    |= _BV(UART1_UDRIE);
  return (1);
}/* uart1_putc */

fdevopen(uart1_putc, NULL);


Diese Kombi funktioniert nicht

void uputs_( uint8_t *s )
{
  while( *s )
    s_sputchar( *s++ );
}
fdevopen(uputs_, NULL);


Kann mir jemand den Grund erklären?

von Markus F. (mfro)


Lesenswert?

Pure schrieb:
> Kann mir jemand den Grund erklären?

klar.

Dokumentation nicht gelesen, nicht verstanden oder nicht dran gehalten.

von Kaj (Gast)


Lesenswert?

Pure schrieb:
> Kann mir jemand den Grund erklären?

Kaj schrieb:
> Einfach mal in die Doku gucken? Rueckgabewert der Funktion pruefen?
>
> 
https://www.microchip.com/webdoc/AVRLibcReferenceManual/group__avr__stdio_1gab599ddf60819df4cc993c724a83cb1a4.html

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.