Hab die zweite Lösung nun übernommen, jedoch kommt es mir so vor, als
wäre der interne Pull-Up Widerstand defekt. Denn sobald ich den Schalter
einmal umgelegt habe, führt er alarm() aus, wenn ich ihn zurück schalte,
hört er aber nicht auf. Also sprich: PIND2 bleibt auf GND.
Der Pull-Up Widerstand wurde mit
aber korrekt aktiviert, oder nicht?
1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 |
|
4 | void alarm()
|
5 | {
|
6 | for (int k=0; k<1; k++) {
|
7 | for (int i=0; i<500; i++) {
|
8 | PORTD &= (0<<6);
|
9 | _delay_ms(10);
|
10 | PORTD |= (1<<6);
|
11 | _delay_ms(10);
|
12 | }
|
13 | _delay_ms(2000);
|
14 | }
|
15 |
|
16 | _delay_ms(5000);
|
17 | }
|
18 |
|
19 | int main(void)
|
20 | {
|
21 |
|
22 | // PortD6 (Buzzer) output, alles andere input
|
23 | DDRD |= (1<<PD6);
|
24 |
|
25 | PORTD |= (1<<PD2);
|
26 |
|
27 |
|
28 | while(1) {
|
29 | if ( !(PIND & (1<<PD2)) ) {
|
30 | alarm();
|
31 | }
|
32 | }
|
33 |
|
34 | return 1;
|
35 | }
|
Tut mir nochmals leid, dass ich euch zur späten Stunde mit meinen
Anfängerfragen quälen muss :/