Forum: Mikrocontroller und Digitale Elektronik Buttondruck Abfragen - Assembler - aber Magnetsensor^^


von A. B. (developer_x)


Lesenswert?

Sehr geehrtes Forum, mir ist was völlig verrücktes passiert, eigentlich 
ganz witzig, aber nicht das was ich ja eigentlich will ....

Und zwar möchte ich den Tasten druck eines Buttons mit dem 
Mikrocontroller ermitteln, Problem : Bevor ich den Tasterdrücke, wenn 
mein Daumen in der Nähe des Buttons schwebt, beginnt der Mikrocontroller 
das schon zu registrieren und lässt meine rote LED leuchten....

Kann es sein dass mein Finger ein Magnetfeld aufbaut, welches so geringe 
induktionsströme fließen lässt, dass der mikrocontroller das als eingang 
empfindet?

Wie kann ich das Problem lösen?

Habe es schon mit nem 1k Widerstand probiert, aber Zwecklos...

Der Eingang wechselt, wenn ich meine Hand über die Schaltung bewege auf 
an und, wenn ich meine Hand stillhalte auf aus...

Bitte um Hilfe,

Mein Code :
1
.include "M48def.inc"
2
3
; Stackpointerinitialisierung
4
  LDI R16, LOW(RAMEND)   ;Stackpointer initialisieren
5
  OUT SPL, R16
6
  LDI R16, HIGH(RAMEND)   ;Stackpointer initialisieren
7
  OUT SPH, R16
8
 
9
  ldi r18, 0xFF
10
  out DDRD, r18          ; Alle Pins am Port D durch Ausgabe von 0xFF ins
11
                           ; Richtungsregister DDRD als Ausgang konfigurieren
12
  ldi r18, 0x00
13
  out DDRC, r18          ; Alle Pins am Port C durch Ausgabe von 0x00 ins
14
                           ; Richtungsregister DDRB als Eingang konfigurieren
15
  loop:
16
    in r18, PINC    ; an Port C anliegende Werte (Taster) nach r18 einlesen
17
    out PORTD, r18  ; Inhalt von r18 an Port D ausgeben
18
  rjmp loop           ; Sprung zu "loop:" -> Endlosschleife

m.f.G. Developer_X

von Karl H. (kbuchegg)


Lesenswert?

K. R. schrieb:

> Habe es schon mit nem 1k Widerstand probiert, aber Zwecklos...

Und was genau hast du mit diesem Widerstand gemacht?


>   ldi r18, 0x00
>   out DDRC, r18          ; Alle Pins am Port C durch Ausgabe von 0x00
> ins
>                            ; Richtungsregister DDRB als Eingang
> konfigurieren


schalte die Pullup Widerstände an diesem Port ein. Das sollte dem Spuk 
ein Ende bereiten

    ldi r18, 0xFF
    out PORTC, r18

von oldmax (Gast)


Angehängte Dateien:

Lesenswert?

Hi
Magnetfeld ist gut, dann brauchst du dich ja nur mit einer Spule umgeben 
und die Zukunft der Energieverbraucher ist gesichert....
Also, das Zuschalten der PullUp Widerstände oder das Beschalten mit 
externen PullDown erledigt das Problem.
Siehe Skizze. Es versteht sich von selbst, nicht beides !
Gruß oldmax

von A. B. (developer_x)


Lesenswert?

und so schnell ist der spuk vorbei ...

danke :D

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.