Autor Tema: Ejemplos en PBP y PROTEUS  (Leído 266920 veces)

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

Desconectado Mc Guiver

  • PIC10
  • *
  • Mensajes: 31
Re: Ejemplos en PBP y PROTEUS
« Respuesta #180 en: 17 de Mayo de 2008, 16:10:37 »
 Estimados amigos del foro:aca está el programa que hice

'Programa para hacer encender tres leds
'(de a uno por vez) dependiendo de la posición
'del potenciómetro
'PIC : 16f873A
'10 bits
'NO LO PUEDO HACER FUNCIONAAAARRRRRRRR!!!!!
'DE MANDAR UN COHETE A MARTE ....¡¡¡NI HABLARRRRRR!!!!! JA JA JAAA.


Define   ADC_BITS 8   'aca probé con  Define  ADC_BITS 10 y nadaaa
DEfine   ADC_CLOCK 3
Define   ADC_SAMPLEUS 50

TRISA = %11111111     'defino puerto A como entradas, tambien probé con
                      'TRISA = %1111111111 (10 numeros y nada)
TRISB = %00000000     'defino puerto B como salidas, tambien probé con
                      'TRISA = %1111111111 (10 numeros y nada)
adcin1=%00000001      'supongo que el error está acá, pero ni idea de lo
                      'que estoy haciendo !!!!!!pero
                      'si pongo adcon1 o adcon0
                      'me aparecen 14 renglones de errores al compilarlo,
                      ' pero sí lo escribo como está, me pone
                      'un error de sintaxis en ésta linea (18)

dog VAR byte

main:
      adcin 0,dog
      if dog<80 then
      portb=%00000001
      endif
      if dog>80 and dog<160 then
      portb=%00000010
      endif
      if dog > 160 then
      portb=%00000100
      endif 
      goto main




Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Ejemplos en PBP y PROTEUS
« Respuesta #181 en: 17 de Mayo de 2008, 17:11:59 »
Que tal mc guiver!
Mira olvida el comentario sobre el fosc = fosc/2 esta incorrecto  :shock:  esto lo habia colocado haciendo referencia al reloj del adc pero tu lo colocaste en modo RC asi que no hay problema  :mrgreen:
Sigues insistiendo en colocar el adcon1 = %0000 0001 esto no es correcto, para trabajar con una resolucion de 10bits que era el primer programa debes colocarlo asi: ADCON1 = %1000 0000 ($80)
sino no te va a funcionar.

Ahora bien en tu ultimo ejemplo para trabajar con 8bits debes colocar el adcon1 = %0000 0001 tal como lo colocaste  :mrgreen:
todo lo demas se ve bien  :?

Revisa bien el hardware a ver si el problema no este alli los led que no esten invertidos...

Saludos

Desconectado Mc Guiver

  • PIC10
  • *
  • Mensajes: 31
Re: Ejemplos en PBP y PROTEUS
« Respuesta #182 en: 17 de Mayo de 2008, 17:21:27 »
gracias ralf2.... el problema que tengo esta al compilarlo, me parece que algo esta fallando con los archivos del pbp porque he probado de todo y ya no se que hacer.si compilo de esta manera solo me pone un error de sintaxis en esta linea:

osctune 4  ( acá me marca el error, lo saque de un ejemplo de uno de los muchachos del  foro)
define osc.....
define clock....
define sampleus etc....

si saco este comando, me da una serie de errores como de 15 renglones.

pero de todas maneras cuando compilo un ejemplo de los que ya trae pbp (por ej: adcin10 o adcin8) tambien me da error


un abrazo
mc guiver
« Última modificación: 18 de Mayo de 2008, 16:54:02 por Mc Guiver »

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: Ejemplos en PBP y PROTEUS
« Respuesta #183 en: 21 de Mayo de 2008, 01:15:06 »
Hola Mc Guiver, para entender el uso de ADCON0 y ADCON1, debes leer el datasheetdatasheet,  capitulo 11, tambien debes desactivar los comparadores, capitulo 12.

No veo que tengas definidos los fuses.

Un consejo, aun me parece que debes reforzar tus conocimientos de PBP y tal vez empezar con ejemplos mas sencillos.

Si lo estas simulando seria bueno que subieras la simulacion para poder ayudarte mejor.

Saludos

Hugo
« Última modificación: 21 de Mayo de 2008, 02:32:36 por Veguepic »
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado Mc Guiver

  • PIC10
  • *
  • Mensajes: 31
Re: Ejemplos en PBP y PROTEUS
« Respuesta #184 en: 23 de Mayo de 2008, 07:46:47 »
Estimados amigos del foro:
Quiero decirles que he probado nuevamente con el programa y esta vez SI anduvo, estoy mas feliz que nunca , les agradezco enormemente el apoyo que me han dado, espero poder – con lo poco que se-, ayudar a otros. El error estaba al compilarlo, resulta que yo seleccionaba el pic 16f873 desde Micro Code Studio y me daba errores por todos lados (al compilarlo desde DOS).Me puse a ler el manual y probé de seleccionarlo desde DOS con el comando pbp –p16f873 (y el nombre del archivo sin los paréntesis) y JOYAAAAA!!!!! Lo compila de maravillas.
También probé de hacerlo trabajar con 8 bits y bárbaro
Bueno acá les presento mi humilde programa que como mencioné anteriormente , enciende tres leds de a uno por vez dependiendo de la posición del potenciómetro.

