Hola, (si, estoy vivo!) tengo un problema, hace rato que no tocaba los PIC y estoy un poco olvidado. El tema es que tengo un proyecto de unas luces para un barral y lo estoy haciendo con un 16f628a
Puntualmente no estoy pudiendo activar RA3 y RA4 usando los PORTAbits. Es muy raro, pero es así. Si pongo PORTA = 0b00011000; los 2 pines se ponen en 1. Pero si pongo PORTAbits.RA3=1; PORTAbits.RA4=1; no funciona, se van a un nivel de tensión raro, RA3 a 1.16V y RA4 a 0.6 V
Este es mi código:
#include <xc.h>
#pragma config MCLRE = OFF, CP = OFF, CPD = OFF, BOREN = OFF, WDTE = OFF
#pragma config PWRTE = OFF, FOSC = INTOSCIO, LVP = OFF
#define _XTAL_FREQ (4000000UL)
#define LED PORTBbits.RB3
#define CH1 PORTAbits.RA3
#define CH2 PORTAbits.RA4
#define CH3 PORTBbits.RB0
#define CH4 PORTBbits.RB1
#define CH5 PORTBbits.RB2
void efecto1(void);
void efecto2(void);
void efecto3(void);
void efecto4(void);
void main ()
{
TRISB = 0b11110000; // Puerto B, pines RB0..3 como salida
TRISA = 0b11000000; // Ra3 y 4 salidas.
PORTA = 0;
PORTB = 0;
while (1) // Bucle infinito
{
// LED = 0; // Apago pin RB0
// CH1 = 1;
// CH2 = 1;
// PORTA = 0b00011000;
// CH3 = 1;
// CH4 = 1;
// CH5 = 1;
PORTAbits.RA3 = 1;
PORTAbits.RA4 = 1;
//PORTA = 0xFF;
// efecto1();
// efecto1();
// efecto1();
// efecto1();
// efecto1();
// efecto1();
// efecto2();
// efecto2();
// efecto2();
// efecto2();
// efecto2();
// efecto2();
// LED = 1; // Apago pin RB0
}
}
Con el puerto B no tengo ese problema en ningún pin. Quizás algún fusible que no estoy configurando?
Por las dudas, RA4 tiene una PU de 10K (por ser OD) y a la salida de los pines tengo una R de 100 ohm atacando el gate de un mosfet logico y del gate a GND tengo una R de 47K
Saludos y gracias!