Ich habe diesen Hall-Schalter verbaut:
http://www.diodes.com/datasheets/AH1802.pdf
Er wird bei 3.3 V betrieben.
Output geht an Inputpin von AVR (interner Pull-up).
Das Ding schaltet aber nicht richtig. Wenn ich einen Magneten von Hand
schnell drüberbewege (auch ganz nahe mit starkem Neodym), reagiert er
nur etwa jedes fünfte mal. Bei langsamer Bewegung funkionierts immer.
Mein Programm hat nichts als eine leere Hauptschleife und eine
Interrupt-Routine:
1 | // hall-switch
|
2 | ISR (PCINT0_vect)
|
3 | {
|
4 | // test
|
5 | if ((PINB & (1 << HALLSWITCH)) != 0)
|
6 | PORTB |= (1 << BLANK); // turn off lights
|
7 | else
|
8 | PORTB &= ~(1 << BLANK); // un-blank
|
9 | }
|
Ich dachte Hall-Schalter können problemlos im KHz-Bereich schalten. Wie
habe ich die Timing-Infos auf Seite 3 des Datasheets zu verstehen?
Wäre nett wenn mir jemand auf die Sprünge helfen könnte.