C# 使Pic端口浮动

C# 使Pic端口浮动,c#,pic,processor,C#,Pic,Processor,我有一张图18f87j50。在我的一个数字I/O,比如RH7,我想用它给我一个0-3,3V的信号。我将其配置为输出并产生PWM,因此我在示波器上读取2V。然后我尝试“释放”端口,使其在2V电平下浮动。“释放”时,我将端口作为输入,并确保实习生上拉被禁用 但我真的没有成功,它看起来像是非常快地浮回3.3V,几乎在上拉仍将启用的情况下。我在港口没有货物 下一步是在那里放置一个运放,以产生0-10V信号 我这样做对吗?->端口输出,将pwm信号设置为所需电平,禁用内部上拉,使端口输入浮动,以便可以启动

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

但我真的没有成功,它看起来像是非常快地浮回3.3V,几乎在上拉仍将启用的情况下。我在港口没有货物

下一步是在那里放置一个运放,以产生0-10V信号


我这样做对吗?->端口输出,将pwm信号设置为所需电平,禁用内部上拉,使端口输入浮动,以便可以启动。

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

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


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

如果您想保持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停止后使电压水平下降

现在它起作用了。当pwming在一个回路中产生一个2电压输出1ms,释放,然后继续我的程序的其余部分时,电路保持最后一个已知的电压几秒钟而不下降

这个特殊的电路就是由一些电容器和一个运算放大器组成的


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

浮点输入具有未定义的行为。如果这与特定零件的设计以及特定零件的制造公差有很大关系。即使你让它以你想要的方式工作,你也不能保证它能与更高版本的芯片一起工作,一个来自不同批次,另一个来自同一批次,甚至是同一芯片上不同的“相同”引脚。我建议按照建议保持PWM打开,be@janm.应该在Electronics.SE上。因为我在该端口上没有任何硬件PWM寄存器,所以我必须使其成为软件。为了在我的主代码中持续保持pwm,它会严重中断我的程序。因此,我们的想法是使pwm脉冲串,然后让它去。我以前听说过这个。。。但可能是运算放大器的输入端口使比较器产生了抖动。唯一与比较器有关的自由引脚是我的RA5 C2INA或RA4。它们可用吗?@Christian:如果你不能使用硬件PWM引脚,也不能使用CVREF模拟输出,你可以使用几个引脚和一组电阻器创建一个简单的DAC(参见示例)。它不会很好,但对于您的应用程序来说可能已经足够好了(不管是什么!)。