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)