Uart sendet nur mist

Gast #1615076
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
Persönliche Seite #1615179
Lesenswert?

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
#1615259
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.
Persönliche Seite #1615317
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
#1615347
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!
Gast #1615372
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren