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