Hallo,
die sache mit volatile ist getestet. Hat leider keine Verbesserung
gebracht. Interessanterweise kommt jetzt manchmal auch für a == -1.
Keine Ahnung woran das wieder liegen könnte.
Wenn ich nur diesen Code mache dann kommt die richtige Zahl (je nachdem
wieviele durchläufe, also wie groß tmp ist):
1 | ISR(INT1_vect)
|
2 | {
|
3 | {
|
4 | MCUCR = (1<<ISC10)|(1<<ISC11); //Umschalten auf steigende flanke
|
5 |
|
6 | //Working !!
|
7 | a <<= 1; //nach links schieben
|
8 | c =~ c; //bit invertieren
|
9 |
|
10 | if (c == -1) //inverter
|
11 | {
|
12 | a |= 1; //1 Schreiben
|
13 | }
|
14 |
|
15 | if (c == 0)
|
16 | {
|
17 | a |= 0; //0 Schreiben
|
18 | }
|
19 | c =~ c; //bit invertieren
|
20 | tmp++;
|
21 | }
|
22 | }
|
Das Problem ist das ist ja im Endefekt nichts anderes als das was oben
steht... Außer das oben noch ne IF Schleife ist in der die Zeit
abgefragt wird.
Ich werde mal den Flankenzähler Programmieren und dann bescheid geben ob
der Funktioniert. Bin grad irgendwie am verzweifeln.
Grüße
S3B1