• Viernes 8 de Noviembre de 2024, 05:03

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ElFabro

Páginas: [1] 2
1
Visual Basic 6.0 e inferiores / Abrir un PDF desde Visual Basic 6.0
« en: Martes 23 de Noviembre de 2010, 16:22 »
Hola, resulta que quiero crear un help desde el visual basic. Lo que tengo es un archivo pdf y lo abro desde el visual basic de la siguiente forma:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
 ShellExecute Me.hwnd, vbNullString, "MiArchivoPDF.pdf", vbNullString, "C:", 1
End Sub


Cuando lo pruebo anda de 10 pero el problema es que cuando yo genero el instalador y lo pruebo en otra maquina, no funciona.
Alguien sabe por que?
Saludos.

2
Microcontroladores MOTOROLA / Código para recibir datos por RF
« en: Domingo 26 de Septiembre de 2010, 22:16 »
Hola, como va todo?.
Tengo un problema. Resulta que tengo que sensar datos (temperatura y luminosidad) con un microcontrolador y luego tengo que mandar esos datos por RF hacia otro microcontrolador remoto. El problema es que estoy trabajando con los integrados HT12E y HT12D que manejan datos de 4 bits y los datos que tengo que transmitir son de 8 bits. Yo hice un código en el microcontrolador receptor que recibe los dos datos de 4 bits y los junta para formar el dato de 8 bits pero resulta que muchas veces ese dato es incorrecto y hay pocas veces en que el dato lo armo bien.
La verdad estoy muy trabado con este tema y no quiero cambiar los integrados HT12E y HT12D.
Si alguien sabe como puedo llegar a solucionar esto le agradeceria que me de una mano.
Saludos.
Chau.

3
Robótica / Sensor Mpx2100
« en: Sábado 18 de Septiembre de 2010, 07:27 »
Hola, como va todo?. Resulta que estoy necesitando hacer un proyecto con un sensor de presión y buscando por la web encontre uno, el Mpx2100. Me bajé la hoja de datos del sensor y me puse a ver sus datos característicos y me entro la duda por que no se cual es el máximo nivel de tensión que entrega a la salida , es decir, cuando la presión sea la máxima. Leyendo el datasheet dice que Vfss=40mv valor típico. Donde Vfss es la tensión a fondo de escala. No se si este es el mayor valor de tensión que puedo tener a la salida cuando la presión sea la máxima. No se si me explico.
Esa es mi duda.
Saludos a tod@s.
Chau.

4
Robótica / Sensor de Humedad
« en: Miércoles 15 de Septiembre de 2010, 06:26 »
Hola, resulta que estoy armando un proyecto en el que necesito emplear un sensor de humedad, estuve buscando por la web los diferentes sensores y sus precios y la verdad es que son bastante caros y decidi tratar de armar uno pero la verdad es que no encontré mucha información al respecto.
Basicamente necesito tener a la entrada del conversor AD del microcontrolador que estoy utilizando, un nivel de tensión que sea proporcional a la humedad relativa del ambiente.
¿Alguien sabe como puedo armar uno de estos sensores?
Saludos.
Chau.

5
Visual Basic 6.0 e inferiores / Re: Control Cwgraph en visual basic 6.0
« en: Sábado 4 de Septiembre de 2010, 06:20 »
Hola, por favor si me podes responder te agradecería.
Saludos.

6
Visual Basic 6.0 e inferiores / Re: Control Cwgraph en visual basic 6.0
« en: Sábado 4 de Septiembre de 2010, 05:40 »
Hola, gracias por responder. Pero a cual archivito te referis?
Saludos.

7
Visual Basic para principiantes / Re: Leer puerto RS232 controladora Microlog
« en: Lunes 30 de Agosto de 2010, 17:22 »
Hola, muchisimas gracias.
Saludos.
Chau.

8
Visual Basic 6.0 e inferiores / Control WinSock
« en: Domingo 29 de Agosto de 2010, 00:33 »
Hola, resulta que hice un programa aplicando el control winsock y siguiendo varios ejemplos vistos en internet.
Es una aplicacion cliente servidor.Cuando lo pruebo en mi maquina anda bien, pero cuando lo pruebo en dos maquinas diferentes no los datos no le llegan al servidor.
El programa es sencillo, senso datos de un microcontrolador, los mando por el puerto serie a la pc y de ahi los mando al servidor usando protocolo TCP.
A continuacion adjunto los codigos del cliente y el servidor.
La verdad no se por que no funcionan en dos maquinas diferentes.
No me equivoque ni en el puerto local ni en el hostname.

Programa del cliente:

Option Explicit
Dim Cadena As String
Dim t As Double
Public contador As Integer, variable As Boolean, Fecha As String, Hora As String, puertos As String
Public Temperatura As Double, Presion As Double, Humedad As Double
Public Ti As Integer, Pi As Integer, Hi As Integer
Const MAX = 15

Private Sub cargar_Click()

ete:
        dialogo.Filter = "txt|*.txt"
        dialogo.DialogTitle = "Cargar un archivo"
        dialogo.ShowOpen
        If dialogo.FileName = "" Then Exit Sub
        Cadena = dialogo.FileName
        Open Cadena For Output As #1
        On Error GoTo ete
        cargar.Enabled = False
        'Abre el puerto seleccionado
         MSComm1.PortOpen = True

End Sub

Private Sub cliente_ConnectionRequest(ByVal requestID As Long)

cliente.Close
cliente.Accept requestID

End Sub

Private Sub Command1_Click()

If Combo1.Text <> "" And (Asc(Combo1.Text) > 47 And Asc(Combo1.Text) < 58) Then
MSComm1.CommPort = Int(Combo1.Text)
Combo1.Enabled = False
Command1.Enabled = False
cargar.Enabled = True
End If

End Sub

Private Sub Command2_Click()

cliente.RemoteHost = Text1.Text
cliente.Connect
Text1.Enabled = False
Command2.Enabled = False

End Sub

Private Sub Form_Load()
       
        cargar.Enabled = False
        'Determina: 9600-Velocidad en Baudios, N-No utiliza ninguna paridad,
        '8-Cantidad de bits de envio y recepcion por paquete,
        '1-Determina los bits de parada
        MSComm1.Settings = "9600,N,8,1"
        'No existe control de flujo
        MSComm1.Handshaking = comNone
        'Lee todo el buffer de entrada para que quede vacio
        MSComm1.InputLen = 0
        'Cada vez que se recibe un caracter se producira el evento onComm
        MSComm1.RThreshold = 1
        t = 0
        contador = 10
        variable = False
        Temperatura = 0
        Presion = 0
        Humedad = 0
        Ti = 0
        Pi = 0
        Hi = 0
        'Nombre de los ejej X e Y
        GR.Axes(1).Caption = " Tiempo[seg]"
        GR2.Axes(1).Caption = " Tiempo[seg]"
        GR3.Axes(1).Caption = " Tiempo[seg]"
        GR.Axes(2).Caption = " Temperatura[ºC]"
        GR2.Axes(2).Caption = " Presión[Hp]"
        GR3.Axes(2).Caption = " Humedad[%]"
        'Color de las graficas. Por defecto GR2 es verde
        GR.Plots(1).LineColor = vbRed
        GR3.Plots(1).LineColor = vbBlue
        'Escala del eje Y
        GR.Axes(2).AutoScale = False
        GR.Axes(2).Minimum = 0
        GR.Axes(2).Maximum = 255
        GR2.Axes(2).AutoScale = False
        GR2.Axes(2).Minimum = 0
        GR2.Axes(2).Maximum = 255
        GR3.Axes(2).AutoScale = False
        GR3.Axes(2).Minimum = 0
        GR3.Axes(2).Maximum = 2.55
        With Combo1
        .AddItem 1
        .AddItem 2
        .AddItem 3
        .AddItem 4
        .AddItem 5
        .AddItem 6
        .AddItem 7
        .AddItem 8
        .AddItem 9
        .AddItem 10
        End With
       
'--------------------------------------------------------------------------------------
'Código que activa la captura de imágenesse supone un formulario con 2 picture llamados "picture1" y "picture2")

'hwndc = capCreateCaptureWindow("Ventana de Captura", ws_child Or ws_visible, 0, 0, cuadro1.Width, cuadro1.Height, cuadro1.hwnd, 0)
'If (hwndc <> 0) Then
'temp = SendMessage(hwndc, wm_cap_driver_connect, 0, 0)
'temp = SendMessage(hwndc, wm_cap_set_preview, 1, 0)
'temp = SendMessage(hwndc, WM_CAP_SET_PREVIEWRATE, PREVIEWRATE, 0)
'End If
'--------------------------------------------------------------------------------------
       
End Sub

Private Sub Form_Unload(Cancel As Integer)

If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
Close #1
cliente.Close

End Sub

Private Sub MSComm1_OnComm()

    Dim valor As String, YE As Integer
    If MSComm1.CommEvent = comEvReceive Then
    valor = MSComm1.Input
    Select Case Left(valor, 1)
    Case "T"
    contador = 0
    If cliente.State = 7 Then
    cliente.SendData Left(valor, 1)
    End If
    Case "P"
    contador = 1
    If cliente.State = 7 Then
    cliente.SendData Left(valor, 1)
    End If
    Case "H"
    contador = 2
    If cliente.State = 7 Then
    cliente.SendData Left(valor, 1)
    End If
    End Select
    If contador = 0 And Left(valor, 1) <> "T" And Left(valor, 1) <> "P" And Left(valor, 1) <> "H" Then
    YE = Asc(Right(valor, 1))
    Temperatura = Temperatura + YE
    Ti = Ti + 1
    If Ti = MAX Then
    Temperatura = Temperatura / Ti
    'Trunco a dos decimales
    Temperatura = FormatNumber(Temperatura, 2)
    GR.ChartXvsY t, Temperatura
    Ti = 0
    Label2.Caption = Temperatura & " Grados Celsius"
    t = t + 1
    Print #1, Temperatura & " grados Celsius"
    If cliente.State = 7 Then
    cliente.SendData Str(Temperatura)
    End If
    Temperatura = 0
    End If
    End If
    If contador = 1 And Left(valor, 1) <> "T" And Left(valor, 1) <> "P" And Left(valor, 1) <> "H" Then
    YE = Asc(Right(valor, 1))
    Presion = Presion + YE
    Pi = Pi + 1
    If Pi = MAX Then
    Presion = Presion / Pi
    'Trunco a dos decimales
    Presion = FormatNumber(Presion, 2)
    GR2.ChartXvsY t, Presion
    Pi = 0
    Label6.Caption = Presion & " Hecto pascales"
    t = t + 1
    Print #1, Presion & " hecto pascales"
    If cliente.State = 7 Then
    cliente.SendData Str(Presion)
    End If
    Presion = 0
    End If
    End If
    If contador = 2 And Left(valor, 1) <> "T" And Left(valor, 1) <> "P" And Left(valor, 1) <> "H" Then
    YE = Asc(Right(valor, 1))
    Humedad = Humedad + YE
    Hi = Hi + 1
    If Hi = MAX Then
    Humedad = Humedad / Hi
    Humedad = Humedad / 100
    'Trunco a dos decimales
    Humedad = FormatNumber(Humedad, 2)
    GR3.ChartXvsY t, Humedad
    Hi = 0
    Label8.Caption = Humedad & " %"
    t = t + 1
    variable = True
    Print #1, Humedad / 100 & " %"
    If cliente.State = 7 Then
    cliente.SendData Str(Humedad)
    End If
    Humedad = 0
    End If
    End If
    If variable = True Then
    Fecha = Date$
    Hora = Time$
    Print #1, Fecha
    Print #1, Hora
    variable = False
    End If
    End If

End Sub

Private Sub acercade_Click()

AD.Show vbModal

End Sub

Programa del servidor:

Public Variable As String, tiempo As Integer, contador As Integer
Public Temperatura As String, Presion As String, Humedad As String
Public llave As Boolean
Const Lim = 75

Private Sub acercade_Click()

AD.Show vbModal

End Sub

Private Sub Form_Load()

        GR.Axes(1).Caption = " Tiempo[seg]"
        GR2.Axes(1).Caption = " Tiempo[seg]"
        GR3.Axes(1).Caption = " Tiempo[seg]"
        GR.Axes(2).Caption = " Temperatura[ºC]"
        GR2.Axes(2).Caption = " Presión[Hp]"
        GR3.Axes(2).Caption = " Humedad[%]"
        GR.Plots(1).LineColor = vbRed
        GR3.Plots(1).LineColor = vbBlue
        GR.Axes(2).AutoScale = False
        GR.Axes(2).Minimum = 0
        GR.Axes(2).Maximum = 255
        GR2.Axes(2).AutoScale = False
        GR2.Axes(2).Minimum = 0
        GR2.Axes(2).Maximum = 255
        GR3.Axes(2).AutoScale = False
        GR3.Axes(2).Minimum = 0
        GR3.Axes(2).Maximum = 2.55
       
        Temperatura = 0
        tiempo = 0
        contador = 0
        llave = True
               
        servidor.Listen
               
End Sub

Private Sub Form_Unload(Cancel As Integer)

        servidor.Close

End Sub

Private Sub servidor_ConnectionRequest(ByVal requestID As Long)
       
        servidor.Close
        servidor.Accept requestID
       
End Sub

Private Sub servidor_DataArrival(ByVal bytesTotal As Long)

        servidor.GetData Variable
        Select Case Variable
        Case "T"
        contador = 1
        Case "P"
        contador = 2
        Case "H"
        contador = 3
        End Select
        If contador = 1 And Variable <> "T" And Variable <> "P" And Variable <> "H" Then
        GR.ChartXvsY tiempo, Val(Variable)
        Label2.Caption = Val(Variable) & " Grados Celsius"
        contador = 0
        List1.AddItem (Variable & " Grados Celsius")
        End If
        If contador = 2 And Variable <> "T" And Variable <> "P" And Variable <> "H" Then
        GR2.ChartXvsY tiempo, Val(Variable)
        Label3.Caption = Val(Variable) & " Hecto pascales"
        contador = 0
        List1.AddItem (Variable & " Hecto pascales")
        End If
        If contador = 3 And Variable <> "T" And Variable <> "P" And Variable <> "H" Then
        GR3.ChartXvsY tiempo, Val(Variable)
        tiempo = tiempo + 1
        Label5.Caption = Val(Variable) & " %"
        contador = 0
        List1.AddItem (Variable & " %")
        End If
       
End Sub

Private Sub servidor_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
       
        servidor.Close
       
End Sub

9
Visual Basic 6.0 e inferiores / Re: Control Cwgraph en visual basic 6.0
« en: Viernes 27 de Agosto de 2010, 19:43 »
Hola, lo que pasa es que es para una materia de la facultad y si combino los controles del LabView con el Visual Basic es mejor para presentarlo.
De todas formas ya lo solucione. Pude cambiar el color de las graficas y tambien dejar intacta la escala del eje Y de ese control.
El unico problema es que cuando exporto ese control al visual, me lo toma como una version de evaluacion que no puede ser usada mas de 5 minutos. Lo raro es que la version del labview que tengo no es una version de evaluacion.
Saludos.
Chau.

10
Visual Basic 6.0 e inferiores / Control Cwgraph en visual basic 6.0
« en: Jueves 26 de Agosto de 2010, 23:21 »
Hola, como va todo?
Resulta que estoy haciendo un proyecto en el cual una parte del mismo consiste en sensar continuamente la temperatura, presión y humedad. Esto lo hago con un microcontrolador, esos datos los mando a la PC por el puerto serie y luego los grafico en pantalla por medio del Visual basic 6.0 utilizando los controles Cwgraph del LabView. Bueno, todo eso anda a la parfeccion pero el unico preoblema es que todas las graficas me aparecen del mismo color (verde) y yo necesito que sean de distinto color.
Estube buscando en internet y lo unico que encontre es justamente una página de NI donde muestran algo de informacion sobre ese control pero no puedo conseguir lo que quiero.
Si alguien sabe como se puede hacer me gustaria que me explique como.
Bueno, saludos.
Chau.

11
Visual Basic para principiantes / Re: Leer puerto RS232 controladora Microlog
« en: Sábado 21 de Agosto de 2010, 22:45 »
Hola, yo tengo casi el mismo problema que vos.
Pudiste solucionarlo?. De ser asi me gustaria que me des una mano.
Desde ya muchisimas gracias.
Saludos.
Chau.

12
Robótica / Consulta sobre Motor de continua
« en: Viernes 20 de Agosto de 2010, 22:40 »
Hola, soy estudiante de ingeniería y estoy trabajando con un motor de corriente continua cuyo modelo es RS-540. El link donde pueden ver las caracteristicas del mismo es: http://www.mabuchi-motor.co.jp/en_US/ca ... 40rhsh.pdf
Resulta que yo quiero bajar la velocidad de dicho motor por medio de PWM pero al hacerlo el motor pierde demasiado torque a tal punto que aveces nisiquiera puede arrancar solo.
Estuve viendo en otra parte de esta página que para conseguir buenos resultados con el PWM sin que el motor pierda mucho torque lo que se debe hacer es que la frecuencia del PWM sea de entre 5 y 10KHz y el ciclo de actividad sea del 50%. Probé con eso y el resultado fue el mismo.
Si alguien puede aconsejarme se lo agradeceria.
Saludos.
Chau.

13
Microcontroladores MOTOROLA / Denme una mano con el SCI del GP32
« en: Miércoles 16 de Junio de 2010, 17:29 »
Hola gente. Estoy tratando de arrancar el SCI del GP32 pero resulta que lo simulo y al parecer no funciona bien. Para simular que he recibido un dato uso la palabra SCDI seguido del dato, por ejemplo SCDI $A0.
A continuación adjunto el codigo.
Saludos.
Chau.

**************************************************************
*               EJEMPLO DEL USO DEL MÓDULO TIM               *
**************************************************************
$Include 'GP32.inc'

RAMStart     EQU  $0040
RomStart     EQU  $E000         ; This is valid ROM on the GP32, GT16, and GT8
VectorStart  EQU  $FFDC

    org RamStart

    org RomStart

**************************************************************
* Main_Init - This is the point where code starts executing  *
*             after a RESET.                                 *
**************************************************************
Main_Init:
       rsp
       clra                      ; Initialize A,X so that interrupt
       clrx                      ; processing doesn't stop with
                                 ; uninitialized register warning
                                 ; when push A,X on the stack
       cli                       ; Allow interrupts to happen

       mov       #$61,config1    ;COP deshabilitado
       mov       #$03,config2    ; For GT16 - turn on external clock
                                 ; For GP32 - SCI clock source is Bus
                                 ;            (Automatic for GT16)

**************************************************************
* Configuro el PLL para generar una frecuencia de 4.9152 MHz *
**************************************************************
       clr      PCTL             ;PLL:OFF
       bset     1,PCTL           ;P= 0 E= 2
       mov      #2,PMSH          ;N HI= 2
       mov      #1,PMDS          ;R= 1 (default)
       mov      #$58,PMSL        ;N LOW= 58
       mov      #$80,PMRS        ;L= 80
       bset     5,PCTL           ;PLL:ON
       bset     7,PBWC           ;enganche automatico

wait_pll:                       ;esperar que LOCK sea = 1
       brclr    6,PBWC,wait_pll ;
       bset     4,PCTL          ;cambia a frecuencia del PLL

*************************************************************
*                       MODULO SCI                                *
*************************************************************

******************************************************************
* SELECCION DEL BAUD RATE                                       *
* ESTOY TRABAJANDO CON UNA FRECUENCIA DE BUS    *
* INTERNO DE 4.9152 MHz.                                       *
******************************************************************

   mov #%00000011,SCBR   ;SCP1-SCP0=00 => Divisor por 1
                                ;76.80 KBaudios.
                                ;SCR2-SCR0=011 => Divisor por 8
                                ;9600 Baudios.

*************************************************
* SELECCIÓN DE LA LONGITUD DEL CARACTER Y TIPO  *
* DE PARIDAD.                                   *
*************************************************

   mov #%01000000,SCC1    ;ENSCI=1 => Habilito al SCI y al
                                ;SCI Baud rate.
                                ;M=0 => 8 bits de datos.
                                ;PEN=0 => Sin paridad.

*************************************************
* INTERRUPCIONES Y CONFIGURACION DEL TRANSMISOR   *
* USAR ESTO EN CASO DE SOLO TRANSMITIR.      *
*************************************************

        ;bclr 7,SCC2             ;SCTIE=0 => No interrumpe cuando
                   ;TX Data Register está vacio.
        ;bset 6,SCC2             ;TCIE=1 => Interrupción cuando la
                    ;TX está completa.
        ;bset 3,SCC2             ;TE=1 => Habilito la operación de TX.

*************************************************
* INTERRUPCIONES Y CONFIGURACION DEL RECEPTOR   *
* USAR ESTO EN CASO DE SOLO RECIBIR.      *
*************************************************

        bset 2,SCC2             ;SCRIE=1 => Interrumpe cuando se
                                       ;completa el Receive Data Register.
        bset 5,SCC2             ;RE=1 => Habilito interrupción del
                   ;receptor.

*************************************************
* SCI CONTROL REGISTER 3         *
*************************************************

   mov #%00000000,SCC3   ;b5=b4=0 => DMA no habilitado
                            ;b3=0 => Deshabilito interrupción por overrun error
                            ;b2=0 => Deshabilito interrupción por noise error
                            ;b1=0 => Deshabilito interrupción por framing error
                            ;b0=0 => Deshabilito interrupción por parity error

**************************************************************
*                    Programo el ADC                         *
**************************************************************

       mov     #%10000000,adclk         ;Programo el prescaler del clock del ADC
                                        ;b7-5 = ADIV[2:0] prescaler del clock del ADC 1XX = DIV/16
                                        ;32.768MHz/16 = 2.048MHz (Frec de trabajo del ADC)
                                        ;B4-0 = NO SE USAN = 0
       mov      #%01100010,adscr        ;Programo el modulo ADC
                                        ;b7 = COCO Conversion completa Solo lectura
                                        ;b6 = AIEN Habilitacion de interrupcion del ADC (lo activa)
                                        ;b5 = ADCO Conversion continua si = 1
                                        ;b4-0 = ADCH[2:0] Selecciona 1 de los canales del ADC (ADC2=PTB2)

**************************************************************
*                    Programo el Timer                       *
**************************************************************

       mov     #%01110110,T1SC          ;Frec
                                        ;b7=0 (TOF) Timer no fue reseteado
                                        ;b6=1 (TOE) Habilita interrupción Timer Overflow
                                        ;b5=1 Timer Detenido (Timer stopped)
                                        ;b4=1 Resetea el Contador y el Prescaler
                                        ;b2,1,0=110 Divide Frec Int Bus en 64
       mov     #$FF,T1MODH
       mov     #$FF,T1MODL              ;T1MODH:T1MODL=FFFF

;------ Canal 0 -----------------------------------------------------------------

       mov     #%01010110,T1SC0         ;b6=1 => Habilito interrupcion del TIM.
                                        ;b5=0,b4=1,b3=0,b2=1 => Output Compare,
                                        ;Toggle Output on Compare.
                                        ;b1=1 => Cambia el estado de la salida
                                        ;cuando hay timer overflow.
       mov     #$FF,T1CH0H
       mov     #$00,T1CH0L              ;T1CH0H:T1CH0L=FF00

;------ Canal 1 -----------------------------------------------------------------

       mov     #%01010110,T1SC1         ;b6=1 => Habilito interrupcion del TIM.
                                        ;b5=0,b4=1,b3=0,b2=1 => Output Compare,
                                        ;Toggle Output on Compare.
                                        ;b1=1 => Cambia el estado de la salida
                                        ;cuando hay timer overflow.
       mov     #$00,T1CH1H
       mov     #$80,T1CH1L              ;T1CH1H:T1CH1L=0080

       mov     #%01000110,T1SC          ;Arranco el timer (b5=0)
                                        ;b4=0 No tiene efecto

**************************************************************
*                     Módulo TBM                                    *
**************************************************************
       bset     1,TBCR
       bset     2,TBCR
       bset     3,TBCR
       bclr     4,TBCR
       bclr     5,TBCR
       bclr     6,TBCR

**************************************************************
*                     Configuro los puertos                  *
**************************************************************
       mov      #%11110000,ddrb
       mov      #$00,portb
       bset        4,ddrd
       bset        5,ddrd
       bclr        4,portd
       bclr        5,portd
       bset        0,ddra
       bclr        0,porta

**************************************************************
*                     Programa principal                     *
**************************************************************
Lazo:
                bra Lazo

**************************************************************
*         Rutina de atención de interrupción del TBM         *
**************************************************************
TBM:
      nop
      rti
**************************************************************
* AtoD_ISR - ADC Conversion Complete Interrupt               *
*            Transmit ADC value out serial port (PTE0)       *
**************************************************************
AtoD_ISR:
       nop
       rti


**************************************************************
* T_ISR - Timer Interrupt Service Routine.               *
*             after a RESET.                                         *
**************************************************************
TIM1_isr:
       bclr 7,T1SC
       rti

TIM1CH0_isr:
       bclr 7,T1SC0
       rti

TIM1CH1_isr:
       bclr 7,T1SC1
       rti

TIM2_isr:
       bclr 7,T2SC
       rti

TIM2CH0_isr:
       bclr 7,T2SC0
       rti

TIM2CH1_isr:
       bclr 7,T2SC1
       rti

SCITX_isr:
       nop
       rti

SCIRX_isr:
       lda SCS1         ;Limpio el registro SCS1
       lda SCDR         ;Cargo al ACC con el valor del SCDR
       bclr 5,SCS1
       rti

**************************************************************
* DUMMY_ISR - Dummy Interrupt Service Routine.               *
*             Just does a return from interrupt.             *
**************************************************************
dummy_isr:

       rti           ; return


**************************************************************
* Vectors - Timer Interrupt Service Routine.                 *
*             after a RESET.                                 *
**************************************************************
   org  VectorStart

        dw  TBM          ; Time Base Vector
        dw  atod_isr     ; ADC Conversion Complete
        dw  dummy_isr    ; Keyboard Vector
        dw  SCITX_isr    ; SCI Transmit Vector
        dw  SCIRX_isr    ; SCI Receive Vector
        dw  dummy_isr    ; SCI Error Vector
        dw  dummy_isr    ; SPI Transmit Vector
        dw  dummy_isr    ; SPI Receive Vector
        dw  TIM2_isr     ; TIM2 Overflow Vector
        dw  TIM2CH1_isr  ; TIM2 Channel 1 Vector
        dw  TIM2CH0_isr  ; TIM2 Channel 0 Vector
        dw  TIM1_isr     ; TIM1 Overflow Vector
        dw  TIM1CH1_isr  ; TIM1 Channel 1 Vector
        dw  TIM1CH0_isr  ; TIM1 Channel 0 Vector
        dw  dummy_isr    ; ICG/CGM Vector
        dw  dummy_isr    ; ~IRQ1 Vector
        dw  dummy_isr    ; SWI Vector
        dw  main_init    ; Reset Vector

14
Microcontroladores MOTOROLA / Programación in circuit
« en: Lunes 14 de Junio de 2010, 03:01 »
Hola gente, como les va?.
Resulta que recien estoy empezando a programar el GP32 y lo que quiero hacer es como una pequeña placa de desarrollo para dicho controlador. Lo que yo quiero es poder programar y probar el micro en la misma placa y para esto tengo entendido que tengo que hacer programacion in ciruit. Resulta que estube buscando y no encuentro nada al respecto.
Alguien me podria dar una pequeña ayuda al respecto?.
Desde ya, muchisimas gracias a todos.
Saludos.
Chau.

15
Microcontroladores MOTOROLA / Re: Problemas con el oscilador en los micros
« en: Sábado 30 de Enero de 2010, 23:23 »
Hola, estaba chateando con un compañero de la facu y el me dice que para trabajar con oscilador, aparte de los pines osc1 y osc2 hay que conectar otros dos pines mas. Vos que tenes experiencia con este micro, cuales son esos pines y como los conecto? (a masa o a +5v).
Saludos.
Chau.

16
Microcontroladores MOTOROLA / Re: Problemas con el oscilador en los micros
« en: Jueves 28 de Enero de 2010, 13:34 »
Hola, con respecto al micro lo probé con dos micros iguales y no pasa nada.
Yo no tengo drama en postear el programa y el circuito que usé, pero no se como adjuntar nada acá. Siempre quise adjuntar una imagen y nunca pude.
Saludos.
Chau.

17
Microcontroladores MOTOROLA / Re: Problemas con el oscilador en los micros
« en: Lunes 25 de Enero de 2010, 22:41 »
Hola, con mi hno armamos otra placa para probar este micro (JL8) y no está andando. Al parecer es un problema del oscilador. Te cuento: para el circuito oscilador uso un cristal de 20 MHz, un resistor de 10 MOhm y dos capacitores de 22 pF.
Esta es la segunda placa que pruebo y que no me anda. Lo que hice fue cargar al micro con un sencillo programa que haga titilar dos leds, y cuando pruebo todo resulta que uno solo de los leds queda completamente encendido.
Ya no se que mas hacer al respecto. Esto me causa mas incertidumbre que otra cosa.
Perdona que te moleste.
Saludos.
Chau.

18
Microcontroladores MOTOROLA / Re: Problemas con el oscilador en los micros
« en: Viernes 22 de Enero de 2010, 12:40 »
Hola gjfuentes, muchas gracias por responder. Al microlo conecté respetando el pinout que dice el manual, es decir, que verifiqué bien como lo alimenté, me fijé bien los pines donde conecto el circuito oscilador, etc.
Armé una plaqueta (plaqueta, no protoboard) y no me anduvo. AL micro lo cargué con un sencillo programa que haga titilar un led. LO unico que hacia era no solo prender el led que yo queria que titile, sino que tambien prendian los demas leds que estaban conectados a los restantes pines del puerto del micro. Y como te decia, el led que tenia que titilar, solo se quedaba encendido.
Ah, otra cosa; con respecto a los registros para usar un cristal como oscilador externo, estos micros ya vienen configurados por defecto para usar un cristal como oscilador externo. Ya que no poseen un oscilador interno (como es el caso del JL8 con el que estoy trabajando).
Bueno, perdoná las molestias.
Saludos.
Chau.

19
Microcontroladores MOTOROLA / Problemas con el oscilador en los micros
« en: Miércoles 20 de Enero de 2010, 23:25 »
Hola gente, tengo un problema con todos los micros a los que los quiero hacer trabajar con un oscilador a cristal. Resulta que lo que hago es un pequeño programita que titila un led y cuando lo pruebo, tengo que estar moviendo a cada rato el cristal o la resistencia para que "funcione".
El circuito oscilador que empleo es el que tiene el cristal, el resistor de 10 M Ohm y los dos capacitores de 22 pF.
Esto me pasó con los micros JK1, JL8 y GP32.
La verdad es muy desesperante esta situación por que necesito tener andando un proyecto que estoy armando para la facultad.
Bueno, si alguien sabe de esto estaria encantado de recibir información de como solucionar esto.
Perdonen las molestias.
Saludos.
Chau.

20
Microcontroladores MOTOROLA / Problemas con el micro JL8
« en: Martes 19 de Enero de 2010, 03:27 »
Hola gente, como les va?.
Miren tengo un gran problema, resulta que estoy armando un proyecto para una materia de la facu. Dicho proyecto funciona con un micro MC68HC908JL8. Tengo armadas todas las placas y cuando voy a probar todo resulata que no funciona (aclaro, las placas cuando las probe por separado anduvieron de 10!!!!!!). Lo que hice fue sacar el micro y probarlo en un protoboard, hice un sencillo programa que encienda un led y resulta que no funciona. Todo el mundo me dice que el oscilador no está funcionando. La verdad no se si es eso o es que no anda el micro.
Probe y probe mil veces el micro y no pasa nada.
Por favor, si alguien sabe algo, espero sugerencias.
Perdonen las molestias ocacionadas.
Saludos a todos.
Chau.

21
Robótica / Re: Dudas con un motor paso a paso bipolar
« en: Domingo 27 de Diciembre de 2009, 17:25 »
Hola, muchisimas gracias Victor Pasilla Campos. Te agradezco un monton tu valiosisima ayuda.
Saludos.
Chau.

22
Robótica / Dudas con un motor paso a paso bipolar
« en: Sábado 12 de Diciembre de 2009, 18:17 »
Hola gente. Resulta que tengo que hacer un proyecto que incluya el manejo de motores paso a paso y los motores que tengo son: EM-234 y EM-329. Lo unico que se es que ambos son bipolares. Pero me maté buscando el datasheet de ambos motores por todo internet y no logro encontrarlos. El problema es que yo los quiero controlar usando el driver L293B, osea, a la salida del microcontrolador va el L293B, y de ahi va al motor. Pero el L293B soporta hasta 1 amper como maximo. Al no tener el datasheet de estos motores no se si debo usar un L293B o un L298.
No se si me explico.
Si alguien sabe las caracteristicas de alguno de estos dos motores, les agradecería que me las pasaran.
Saludos.
Chau.

23
Visual Basic para principiantes / Imagenes de una webcam en vb6
« en: Miércoles 9 de Diciembre de 2009, 16:23 »
Hola a todos. Alguien tiene un ejemplo de programa que solo muestre las imagenes de una webcam en un picture box?.
Saludos.
CHau.

24
Microcontroladores MOTOROLA / Circuito para comandar un motor paso a paso bipolar
« en: Miércoles 9 de Diciembre de 2009, 15:51 »
Hola. No se si este tema va acá, pero basicamente lo que quiero hacer es controlar un motor paso a paso bipolar con un microcontrolador jl8 de motorola. Mi problema es que no se bien el circuito que tengo que poner para poder controlar el motor ya que estos motores funcionan con tensiones de 18v, 20v o hasta 30v. Creo que lleva un puente H o algo asi.
Si alguien sabe de esto, por favor haganmelo saber.
Saludos.
Chau.

25
Microcontroladores MOTOROLA / Por favor, que alguien me ayude con el LCD......
« en: Domingo 6 de Diciembre de 2009, 02:18 »
Hola, por favor, alguien me puede dar una mano?, estoy trabajando con un microcontrolador qy4A y un display lcd de 16x2 lineas. Lo que quiero es aunque sea poder escribir algo en el lcd, la interfaz es de 8 bits, no de 4 bits. Hasta ahora no logré hacerlo andar.
Buaqué de todo en internet, todas las inicializaciones que encontré para el lcd son totalmente diferentes. No se supone que los pasos para inicializar el lcd son iguales para cualquier lcd alfanumerico?.
Adjunto a continuacion el codigo de mi programa.
Por favor que alguien me de una mano.  :(
Saludos.
Chau.

*********************************************************************************
* Definicion del mapa de Memoria del 68HC908QY4 (68HC908QT1-2/QY1-2)            *
*********************************************************************************

RAM_START       EQU     $0080           ;128 Bytes
ROM_START       EQU     $EE00           ;1,5KBytes, Debería ser $F800 para el QY1
VECTORES        EQU     $FFDE           ;Comienzo de la Tabla de Vectores

E               EQU     0
RS              EQU     4
RW              EQU     5

*********************************************************************************
* Definicion de las variables de RAM                                            *
*********************************************************************************

        org     RAM_START

CONT            rmb     1       ;Variable Contador (1 BYTE DE MEMORIA. UBICADO EN LA POSICION $0080.)
CONT1           rmb     1       ;VARIABLE CONTADOR (1 BYTE DE MEMORIA. UBICADO EN LA POSICION $0081.)
MAX             rmb     1       ;VARIABLE CONTADOR (1 BYTE DE MEMORIA. UBICADO EN LA POSICION $0082.)
CARACTER        rmb     1       ;VARIABLE CARACTER (1 BYTE DE MEMORIA. UBICADO EN LA POSICION $0083.)

*********************************************************************************
* PROGRAMA PRINCIPAL - En este punto arranca el micro luego del Reset           *
*********************************************************************************

$base    10t                            ;Base decimal por Default
$Include        'qtqy_registers.inc'    ;Definiciones de Reg. para QT, QY


        org     ROM_START

start:
        rsp                             ;Reset del stack pointer
        clra                            ;Limpio registros
        clrh
        clrx
        cli                             ;Borro Bit I (habilita interrupciones)

;------ PROGRAMACION DE LOS DISTINTOS MODULOS (HC08) ----------------------------

;------ Programo el CONFIG ------------------------------------------------------
        mov     #%00001001,config1      ;b7=0 COP Reset cycle (largo)
                                        ;b6=0 LVI deshabilitado en Modo Stop
                                        ;b5=0 Señal Reset desde LVI habilida
                                        ;b4=0 LVI habilitado
                                        ;b3=1 LVI opera en modo 5V
                                        ;b2=0 Recup.M/STOP en 4096 2OSCOUT cycl.
                                        ;b1=0 Instruccion STOP Deshabilitada
                                        ;b0=1 Modulo COP Deshabilitado

        mov     #%00000000,config2      ;b7=0 Pull-Up Interna Conectada (IRQ1)
                                        ;b6=0 Funcion Pin IRQ1 desactivada
                                        ;b4,3=00 selecciona Oscilador Interno
                                        ;b0=0 Funcion Pin RST (Reset) inactiva
        nop                             ;Las inst. NOP hacen de Delay para
        nop                             ;  asegurar la configuracion

;------ Programo el Puerto a ----------------------------------------------------

        mov     #%00110001,ddra         ;Programo Pta0, 4, 5 como salida

;------ Programo el Puerto b ----------------------------------------------------

        mov     #%11111111,ddrb         ;Programo Puerto B como Salida
        mov     #%00000000,portb
;--------------------------------------------------------------------------------

        clr MAX
        mov #$FF,MAX

        clr CONT
        mov MAX,CONT

        clr CONT1
        mov #$10,CONT1

;---------------- Programa ------------------------------------------------------

        jsr InitLCD

        mov 'H',CARACTER
        jsr Mandar
        mov 'O',CARACTER
        jsr Mandar
        mov 'L',CARACTER
        jsr Mandar
        mov 'A',CARACTER
        jsr Mandar

Lazo:

        bra Lazo

;---------------- Subrutina de Inicializacion del LCD ---------------------------

InitLCD:

        jsr Ret                         ;Demora de 15 mseg o mas

        bclr E,Porta
        bclr RS,Porta
        bclr RW,Porta

        mov #$38,Portb                  ;Function Set

        bset E,Porta

        mov #$54,MAX                    ;Para producir un retardo de aprox 5 mseg
        jsr Ret                         ;Demora de 5 mseg

        bclr E,Porta
        bclr RS,Porta
        bclr RW,Porta

        mov #$38,Portb                  ;Function Set

        bset E,Porta

        mov #$02,MAX                    ;Para producir un retardo de aprox 100 useg
        jsr Ret                         ;Demora de 100 useg o mas

        bclr E,Porta
        bclr RS,Porta
        bclr RW,Porta

        mov #$38,Portb                  ;Function Set

        bset E,Porta

        mov #$54,MAX                    ;Para producir un retardo de aprox 5 mseg
        jsr Ret                         ;Demora de 5 mseg

        bclr E,Porta
        bclr RS,Porta
        bclr RW,Porta

        mov #$38,Portb                  ;Function Set

        bset E,Porta

        mov #$01,MAX                    ;Para producir un retardo de aprox 40 useg
        jsr Ret                         ;Demora de 40 useg o mas

        bclr E,Porta
        bclr RS,Porta
        bclr RW,Porta

        mov #$38,Portb                  ;Function Set

        bset E,Porta

        mov #$01,MAX                    ;Para producir un retardo de aprox 40 useg
        jsr Ret                         ;Demora de 40 useg o mas

        bclr E,Porta
        bclr RS,Porta
        bclr RW,Porta

        mov #$08,Portb                  ;Display OF. Apagar pantalla,
                                        ;quitar cursor
        bset E,Porta

        mov #$01,MAX                    ;Para producir un retardo de aprox 40 useg
        jsr Ret                         ;Demora de 40 useg o mas

        bclr E,Porta
        bclr RS,Porta
        bclr RW,Porta

        mov #$01,Portb                  ;Display Clear

        bset E,Porta

        mov #$22,MAX                    ;Para producir un retardo de aprox 2 mseg
        jsr Ret                         ;Demora de 2 mseg

        bclr E,Porta
        bclr RS,Porta
        bclr RW,Porta

        mov #$06,Portb                  ;Entry Mode Set

        bset E,Porta

        mov #$01,MAX                    ;Para producir un retardo de aprox 40 useg
        jsr Ret                         ;Demora de 40 useg o mas

        rts

;----------------------- Subrutina para el envio de un caracter al LCD ---------

Mandar:

        lda CARACTER
        bclr E,Porta
        bset RS,Porta
        bclr RW,Porta
        sta Portb
        bset E,Porta
        mov #$02,MAX                    ;Para producir un retardo de aprox 100 useg
        jsr Ret                         ;Demora de aprox 100 useg

        rts

;----------------------- Subrutina de Retardo ----------------------------------

Ret:

        dec CONT        ;4

Ret1:
        nop
        dec CONT1       ;4
        lda CONT1       ;2
        cmp #$00        ;2
        bne Ret1        ;3
        mov #$10,CONT1  ;4
        lda CONT        ;2
        cmp #$00        ;2
        bne Ret         ;3
        mov MAX,CONT    ;4

        rts             ;4

*********************************************************************************
* ADC_ISR - Rutina de Servicio de Conversion Analogico Digital Completada       *
*                                                                               *
*********************************************************************************
adc_isr:
        nop
        rti                     ;retorna

*********************************************************************************
* KEYB_ISR - Keyboard Interrupt Service Routine                                 *
*********************************************************************************
keyb_isr:

        nop

        rti                     ;retorna

*********************************************************************************
* TIM_OV_ISR - Rutina de Servicio de Interrupcion por Overflow del Timer        *
* Es llamada cuando existe un Overflow en el Modulo Contador del Timer, es usada*
* como base de tiempos para la visualizacion en display                         *
*********************************************************************************
tim_ov_isr:

        nop

        rti                             ;retorna

*********************************************************************************
swi_isr:


rti

*********************************************************************************
* TIM_0_ISR - Rutina de Servicio de Interrupcion del Canal 0 del Timer          *
*********************************************************************************
tim_0_isr:

        nop

        rti                     ;retorna

*********************************************************************************
* TIM_1_ISR - Rutina de Servicio de Interrupcion del Canal 1 del Timer          *
*********************************************************************************
tim_1_isr:
        nop
        rti                     ;retorna
*********************************************************************************
* IRQ_ISR - Interrupt Request Service Routine                                   *
*********************************************************************************
irq_isr:
        nop
        rti                     ;retorna

*********************************************************************************
* DUMMY_ISR - Dummy Interrupt Service Routine                                   *
* Rutina de servicio de Interupcion Fantasma, se pone por razones de seguridad  *
*********************************************************************************
dummy_isr:

        rti                     ; vuelve sin hacer nada

*********************************************************************************
* VECTORES - Definicion de Vectores del Sistema                                 *
*********************************************************************************
        org     VECTORES

        dw      adc_isr         ; ADC Conv.Complete Vector      ($FFDE-$FFDF)
        dw      keyb_isr        ; Keyboard Vector               ($FFE0-$FFE1)
        dw      dummy_isr       ; (No Vector Assigned)          ($FFE2-$FFE3)
        dw      dummy_isr       ; (No Vector Assigned)          ($FFE4-$FFE5)
        dw      dummy_isr       ; (No Vector Assigned)          ($FFE6-$FFE7)
        dw      dummy_isr       ; (No Vector Assigned)          ($FFE8-$FFE9)
        dw      dummy_isr       ; (No Vector Assigned)          ($FFEA-$FFEB)
        dw      dummy_isr       ; (No Vector Assigned)          ($FFEC-$FFED)
        dw      dummy_isr       ; (No Vector Assigned)          ($FFEE-$FFEF)
        dw      dummy_isr       ; (No Vector Assigned)          ($FFF0-$FFF1)
        dw      tim_ov_isr      ; TIM1 Overflow Vector          ($FFF2-$FFF3)
        dw      tim_1_isr       ; TIM1 Channel 1 Vector         ($FFF4-$FFF5)
        dw      tim_0_isr       ; TIM1 Channel 0 Vector         ($FFF6-$FFF7)
        dw      dummy_isr       ; (No Vector Assigned)          ($FFF8-$FFF9)
        dw      irq_isr         ; ~IRQ1                         ($FFFA-$FFFB)
        dw      dummy_isr       ; SWI Vector                    ($FFFC-$FFFD)
        dw      start           ; Reset Vector                  ($FFFE-$FFFF)

*********************************************************************************
end

Páginas: [1] 2