Hi.

- ATmega168
- AVR-Studio 4.12 SP1
- AVR-GCC 3.4.5
- AVR-DUDE 1.72 mit GUI 0.2.0

Ich Suche nach einer Möglichkeit, wie ich die oberen 4 Bit (7-4) eines Ports beschreiben kann, OHNE auf den unteren 4 Bit (3-0)/Pins Interrupts auszulösen..
Wozu?:.. Ich will das Input-Capture-Register auf einer LED-Zeile ausgeben (8 Stück).

Zuordnung der LED's zu den Pins/Ports: |PB7|PB6|PB5|PB4|PC3|PC2|PC1|PC0|

Weshalb diese Zerstückelung? Weil:...
- PB0 wird für den Input Capture Pin benötigt.
- Port C hat nur 7 Bit.
- Port D wird auch schon durch Interrupt belegt..

Die Auszugebende Variable ist folgendermassen definiert und wird durch Zuweisung aus dem ICR1 (Input-Capture-Register) gewonnen, bei einem solchen Interrupt:

volatile unsigned short int icp;
icp = ICR1;


Ports sind folgendermassen initiiert:
DDRB |= (1<<DDB7)|(1<<DDB6)|(1<<DDB5)|(1<<DDB4); /* PinB7-4 als AUSGANG */
DDRB |= (0<<DDB0); /* Eingang für ICP1 */
DDRC |= (1<<DDC3)|(1<<DDC2)|(1<<DDC1)|(1<<DDC0); /* PinC3-0 als AUSGANG */
DDRD |= (0<<DDD3)|(0<<DDD2); /* Eingänge für INT0 und INT1 */


Nun will ich die binäre Information der Variablen 'icp' auf den Pins 7-4 des Port B ausgeben und hab dies bisher folgendermassen getan:

PORTB = ~(icp);

Gibt es eine Möglichkeit, wie ich das Beschreiben der unteren 4 Bits von Port B bei dieser Zuweisung "schützen" kann, so dass dort garantiert keine Interrupts ausgelöst werden?
Ist dies schon mit Hilfe der Richtungsangabe im Data-Direction-Register erledigt?

Danke und Grüße
Nico