Hallo, wenn ich die o.g. Funktion benutze, kehrt selbige nicht mehr zurück:
1 | loop_until_bit_is_set(PINB, PB6); |
Der Pegel an PB6 (von aussen) ist vor Aufruf der Funktion auf low, und geht ca. nach 1 ms auf high (mit Logicanalyer gemessen). Ersetzte ich diese Funktion durch
1 | uint32_t i; |
2 | for (i = 0; i < 100000; i++) |
3 | {
|
4 | if (PINB & (1<<PB6)) |
5 | break; |
6 | }
|
funktioniert alles wie gewollt. Die Schleife wird in dem Moment verlassen, wenn PB6 auf high geht. Kann das jemand erklären ? Gruß Stefan