Define   ADC_BITS 10 
DEfine   ADC_CLOCK 3
Define   ADC_SAMPLEUS 50

TRISA = %11111111     'defino puerto A como entradas
                     
TRISB = %00000000     'defino puerto B como salidas
                     
adcon1=%10000000     

dog VAR word

main:
      adcin 0,dog
      if dog<80 then
      portb=%00000001
      endif
      if dog>80 and dog<160 then
      portb=%00000010
      endif
      if dog > 160 then
      portb=%00000100
      endif 
      goto main
     
saludos  para todos

Mc Guiver
« Última modificación: 23 de Mayo de 2008, 07:49:39 por Mc Guiver »

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Ejemplos en PBP y PROTEUS
« Respuesta #185 en: 23 de Mayo de 2008, 14:34:01 »
Excelente!!! Muchas gracias por compartirlo quizas no lo veas pero a muchos eso les va a servir
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Mc Guiver

  • PIC10
  • *
  • Mensajes: 31
Re: Ejemplos en PBP y PROTEUS
« Respuesta #186 en: 31 de Mayo de 2008, 11:50:57 »
Estimados MAESTROS del foro:

  Estoy haciendo funcionar un servo de aeromodelismo con un pic , lo hacia con picaxe y habia un comando "servo" que me controlaba un servo pero mientras el pic leia el resto del programa, el servo quedaba con potencia, o sea que le seguia mandando la serie de pulsos para que permanezca en esa posicion. Con un pic comun, si uso el comando pulsout, este solo dura un tiempo determinado y luego interrumpe la serie de pulsos al servo y sigue leyendo el resto del programa, de esta manera el servo se queda sin potencia y en ese caso lo puedo mover con la mano cosa que no me interesa.Lo que me interesa es que siga con potencia para que quede firme mientras hace el resto del programa.
¿Alguien me puede decir como hacerlo?.
¿Tendre que intercalar el comando pulsout con el resto del programa?
Saludos
Mc Guiver
« Última modificación: 31 de Mayo de 2008, 12:04:00 por Mc Guiver »

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Ejemplos en PBP y PROTEUS
« Respuesta #187 en: 31 de Mayo de 2008, 14:05:35 »
Saludos!
Aquí es donde el basic se queda sin fuerza  :D
Para poder manejar correctamente el servo deberás estar mandándole la señal continuamente, como bien tú lo señalas.
Y para hacer eso necesitas interrupciones. Por allí hay un post donde el maestro RedPic explica muy bien cómo manejar hasta 8 servos con una sola interrupción. Pero está en C claro. Es en este tipo de trabajitos cuando se ve cómo el C supera al basic.
Creo que en basic también se puede trabajar con interrupciones, pero no tan bien como en C.
Bueno ya algún experto en basic nos comentará.
nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado manupri

  • PIC10
  • *
  • Mensajes: 21
Re: Ejemplos en PBP y PROTEUS
« Respuesta #188 en: 26 de Junio de 2008, 14:46:48 »
Hola Mc Guiver gracias por tu aportación, podrias subir la simulación en proteus de tu código?? asi veriamos mejor el uso del potencimetro.
Gracias y saludos

Desconectado manupri

  • PIC10
  • *
  • Mensajes: 21
PROBLEMAS CON EL FOR NEXT
« Respuesta #189 en: 26 de Junio de 2008, 15:23:30 »
Maestro LordLafebre me podrias decir por que cuando estoy ejecutando un bucle con el for next,despues de terminar la secuencia e incluso  mientras se ejecuta la misma,el programa hace caso omiso de la comprobacion que efectuo con el IF Then.?
Me explico, tengo el siguiente código:

DEVICE = 16F84A
XTAL 4

    TRISA.0=1


    DIM i as BYTE
   
    inicio:
       If porta.0=1 Then atras
     
Gosub adelante

Goto inicio

             adelante:
           
                         For i=0 to 10
                              portb=%00000110:delayns 20
                              portb=%00000101:delayns 20    Aqui aveces si es reconocido el pulsador o la comparación IF Then
                              portb=%00000110:delayns 20     y la mayoria de las vece nada
                        Next
            pause 50
           
                             portb=%00000110:delayns 100
                             portb=%00000101:delayns 100    'Cuando el programa ejecuta esta parte el pulsador no hace caso
                             portb=%00000110:delayns 100    ' aqui pasa algo pero no entiendo el fallo

         return

 atras:
        for i=0 to 5
   
                              portb=%00001010:delayns 20
                              portb=%00001001:delayns 20
                              portb=%00000100:delayns 20
       next i

