使Pic Port成为floatig

| 我有一个图片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,然后释放并继续执行我的程序的其余部分时,电路将最后一次已知的电压保持几秒钟而不会下降。 特殊电路仅由一些电容器和一个OP构成。 所以...这是硬件故障!抱歉     

要回复问题请先登录注册