www.mikrocontroller.net

Forum: Compiler & IDEs Uart sendet nur mist


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

hall=0;

oldtick=tick;
uart_puts("Tk");
uart_puts(utoa(tick,buffer,10));
uart_puts("\n");



Ich hoffe ihr könnt mir mit diesem Problem helfen

tick ist gleich 3000-15000
Wenn ich jetzt die beiden unteren // auskommentiere funktioniert es. 
Wenn ich die beiden allerdings mitsende kommt bei meinem Hterm ( 
Hyperterminal) nur mist an 
<\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0> 
<\0><\0><\0><\0>Tk<\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\0><\ 
0><\0><\0><\0><\0><\0><\0><\0><\0>  sowas....
tick ist eine 16bit Variable daher hatte ich utoa benutzt.
Warum kommt dann am Hyperterminal nixs vernünftiges an?
Max232 hab ich kontrolliert wenn ich den Attiny2313 rausmache die beiden 
Pins ( RXD TXD verbinde ) kommt am Pc das an was der Pc auch 
losgeschickt hat daher muss es am Code liegen.
uart_puts ist die Library von Peter Fleury
20 MHZ Quartz  38400 Baudrate Double rate == Fehler 0,160%

Ich hoffe ihr könnt mir helfen
mfg Martin

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du so programmierst, wie du auch deine Fehler beschreibst, dann 
könnte es daran liegen.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,

uart_puts(utoa(tick,buffer,10));
Wird so nicht funktionieren. utoa schreibt das Ergebnis in buffer rein 
und gibt als Rückgabe ein Statusbyte (z.B. für Erfolg) zurück. Das 
verwendet man üblicherweise so:
char buffer[16];

utoa(tick,buffer,10);  //Inhalt von Ticks in einen String umwandeln und in Buffer schreiben
uart_puts(buffer);     //Den String aus Buffer über die Schnittstelle senden

Grüße,

Peter

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Diener schrieb:

> Wird so nicht funktionieren. utoa schreibt das Ergebnis in buffer rein
> und gibt als Rückgabe ein Statusbyte (z.B. für Erfolg) zurück.

Welche Doku hast du denn, die das behauptet?
utoa gibt üblicherweise einfach nur den Pointer zurück, den es als 
zweiten Parameter übergeben bekommt, damit man es genau so verwenden 
kann, wie vom OP geschrieben.

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuligung, ich habe das mit sprintf verwechselt.

Das "Tk" wird ja offenbar richtig ausgegeben. Daher ist die 
Schnittstelle vermutlich richtig eingestellt und uart_puts funktioniert 
auch.

Da fallen mit dann noch zwei Möglihkeiten ein:

1. uart_puts kann keine so langen Strings, weil irgend ein Buffer zu 
klein eingestellt ist. Oder es ist non-blocking und wird zu oft 
aufgerufen.

2. buffer ist zu klein, um die Umwandlung in einen String durchzuführen.

Grüße,

Peter

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja, und das ist alles Spekulation, solange man nur die
Originalfrage sieht. Und die ist grottenschlecht, und scheint
auch nicht mehr besser zu werden.
Kein verwertbarer Quelltext, keine Angaben zur Umgebung,
unbracuhbare Fehlerbeschreibung ("sowas").

Viel Spaß beim Fehlersuchen!

Autor: Tim T. (tim_taylor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum schreibst du nicht die komplette Deklaration ALLER von dir 
verwendeten Variablen hin?
Stattdessen lieferst du unnötigen Scheiß wie hall oder oldtick (wobei 
der Typ hier immernoch unbekannt ist).

Aber dein Fehler dürfte mal wieder der typische Deppenfehler sein: 
Welchen Typ hat buffer und wie groß ist er?

bitte nur Code als Antwort und kein Gestammel!

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.