Hi!
Bin nach wie vor Anfänger und hab eine kurze Frage:
Ich hab vor, die Blinker von meinem Motorrad mit Tastern ein- und
auszuschalten (mit ATTiny 2313). Das Blinken hab ich noch nicht drin.
Einschalten der Blinker über die jeweiligen Richtungstasten (hier
Eingang PB0 und PB1).
Ausschalten über einen Tastendruck einer beliebigen Taste (von den 2).
Ich hab 4 Zustände abgefragt (Blinker ein: Taste drücken, Taste
loslassen, Blinker aus: Wieder Taste drücken, Taste loslassen)
Problem:
Einschalten geht mit beiden Tastern wie erwartet, aber ausschalten kann
ich nur über den Eingang PB0.
Warum?
Danke!!
#include <avr/io.h>
volatile int i=0;
int main (void){
DDRB=0x00;
PORTB=0xfc;
DDRD=0xff;
PORTD=0x00;
while(1){
if (i==0){ //BLINKER EIN
if (PINB & (1<<PB0)){
PORTD |= (1<<DDD0);
i=1;
}
if (PINB & (1<<PB1)){
PORTD |= (1<<DDD1);
i=1;
}
}
if ((i==1)&(!(PINB&0x03))){//Taster los1
i=2;
}
if ((i==2)&(PINB&0x03)){//BLINKER AUS
PORTD &= ~((1<<PD0)|(1<<PD1));
i=3;
}
if ((i==3)&(!(PINB&0x03))){//Taster los2
i=0;
}
}
}
Gast
#2217939
Mach es doch mal hübsch, und ein paar Kommentare dazu. So z.B.:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
Was passiert, wenn Du die Änderungen bezüglich & und && übernimmst?
DANKE DANKE, jetzt gehts. Das && wars wirklich! Ich hab mich nach der AVR-GCC Anleitung gehalten, aber da hab ich über && nichts gelesen (ansonsten toll verständlich).
Gast
#2217955
Gerne. :-)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.