新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > AVR单片机一些学习笔记

AVR单片机一些学习笔记

作者: 时间:2013-05-30 来源:网络 收藏

25、 DDRx=1,I/O口处于推挽输出工作方式,PORTn为1输出20mA电流,为0吸纳20mA电流。DDRx = 0,I/O口处于输入工作方式,将PINx中的电平读入到DB上(PORTn用来设置是否使用内部上拉电阻,1为使用,0为不使用)在SFIOR中有一位PUD,PUD=1全部I/O上拉电阻无效,PUD =0,上拉取决于PORTn的设置。

26、 使用I/O口时,一定要先配置I/O口。首先配置DDRx,确定I/O口是输入还是输出。根据实际情况,输入时需要配置是上拉还是下拉(上拉就是默认输入是高电平,下拉就是默认输入是低电平)。

27、 I/O口输入方式时,应该读取的是PINx的值。

28、 输出口操作:

PORTA |= (1

PORTA = ~(1 PORTAx) // 位置低

PORTA ^= (1

输入口操作:

PINA (1 PORTAx) // 位读取

29、 有三个外部中断(INT0,INT1,INT2),其中INT2只支持边缘触发

30、 满足中断条件,AVR硬件自动将相应的中断标志位置1,并且由硬件自动清除(仅对于部分中断有此功能,当然也可以手动软件清除,清除的方法是写1),硬件也同时自动清除I标志位(缺省不能进行中断嵌套,SEI将I置1,使能中断嵌套功能)。

31、 退出中断后,AVR至少要再执行一条指令后才能去响应其他被挂起的中断。

32、 中断响应至少需要4个CK才能开始运行中断向量表中的跳转指令(清I,清中断标志位,压栈PC,中断向量送入PC),至于要真正开始运行用户的代码,至少需要6~7个CK。中断返回RETI也需要4个CK(弹出PC,置SREG中的I为1)。

33、 在使能中断允许位之前,最好先将对应中断源的中断标志位清除,为了防止在使能时,会立马产生一次“多余”的中断。

34、 INT0,INT1支持四种形式的中断触发:上升沿,下降沿,任意电平变化,低电平(不带中断标志位,低电平并不影响INTF0和INTF1的值(保持为0))。INT2只支持异步的上升沿和下降沿触发(常用作唤醒MCU功能)。

35、 中断初始化步骤:配置中断触发类型(MCUCR,MCUCSR),使能对应的中断(GICR),清除对应的中断标志位(GIFR),使能全局中断(asm(“SEI”))。AVR STUDIO6中的中断写法:SIGNAL(xx){}(x为中断向量号)或者ISR(xx){}。

36、 T/C0和T/C2可产生PWM,频率发生器,外部事件计数器(仅T/C0),10位时钟预分频器,溢出和比较匹配中断源,允许用32.768kHz晶体作为独立的计数时钟源(仅T/C2)。

37、 时钟源和51单片机差不多:(CS[2:0]共八种选择),停止计数,上升沿或下降沿,10位预分频器(1/1,1/8,1/64,1/256,1/1024)。

38、 TCNT0(8位)寄存器用来存放计数数值,如果在计数器运行期间写入数值,那么在下一个定时时钟周期中会阻塞比较匹配(丢失一次TCNT0和OCR0的匹配操作)。

39、 OCR0中的数据会一直和TCNT0中的数值进行比较,如果匹配,将产生一个比较匹配的中断申请或者改变OC0的输出逻辑电平。

40、 TIMSK中的OCIE0(OutputCompare Interrupt Enable),TOIE(Timer Overflow Interrupt Enable)分别为比较匹配中断允许标志位和溢出中断允许位,当I被置位时,满足条件即可触发对应的中断。

41、 TIFR中的OCF0(OutputCompare Flag)和TOV0(Timer Overflow)分别为比较匹配标志位和定时器溢出标志位。

42、 TCCR中的WGM[1:0]决定T/C0的四种工作方式:普通模式,比较匹配时定时器清0,两种PWM模式。COM[1:0]比较匹配输出方式的作用取决于T/C0的工作方式。普通模式(WGM[1:0]=0):计数到0xFF会产生溢出中断,TOV0置1。比较匹配清0计数器CTC模式(WGM[1:0]=2):f=f(IO)/(2N(1+OCR0)),TCNT0和OCR0匹配,匹配后TCNT0清0重新计数,同时置OCF0为1,便于产生中断。在中断中改变OCR0的值,在OC0中可以输出可变的高低电平信号。快速PWM模式(WGM[1:0]=3):f=f(IO)/(256N),TCNT0从0计数到0xFF,然后重新开始计数,如果匹配OCR0则根据COM[1:0]中的设置值分别置位或者清0OC0,以此来输出PWM波形。相位可调PWM模式(WGM[1:0]=1):双向计数器,所以最高PWM频率比快速PWM模式慢了一半。

43、 T2定时器的分频系数与T0不同,注意区别。

44、 T1定时器在读取数据时,先读低八位,再读高八位。在写入数据时,先写高八位,再写低八位。就像对高位压栈一样。

45、 由于T1可以修改计数器的上限值(TOP),所以可以产生频率可变的PWM波形,而T0/T2定时器无法做到这一点。

46、 T1的工作模式由WGM1[3:0]决定,由此可以看出T1有16种工作模式。普通模式(WGM1[3:0]=0)。CTC模式(GWM1[3:0]=4或12)。快速PWM模式(GWM1[3:0]=5,6,7,14,15)有两路同时输出,OC1A,OC1B。

47、 T1输入捕捉功能:触发信号由ICP1输入或者又模拟比较器AC0输入。触发时,TCNT1的值被写入到ICR1中置位ICF1。此外,ICNC(Input Capture NoiseCanceler)为噪声抑制功能,实现原理就是延迟4个CK检测电平变化,如果连续4个CK不变,则认为是真正的触发。ICES(Input Capture Edge Select)为触发边缘的选择,0为下降沿,1为上升沿。

48、 模拟比较器(正极AIN0和负极AIN1),SFIOR(Special Funciton IO Register)中的ACME(Analog Comparator Multiplexer Enable)模拟比较多路使能,置1并且ADC失能,比较器负极接到ADC的多路开关。置0,比较器负极接到AIN1。ACSR(AnalogComparator Control and Status Register)模拟比较器控制和状态寄存器。ACD(AnalogControl Disable)置1时,切断模拟比较器的开关。在改变设置时,应先失能ACIE,禁止产生模拟器比较中断。ACO(Analog Comparator Output)模拟比较器输出。ACIS[1:0](AnalogComparator Interrupt Select)模拟比较器中断模式选择。



评论


相关推荐

技术专区

关闭