在AVR ATMega 169中配置PINB.4和PINB.5作为输入引脚并启用上拉?

时间:2011-11-19 20:45:55

标签: embedded avr

我想配置两个AVR蝶板,PORT D是第一个输出端口,PORT D的两个引脚连接到第二个端口B的B.4和B.5引脚AVR蝴蝶板。我还想在这些端口B引脚上启用上拉电阻。这种配置对于第二个AVR是否正确?有什么东西我不见了吗?

  //Init port pins
DDRB = 0x00;
    PORTB |= 0X30;

 //Enable pin change interrupt on PORTB
 PCMSK1 = 0X30;
 EIFR = 0XC0;
 EIMSK = 0XC0;

SIGNAL(SIG_PIN_CHANGE1) - PIN B.4的引脚更改中断 {..} SIGNAL(SIG_PIN_CHANGE2) - PIN B.5的引脚更改中断 {.....}

1 个答案:

答案 0 :(得分:1)

您已正确设置了PORT B,但稍微提高编码惯例并没有什么坏处。

DDRB&= ~(1<<PB0)|(1<<PB1);
PORTB|= (1<<PB0)|(1<<PB1);

除非我错过了解你想要完成的事情,否则我认为你的中断配置不正确。

PB4 PB5 分别对应 PCINT12 PCINT13

由于两者都对应于引脚更改中断使能1,因此您只希望启用该引脚。

EIMSK = (1<<PCIE1);

除非您尝试手动触发中断,否则实际上不需要设置 EIFR 。每当引脚发生变化时,该寄存器都会自动标记。

PCMSK1 中,您要设置 PCINT13 PCINT12

PCMSK1 |= (1<<PCINT12)|(1<<PCINT13);

这将启用相应引脚上的中断。

SIGNAL也是折旧的。 #include avr/interrupt.h并使用ISR。

ISR(PCINT1_vect){}

这两个Pin更改都将由此向量处理。

希望这可以解决一些问题。