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
Wenn du so programmierst, wie du auch deine Fehler beschreibst, dann könnte es daran liegen.
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.
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!
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.