mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik printf und puts in C18


Autor: Semikolon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey

Ich schreibe ein Programm mit MPLAB in C18. Das Programm soll über die 
serielle Schnittstelle mit dem PC komunizieren, ich benutze dazu u.A. 
die Funktionen printf und puts. Das merkwürdige dabei ist, dass die 
Daten von Zeit zu Zeit falsch oder gar nicht übermittelt werden. Deshalb 
wollte ich mir mal die Funktion von printf bzw puts anschauen. Wo kann 
ich die finden?

mfg
Sigi

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Deshalb wollte ich mir mal die Funktion von printf bzw puts anschauen.

Schau dir lieber noch mal dein Programm an.

Autor: Semikolon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mein Programm funktioniert an sich einwandfrei. Wenn ich die Daten über 
TXREG ausgebe, habe ich keine Probleme....

Autor: Artjomka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Obacht ist geboten bei der Programmierung mit C18, dass man auch den 
Datentyp welchen man übergibt im richtigen Speicherbereich hat. Es gibt 
seperate Funktionen um ROM bzw. RAM Daten zu verarbeiten/aus zu geben.

Wenn man da die falsche benutzt kommt schnell was durcheinander.

Hab leider keinen C18 auf diesen Rechner installiert, aber du solltest 
die funktionen irgendwo im C18 Ordner finden... Hatte z.B. mal das 
Problem, dass der UART nicht richtig initialisiert wurde (und das bei 
einer Microchip eigenen Routine! Da wurde vorm aktivieren des UARTs 
schon RX/TX mit TRIS umgesetzt - hat zu problemen wegen falschen 
ausgangspegel geführt) - da hab ich die funktion aus der lib kopiert und 
abgeändert.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>mein Programm funktioniert an sich einwandfrei. Wenn ich die Daten über
>TXREG ausgebe, habe ich keine Probleme....

Dann bleib doch dabei.

Wenn du printf falsch benutzt darfst du dich nicht wundern
wenn da Müll rauskommt.

Beispiel: printf("%d",wert);

Bei %d wird ein int für wert erwartet. Wenn du für wert ein long 
übergibst
dann kracht es halt.

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.
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.