Hallo,
Ich bin am herumexperimentieren mit einem Taster. Hier erst mal mein
Code. Danach das komische Problem
1 | #ifndef F_CPU
|
2 | #define F_CPU 16000000UL // 8 MHz clock speed
|
3 | #endif
|
4 |
|
5 | #include <avr/io.h>
|
6 | #include <util/delay.h>
|
7 |
|
8 | int main(void)
|
9 | {
|
10 |
|
11 | DDRA = 0x00; // pin 1-7 an port A auf eingang
|
12 |
|
13 | while(1)
|
14 | {
|
15 | if(PINA & (1<<PA0) == 1) //button an pin pb0 ????
|
16 | {
|
17 | PORTD |= (1<<PD0); //LED an PD0 ein
|
18 | _delay_ms(100); //kurzes delay
|
19 | PORTD &= ~(1<<PD0); //LED off
|
20 | }
|
21 | }
|
22 | }
|
Wenn ich das tue dann Funktioniert es:
if(PINA & (1<<PA0) == 1)
Wenn ich aber den Taster auf Pin2 setze :
if(PINA & (1<<PA1) == 1)
Dann gehts nicht? Oder hab ich da etwas falsch verstanden? (taster
danach natürlich am pin 2 angehängt)
Auf dieses Problem bin ich gestossen nachdem ich 2 Taster an Port B
angeschlossen hab und 2 versch. LED's an PortD ansteuern wollte. Ich
dachte erst ich mach etwas falsch mit einem bit setzen.
1 | #ifndef F_CPU
|
2 | #define F_CPU 16000000UL // 8 MHz clock speed
|
3 | #endif
|
4 |
|
5 | #include <avr/io.h>
|
6 | #include <util/delay.h>
|
7 |
|
8 |
|
9 |
|
10 | int main(void)
|
11 | {
|
12 |
|
13 | DDRB = 0x00; //Makes all pins of PORTD input
|
14 |
|
15 | while(1)
|
16 | {
|
17 | if(PINB & (1<<PB0) == 1) //button an pin pb0
|
18 | {
|
19 |
|
20 | PORTD |= (1<<PD0); //LED an PD0 ein
|
21 | _delay_ms(100); //kurzes delay
|
22 | PORTD &= ~(1<<PD0); //LED off
|
23 | }
|
24 |
|
25 | if(PINB & (1<<PB1) == 1) //button an pin pb1
|
26 | {
|
27 |
|
28 | PORTD |= (1<<PD7); //LED an PD7 ein
|
29 | _delay_ms(100); //delay
|
30 | PORTD &= ~(1<<PD7); //LED off
|
31 | }
|
32 |
|
33 |
|
34 | }
|
35 | }
|
versteh ich das richtig dass ich im 2.ten IF ein anderes bit setzen
muss?
1 | if(PINB & (2<<PB1) == 1) ->anderes/falsches bit?
|
2 | {
|
3 |
|
4 | PORTD |= <<PD7); //LED an PD7 ein (und hier?)
|
5 | _delay_ms(100); //delay
|
6 | PORTD &= ~(1<<PD7); //LED off (und hier?)
|
7 | }
|