工作以来一直有记录自己技术感悟的习惯,我用有道云笔记的,现在贴出来供大家批评指正,如有人看过之后有了些许帮助,在下荣幸之至。
开始调试就遇到了烧程序时:Flash地址:0x000000处,校验错误
“问题的根源在于我用的CV版本太老,向导是按照tiny13来生成的,但是我的芯片是tiny13A,刚才从笔记本上下了个仅次于最新版本的CV,里面既有tiny13又有tiny13A,我生成的hex文件通过AVR_fighter写入直接报错"Flash地址:0x000000处,校验错误"(因为fighter没有tiny13A这个型号).换成智峰的软件选择tiny13a就正常了。”
http://www.amobbs.com/thread-4770907-1-1.html
从阿莫论坛找个帖子果然是那个原因,
但是有出现了这个问题:校验内存中eeprom内容为空!
上面的问题都不复存在了,原因:问题在于AVR_fighter烧录软件的问题,有BUG,换成progisp.exe就好了。
关于ADC:配置好了各个寄存器就行,注意一点:ADCL和ADCH必须都进行一次读寄存器才可以进行下一次转换。
关于PWM:T/C 寄存器- TCNT0 是需要赋值并且自增的寄存器,输出比较寄存器A - OCR0A和
输出比较寄存器B - OCR0B 是只需要赋值等待TCNT0的变化来被比较的数值寄存器,
举例:TCCR0A=0x83; //COM01 COM00:1 0 比较匹配发生时OC0A 清零,计数到TOP 时OC0A 置位,例如:当TCNT0 = 69; OCR0A=70;时候,每次TCNT0都从69开始计数并且OC0A输出“1”,增加到70与OCR0A相等了所以OC0A输出“0”然后一直保持到TCNT0计数到“255”然后溢出、进入中断,中断函数就一条:给TCNT0置位TCNT0 = 69;(可以看出第一次执行的时候TCNT0值是未知的,所以第一个周期应该不准确,只有一个周期应该可以忽略)
所以总的来说就是:TCNT0从置位的值自增到OCR0A的过程输出“1”,自增到255的过程输出“0”,溢出、置位在从置位的值自增到OCR0A的过程输出“1”。。。。。循环
关于PWM的周期:大周期上是靠P62页的公式决定的,然而变换TCNT0的值也会影响周期(因为每个周期都是从TCNT0的置位的值增加到255,所以TCNT0越小周期越大)
完。2013年4月2日19:05:58
用户1553703 2013-7-19 14:23
用户1602177 2013-7-12 16:12