星星亮了夜空 发表于 2013-3-2 11:08:50

大家帮我看看mega16的程序哪出问题了呗

//PWM
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x01; //set count
OCR0= 85;//set compare
TCCR0 = 0x71; //start timer
cou=A/OCR0;
}

#pragma interrupt_handler timer0_comp_isr:iv_TIM0_COMP
void timer0_comp_isr(void)
{
counter++;//compare occured TCNT0=OCR0
}

if(counter>=cou)
{
   PORTA^=0b00000001;//取反PA0
   counter=0;
}
为什么实际运行时PA0高低电平时间不一样?

mingqiang 发表于 2013-3-2 12:02:44

按我的理解,这个中断优先级比较低,如果前面还有别的中断的话,是会影响到定时的准确性的。

lcw_swust 发表于 2013-3-2 12:06:22

if(counter>=cou)这一段代码位置在哪?

星星亮了夜空 发表于 2013-3-2 12:24:13

lcw_swust 发表于 2013-3-2 12:06 static/image/common/back.gif
if(counter>=cou)这一段代码位置在哪?

void main(void)
{
port_init();
init_devices();
while(1)
{
key_scan();
if(counter>=cou)
{
   PORTA^=0b00000001;
   counter=0;
}
if(counter>=cou)
{
   PORTA^=0b00000010;
   counter=0;
}
if(counter>=cou)
{
   PORTA^=0b00000100;
   counter=0;
}
if(counter>=cou)
{
   PORTA^=0b00001000;
   counter=0;
}
}
}

lcw_swust 发表于 2013-3-2 12:49:12

星星亮了夜空 发表于 2013-3-2 12:24 static/image/common/back.gif
void main(void)
{
port_init();


那就把它们放到counter++;后面看看

mingqiang 发表于 2013-3-2 14:01:26

同意楼上的

星星亮了夜空 发表于 2013-3-2 19:19:33

lcw_swust 发表于 2013-3-2 12:49 static/image/common/back.gif
那就把它们放到counter++;后面看看

#pragma interrupt_handler timer0_comp_isr:iv_TIM0_COMP
void timer0_comp_isr(void)
{
counter++;
if(counter>=cou)
{
   PORTA^=0b00000001;
   counter=0;
   }//compare occured TCNT0=OCR0
}

void main(void)
{
port_init();
init_devices();
key_scan();
//insert your functional code here...
}
是这样么?试了还是不行

星星亮了夜空 发表于 2013-3-2 19:21:28

mingqiang 发表于 2013-3-2 14:01 static/image/common/back.gif
同意楼上的

看看7楼呗,谢谢

lcw_swust 发表于 2013-3-2 20:59:18

星星亮了夜空 发表于 2013-3-2 19:19 static/image/common/back.gif
#pragma interrupt_handler timer0_comp_isr:iv_TIM0_COMP
void timer0_comp_isr(void)
{


是吗,while(1)去哪了呢?

星星亮了夜空 发表于 2013-3-2 21:32:03

lcw_swust 发表于 2013-3-2 20:59 static/image/common/back.gif
是吗,while(1)去哪了呢?

while(1)只括key_scan?

lcw_swust 发表于 2013-3-2 21:46:17

星星亮了夜空 发表于 2013-3-2 21:32 static/image/common/back.gif
while(1)只括key_scan?

对               

星星亮了夜空 发表于 2013-3-2 22:00:18

lcw_swust 发表于 2013-3-2 21:46 static/image/common/back.gif


还是不行
页: [1]
查看完整版本: 大家帮我看看mega16的程序哪出问题了呗