【问题标题】:Make Pic Port floatig使 Pic 端口浮动
【发布时间】:2011-04-15 22:36:16
【问题描述】:

我有一张 18f87j50 的照片。在我的一个数字 I/O 上,比如说 RH7,我想用它来给我一个 0-3,3V 的信号。我将其配置为输出并产生 PWM,因此我在示波器上读取 2V。然后我尝试“释放”端口,使其浮在那里,在这个 2V 电平。当“释放”时,我将端口作为输入,并确保禁用实习生上拉。

但是我真的没有成功,看起来它很快就浮回到 3.3V,几乎就像上拉仍然会启用一样。我的港口没有负载。

下一步是在此处放置一个运算放大器以产生 0-10V 信号。

我这样做对吗? -> 端口输出,pwm 信号到所需电平,禁用内部上拉,使端口输入浮空可能启动。

【问题讨论】:

  • 浮动输入具有未定义的行为。如果这与特定零件的设计有关,也可能与特定零件的制造公差有关。即使你让它以你​​想要的方式工作,你也不能保证它可以与更高版本的芯片一起工作,一个来自不同批次的芯片,另一个来自同一批次的芯片,甚至是不同的“相同”芯片引脚在同一芯片上。我建议按照@janm 的建议保持 PWM 开启。
  • 应该在 Electronics.SE 上。

标签: c# pic processor


【解决方案1】:

如果您将引脚设置为输入,它将不会处于任何特定电压。这种方法行不通。

如果您想要一个可控的电压电平,您唯一的选择(不使用额外硬件)是使用 CVREF 引脚,该引脚可以按照数据表第 24 章的说明进行控制。

顺便说一句,我不确定您如何在数字输出上看到 2V(假设您的电源是 3.3V)。

【讨论】:

  • 唯一与比较器有关的空闲引脚是我的 RA5 C2INA 或 RA4。它们有用吗?
  • @Christian:如果您不能使用硬件 PWM 引脚,也不能使用 CVREF 模拟输出,您可以使用多个引脚和一堆电阻创建一个简单的 DAC(参见例如opamp-electronics.com/tutorials/digital_theory_ch_013.htm)。它不会很好,但对于您的应用程序来说可能已经足够好了(不管是什么!)。
【解决方案2】:

如果要保持PWM产生的2V电平,不能关闭PWM。

我不确定你想通过“释放”端口来实现什么。

硬件方面的东西我帮不上忙...

评论后更新:

如果可以,请使用一个您有硬件支持的引脚,以便 PWM 执行您想要的操作。如果您无法更改布局,则可能需要继续在软件中进行。我不知道你的芯片上有哪些硬件支持 RH7 可以做到这一点,PWM 的分配因处理器引脚数而异。

这是我用来在基于 PIC18F87J60 的产品中配置 PWM 的一些代码。设置完成后,就不再涉及软件了。

/*
 * Configure the powersupply to the external serial port.  To do this,
 * we configure a PWM to control the isolated 3V power supply.
 */

TRISC1 = 1;
TRISC2 = 1;

PR2 = 0xFF;
CCP1CON = 0x0c;     /* PWM mode, active high, single output */
CCP2CON = 0x0e;     /* PWM mode, active low, single output */
CCPR1L = 0x80;      /* 50% duty cycle */
CCPR2L = 0x80;      /* 50% duty cycle */
ECCP1AS = 0;        /* auto shutdown off */
ECCP2AS = 0;        /* auto shutdown off */
PIR1bits.TMR2IF = 0;

T2CON = 0x04;       /* Enable T2 timer, prescale and postscale 1:1 */

while (!PIR1bits.TMR2IF)
    ;

TRISC1 = 0;
TRISC2 = 0;

【讨论】:

  • 因为我在那个端口上没有任何硬件 PWM 寄存器,所以我必须把它变成软件。并且要在我的主代码中持续维护 pwm,它将大大中断我的程序。所以这个想法是让pwm突发然后放手。我以前听说过这个......但可能是运算放大器输入端口之一使浮动。
【解决方案3】:

实际上,当我第一次写这个问题时,我忘了提到我有一个直接连接到端口输出的特殊电路。当重新释放 pwm 时,它包含该电路保持特定电压电平几秒钟。

第一个电路设计不佳,导致它无法正常工作,并且一旦 pwm 被杀死,电压电平就会下降。

现在可以了。当 pwming 在一个循环内创建一个 2 电压输出 1ms,释放然后继续我的程序的其余部分时,电路将最后一个已知电压保持几秒钟而不会下降。

特殊电路只是由一些电容器和一个OP组成。

所以...这是硬件故障!很抱歉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 2016-04-20
    相关资源
    最近更新 更多