Hallo zusammen,
ich verzweifel gerade daran einen Codierschalter abzufragen. Hier das
Datenblatt des Schalters:
http://www.produktinfo.conrad.com/datenblaetter/700000-724999/705400-da-01-ml-Printcodierschalter_P60A_701_de_en.pdf
Der Schalter ist an einem ATTiny45 an PB0-3 angeschlossen.
Je nach Stellung des Schalters soll PB4 unterschiedlich lange auf High
geschaltet sein. Das ganze Timing funktioniert auch schon.
Allerdings klappt die Abfrage des Schalters noch nicht. Einzelne
Einstellungen alleine funktionieren, aber nicht alle zusammen.
So habe ich es bisher versucht:
1 | DDRB = 0b00010000;
|
2 | PORTB = 0b00010000;
|
3 |
|
4 | uint8_t end = 0;
|
5 |
|
6 | if (PINB & 0x01) {
|
7 | end = 5;
|
8 | } else if (PINB & 0x02) {
|
9 | end = 10;
|
10 | } else if (PINB & 0x03) {
|
11 | end = 15;
|
12 | } else if (PINB & 0x04) {
|
13 | end = 20;
|
14 | } else if (PINB & 0x05) {
|
15 | end = 25;
|
16 | } else if (PINB & 0x06) {
|
17 | end = 30;
|
18 | } else if (PINB & 0x07) {
|
19 | end = 35;
|
20 | } else if (PINB & 0x08) {
|
21 | end = 40;
|
22 | } else if (PINB & 0x09) {
|
23 | end = 45;
|
24 | }
|
25 |
|
26 | while (1) {
|
27 | ...
|
28 | }
|
Leider überschreiben sich die Abfragen irgendwie gegenseitig.
Kann mir vielleicht jemand weiterhelfen? Ist bestimmt eigentlich eine
einfache Sache, aber ich komm grad echt nicht weiter.
Vielen Dank.
Gruß, Gerry