Gast
#3896311
Hallo Leute, ich habe heute eine ISR in C++ implementiert, die alle 10µs ausgeführt werden soll (F_CPU = 16MHz). Die ISR funktioniert soweit ganz gut, aber beim Einlesen des PORTB (PINB) reagiert die if nicht, obwohl ich weiß (Oszi) dass das PINB1 garantiert 400µs auf 1 ist. CodeAusschnitt:
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 | |
bis case awaitingEcho: funktioniert alles sehr gut. Der TriggerPin wird gesetzt, beim nächsten Durchgang gelöscht. Und dann sollte auf das Echo gewartet werden um die Messzählung zu starten. Aber die if wird nie true! Aufgebaut mit: ATmega1284, die Adressen der Ports stimmen mit dem Datenblatt überein. Für das EchoPort wird PINB übergeben und EchoPin = 1. Hab ich hier einen Denkfehler?