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
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 | }
|
Und welchen Treiber verwendest du ? Max232 oder aehnlich ? Dann kann die Bausrate auch falsch sein. Sende irgendwas repetitivund und miss mit dem Oszilloskop nach.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.