搜索
bottom↓
回复: 7

请问马老师,关于Mega8的T/C2匹配中断后,OC2输出的电平问题?

[复制链接]

出0入0汤圆

发表于 2008-4-10 23:09:39 | 显示全部楼层 |阅读模式
马老师您好,我用mega8的T/C2的CTC模式,并在匹配时翻转OC2的输出电平,结果出来的方波是+-2.5V,为什么不是0和5V呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2008-4-11 00:17:07 | 显示全部楼层
补充:就是您主编的《AVR单片机嵌入式系统原理与应用实践》一书中,P257例8.5,用示波器交流状态看到输出的方波为什么是+-2.5V的?而不是0或5V?

出0入0汤圆

发表于 2008-4-11 01:14:00 | 显示全部楼层
为什么用交流状态?

出0入0汤圆

 楼主| 发表于 2008-4-11 10:01:42 | 显示全部楼层
示波器的直流和交流耦合状态都有示数,交流耦合的示数是稳定的,而且显示的频率是我设定需要的方波频率,而直流示数确实是0/5V,但是不稳定,也不知道频率多少。我原先的意图是想把OC2输出的0/5V脉冲信号,输入到TC4427,利用TC4427(输入必须为正)的驱动能力把脉冲幅度提高,结果把OC2接到TC4427的输入端后不久,发现Mega8烧坏了,然后再看OC2的输出波形,才发现原来Mega8会输出负电平,试了一下您书中的例8.6输出的pwm波也是+-2.5V,百思不得其解,希望马老师指点一下怎么回事?如果要实现我上面所说的功能,是不是只能通过不断改变普通I/O口的电平实现?

出0入0汤圆

 楼主| 发表于 2008-4-11 11:37:59 | 显示全部楼层
#include <delay.h>
#include <mega8.h>
unsigned char temp=0xe1;
#define key_up     PIND.2
#define key_down   PIND.3
// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void)
{
    delay_ms(20);
    if(!key_up)
    {
        //while(key_up)  ;
        //OCR2 = --temp;
        ++temp;
        if(temp <= 0xf1) TCNT0 = temp;
        else
        {
            temp = 0xf1;
            TCNT0 = temp;
        }
    }

}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
    delay_ms(20);
    if(!key_down)
    {
        //while(key_down)  ;
        //OCR2 = ++temp;
        --temp;
        if(temp >= 0xdf) TCNT0 = temp;
        else
        {
            temp = 0x1f;
            TCNT0 = temp;
        }
    }

}

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{

    TCNT0 = temp;
    PORTB.3 = ~PORTB.3;

}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x08;


// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x03;
TCNT0=temp;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Falling Edge
GICR|=0xC0;
MCUCR=0x0A;
GIFR=0xC0;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here

      };
}

我改成上面这个程序也是,从PB3输出的有直流和交流两种成分,交流脉冲的频率是我想要的,可是是+-2.5V, 直流也是脉冲,可是频率不知道多少?

出0入0汤圆

发表于 2008-4-11 18:09:07 | 显示全部楼层
AVR不会输出负电平.

你的电子基础实在不敢恭维,示波器也不会使用.数字逻辑实验中没有学习过如何测量0-5V脉冲信号?

用直流看输出信号,将示波器的触发调到0V以上就能看到稳定的0-5V的脉冲波,频率也可测量.

出0入0汤圆

 楼主| 发表于 2008-4-12 10:52:41 | 显示全部楼层
不好意思马老师,我不是学电子出身,所以电子基础真是半桶水,但上述问题不是我不会用示波器的原因,我使用的是Tektronix的数字示波器,另外我又用89c51试了一下实现同样功能的程序,89c51也出现同样的情况,后来问了电子系的同学,同学把高电平和低电平的变换时间分别延长到200ms之后(见下面程序),发现示波器上一个个类似电容充放电的过程的波形,而且有正负,猜想可能是单片机引脚内部电容所致或是数字示波器有延时?后来换了一台IWATSU的模拟示波器测后,就不存在上述问题了,仍然非常感谢马老师的耐心解释。
#include <delay.h>
#include <mega8.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T

DDRB=0x08;



while (1)
      {
      PORTB=0x00;   
      delay_ms(200);
      PORTB=0x08;   
      delay_ms(200);
      };
}

出0入0汤圆

发表于 2008-4-12 14:16:55 | 显示全部楼层
请使用直流档看波形!!

示波器的交流档内部有隔直电容.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 14:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表