Hallo,
ich hab irgend wo ein Denkfehler und finde ihn nicht.
Mein Kartenleser-Signal ist im Bild zu sehen.
Dieses bringt er auf die TX-Leitung, wenn ich einen Tag drauflege.
Ist dies der Fall, kommt als erstes eine fallende Flanke. Somit frage
ich PB5 auf low ab. Der Attiny soll dann, den Ausgang PB2 für 1sek auf
High setzten.
Macht er aber nicht. Statt dessen führt er die ganze Zeit das
geschriebene in der IF-Schleife aus und zieht beim Auflegen des Tags PB2
für ca. 2sek. auf low.
Sorry, bin ein Neuling was das Thema angeht.
Mein Code
1 | #include <avr/io.h>
|
2 | #include <stdint.h>
|
3 | #include <util/delay.h>
|
4 |
|
5 | int main(void)
|
6 | {
|
7 |
|
8 |
|
9 | _delay_ms(500);
|
10 | _delay_ms(500);
|
11 | _delay_ms(500);
|
12 | _delay_ms(500);
|
13 |
|
14 | DDRB |= (1<<PB2); // Ausgang
|
15 |
|
16 |
|
17 |
|
18 | while (1)
|
19 | {
|
20 | if (!( PINB & (1<<PINB5)) ) //Abfrage auf low
|
21 | {
|
22 | _delay_ms(100); //Warten biss das restliche Signal durch ist
|
23 | PORTB |= (1<<PB2); //LED an
|
24 | _delay_ms(500);
|
25 | _delay_ms(500);
|
26 | PORTB &= ~(1<<PB2); //LED aus
|
27 | }
|
28 | }
|
29 |
|
30 | }
|
Was mach ich falsch?
Danke für eure Hilfe.