Du musst erst das icp auseinanderfriemeln:
Offenbar verwendest du Interrupts. Das SREG mit cli() brauchst du, falls du PORTC oder PORTB in einer ISR änderst, damit die Änderungen nicht durch die Sequenz überschrieben werden.Code:#include <avr/interrupt.h> ... uint8_t sreg = SREG; cli(); uint16_t icp1 = ICP1; uint8_t portc = PORTC & 0xf0; uint8_t portb = PORTB & 0x0f; PORTB = portb | (icp1 & 0xf0); // bits 4..7 PORTC = portc | (icp1 & 0xf); // bits 0..3 SREG = sreg;
Lesezeichen