Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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
Ich nutze:
C-Control Pro Mega32
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 Peter S - 26.08.2005 17:16)
    Re: Serielle Messwertausgabe (von Reiner S. - 29.08.2005 15:51)