mikrocontroller.net

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.
Autor: Pure (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,
ich habe eine Frage, warum funktioniert fdevopennicht immer?
Ich habe ein Projekt in dem folgendes ohne Probleme funktioniert.


//sprintf (bufferr, "IN=%02x %d %d \n\r", AuxInput,Data_Array_Messwert[0],Data_Array_Messwert[1]);
      //uputs_(bufferr);


jedoch

vor der main loop
fdevopen(uputs_, NULL);


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


das nicht mehr.

Verwende das Atmelstudio 7

Danke

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kaj (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Pure (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus F. (mfro)
Datum:

Bewertung
0 lesenswert
nicht 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.
Autor: Pure (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Markus F. (mfro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pure schrieb:
> Kann mir jemand den Grund erklären?

klar.

Dokumentation nicht gelesen, nicht verstanden oder nicht dran gehalten.

Autor: Kaj (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.

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