Forum: Mikrocontroller und Digitale Elektronik Touchpoint programmieren


von Fabian (Gast)


Lesenswert?

Hey Leute,
ich komm hier grad irgendwie nicht weiter....
Und zwar will ich eigentlich nur eine Art Touchpoint programmieren.
D.h. ich habe einen IR-Sensor an einem Analogeingag vom uC. Wenn ich den 
Touchpoint nun berühre soll ein Pin angehn....nochmal berühren = aus.
Hier mal mein Quellcode:

Config Porta = Input
Config Portb = Output
Config Adc = Single , Prescaler = Auto , Reference = Off
Start Adc
Do

If Getadc(0) >= 200 And Pinb.0 = 0 Then
Pinb.0 = 1
End If

If Getadc(0) >= 200 And Pinb.0 = 1 Then
Pinb.0 = 0
End If
Loop
End


Also eigentlich nicht viel was man falsch machen kann^^
Hardwaretechnisch ist alles ok, denn wenn ich statt Pinb.0 den Ausdruck 
PORTB=&B00000001 schreibe und noch ne while Schleife setze funzts 
perfekt. Da ich aber noch mehrere Touchpoints anschließen 
muss....brauche ich es ähnlich wie oben.
Danke im vorraus
Fabian

von Oliver J. (skriptkiddy)


Lesenswert?

PINB ist nicht gleich PORTB.

Skriptkiddy

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Fabian schrieb:
> If Getadc(0) >= 200 And Pinb.0 = 0 Then
> Pinb.0 = 1
> End If
>
> If Getadc(0) >= 200 And Pinb.0 = 1 Then
> Pinb.0 = 0
> End If
> Loop
> End
>
>
> Also eigentlich nicht viel was man falsch machen kann^^

Doch.

Sieh Dir einfach mal an, was passiert, wenn Dein (falsches*) Pinb.0 = 1 
das erste Mal ausgeführt wird.

Sofort danach wird ein weiteres mal der ADC abgefragt und wenn Pinb.0 == 
1 ist, Pinb.0 auf 0 gesetzt.

Und sofort danach wird wieder der ADC abgefragt und wenn Pinb.0 == 0 
ist, es wieder auf 1 gesetzt.

Sprich: Solange der ADC einen Wert größer als 199 liefert, oszilliert 
die Angelegenheit mit durch die Abtastrate des ADC bestimmter Frequenz.

Du hast aber wohl was anderes vor ...

*) Sieh Dir den Einwand von "Skriptkiddy" an

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.