Buttondruck Abfragen - Assembler - aber Magnetsensor^^

OP #3053887
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
#3053896
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
Gast #3054016
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
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.