> Nej inte förväntat om man använder normal logik.
Om man RTFM så är det förväntat och "as documented".
> Om man ändrar en bit så påverkar man även en annan bit är inte
> vad man förväntar sig av en instruktion.
Jo, i detta fall är det det. Om man har lite koll på vad man håller på
med. Samt läser på lite, som sagt.
Men visst, just detta fenomen är en vanlig "nybörjar fälla". Man råkar ut
för det en gång, sedan kan man hålla på 10 år utan att det händer igen.
> Citat: 'The state of the ANSx bit has no effect on the digital
> output function of its corresponding pin.'
Exakt. Och det stämde ju också, eller hur!
Dina kommandon ändrade ju den aktuella pinnen helt korrekt (även innan).
Två meningar senare i samma stycke som ditt citat var hämtat från, står det:
> Pins with the ANSx bit set always read ‘0’, which can cause unexpected
> behavior when executing read or write operations on the port due to the
> read-modify-write sequence of all such operations.
Och det var ju precis det som du såg.
I kapitel "4.5 PORTC and TRISC Registers" (vilket ju är centralt om man håller
på med PORTC) står det :
> All write operations are read-modify-write operations. Therefore, a write to
> a port implies that the port pins are read, this value is modified and then
> written to the PORT data latch.
Och i den lilla gråa rutan (den är grå och det står "Note:" i fet stil av en anledning)
står det :
> Note:
> The ANSEL and ANSELH registers must be initialized to configure an analog
> channel as a digital input. Pins configured as analog inputs will read ‘0’.
Så jag tycker nog att informationen som sådan finns där. Problemet som
nybörjare är så klart att fatta att en BCF/BSF och *läser* från porten.
