Re: Serielle Messwertausgabe Kategorie: Verschiedenes (von Peter S - 26.08.2005 17:16) | ||
Als Antwort auf Re: Serielle Messwertausgabe von Ralf Broeske - 23.08.2005 19:38 | ||
| ||
Hallo, sorry wegen der Verzögerung, aber ich habe momentan viel zu tun. Mit folgenden Code kann man Zahlen in einen Text ausgeben: char Ausgabe[6]; word ADC_Wert; // schreibt ein word in den String mit einem offset von 0 (also direkt an den Anfang) // die Basis ist 10 (also dezimal), und die minimale Breite ist 0 (bei grö�eren Werten wird der Text // evtl. mit Nullen am Anfang aufgefüllt) Str_WriteWord(ADC_Wert,10,Ausgabe,0,0); Am besten mal mit den Werten rumspielen un den String dann mit Msg_WriteText in die Debugausgabe schicken. Sicherheitshalber den String schon mal länger definieren, z.B. char Ausgabe[12]; Gruss Peter > Hallo Peter, > > vielen Dank für deine Antwort...ich verzweifle an diesem Ding. Leider ist die begeleitende > Einführung der C-Control pro nichts für Anfänger... > Ich habe mir aus den Beispielprogrammen was zusammengebastelt, mit dem msg-Befehlen sehe ich > auch das Egebnis im Debugfenster. Jetzt mu� allerdings der Messwert 'ADC_Wert' offensichtlich um- > gewandelt werden um ihn mit dem 'Serial_Write' Befehl über RS232 ausgeben zu können. Aber > mit den vorleigenden Angaben bekomme ich das nicht geregelt. Meine Frage lautet somit wie mu� > ich die Umwandlung des ADC Messwertes vornehmen um den String dann ausgeben zu können ? > Ich möchte lediglich eine Zahl für den Messwert erhalten dann Zeilenumbruch, neuer Messwert etc... > > anbei das Programm wie es jetzt ist.. > > kannst du helfen ?? > > // ADC_0: Messwertausgabe > // Eingang ADC0 PA0 (PortA.0) > // erforderliche Library: IntFunc_Lib.cc > > // Der Me�wert wird über die serielle Schnittstelle ausgegeben > > // Der ADC hat eine Auflösung von 10 Bit. > // Bei einer Referenzspannung von 5V bedeutet dies 4,8828mV/Bit. (5V/1024Bit) > // Als Referenzspannung kann Vcc, die interne Referenz(2,56V) > // oder eine externe Spannung verwendet werden. > > // Deklaration der Formatierungsvariablen > #define LF 0x0A > #define CR 0x0D > #define SPACE 0x20 > > //------------------------------------------------------------------------------ > // Auswertung der am verwendeten Eingang anliegenden Spannung unter > // Berücksichtigung der angegebenen oberen und unteren Limits. > // > > > void ADC_Check_Limit(byte channel,word limit_low, word limit_high) > { > word ADC_Wert; // In dieser Variablen wird der > // gemessene Wert gespeichert. > char Ausgabe[6]; // In dieser Variablen wird der Messwert > //gespeichert und seriell ausgegeben > ADC_Set(ADC_VREF_VCC, channel); // Festlegung der Bezugsgrö�e des Eingangskanals > // und Bestimmung des verwendeten Kanals. > // In diesem Fall werden alle gemessenen > // Werte auf 5V bezogen. > ADC_Wert=ADC_Read(); // Einlesen des Wertes des Kanals > > Msg_WriteChar(CR); // Ausgabe: Wagenrücklauf > Msg_WriteChar('A'); // Ausgabe: A > Msg_WriteChar('D'); // Ausgabe: D > Msg_WriteChar('C'); // Ausgabe: C > Msg_WriteChar(channel|0x30); // Ausgabe der Kanalnummer über eine > // bitweise ODER-Verknüpfung mit dem > // Hexwert des ASCII-Zeichens 0. > Msg_WriteChar(SPACE); // Ausgabe: Leerzeichen > Msg_WriteChar(':'); // Ausgabe: : > Msg_WriteChar(SPACE); // Ausgabe: Leerzeichen > Msg_WriteWord(ADC_Wert); // Ausgabe: gemessener Wert > > Serial_WriteText(Ausgabe); > Serial_Write(CR); > Serial_Write(LF); > > } > //------------------------------------------------------- > // Hauptprogramm > // > void main(void) > { > Serial_Init(SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD9600); > > > while (1) > { > // Funktionsaufruf mit Angabe des verwendeten Kanals, > // des unteren und des oberen Limits. > // Beide Limits wurden in Bezug auf die verwendete Referenzspannung > // ADC_VREF_VCC (5V) berechnet. > // unteres Limit 3,5V: 3,5V/4,8828mV = 717 (0x02CD) > // oberes Limit 4,5V: 4,5V/4,8828mV = 922 (0x039A) > > ADC_Check_Limit(ADC0,0x02CD, 0x039A); > > // Der Eingang wird alle 500ms gelesen und ausgewertet. > AbsDelay(50); > } > } > > > > > > Hallo Ralf, > > > > wie möchtest Du denn die Daten über die serielle ausgeben? Mit Serial_Write() kann man ein Byte auf > > die Serielle schicken, oder man konvertiert die Werte in einen Text String und gibt sie dann mit > > Serial_WriteText() aus. Es gibt mehrere Beispielprogramme, wie man Text in einen String schreibt. > > Man kann die Messwerte z.B. mit Str_WriteInt() in den String schreiben und dann ausgeben. > > > > Gruss Peter > > > > > Hallo liebe Anwender, > > > > > > kann jemand einem C-Neuling eine Hilfestellung geben. Wir versuchen einen Messwert vom > > > ADC-Port über die serielle Schnittstelle auszugeben. Textausgaben funktionieren, aber wie > > > bekomme ich den Messwert direkt über die Schnittstelle gesendet ? Kann hier jemand helfen ? > > > > > > Vielen Dank > > > > > > Ralf | ||
Antwort schreiben Antworten: Re: Serielle Messwertausgabe (von Reiner S. - 29.08.2005 15:51) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum