Moin, versuche eine Übertragung eines 10 Bitwertes über STK500 USART an einen PC. Empfangen wird mit Hterm (nicht hyper Teminal). "Codeschnipsel" ADC_Messung_starten(); // get converted value ADC_Wert = ADCW; PORTB = ~ADC_Wert>>2; // Ausgabe an PORT X mit LED's itoa( ADC_Wert, s, 10 ); // ADC_Wert wandeln in String auf Basis 10 fuer radix -> Dezimalsystem uart_puts( s ); // Ausagbe über UART Der ADC Wert wird zusätzlich über LEDs angezeigt(i.O.). An Hterm kommt aber nur ein einstelliger Wert an. Meine das die Benutzung von itoa nicht korrekt ist. Brauche einen Denkanstoß. Schönes Wochenende + Danke.
sorry, s wurde laut Tutorial so übernommen int main() { int a; char s[7];
1 | uart_puts( itoa( ADC_Wert, s, 10 ) ); |
schon mal so versucht?
Du definierst s als char und char ist immer nur einer. definiere mal: string s;
Sparki wrote: > Du definierst s als char und char ist immer nur einer. Nein, er definiert ein Array of char. > definiere mal: > string s; Einen Datentyp string gibt es in C nicht!
ja habe ich, laut Tutorial ist das die Zusammenfassung itoa( ADC_Wert, s, 10 ); uart_puts( s );
Probiere mal
1 | for(int i=0;i<7;i++) |
2 | {
|
3 | uart_putc(s[i]); |
4 | }
|
anstatt uart_puts(s);
uart_putc(s[i]); diese Zeile mag der Compiler gar nicht ../PWM_ADC_UART_11.c:151: error: subscripted value is neither array nor pointer
bevor das Rätselraten weitergeht solltest Du mal den ganzen Code posten
zero wrote: > Probiere mal zum Test > > s="4321"; Und was soll das testen, außer Fehlermeldungen? Nochmal: Es gibt in C keinen Datentyp string und man kann auch keinen String-Literal als ganzes zuweisen. Man kann nur ein Array oder einen Zeiger mit einem String initialisieren.
Es geht:-))) der Fehler "war zwischen den Kopfhöhrern". Ich hatte 'char s[7];! in main definiert aber den Aufruf zum Senden+ itoa in einer Funktion, in der unglücklicherweise 's' nochmal als int definiert war. Dadurch hat der Compiler nicht gemeckert aber es wurden seltsame Dinge ausgegeben. Herzlichen Dank an alle und noch einen schönen Abend
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.