PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen zusammenrechnen



Horst12
07.06.2013, 00:15
Hallo liebe Leute
Ich bin Bascomneuling und habe ein kleines Problem mit den zusammenrechnen von Variablen.

Hier mein Code:

$regfile = "m8def.dat".dat "
$crystal = 1000000



Config Pind.4 = Input
Config Adc = Single , Prescaler = Auto , Reference = Avcc

Start Adc


Dim Druck As Word
Dim Impulslaenge As Word
Dim Raus As Word




Do
Bitwait Pind.4 , Reset
Pulsein Impulslaenge , Pind , 4 , 0
Impulslaenge = Impulslaenge
Getadc(0) = Druck
Impulslaenge + Druck = Raus

If Raus <= 2500 Then
Portb.1 = 1 : Waitms 1 : Portb.1 = 0
Elseif Raus > 2500 And Raus <= 10000 Then
Portb.1 = 1 : Waitms 5 : Portb.1 = 0
Elseif Raus > 10000 And Raus <= 15000 Then
Portb.1 = 1 : Waitms 10 : Portb.1 = 0
End If

Loop

Ich möchte die Variable Impulslaenge und Druck addieren
und in Raus speichern.
Kann mir jemand weiterhelfen?

Klebwax
07.06.2013, 00:45
Raus = Impulslaenge + Druck

???????

MfG Klebwax

Horst12
07.06.2013, 00:47
Moin
Was hast nicht verstanden?

robin
07.06.2013, 08:17
Das ist die Lösung deines Problems. Bzw. musst du GetADC(0) auch noch umdrehen

Das Ganze ist wie in C aufgebaut und das Ergebnis steht vor dem Gleichheitszeichen
Ergebnis = Operation

Sprich, aus:
Getadc(0) = Druck
Impulslaenge + Druck = Raus

wird:

Druck = Getadc(0)
Raus = Impulslaenge + Druck

Horst12
08.06.2013, 21:32
Danke für die Antwort.Hat geklappt.
Ist wohl Anfängerfehler

Horst12
02.07.2013, 00:57
Hallo Leute
Habe hier noch eine Anfängerfrage:
Ich möchte hier den Eingang Pind.3 mit der Pulsein Pind.4 verzögern und über Portd.5 ausgeben
Und das mit der If then Anweisung.
Kann mir jemand zeigen wie ich das mache?


Config Pind.3 = Input
Config Pind.4 = Input
Config Portd.5 = Output


Do

Bitwait Pind.4 , Reset
Pulsein X , Pind , 4 , 0
X = X * 100




If X <= 2500 Then
Portd.5 = 1 : Waitms 1 : Portd.5 = 0
Elseif X > 2500 And X <= 10000 Then
Portd.5 = 1 : Waitms 2 : Portd.5 = 0
Elseif X > 10000 And X <= 15000 Then
Portd.5 = 1 : Waitms 3 : Portd.5 = 0
End If

Loop

Picojetflyer
02.07.2013, 06:03
If X <= 2500 Then
Portd.5 = 1
Waitms 1
Portd.5 = 0
endif
If X > 2500 AND X <= 10000 Then
Portd.5 = 1
Waitms 2
Portd.5 = 0
Endif
if X > 10000 AND X <= 15000 Then
Portd.5 = 1
Waitms 3
Portd.5 = 0
End If

So würd ich es mal probieren, achte beim AND auf die Großschreibung! Bascom ist da nachtragend.

Horst12
03.07.2013, 00:26
Hallo
Das habe ich soweit verstanden.Aber jetzt möchte ich das Eingangssignal von pind.3 über diese Anweisung verzögern.

Picojetflyer
03.07.2013, 06:08
Hallo Leute
Habe hier noch eine Anfängerfrage:
Ich möchte hier den Eingang Pind.3 mit der Pulsein Pind.4 verzögern und über Portd.5 ausgeben
Und das mit der If then Anweisung.
Kann mir jemand zeigen wie ich das mache?


Config Pind.3 = Input
Config Pind.4 = Input
Config Portd.5 = Output

........

........

Horst12
Hallo
Das habe ich soweit verstanden.Aber jetzt möchte ich das Eingangssignal von pind.3 über diese Anweisung verzögern.


Loop

Könnte an der frühen Stunde liegen, aber mir erschließt nicht ganz was du damit meinst. Was möchtest du denn an oder mit Pind.3 verzögern? Als Input kannst du ja nur auf ein Signal warten/hoffen, aber warum verzögern??? Wofür soll das denn sein?

Gruß

Matthias

Horst12
04.07.2013, 00:50
Hallo Matthias
Also es geht um eine Zündanlage die mit einem Hallsensor ausgerüstet ist. Mit Pulsein möchte ich die Drehzahl messen und mit diesem Wert den Ausgang verzögern.
Deshalb mit Pind.4 die Zeit messen des lo Signals
Über Pind.3 kommt das Hi und lo Signal rein.
Das lo Signal will ich mit Hilfe des Drehzahlwertes verzögern.

Ich weiß es gibt noch andere Lösungen, aber eins nach dem andern. :)

Picojetflyer
04.07.2013, 06:18
Also zusammengefasst.
Du bekommst ein PWM/PPM ähnliches Signal, An/Aus/An/Aus. Die Länge des High Signals ist variabel sowie die des Low Signals.
Du willst mit den Befehl Pulsein mittels Pind.3 die länge von High Signals messen und mit Pind.4 die länge des Low Signals.
Das ist doch bestimmt ein Motor mit OT Geber, warum misst du nicht einfach mit ein Timer den Abstand von High Flanke zu High Flanke.
Anhand des ermittelten Timerwerts und ein bissel Winkelfunktion könntest du theoretisch Winkel genau die Vor bzw. Nachzündung einstellen. Ich denke auch der Pulsein befehl würd da nicht genau genug für sein.