Gast
#3197069
Hallo, Vorweg: ich habe diesen Artikel hier gelesen: http://www.mikrocontroller.net/articles/Bitmanipulation#Standard_C Nun habe ich an meinem Atmega8 folgendes "Problem": PB0 dient für das Input Capture, Pullup aktiviert PB1-PB6 hängt ein Darlington Array PB7 ist unbenutzt (Pullup aktiviert) Der Darlingten Array wird je nach Programmereignis teilweise an und ausgeschaltet, d.h. PB1 bis PB6 werden je nachdem zufällig verändert. Angenommen die Kombination lautet bspw.: (1) PB1 high PB2 high PB3 low PB4 low PB5 high PB6 low Im nächsten Durchlauf der Hauptschleife soll es dann so aussehen (2) PB1 high PB2 low PB3 low PB4 high PB5 high PB6 high Die Änderung bzw. der Zustand des Darlington Arrays ist in einer Variable gespeichert, z.B. für (1) so: 0b0010011 Durch ein linksschieben würde ich es auf die Stellen platzieren, wie auch der Port gesetzt werden soll: 0b0100110 Nun habe ich aber das Problem, das PB0 und PB7 die Pullups aktiviert sind, d.h. hier eigentlich eine 1 steht. Wie schriebe ich das wieder auf den Port-Ausgang am besten zurück ohne PB0 und PB7 zu ändern? Als Anfänger würde ich jetzt noch in dieser Variable durch Bitmanipulation PB0 und PB7 auf 1 setzen und dann auf den Port komplett zurückschreiben. Oder wie macht man das am geschicktesten? Martin