Uart sendet nur mist

Gast #1615076
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
Persönliche Seite
Hallo Martin,

1
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:
1
char buffer[16];
2

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

Grüße,

Peter
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.
Persönliche Seite
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
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!
Gast
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.