En liten reflektion är att
om de interna pull-up:erna på porten är aktiva så kommer spänningen på pinnarna inte vara 0 V vid öppen bygling utan ligga någonstans mellan 3,3 V och 0 V genom spänningsdelningen mellan internt och externt motstånd. Databladet säger att pull-up-värdet (RPU, sid 311 i databladet) ligger i intervallet 20-50k vilket ger en spänning i spannet på 0,65-1,1 V på pinnen med 10k pull-down externt (utan att ta hänsyn till toleranser). Högsta specade spänning för att kretsen garanterat ska tolka det som 0:a på ingången (VIL, sid 310) är 0.3*Vcc, d.v.s. nominellt 0.99 V i detta fall - då finns det en risk att du kör kretsen utanför spec. Nu lär det knappast ge några problem för din del men det känns ju onödigt.
Det finns flera bra sätt att undvika detta - här är några sätt (det finns nog fler) och det räcker med ett av dessa:
- Stäng av pull-up:erna genom PUD-biten i MCUCR-registret (om du inte behöver pull-up:er på någon pinne).
- Stäng av pull-up:er för de specifika pinnarna genom att sätta pinnarnas motsvarigheter i PORTB-registret till 0.
- Minska det externa motståndets värde. 8,6 kOhm ger teoretiskt max på 3,3*8,6/(20+8,6) = 0.99... V men med tanke på toleranser bör man välja ett lägre värde, typ max 7 k.
- Byt polaritet på din externa koppling så att du kör med byglingarna mot 0 V i stället för mot 3,3 V.
Gör du enligt sista punkten så kan du till och med skippa de externa motstånden då du kan köra med de interna pull-up:erna. Vill du att byglingarna ska ha samma mening/värde internt som nu så räcker det ju att invertera värdet när du läst det från pinnarna.
Som sagt så lär det inte spela någon roll om du gör det eller inte i detta fall men det kan vara bra att vara medveten om det potentiella problemet. Skulle du bygga en produkt som görs i stor serie kommer felet kanske/sannolikt dyka upp någonstans och det kan vara rent (lägg-till-lämpliga-kraftuttryck-här) hopplöst att hitta det!
Lycka till!