Re: Serielle Messwertausgabe Kategorie: Verschiedenes (von Ralf Broeske - 23.08.2005 19:38) | ||
Als Antwort auf Re: Serielle Messwertausgabe von Peter S - 22.08.2005 22:54 | ||
| ||
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: ![]() ![]() |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum