Autor Tema: Comenzando con Mikrobasic  (Leído 293494 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:Comenzando con Mikrobasic
« Respuesta #345 en: 03 de Septiembre de 2016, 03:57:03 »
buenas noches amigos tengo un problema...............tengo el mikrobasic 7.0.02, he simulado en proteus teclado 4X4, ADC, LED, pero no he poido simular entradas de pic.....osea pulsadores, la libreria BOTTON.uso un pic 16F887............tengo windows XP...... el codigo es este

program Pulsador

main:

    TRISB = $FF             ' Configuración de los Puertos
    TRISC = $00
    PORTC = $00

Pulsadores:
    If PORTB.0 = 1 Then     ' Verificamos el estado del pulsador.
       delay_ms(10)         ' Hace una pausa de 50 milisegundos.
       If PORTB.0 = 1 Then  ' Verificamos el estado del pulsador.
          PORTC.0 = 1       ' Enciende el Led D1, conectado en RC0
          delay_ms(200)         ' Hace una pausa de 50 milisegundos.
          'PORTC.0 = 0       ' Enciende el Led D1, conectado en RC0
       End If               '
    End If
    ' PORTC = $00
    NOP
GoTo Pulsadores             ' Salta a la etiqueta "Pulsadores"
end.

en modo de depuracion del MKB funciona perfecto pero en proteus.........nada de pulsadores....
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:Comenzando con Mikrobasic
« Respuesta #346 en: 01 de Octubre de 2016, 01:12:16 »
amigos.................tengo un problemita.............tengo ya como 2 meses aprendiendo Mikrobasic pro ver 6.6.2 he aprendido muchas cosas y es muy simple hacer muchas cosas que en asm requieren de mucho trabajo............mi problema es el siguiente estoy trabajando con el 18f25K20, escribi un programa para usar lcd 12x2 trabajan todos los programas y el LCD trabaja hasta 16 Mhz del micro por cuando habilito el PLL no se ve la LCD y he hecho pruebas y todo funciona pero no se ve la LCD.

 Osea la LCD funciona has la frecuencia de los 16 mhz del pic...............pues recierden que activando el pll del pic se multiplica internamente la frecuencia por 4 osea de 16mhz con el pll se comvierte en 64 mhz y necesito esa precuencia por que necesito generar un tren de pulsos ajustables que se generan con TMR0 y el TMR1..................gracias de antemano
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Comenzando con Mikrobasic
« Respuesta #347 en: 01 de Octubre de 2016, 11:08:11 »
Osea la LCD funciona has la frecuencia de los 16 mhz del pic...............pues recierden que activando el pll del pic se multiplica internamente la frecuencia por 4 osea de 16mhz con el pll se comvierte en 64 mhz y necesito esa precuencia por que necesito generar un tren de pulsos ajustables que se generan con TMR0 y el TMR1..................gracias de antemano

Entonces quiere decir que cuando lo subiste a 64Mhz, algun tiempo no estas respetando, los delays obviamente que van a ser los mismos, pero tal ves algo como activar el pin RS y luego activar otra señal (como E) necesita un mayor tiempo que antes no estaba contemplado por que era muy pequeño para 16Mhz. Te sugiero que revises el datasheet del dirver del LCD como un ( HD44780 ) donde tenes una tabla de tiempo a respetar y una imagen de las señales.

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:Comenzando con Mikrobasic
« Respuesta #348 en: 01 de Octubre de 2016, 17:33:28 »
Buenas tardes.............te explico uso la libreria del LCD en modo de 4 bir del MikroBasic, por lo tanto ajusta el automaticamente esos tiempo, la otra libreria que uso es Botton, para el uso de pulsadores para los  menu, no uso delays pues la librerias se encargan de eso, el pin de reset del micro lo active y desactive pero todo igual he pensado en de repente hacer un reajuste en la libreria del LCD pero no se su formato ni donde encontrarla, pues quisas hay que modificar lo retardos y necesito el procesador a 64 Mhz
Pense inclusive usar la tecnica de usar la pantalla con 3 pines y asi controlar los tiempo necesarios para que funcione la LCD a esa frecuencia................tienes informacion como hacer eso con 3 pines??.............lei hace un tiempo eso pero no encuentro en que lugar fue..............usan un registro de desplazamiento si mas no me equivoco............
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Comenzando con Mikrobasic
« Respuesta #349 en: 01 de Octubre de 2016, 19:14:08 »
Citar
Buenas tardes.............te explico uso la libreria del LCD en modo de 4 bir del MikroBasic, por lo tanto ajusta el automaticamente esos tiempo, la otra libreria que uso es Botton, para el uso de pulsadores para los  menu, no uso delays pues la librerias se encargan de eso, el pin de reset del micro lo active y desactive pero todo igual he pensado en de repente hacer un reajuste en la libreria del LCD pero no se su formato ni donde encontrarla, pues quisas hay que modificar lo retardos y necesito el procesador a 64 Mhz

Crei que tenias una libreria creada por vos. Por eso te decia que tengas en cuenta eso, si estas usando la de MikroBasic no se decirte si es que posee una limitacion o no en velocidad.

Citar
Pense inclusive usar la tecnica de usar la pantalla con 3 pines y asi controlar los tiempo necesarios para que funcione la LCD a esa frecuencia................tienes informacion como hacer eso con 3 pines??.............lei hace un tiempo eso pero no encuentro en que lugar fue..............usan un registro de desplazamiento si mas no me equivoco............

Si con un registro de desplazamiento, y usando el SPI o 3 pins y simulando un SPI por software. En ves de enviar los datos de forma paralela, lo estas enviando de forma serial y luego con el registro de desplazamiento lo pasas a "paralelo" de nuevo. Librerias de eso no tengo. Pero si tuvieras una libreria a codigo abierto simplemente se cambiaria la funcion que envia los datos que en ves de actuar sobre los pines, cargue el valor en el SPI. Pero obviamente esto es para el caso que tengas una libreria a codigo abierto, realizada por vos mismo, o por ultima conseguir ya una libreria realizada para que funcione de esta forma.

Desconosco si ya MikroBasic tiene incorporada la misma. Ya que no trabajo con esta.

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:Comenzando con Mikrobasic
« Respuesta #350 en: 02 de Octubre de 2016, 00:49:09 »
haaaaa.........buen entre aqui por que decia comenzando con mikrobasic...............crei que tenian una idea mas clara o mas experiencia en estos menesteres........... :shock:
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Comenzando con Mikrobasic
« Respuesta #351 en: 02 de Octubre de 2016, 02:12:07 »
haaaaa.........buen entre aqui por que decia comenzando con mikrobasic...............crei que tenian una idea mas clara o mas experiencia en estos menesteres........... :shock:

Fue un error mio, el suponer que tenias una libreria creada por vos mismo, por eso conteste de la forma que lo hice. Diciendo que agregues mas tiempo. Que a pesar de no usar basic, el problema viene por ahi, por lo que parece.

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:Comenzando con Mikrobasic
« Respuesta #352 en: 02 de Octubre de 2016, 11:44:38 »
Ok es que pense que conocian algun metodo o truco para superar este problema
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado Stban

  • PIC12
  • **
  • Mensajes: 78
Re:Comenzando con Mikrobasic
« Respuesta #353 en: 02 de Octubre de 2016, 13:16:14 »
Hola,

aportando un poco, Mikrobasic debe tener una instrucción que permite ajustar los tiempos de envio de datos de instrucción y datos.
Algo como esto:
LCD_INSTRUCTIONUS 2000      'the time of delay of instruction in microseconds (us)

LCD_DATAUS 50                        'the time of delay of data in microseconds

Yo uso PBP y Proton IDE y tiene esos comandos, de hecho asi resolví un problema que tuve en la comunicación USB de un PIC18F4550 con la PC.

Saludos

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:Comenzando con Mikrobasic
« Respuesta #354 en: 03 de Octubre de 2016, 18:04:39 »
mil gracias amigo. :-/ :-/ ((:-)) ((:-)).........ya me pongo a investigar esos comandos....................por casualidad sabes como comunicarte con 3 pines.............a un LCD con MikroBasic?????
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado Stban

  • PIC12
  • **
  • Mensajes: 78
Re:Comenzando con Mikrobasic
« Respuesta #355 en: 03 de Octubre de 2016, 21:44:39 »
Parece que ya existe una libreria, según esto, solo espero que sea compatible con el software que usas: http://download.mikroe.com/documents/compilers/mikrobasic/pic/help/spi_lcd_library.htm

Saludos

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:Comenzando con Mikrobasic
« Respuesta #356 en: 04 de Octubre de 2016, 00:54:31 »
Amigo  Stban probe los comandos que dijiste y me dio un error.........
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:Comenzando con Mikrobasic
« Respuesta #357 en: 12 de Octubre de 2016, 00:47:22 »
Yo de nuevo................estoy probando el uso del TMR0,,,,,,,,,,,me tope con un problema aun siguendo las recomendacion de que al leer debe leerse primero TMR0L y luego TMR0H................y para escribir se debe escribir primero en TMR0H y luego en TMR0L.....................no logro escribir en TMR0H pero si en el TMR0L.................aqui esta el programa use un contador de 16 bit y utilice Cont_H para ver si el valor alto se le va a cargar al TMR0H....................y nada............

' Declarations section

dim Cont_H as byte
dim txt as char[7]
dim Conteo as word

sub procedure interrupt

  TMR0H = Hi(Conteo) ' Conteo
  TMR0L = Lo(Conteo) ' Conteo
  INTCON.TMR0IF = 0                ' 0xA0 Enable TMRO interrupt 10100000
  PORTC.0 = 1
end sub

main:
  oldstate_al = 0
  oldstate_bl = 0
  oldstate_ah = 0
  oldstate_bh = 0
  ANSEL  = 0                    ' Configure AN pins as digital I/O
  ANSELH = 0
  TRISB = $F0                         ' Configuracion del PORTB
  PORTB = $0F
  TRISC = 0                     ' PORTC is output
  PORTC = 0                     ' Initialize PORTB
  Conteo = $0000
  ' INTCON = %11100000            ' 0xA0 Enable TMRO interrupt 10100000
  ' T0CON = %10000000             ' 0xA0 Enable TMRO interrupt 10100000
 
  while TRUE
 
  Cont_H = Hi(Conteo)
  TMR0H = Cont_H
  TMR0L = Lo(Conteo)

  wordTostr(TMR0L, txt)             ' Transform counter value to string
  Lcd_Out(2, 7, txt)             ' Display counter value on LCD

  wordTostr(TMR0H, txt)             ' Transform counter value to string
  Lcd_Out(1, 7, txt)             ' Display counter value on LCD

     Conteo = Conteo + 1
     if Conteo >= $FFFD then
        Conteo = $FFFD

  wend
end.

Desactive la interrupcion del TMR0 para solo ver la carga de los registros de este......pero el alto con carga nada
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:Comenzando con Mikrobasic
« Respuesta #358 en: 12 de Octubre de 2016, 18:27:39 »
Si no recuerdo mal el timer0 tiene un bit para seleccionar si trabajará con el registro a 8 o a 16bits, si no lo has tenido en cuenta puedes intentarlo por ese camino. Siempre que he usado el Tmr0 he configurado el bit a mano por lo que no se que modo toma por defecto.
Saludos desde Granada, España.

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:Comenzando con Mikrobasic
« Respuesta #359 en: 23 de Octubre de 2016, 13:24:12 »
REsolvi el problema estaba mal configurado el INTECON..................tengo un problemita ahora, esta relacionado mas con el manejo de las variable y decimales......escribi un programa quesalta 0.1 por paso si se deja presionado por mas de 1 segundo aproximadamente salta 0.5 por paso pero no logro mostrar el valor en la lcd con su decimal...................probe rutinas por alli que usan pero no logro.......creo que no menejo bien los tipor de variable les muestro el programa que logre por fin pero tiene un detalle

program Decimales

dim oldstate_a, oldstate_b as byte
dim TEA, TEB as byte

dim txt as char[7]

dim  RPM as float


  TEA = 0
  TEB = 0
  oldstate_a = 0
  oldstate_b = 0
  ANSEL  = 0                    ' Configura los AN como I/O Digitales
  ANSELH = 0
  TRISB = $F0                   ' Configuracion del PORTB
  PORTB = $0F                   ' Configuracion de salida del PORTB
  TRISC.0 = 0                   ' El Puerto C es Digital
  PORTC.0 = 0                   ' Initialize PORTB
 
  Lcd_Init(PORTC)
  Delay_ms(2)
 
  LCD_Cmd(LCD_CLEAR)            ' lear display
  Delay_ms(2)
 
  LCD_Cmd(LCD_CURSOR_OFF)       ' turn cursor off
  Delay_ms(2)
 
  Lcd_Out(1, 1,"RPM:" )
  Delay_ms(2)

  while TRUE
 
  FloatTostr(RPM, txt)          ' Transforma el Conteo de Cont_L en String
  Lcd_Out(1, 7, txt)            ' Muestra Count_L en el LCD

' Rutina para Subir y bajar el valor de contador

  ' Boton de bajar el valor de las RPM, Si se mantiene pulsada
  ' por mas de un segundo incrementa 0.5 en cada paso

  if Button(PORTB, 4, 1, 1) then
     oldstate_a = 1
     if TEA >= 60 then          ' Si se mantiene pulsado por mas de un segundo
        Delay_ms(300)           ' activa una rutina de Icrementos de 0.5 a la Vez
        RPM = RPM + 0.5
        if RPM >= 80.0 then
           RPM = 80.0
        end if
    else
        Delay_ms(1)
        TEA = TEA + 1
    end if
  end if
  if oldstate_a and Button(PORTB, 4, 1, 0) then
     if TEA <= 59 then          ' Si se suelta el boton antes de segundo
        RPM = RPM + 0.1         ' no hace ninguno incremento
     end if
     if RPM >= 80.0 then
        RPM = 80.0
     end if                     ' Se reinicia la deteccion de tecla pulsada
     TEA = 0
     oldstate_a = 0
  end if

  ' Boton de bajar el valor de las RPM, Si se mantiene pulsada
  ' por mas de un segundo incrementa 0.5 en cada paso

  if Button(PORTB, 5, 1, 1) then
     oldstate_b = 1
     if TEB >= 60 then
        Delay_ms(300)
        RPM = RPM - 0.5
        if RPM <= 0.1 then
           RPM = 0.1
        end if
    else
        Delay_ms(1)
        TEB = TEB + 1
    end if
  end if
  if oldstate_b and Button(PORTB, 5, 1, 0) then
     if TEB <= 59 then
        RPM = RPM - 0.1
     end if
     if RPM <= 0.1 then
        RPM = 0.1
     end if
     TEB = 0
     oldstate_b = 0
  end if

  wend
end.

muestra el valor bien en la LCD pero muestra otros decimales que no me hacen falta por ejemplo 0.00000 o 0.59996 y solo me interesa el entero y un desimal espero una ayuda gracias de antemano          '
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela