Hi inka,
Der if-Befehl blockiert ja so nicht, sondern führt die leere {} nur 1x aus, wenn PC5 high ist.offensichtlich haperts aber gerade daran , weil er nie in die abfragenschleife
Code:
blockierend:
loop_until_bit_is_set(PINC, PC5);
nicht blockierend:
if ( PINC & (1<<PINC5) )
{}
Wenn man warten muss, bis PC5 high wird:
// PC5 ist LOW!
while ( !(PINC & (1<<PINC5)) ) {nop();} // Warte so lange wie PC5 LOW ist!
// Jetzt ist PC5 HIGH geworden!
Übrigens: (1 << PINC5) ist in der RP6Control.h definiert als IO_PC5.
-> IO_PC5 = 1 << PINC5 = 0b00000001 << 5 = 0b00100000 = 32
Damit reicht: ( PINC & IO_PC5 )
Lesezeichen