Autor Tema: Problema con el pin RB6 del pic 16f628  (Leído 3157 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado thepicburner

  • PIC10
  • *
  • Mensajes: 4
Problema con el pin RB6 del pic 16f628
« en: 14 de Septiembre de 2006, 05:20:04 »
Hola, después de romperme la cabeza con un programa para controlar un driver para motores paso a paso bipolares, y que el motor no me funcionara correctamente he descubierto que el pin rb6 de mi nuevo y recien adquirido 16f628a no se pone a nivel alto, aqui les dejo el programa que he hecho para comprobar que el funcionamiento del pic y funciona perfectamente todo menos la salida rb6 (que corresponde al #define OC):

#include <16f628a.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,LVP,PUT,NOBROWNOUT,MCLR
#use delay(clock=4000000)
#use standard_io(b)
#define EN1  48
#define EN2  49
#define OA  50
#define OB  51
#define OC  52
#define OD  53

void delay_ss(int n) {
  for (;n!=0; n--)
 delay_ms( 1000 );
}


void main() {
   disable_interrupts(global);
   set_tris_a(0b00000000);
   set_tris_b(0b11111111);
   output_high(EN1);
   output_high(EN2);

  do {
  output_high(OA);
  delay_ss(2);
  output_low(OA);
  output_high(OB);
  delay_ss(2);
  output_low(OB);
  output_high(OC);
  delay_ss(2);
  output_low(OC);
  output_high(OD);
  delay_ss(2);
  output_low(OD);

  } while (TRUE);
}

Si a alguien le ha passado algo parecido, o sabe que puede ser que me responda por favor porque me estoy volviendo loco poco a poco, poco a poco...  :shock:

Gracias de antemano! Un saludo desde Mallorca.

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Problema con el pin RB6 del pic 16f628
« Respuesta #1 en: 14 de Septiembre de 2006, 05:49:44 »
Hola Thepicburne, no se mucho de C pero estas configurando el RB6 como entrada (1=in, 0=out) por lo que nunca se pondrá a 1.
Saludos desde Almería, España

Desconectado thepicburner

  • PIC10
  • *
  • Mensajes: 4
Re: Problema con el pin RB4 del pic 16f628
« Respuesta #2 en: 14 de Septiembre de 2006, 06:20:29 »
He ido corriendo a cambiar el codigo!!!  :-/ Pensando en lo tonto que soy a veces, pero nada, funciona exactamente igual y me da el mismo problema! El programa queda asi:

#include <16f628a.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,LVP,PUT,NOBROWNOUT,MCLR
#use delay(clock=4000000)
#use standard_io(b)
#define EN1  48
#define EN2  49
#define OA  50
#define OB  51
#define OC  52
#define OD  53

void delay_ss(int n) {
  for (;n!=0; n--)
 delay_ms( 1000 );
}


void main() {
   disable_interrupts(global);
   set_tris_b(0b00000000);
   output_high(EN1);
   output_high(EN2);

  do {
  output_high(OA);
  delay_ss(2);
  output_low(OA);
  output_high(OB);
  delay_ss(2);
  output_low(OB);
  output_high(OC);
  delay_ss(2);
  output_low(OC);
  output_high(OD);
  delay_ss(2);
  output_low(OD);

  } while (TRUE);
}

Y sigue funcionando igual, con los pines OA,OB,OD correspondientes a RB2,RB3,RB5 que funcionan correctamente y el RB4 correspondiente a OC sin funcionar.

NOTA: HE PUESTO PROBLEMA CON EL RB6 y RESULTA que era RB4!!! Perdón! Es muy temprano todavia y ayer sali de copas! Pero vamos, el orden de los pines no afecta al problema que tengo que es el mismo! Gracias por tu corrección Manofwa!

Espero que sea una tonteria, sino tendre que cambiar el pic...  :shock:

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Problema con el pin RB6 del pic 16f628
« Respuesta #3 en: 14 de Septiembre de 2006, 06:41:51 »
Tienes razón, he visto al ayuda del CCS y la instrucción output_high() cambia automáticamente el trisB.

Pero lee esto de la ayuda:

Pin to read.  Pins are defined in the devices .h file.  The actual value is a bit address.  For example, port a (byte 5) bit 3 would have a value of 5*8+3 or 43.  This is defined as follows: #define PIN_A3 43

Lo que quiere decir que para configurar el puerto B pin 6 debe ser 6*8+6=54 y no 52 como en tu código. Ya te he dicho que no se mucho de C y aún menos de inglés pero ¿podría ser esto?


Saludos desde Almería, España

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Problema con el pin RB6 del pic 16f628
« Respuesta #4 en: 14 de Septiembre de 2006, 06:44:38 »
Ni caso a lo que te he dicho antes, leí en el primer post que querías cambiar el RB6 y de ahí mi confusión. El RB4 es el pin de programación en bajo voltaje y en los fuses lo tienes configurado en este modo. Prueba a cambiarlo a NOLVP en lugar de LVT.
« Última modificación: 14 de Septiembre de 2006, 06:52:17 por Manofwar »
Saludos desde Almería, España

Desconectado thepicburner

  • PIC10
  • *
  • Mensajes: 4
Cambiar el FUSE a NOLVP
« Respuesta #5 en: 14 de Septiembre de 2006, 07:09:38 »
Gracias Manofwar pero resulta que mi mierdecilla de programador no puede cambiar ese fuse porque justamente utiliza el LVP, ya que viene integrado en la placa que estoy utilizando y cuando intento usar #FUSE NOLVP me da un error de programación.

He pensado utilizar el puerto A, con el FUSE NOMCLR para poder utilizar el RA5 pero tengo entendido que ese pin solo se puede utilizar como entrada, me equivoco?

Si es asi solo me queda la opcion de hacer una chapuza con el cable plano de 10 pins que conecta el driver de los motores y la placa para saltarme el RB4, y utilizar los pines del rb0-3 y del rb5 al 6. O "the same procediment" en el puerto A con el p**o ra5...

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Problema con el pin RB6 del pic 16f628
« Respuesta #6 en: 14 de Septiembre de 2006, 07:57:17 »
Sí, el RA5 es sólo entrada. Sí no puedes usar otros pines tendrás que dedicarte al bricolage con el cable. :lol:
Saludos desde Almería, España


 

anything