Hi Leute,
ich habe einen digitalen Sensor (HYT-221) für Relative Luftfeuchtigkeit
und Temperatur an meinen Atmega32 angeschlossen und möchte die Werte in
Labview darstellen.
Ich will die Werte folgendermaßen auslesen: Die Werte sollen nur dann an
den Rechner übertragen werden, wenn Labview danach fragt. Somit schickt
Labview in regelmäßigen Abständen einen kleinen String an den
controller, welcher daraufhin die Werte auslesen und ausgeben soll.
Problem: Es werden nur jedes zweite Mal richtige Werte dargestellt. Die
dazwischen sind negativ oder sehr gering. Ich weiß nicht, wo er die her
hat. Außerdem reagiert der Sensor auf Änderungen nur sehr spät. Das ist
innerhalb meiner Anwendung nicht besonders tragisch, ich würde aber
einfach gerne wissen warum. Hat jemand von euch Ideen? Danke!!!
Mein Basic-Programm ist so aufgebaut:
1
Do
2
3
Input #1 , Eingabe
4
5
Wert = Left(eingabe , 1)
6
7
If Wert = "1" Then
8
9
Sound Portd.7 , 400 , 450
10
Measurement
11
12
End If
13
14
Loop
15
16
17
18
Sub Measurement()
19
20
I2cstart
21
I2cwbyte Hyt221write
22
I2cstop
23
24
I2cstart
25
I2cwbyte Hyt221read
26
I2crbyte Humhigh , Ack ' Auslesen der 4 Bytes
27
I2crbyte Humlow , Ack
28
I2crbyte Temphigh , Ack
29
I2crbyte Templow , Nack
30
I2cstop
31
32
33
Humidity = Humhigh * 256 ' Umrechnen von Humhigh und Humlow in 16Bit-Wert
34
Humidity = Humidity + Humlow
35
Humidity = Humidity And &H3FFF ' Rauskürzen der Status-Bits
36
37
Temperature = Temphigh * 256 ' Umrechnen in 16-Bit-Wert
38
Temperature = Temperature + Templow
39
Temperature = Temperature / 4 ' Verschieben um 2 Bits nach Rechts
Hi
>Die Werte sollen nur dann an>den Rechner übertragen werden, wenn Labview danach fragt. Somit schickt>Labview in regelmäßigen Abständen einen kleinen String an den>controller,...
BASCOM verwendet Nullterminierte Strings. Wie sieht denn der von Labview
gesendete String aus?
MfG Spess
R. W. schrieb:> Außerdem reagiert der Sensor auf Änderungen nur sehr spät. Das ist> innerhalb meiner Anwendung nicht besonders tragisch, ich würde aber> einfach gerne wissen warum. Hat jemand von euch Ideen? Danke!!!
Natürlich habe ich Ideen.
Was, zum Bleistift, macht der
Sound Portd.7 , 400 , 450
da drinnen? Und du wunderst dich, dass das zäh geht?
> Ich weiß nicht, wo er die her hat.
Fehler suche so wie immer:
Schau nicht nur auf das Ergebnis, sondern auch auf die Ausgangswerte. In
deinem Fall dann eben auf die Bytes, die du vom Sensor bekommst bzw. den
String, den sich LabView von der SChnittstelle holt.
@ Lothar: danke! mach ich das nächste Mal.
@ Spess: Ich habe ein Wagenrücklaufsymbol an meinen eigentlichen String
mit drangehängt. Das habe ich schon mit beachtet.
Hi
>@ Spess: Ich habe ein Wagenrücklaufsymbol an meinen eigentlichen String>mit drangehängt. Das habe ich schon mit beachtet.
Genau das ist ja meine Befürchtung/Vermutung. Was ist, wenn INPUT auf
ein NULL-Zeichen wartet, aber in deinem String keins enthalten ist?
MfG Spess
Ich weiß jetzt, woran es liegt. Er gibt mir bei jedem zweiten Mal den
String "1" zurück - also quasi den String, der eigentlich nur an den
Atmega gesendet werden soll. Habt Ihr eine Idee, weshalb er das macht?
spess53 schrieb:> Genau das ist ja meine Befürchtung/Vermutung. Was ist, wenn INPUT auf> ein NULL-Zeichen wartet, aber in deinem String keins enthalten ist?
Laut
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/uart_rs232_vom_computer/
wartet INPUT auf einen CR. Das würde also stimmen.
Aber das ist interessant: INPUT macht ein Echo. Das würde ich gleich mal
ausschalten. Das könnte auch der Grund sein, warum die Rückmeldung der
Werte nicht richtig bzw nur jedes 2. mal funktioniert.
Spess, Du bist der Beste. Das mit dem lokalen Echo des Befehls Input ist
das Problem. Ich verwende jetzt Inkey(). Läuft 1A. Sogar die Verzögerung
ist weg. Ich werde das noch weiter testen.
R. W. schrieb:> Spess, Du bist der Beste. Das mit dem lokalen Echo des Befehls Input ist> das Problem. Ich verwende jetzt Inkey().
Kann man machen.
Man hätte aber auch einfach mit
ECHO OFF
das Echo einfach abschalten können.
Manchmal frag ich mich ehrlich wozu ich mir eigentlich die Mühe mache,
für andere die Tutorien im Web zu suchen, die zu lesen und dann auch
noch die relevanten Links zu posten, wenn es eh kein Schwein
interessiert.
Hi
>Spess, Du bist der Beste. Das mit dem lokalen Echo des Befehls Input ist>das Problem. Ich verwende jetzt Inkey(). Läuft 1A. Sogar die Verzögerung>ist weg.
Das war Karl-Heinz.
MfG Spess
@ Karl Heinz Buchegger (kbuchegg) (Moderator)
>Manchmal frag ich mich ehrlich wozu ich mir eigentlich die Mühe mache,>für andere die Tutorien im Web zu suchen, die zu lesen und dann auch>noch die relevanten Links zu posten, wenn es eh kein Schwein>interessiert.
Helfersyndrom. Kein Witz.