Forum: Mikrocontroller und Digitale Elektronik Printf mit tms470r1b1m funktioniert nicht


von Chris (Gast)


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:
1
...Hier steht die Initialisierung des Controllers...
2
3
printf("test"); //Aufruf
4
5
6
int putchar (int c)
7
{
8
    // Warten bis fertig
9
    while (TXRDY  == 0);
10
    
11
    // Send character
12
   SCI1TXBUF = c;
13
    
14
    // Warten bis fertig
15
    while (TX_EMPTY == 0);
16
return 0;
17
}

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
von Chris (Gast)


Lesenswert?

Niemand ne Idee? Es wird bisher immernoch nur ein Zeichen ausgegeben.

von Mathias A. (mrdelphi)


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

von Chris (Gast)


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ß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.