goto inicio



Quiero decir con esto que cuando llega al punto indicado arriba y pulso virtualmente en proteus el boton correspondiente al porta.0 la comparación IF THEN no es reconocida en ese momento, ??puedes decirme por que ocurre esto?? o que devo hacer
podme un ejemplillo

gracias y un saludo


« Última modificación: 26 de Junio de 2008, 15:27:10 por manupri »

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ejemplos en PBP y PROTEUS
« Respuesta #190 en: 26 de Junio de 2008, 17:18:52 »
Hola:

Pues no entiendo como es que te compila siquiera,

                        For i=0 to 10
                              portb=%00000110:delayns 20
                              portb=%00000101:delayns 20    Aqui aveces si es reconocido el pulsador o la comparación IF Then
                              portb=%00000110:delayns 20     y la mayoria de las vece nada
                        Next i

no existe ese comando que te lo pongo en negritas, en el next también indícale cual es la variable que quieres incrementar.

Desconectado manupri

  • PIC10
  • *
  • Mensajes: 21
Re: Ejemplos en PBP y PROTEUS
« Respuesta #191 en: 27 de Junio de 2008, 10:58:14 »
Hola de nuevo.
Ha sido un error de escritura, el comando es DELAYMS,y eso lo tengo correcto en el código, el problema vuelvo a reiterar es que mientras se ejecuta el ciclo de FOR NEXT, la comprobación del IF THEN  es ignorada, tienes alguna respuesta??
gracias y saludos

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ejemplos en PBP y PROTEUS
« Respuesta #192 en: 27 de Junio de 2008, 11:46:08 »
Hola:

Es obvio que no se ejecute el IF THEN pues el bucle espera a que termine la condicion para salir, es decir:

                        For i=0 to 10
                              portb=%00000110:delayns 20
                              portb=%00000101:delayns 20    Aqui aveces si es reconocido el pulsador o la comparación IF Then
                              portb=%00000110:delayns 20     y la mayoria de las vece nada
                        Next

son 11 iteraciones que realiza ese bucle, para los siguientes valores de i: 0,1,2,3,4,5,6,7,8,9 y 10, por lo tanto, como tienes tres retardos de 20 ms, cada iteración tarda aproximadamente 60 ms, eso multiplicado por las 11 iteraciones, son 660ms ese tiempo se tarda en el bucle que está mencionado en la parte de arriba.

Es mejor que expliques que es lo que quieres hacer, si me adelanto un poco y a juzgar por el nombre de tus subrrutinas, parecería que quieres hacer algo así como comandar motores, para ello los delays los veo demás, así como los bucles.

Desconectado manupri

  • PIC10
  • *
  • Mensajes: 21
Re: Ejemplos en PBP y PROTEUS
« Respuesta #193 en: 28 de Junio de 2008, 09:24:58 »
Hola
Maestro LordLafebre solo con ver el código saves de que va la cosa indudablemente eres un maestro
Efectivamente se trata de comandar motores pap bipolares,mi objetivo es  hacerlo andar hacia delante y cuando pulse un button que dicho motor gire al contrario un tiempo determinado por.ejemp. 10segundos y una vez termine vuelva a marchar en la misma dirección
Puedes? colocarme un ejemplo  y me quito de todo este lio??

Ha!  los delaysms  me controlan la velocidad de los pasos es por eso que los usos en el codigo, si no que otra forma hay de controlar los pasos??

                        For i=0 to 10
                              portb=%00000110:delayms 20
                              portb=%00000101:delayms 20   
                              portb=%00001010:delayms 20    Por cierto me faltaba una linea ya esta aqui
                              portb=%00001010:delayms 20
                         Next

Otra pregunta..?? entonces no hay forma de interrumpir un bucle??? si quiero que en ese momento el motor gire hacia detras por que se haya topado con un obstaculo suponiendo que en vez del interruptor sea un sensor de proximidad, como haria para cesar el bucle, esque si no! este tropezaria no??

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Ejemplos en PBP y PROTEUS
« Respuesta #194 en: 28 de Junio de 2008, 10:27:41 »
La forma de hacer lo que planteas de forma más óptima es con interrupciones al CPU.
Pero como no he usado protón, no sé si se admite el uso de interrupciones en dicho compilador.
Supongo que si le echas una miradita al manual lo sabrás. Yo tengo el mikroBasic y el compilador permite las interrupciones, si bien tienes que hacer una rutina leyendo los diferentes flags para saber qué interrupción se ha producido. Si en tu caso sólo atenderás una interrupción, sería más sencillo. Supongo que protón también debe tener esta característica.
En mikroBasic la subrutina de interrupción es algo así como:

Código: [Seleccionar]
sub procedure interrupt
'
'Aquí va el código a ejecutarse
'
end sub

Podrías revisar a ver si en protón hay algo parecido... recuerda usar el buscador del foro, el maestro navaismo hizo un índice para este subforo, tal vez allí te dirija a algún hilo con ejemplos que te sean útiles.

Saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web


 

anything