Forum: Mikrocontroller und Digitale Elektronik Meßwert nach labview übertragen


von Michael H. (h_m)


Angehängte Dateien:

Lesenswert?

Guten Tag,

Kennt sich hier jemand mit labview aus ? Ich möchte gerne über die 
serielle schnittstelle einen Wert an labview übergeben, aber ich bekomme 
es einfach nicht hin.

Ich lese mit meinem Atmega über den Adc ein Poti ein 0-255 und möchte 
diesen Wert mit dem Uart senden.

Aber ich kann es in labview nicht richtig verarbeiten, weil mir die 
kenntnisse fehlen, wäre vielleicht jemand bereit mir die angehängte 
Datei mit labview umzuschreiben so das das funktioniert. Und ich es dann 
vielleicht mal verstehe.

: Verschoben durch Moderator
von Dirk B. (dirkb2)


Lesenswert?

wie sendest du den Messwert.
zeig am besten den code.

von Michael H. (h_m)


Lesenswert?

1
/*************************************************************************
2
Test LABVIEW Meßwert senden Atmega88
3
4
*************************************************************************/
5
#define F_CPU 16000000UL
6
#include <stdlib.h>
7
#include <avr/io.h>
8
#include <avr/interrupt.h>
9
#include <avr/pgmspace.h>
10
#include <util/delay.h>
11
12
#include "uart.h"
13
14
15
/* define CPU frequency in Hz in Makefile */
16
#ifndef F_CPU
17
#error "F_CPU undefined, please define CPU frequency in Hz in Makefile"
18
#endif
19
20
/* Define UART buad rate here */
21
#define UART_BAUD_RATE      9600      
22
23
24
int main(void)
25
{   
26
  uint16_t x;
27
  uint16_t  ergebnis ;
28
  uint16_t i = -12345;
29
    char buffer[30];
30
   
31
    uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); 
32
    
33
  sei();
34
        //*** Init ADC ***
35
    ADCSRA |= (1<<ADEN);              // ADC aktivieren
36
    ADCSRA |= (1<<ADPS0)|(1<<ADPS1);    // Vorteiler auf 8
37
    ADMUX |= (1<<REFS0);              // Uref = 5V
38
    ADMUX |= (1<<MUX2)|(1<<MUX0);       // ADC-Kanal 5 einstellen
39
    ADMUX |= (1<<ADLAR);              // bündig
40
    DIDR0 |= (1<<ADC5D);              // Dig. Input Kanal ADC5 deaktivieren (spart Strom)
41
     
42
    //*** Dummy Readout ***
43
    ADCSRA |= (1<<ADSC);              // Start ADC-Wandlung
44
    while (ADCSRA &(1<<ADSC));            // Auf Abschluss der Konvertierung warten
45
    x = ADC;                            // Das Ergebnis der 1.Wandlung in x speichern
46
47
    
48
    while (1)
49
    {
50
      ADCSRA |= (1<<ADSC);          // Start ADC-Wandlung
51
      while (ADCSRA &(1<<ADSC));        // Auf Abschluss der Konvertierung warten
52
      ergebnis = ADCH;                // Inhalt von ADCH in ergebnis speichern
53
      //PORTD = ergebnis;               // Wandlungsergebnis am Port D ausgeben
54
 
55
       
56
      
57
        
58
         itoa(ergebnis,buffer,10);
59
         uart_puts(buffer);
60
         uart_putc('\r');          // CR Terminal
61
        //_delay_ms(50);
62
63
         
64
        
65
    }
66
    
67
    
68
}

von Pandur S. (jetztnicht)


Lesenswert?

Und welchen Treiber verwendest du ? Max232 oder aehnlich ?

Dann kann die Bausrate auch falsch sein. Sende irgendwas repetitivund 
und miss mit dem Oszilloskop nach.

von BvB (Gast)


Lesenswert?

schon (etwas vereinfacht):
1
//... 
2
 while (1)
3
    { uart_putc(ADCH);      
4
      uart_putc(0);
5
      ADCSRA |= (1<<ADSC);  
6
      _delay_ms(2000);
7
    }
ausprobiert?

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.