Autor Tema: Activar varias salidas a la vez??? 16f628  (Leído 2265 veces)

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

Desconectado KDN

  • PIC10
  • *
  • Mensajes: 2
Activar varias salidas a la vez??? 16f628
« en: 28 de Febrero de 2009, 16:42:11 »
Bien, mi problema es el siguiente en este programa:

AllDigital  'deshabilito el ADC
TRISA = %11111111  'puerto A como entrada
TRISB.0 = 1  'pin RB.0 in1
TRISB.4 = 0  'pin RB.4 out clk
TRISB.3 = 0
TRISB.5 = 0[/color]
'------declaro variables
Dim ir As Byte
Dim i As Byte
'------asigno variables
ir = 0
PORTB.4 = 1
PORTB.3 = 0
PORTB.5 = 0
'-----programa principal
main:
If PORTB.0 = 1 Then
      WaitMs 120  'antirebote
      If PORTB.0 = 1 Then
         ir = 1
      Endif
Endif

If ir = 1 Then
   PORTB.3 = 1  'BOMBA Off
   PORTB.5 = 1
   WaitMs 10
   For i = 1 To 24 Step 1
      PORTB.4 = 0
      WaitMs 10
      PORTB.4 = 1
      WaitMs 100
   Next i
Endif
ir = 0
Goto main
End [/font]

Simulando funciona todo OK.

Con el pic real estoy trabajando con salidas en serie r+led,pues bien con el siguiente programa se comporta de una forma extraña (como si lo hiciera rapido o no funciona) y si elimino del programa una salida:

AllDigital  'deshabilito el ADC
TRISA = %11111111  'puerto A como entrada
TRISB.0 = 1  'pin RB.0 in1
TRISB.4 = 0  'pin RB.4 out clk
TRISB.3 = 0
'------declaro variables
Dim ir As Byte
Dim i As Byte
'------asigno variables
ir = 0
PORTB.4 = 1
PORTB.3 = 0
'-----programa principal
main:
If PORTB.0 = 1 Then
      WaitMs 120  'antirebote
      If PORTB.0 = 1 Then
         ir = 1
      Endif
Endif

If ir = 1 Then
   PORTB.3 = 1  'BOMBA Off
   WaitMs 10
   For i = 1 To 24 Step 1
      PORTB.4 = 0
      WaitMs 10
      PORTB.4 = 1
      WaitMs 100
   Next i
Endif
ir = 0
Goto main
End

El pic real funciona perfectamente, se que puede parecer una tonteria pero llevo varios dias hasta que he determinado que lo que falla es que hayan mas de 2 salidas, y esto no tiene ningun sentido, (o sí?).
Gracias y todos los consejos que puedan darme seran muy agradecidos.

Desconectado KDN

  • PIC10
  • *
  • Mensajes: 2
Re: Activar varias salidas a la vez??? 16f628
« Respuesta #1 en: 28 de Febrero de 2009, 16:47:18 »
Por si sirve de algo programo con el PIC Basic IDE y Winpic8000

Puede ser un tema del oscilador interno?, que es el que uso.
« Última modificación: 28 de Febrero de 2009, 16:49:41 por KDN »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Activar varias salidas a la vez??? 16f628
« Respuesta #2 en: 28 de Febrero de 2009, 17:58:10 »
Esta versión la he probado corriendo sobre la placa EBasic y funciona OK.
El micro que he utilizado es el 16F628A ya que no tengo ningún 16F628.
Una vez que lo compiles con el PSI podrás ver la configuración de BIT.
También probé a activar la salida de reloj externa y, pude verificar que
genera una frecuencia de 1Mhz., como esta frecuencia es osc.interno/4
se deduce que el micro queda configurado por defecto para trabajar a 4Mhz.

'******************** PIC16F628A**********************
'----- Configuración de BIT
Define CONF_WORD = 0x3f10
Define CLOCK_FREQUENCY = 4
'----- Configuración módulos I/O y módulos generales
AllDigital  'deshabilito el ADC
TRISA = %00000000  'puerto A como salidas, por defecto
TRISB = %00000000  'Puerto B como salidas, por defecto
'_____ Configuración de pin utilizados
TRISB.0 = 1  'pin RB.0 in1
TRISB.4 = 0  'pin RB.4 out clk
TRISB.3 = 0
TRISB.5 = 0
'------ Declaro variables
Dim ir As Byte
Dim i As Byte
'------ Asigno variables y valores lógicos pin
ir = 0
PORTB.4 = 1
PORTB.3 = 0
PORTB.5 = 0
'----- Programa principal
main:
   If PORTB.0 = 1 Then
      WaitMs 120  'antirebote
      If PORTB.0 = 1 Then
         ir = 1
      Endif
   Endif

   If ir = 1 Then
      PORTB.3 = 1  'BOMBA Off
      PORTB.5 = 1
      WaitMs 10
      For i = 1 To 24 Step 1
         PORTB.4 = 0
         WaitMs 10
         PORTB.4 = 1
         WaitMs 100
      Next i
   Endif
   ir = 0
Goto main
End                                               
'Nota, en la tecnología CMOS no se pueden dejar entradas sin polarizar.
'Por lo tanto todo pin que no se usa se configura como salida, y sino
'se puede configurar como salida como le pasa al RA5, hay que polarizarlo.
« Última modificación: 28 de Febrero de 2009, 18:05:12 por dogflu66 »
Saludos desde Granada, España.