hast deine while-Bedingungen falsch gesetzt. Zuerst wartest du ja solange der Pin low ist. Also
Dann wartest du solange der Pin high ist:Code:while(!(PINB & (1<<PB2));
Außerdem würde ich das messen der Signallänge mit einem Timer machen. Einfach zwischen den beiden Schleifen den Timer auf 0 setzen und nach der zweiten Schleife den Timerstand auslesen. (musst natürlich den Prescaler so anpassen, dass das zur Signallänge passt und wahrscheinlich einen 16bit Timer benutzen)Code:while(PINB & (1<<PB2));
den Pullup an deinem Eingang kannst du weglassen (keine Ahnung obs einen Unterschied macht wenn du ihn anmachst, ich habs jedenfalls ohne gemacht und das funktioniert ohne Probleme.)







Zitieren

Lesezeichen