Forum: PC-Programmierung PIC16F876---> MAX233--->RS232--->PC--->C#


von Serg M. (miknet)


Lesenswert?

Hallo Zusammen,

ich habe eine Frage zu ADC und  Visualisierung der Meswerte auf meinem 
PC
mit C#.

Ich messe Spannung mit PIC16F876 und möchte die Messwerte über Max233 
anzeigen lassen.

Meine Anwendung zeigt sehr komische Werte wie:

bei einer Spannung von 5 V -->   3,72E-294
-----------------  von 3,72 v--> 5,37E-299
-----------------  von 2,42 V--> 7,74E-304

weisst jemand was es seien kann?

wäre dankbar für jede info!

von Timo (Gast)


Lesenswert?

Big Endian, Little Endian!?
MSB/LSB vertauscht!?

von Serg M. (miknet)


Lesenswert?

ich empfange die Daten mit:

int count = serialPort1.BytesToRead;
                byte[] ba = new byte[count];
                serialPort1.Read(ba, 0, count);

dann konvertiere in double, dann werden die Werte in richTextBox 
angezeigt.

Muss ich noch irgendwelche Schritte dazwischen durchführen?

von Karsten (Gast)


Lesenswert?

Ja, mal ein bischen mehr Infos rüberwachsen lassen! Das ist eine 
Frechheit! Wenn Du eine vernünftige Antwort haben willst, dann gebe Dir 
bei der Fragestellung bitte ein bisschen mehr mühe!

Schaltung?! Source-Code?!

von Serg M. (miknet)


Angehängte Dateien:

Lesenswert?

mit dieser Methode empfange ich die Daten:

private void Erfassen()
        {
            try
            {
                int count = serialPort1.BytesToRead;
                byte[] ba = new byte[count];
                serialPort1.Read(ba, 0, count);


                Double data1 = BitConverter.ToDouble(ba, 0);
                Double data2 = BitConverter.ToDouble(ba, 0);


                richTextBox1.Invoke(new EventHandler(delegate
                {
                    richTextBox1.Text = data1.ToString();

                }));
                label1.Invoke(new EventHandler(delegate
               {
                   label1.Text = data2.ToString();
               }));
            }
            catch { };

anbei noch die Schaltung:

von Franko P. (sgssn)


Lesenswert?

Hi
dein PIC misst die Spannung als integer-Wert, den du dann in eine 
Spannung umwandelst. Und wie überträgst du dann den Wert ? Mit sprintf 
in eine Text-String umgewandelt ?

gerhard

von Serg M. (miknet)


Lesenswert?

Hallo,

ich habe den PIC in Assambler programiert und dann nch in C.
In beiden Fällen habe ich die falschen Werte erhalten oder mache ich 
noch was nicht ganz richtig.

hier ist main () Funktion aus dem Programm

void main(void)
{
    uns16 a;                // Variablen
    char n;

    //++  Einstellungen des AD-Wandlers  ++++++++++++++++++++++++++++
    ADCON1=0;               // Ganzer PortA als Analog Vdd Vss
    ADON=1;                 // ADC-Einschalten
    ADCS1=1 ;               // Geschwingigkeit der ADC
    ADCS0=0 ;
    ADFM=1;                 // Rechts Ausrichtung
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    TRISC=0b.1011.1100;     // RC6>TX, RC7>RX
    InitUSART();            // Hardwareschnittstelle des PICs einstellen

    while(1)                // Ganzes Programm ist Endlosschleife
    {
        while(!RCIF);       // Warte auf Empfang
        n=RCREG;            // Empfange Kanalnummer
        a=ADC(n);           // AD-Wandlung
        while(!TXIF);       // Prüfen, ob Sender frei ist
        TXREG = a.low8;     // Niederes Datenbyte senden
        while(!TXIF);       // Prüfen, ob Sender frei ist
        TXREG = a.high8;    // Oberes Datenbyte senden

    }                       // Ende der Schleife
}                           // Ende des Hauptprogramms

Gruß
Serg

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
Noch kein Account? Hier anmelden.