mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Printf mit tms470r1b1m funktioniert nicht


Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein Problem mit dem Printf, ich weiß nicht wie ich es schaffe, 
dass mein ganzer String ausgegeben wird und nicht nur ein Zeichen.
Bin was die Programmiererrei angeht noch blutiger anfänger!

Verwende IAR Kickstart und J-Link von Segger.
Kommunikation zwischen µC und PC funktioniert, habe schon LED beispiele 
aufgespielt und überprüft.

Die kommunikation mit dem PC funktioniert über Serielle Schnittstelle 
auch ich bekomme auch ein Zeichen gesendet, jedoch nicht den ganzen 
String.

Hier der Code:

...Hier steht die Initialisierung des Controllers...

printf("test"); //Aufruf


int putchar (int c)
{
    // Warten bis fertig
    while (TXRDY  == 0);
    
    // Send character
   SCI1TXBUF = c;
    
    // Warten bis fertig
    while (TX_EMPTY == 0);
return 0;
}


Die initialisierung habe ich weggelassen, weil es an der nicht liegt.
Ich bekomme mit diesem Code nur ein "t" in der Console, was glaube ich 
an der funktion putchar liegt.
Wie muss ich diese umschreiben, damit es funktioniert?

Ich meine das in stdio.h ja die printf und putchar stehen und wenn man 
die putchar nicht selbst schreibt landet der string irgendwo 
undefiniertes?!

Oder müsste man etwas anderes als die putchar funktion verwenden. Habt 
ihr Beispielcode, ich bin schon die ganze Zeit am suchen, jedoch finde 
ich nichts.

Vielen Dank im Voraus, Gruß Chris

: Verschoben durch Moderator
Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niemand ne Idee? Es wird bisher immernoch nur ein Zeichen ausgegeben.

Autor: Mathias A. (mrdelphi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Was passiert wenn Du statt printf putchar() mehrmals nacheinander 
aufrufst?

Es könnte auch an falsch eingestelltem Handshake liegen, hast Du danach 
schonmal geschaut? wenn z.B. am Controller Hardware-Handshake 
eingeschaltet ist, sendet er ein Zeichen und wartet dann auf das Signal 
vom PC, dass er das nächste senden darf. Wenn am PC Handshake 
ausgeschaltet ist, oder die Leitungen nicht verbunden sind, wartet er 
für immer, vergebens...

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

die printf verwendet die putchar automatisch.(normalerweise)
habe den fehler gefunden, es lag an der while abfrage.
Das mehrmals nacheinander putchar aufrufen hatte aber übrigens 
funktioniert. :)

Trotzdem danke für den Tipp.

gruß

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.