Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
25/05/2011 #1161

Avatar de ferdy575

hola a todos los felicito veo que saben muchisimo de este tema, por eso me animo a molestarlos a ver sí me pueden ayudar con esto, quisiera saber como convierto un código escrito en MCS para 16f628a para que me funcione con un 16f873a ó un 16f877a estoy haciendo un robot sencillo pero el 16f628a se me esta quedando pequeño por falta de más puertos por eso decidí cambiarlo les agradezco de antemano su ayuda.
25/05/2011 #1162


Sube el codigo y te echo una mano, casi es solo de de cambiar los fuses y si no usas analogos en lugar de poner cmCon=7 pones AdcOn1=7 (creo que a si es) y compilarlo como 16f8XXA...

pero seria cuestion de darle una checadita...
26/05/2011 #1163

Avatar de Nano24

Amigos del foro se que esta sección es de programación en lenguaje Basic pero quise compartir con ustedes estos libros que como todo electrónico necesitamos para nutriros de información y conocimiento, espero que lo disfruten hay una gran variedad de libros.


LINK DE LA PAGINA:


http://www.electronicapura.com.ar/2009/10/libros.html
27/05/2011 #1164

Avatar de ferdy575

lubeck dijo: Ver Mensaje
Sube el código y te echo una mano, casi es solo de de cambiar los fuses y si no usas análogos en lugar de poner cmCon=7 pones AdcOn1=7 (creo que a si es) y compilarlo como 16f8XXA...

pero seria cuestion de darle una checadita...
hola gracias por ver mi mensaje te cuento es un robot seguidor de lineas pero tiene otras funciones como buscar la luz y todas las luces de un vehículo real pero también quiero que tenga el pito de la reversa, que según la inclinación del terreno ó el peso que lleve haga cambios de velocidad pues es un camión y no me alcanzan los puertos además quiero añadirle otras funciones pues tengo pensado convertirlo en una retroexcavadora te envió la simu y el código a ver como uso un pic más grande inicialmente lo hice con 16f84a pero me presntaba fallas veras mucha repetición pero es para evitar errores en las subrutinas de antemano muchas gracias
Archivos Adjuntos
Tipo de Archivo: rar robot.rar (55,4 KB (Kilobytes), 157 visitas)
27/05/2011 #1165


Pue si amigo.... creo que lo unico que tienes que quitar es el alldigital, y ponerle adcon1=7

respetar los mismo puertos y deberia funcionar...
PD. no lo simule porque los colores de los cablecitos esta muy feos y casi no se ven...
28/05/2011 #1166

Avatar de ferdy575

lubeck dijo: Ver Mensaje
Pue si amigo.... creo que lo unico que tienes que quitar es el alldigital, y ponerle adcon1=7

respetar los mismo puertos y deberia funcionar...
PD. no lo simule porque los colores de los cablecitos esta muy feos y casi no se ven...
jejeje gracias por tu ayuda ya hice al prueba como tú dices y si me funciono
30/05/2011 #1167


Hola a todos, estuve probando el PBP y cuando le pongo el codigo @ device xt_osc o de esta forma @device xt_osc me manda un error al compilar bueno no entiendo porque y si alguien lo sabe porfa responda gracias
30/05/2011 #1168


puedes subir tu archivo... empaquetalo en un rar
01/06/2011 #1169

Avatar de ferdy575

hola a todos otra vez por aqui molestando. Quisiera saber como escribo un codigo y como configuro 2 puertos del 16f84a porta.0 y porta.1 para detectar una señal de por ejemplo 455 khz o menos que a su vez sea generada por el porta.2 ¿si existe una función inversa a frecOut? ¿algo como frecIn? para no tener que utlizar un LM567 como decodificador aparte del pic de antemano gracias por su ayuda
03/06/2011 #1170

Avatar de Nano24

ferdy575 dijo: Ver Mensaje
hola a todos otra vez por aqui molestando. Quisiera saber como escribo un codigo y como configuro 2 puertos del 16f84a porta.0 y porta.1 para detectar una señal de por ejemplo 455 khz o menos que a su vez sea generada por el porta.2 ¿si existe una función inversa a frecOut? ¿algo como frecIn? para no tener que utlizar un LM567 como decodificador aparte del pic de antemano gracias por su ayuda
Si, hay una funcion llamada PULSIN que es para leer los pulsos que entran en un pin, por ejemplo quieres leer los pulsos que llegan a un puerto, tienes que declarar el puerto por donde se van a leer los pulsos y una variable.

La resolución de PULSIN depende de la frecuencia del oscilador . Si se usa un oscilador de 4 Mhz , el
ancho de pulso se obtiene en incrementos de 10 us .Si se usa un oscilador de 20 Mhz ,el ancho de pulso
tendrá una resolución de 2 us .Definir un valor de OSC no tiene efectos sobre PULSIN . La resolución
siempre cambia con la velocidad del oscilador en uso .


DEFINE OSC 4 ;Definir oscilador a 4Mhz(claro puedes usar uno mayor, ese lo coloco de ejemplo.

TRISB=%00000010 ;Se especifican los puertos de entrada y salida "0" salida "1" entrada, se cuentan de mayor a menor en sentido de izquierda a derecha, osea, 7,6,5,4,3,2,1,0 el 1 que es el puerto PORTB.1 es la entrada.

Leer VAR PORTB.1 ;PIN por el que se leeran los pulsos.

Contar VAR WORD ;Variable contar con un peso de 65535.

LED_AMARILLO VAR PORTB.2 ;LED para simular la salida como ejemplo del conteo de pulsos si llega a ser mayor de 455000 Hz.

LED_ROJO VAR PORTB.3 ;LED para simular la salida como ejemplo del conteo de pulsos si llega a ser menor de 455000 Hz.


INICIO:

PULSIN Leer,1000,Contar ;Se prepara la función para leer los pulsos por el puerto 1 a un 1 segundo.

IF Contar>455000 THEN encender_led_amarillo ;Si Contar es mayor a 455000 Hz entonces encender led amarillo.

IF Contar<455000 THEN encender_led_rojo ;Si Contar es menor a 455000 Hz entonces encender led rojo.

LOW LED_AMARILLO:LOW LED_ROJO ;Mantener apagado a led amarillo y rojo.

GOTO INICIO ;Volver al INICIO.

encender_led_amarillo:

HIGH LED_AMARILLO
LOW LED_ROJO

GOTO INICIO

encender_led_rojo:

B]HIGH[/B] LED_ROJO
LOW LED_AMARILLO

GOTO INICIO

END


Espero que te sirva de ayuda el ejemplo que te he puesto ahí, saludos.
03/06/2011 #1171

Avatar de ferdy575

Nano24 dijo: Ver Mensaje
Si, hay una funcion llamada PULSIN que es para leer los pulsos que entran en un pin, por ejemplo quieres leer los pulsos que llegan a un puerto, tienes que declarar el puerto por donde se van a leer los pulsos y una variable.

La resolución de PULSIN depende de la frecuencia del oscilador . Si se usa un oscilador de 4 Mhz , el
ancho de pulso se obtiene en incrementos de 10 us .Si se usa un oscilador de 20 Mhz ,el ancho de pulso
tendrá una resolución de 2 us .Definir un valor de OSC no tiene efectos sobre PULSIN . La resolución
siempre cambia con la velocidad del oscilador en uso .


DEFINE OSC 4 ;Definir oscilador a 4Mhz(claro puedes usar uno mayor, ese lo coloco de ejemplo.

TRISB=%00000010 ;Se especifican los puertos de entrada y salida "0" salida "1" entrada, se cuentan de mayor a menor en sentido de izquierda a derecha, osea, 7,6,5,4,3,2,1,0 el 1 que es el puerto PORTB.1 es la entrada.

Leer VAR PORTB.1 ;PIN por el que se leeran los pulsos.

Contar VAR WORD ;Variable contar con un peso de 65535.

LED_AMARILLO VAR PORTB.2 ;LED para simular la salida como ejemplo del conteo de pulsos si llega a ser mayor de 455000 Hz.

LED_ROJO VAR PORTB.3 ;LED para simular la salida como ejemplo del conteo de pulsos si llega a ser menor de 455000 Hz.


INICIO:

PULSIN Leer,1000,Contar ;Se prepara la función para leer los pulsos por el puerto 1 a un 1 segundo.

IF Contar>455000 THEN encender_led_amarillo ;Si Contar es mayor a 455000 Hz entonces encender led amarillo.

IF Contar<455000 THEN encender_led_rojo ;Si Contar es menor a 455000 Hz entonces encender led rojo.

LOW LED_AMARILLO:LOW LED_ROJO ;Mantener apagado a led amarillo y rojo.

GOTO INICIO ;Volver al INICIO.

encender_led_amarillo:

HIGH LED_AMARILLO
LOW LED_ROJO

GOTO INICIO

encender_led_rojo:

B]HIGH[/B] LED_ROJO
LOW LED_AMARILLO

GOTO INICIO

END


Espero que te sirva de ayuda el ejemplo que te he puesto ahí, saludos.
hola gracias por tu ayuda lo probe y funciona bien pero y si quisiera detectar al mismo tiempo 2 señales distintas y obtener respuesta en 2 puertos como lo haria? la verdad siempre he estado trabajando con pics pero con funciones digitales no habia necesitado hacerlo con señales y no se muy bien como se hace por ejemplo:
Define osc 4
trisa = %11111111
trisb = %00000000

if porta.0 = 455khz and porta.1 = 450khz then
high portb.0
high portb.1
endif

if porta.0 = 455khz and porta.1 = 0khz then
high portb.0
low portb.1
endif

ahí me perdonas la ignorancia y la molestadera
03/06/2011 #1172


Me parece que esto no es asi...

PULSIN Leer,1000,Contar ;Se prepara la función para leer los pulsos por el puerto 1 a un 1 segundo.

es PULSIN Pin, State,Var

si pones...
PULSIN PORTA.0,1,LUBECK Va a colocar en la variable LUBECK el tiempo que dure en estado alto(1) el puertoA.0

si pones...
PULSIN PORTA.0,0,LUBECK Va a colocar en la variable LUBECK el tiempo que dure en estado bajo(0) el puertoA.0
03/06/2011 #1173

Avatar de Nano24

lubeck dijo: Ver Mensaje
Me parece que esto no es asi...




es PULSIN Pin, State,Var

si pones...
PULSIN PORTA.0,1,LUBECK Va a colocar en la variable LUBECK el tiempo que dure en estado alto(1) el puertoA.0

si pones...
PULSIN PORTA.0,0,LUBECK Va a colocar en la variable LUBECK el tiempo que dure en estado bajo(0) el puertoA.0
Pues que raro yo e usado justo como el manual picbasic me dice

PULSIN PORTA.0,1500,LUBECK y es a 1500 milisegundos y funciona, bueno.
03/06/2011 #1174


estaremos hablando de lo mismo???



Traduccion:
Mide el Ancho del pulso en el Pin. Si "State" es cero, el ancho del pulso en bajo es medido, si "State" es 1 el ancho del pulso en Alto es medido.La medicion del ancho del pulso es puesto en "Var".Si el cambio de estado nunca ocurre o es demasiado largo para ser medido, "Var" sera igual a cero.
Imágenes Adjuntas
Tipo de Archivo: jpg Dibujo.JPG (93,6 KB (Kilobytes), 430 visitas)
03/06/2011 #1175

Avatar de Nano24

lubeck dijo: Ver Mensaje
estaremos hablando de lo mismo???



Traduccion:
Mide el Ancho del pulso en el Pin. Si "State" es cero, el ancho del pulso en bajo es medido, si "State" es 1 el ancho del pulso en Alto es medido.La medicion del ancho del pulso es puesto en "Var".Si el cambio de estado nunca ocurre o es demasiado largo para ser medido, "Var" sera igual a cero.
Bueno Lubeck ahí si me quede corto amigo, seria bueno si subes un ejemplo para asi entender mejor, de todas maneras tus aportes siempre son buenos, gracias.
07/06/2011 #1176


autotronico dijo: Ver Mensaje
buenas en el foro he visto proyectos con matrix de leds y me dio curiosidad para del desarrollo de uno a través de teclado como este:

http://www.youtube.com/watch?v=G24WxjtKsqQ

he logrado esto con un pic 182550( dejo simulación en proteus me falta la comunicacion pc -pic o teclado-pic), vere como puedo avanzar
hola autotronico estoy interesado en tu proyecto te agradeceria su pusieras los codigos en PBP recien estoy aprendiendo a usar este lenguaje de programación .. gracias ... atte Jeff
07/06/2011 #1177


demonjeff
autotronico estoy interesado en tu proyecto te agradeceria su pusieras los codigos en PBP

recien estoy aprendiendo a usar este lenguaje de programación ..





Empieza con cosas mas sencillas como prender un led... o directamnte pidele que te regale su trabajo!!!


Autotronico
he logrado esto con un pic 182550( dejo simulación en proteus me falta la comunicacion pc -pic o teclado-pic), vere como puedo avanzar
Comenta si ya lograste eso del teclado... yo ya lo consegui y podria echarte una mano...
08/06/2011 #1178


lubeck:

Que tal ya realice el control por teclado pero no me reconoce todos los caracteres deseo llegar a algo como esto:


por lo que he estado usado el comando select case para contener todos los caracteres del teclado cuando pueda subo avances.

saludos.

este es un pequeño fragmento del programa:

tabla:
Select case caracter
case "A"
For T=0 to 7
lookup2 T,[$7C,$7E,$13,$11,$13,$7E,$7C,$00],O_Kar
Gosub Ata

next
case "B"
For T=0 to 7
lookup2 T,[$7F,$7F,$49,$49,$49,$7F,$36,$00],O_Kar
Gosub Ata

next
case "C"
For T=0 to 7
lookup2 T,[$3E,$7F,$41,$41,$41,$63,$22,$00],O_Kar
Gosub Ata

next
case 199 'Ç
For T=0 to 7
lookup2 T,[$3E,$7F,$C1,$C1,$41,$63,$22,$00],O_Kar
Gosub Ata

next
case "D"
For T=0 to 7
lookup2 T,[$7F,$7F,$41,$41,$7F,$3E,$00,$00],O_Kar
Gosub Ata

next
case "E"
For T=0 to 7
lookup2 T,[$7F,$7F,$49,$49,$49,$63,$63,$00],O_Kar
Gosub Ata

next
case "F"
For T=0 to 7
lookup2 T,[$7F,$7F,$09,$09,$09,$03,$03,$00],O_Kar
Gosub Ata

next
case "G"
For T=0 to 7
lookup2 T,[$3E,$7F,$41,$49,$49,$7B,$32,$00],O_Kar
Gosub Ata

next
case 208 'Ð
For T=0 to 7
lookup2 T,[$3C,$7E,$43,$53,$53,$76,$24,$00],O_Kar
Gosub Ata

next
case "H"
For T=0 to 7
lookup2 T,[$7F,$7F,$08,$08,$08,$7F,$7F,$00],O_Kar
Gosub Ata

next
case "I"
For T=0 to 7
lookup2 T,[$00,$00,$41,$7F,$7F,$41,$00,$00],O_Kar
Gosub Ata

next
case 221 'Ý
For T=0 to 7
lookup2 T,[$00,$00,$44,$7D,$7D,$44,$00,$00],O_Kar
Gosub Ata

next
case "J"
For T=0 to 7
lookup2 T,[$20,$60,$40,$41,$7F,$3F,$01,$00],O_Kar
Gosub Ata

next
case "K"
For T=0 to 7
lookup2 T,[$7F,$7F,$08,$1C,$36,$63,$41,$00],O_Kar
Gosub Ata

next
case "L"
For T=0 to 7
lookup2 T,[$7F,$7F,$40,$40,$40,$60,$60,$00],O_Kar
Gosub Ata

next
case "M"
For T=0 to 7
lookup2 T,[$7F,$7F,$02,$0C,$02,$7F,$7F,$00],O_Kar
Gosub Ata

next
case "N"
For T=0 to 7
lookup2 T,[$7F,$7F,$06,$0C,$18,$7F,$7F,$00],O_Kar
Gosub Ata

next
case "O"
For T=0 to 7
lookup2 T,[$3E,$7F,$41,$41,$41,$7F,$3E,$00],O_Kar
Gosub Ata

next
case 214 'Ö
For T=0 to 7
lookup2 T,[$3C,$7E,$43,$42,$43,$7E,$3C,$00],O_Kar
Gosub Ata

next
case "P"
For T=0 to 7
lookup2 T,[$7F,$7F,$09,$09,$09,$06,$06,$00],O_Kar
Gosub Ata

next
case "R"
For T=0 to 7
lookup2 T,[$7F,$7F,$09,$09,$09,$76,$76,$00],O_Kar
Gosub Ata

next
case "S"
For T=0 to 7
lookup2 T,[$26,$6F,$49,$49,$49,$7B,$32,$00],O_Kar
Gosub Ata

next
case 222 'Þ
For T=0 to 7
lookup2 T,[$26,$6F,$49,$C9,$C9,$7B,$32,$00],O_Kar
Gosub Ata

next
case "T"
For T=0 to 7
lookup2 T,[$01,$01,$7F,$7F,$01,$01,$00,$00],O_Kar
Gosub Ata

next
case "U"
For T=0 to 7
lookup2 T,[$3F,$7F,$40,$40,$40,$7F,$3F,$00],O_Kar
Gosub Ata

next
case 220 'Ü
For T=0 to 7
lookup2 T,[$3D,$7D,$40,$40,$40,$7D,$3D,$00],O_Kar
Gosub Ata

next
case "V"
For T=0 to 7
lookup2 T,[$1F,$3F,$70,$70,$30,$1F,$0F,$00],O_Kar
Gosub Ata

next
case "Y"
For T=0 to 7
lookup2 T,[$07,$0F,$18,$70,$18,$0F,$07,$00],O_Kar
Gosub Ata

next
case "Z"
For T=0 to 7
lookup2 T,[$63,$73,$59,$4D,$47,$63,$61,$00],O_Kar
Gosub Ata

next

case "Q"
For T=0 to 7
lookup2 T,[$3E,$7F,$41,$51,$61,$7F,$3E,$00],O_Kar
Gosub Ata

next

case "W"
For T=0 to 7
lookup2 T,[$3F,$7F,$40,$38,$40,$7F,$3F,$00],O_Kar
Gosub Ata

next

case "X"
For T=0 to 7
lookup2 T,[$43,$66,$3C,$18,$3C,$66,$43,$00],O_Kar
Gosub Ata

next

case " "
For T=0 to 7
lookup2 T,[$00,$00,$00,$00,$00,$00,$00,$00],O_Kar
Gosub Ata

next

case "0"
For T=0 to 7
lookup2 T,[$3E,$7F,$51,$49,$45,$7F,$3E,$00],O_Kar
Gosub Ata

next

case "1"
For T=0 to 7
lookup2 T,[$00,$42,$7F,$7F,$40,$00,$00,$00],O_Kar
Gosub Ata

next

case "2"
For T=0 to 7
lookup2 T,[$42,$63,$71,$59,$4D,$47,$42,$00],O_Kar
Gosub Ata

next

case "3"
For T=0 to 7
lookup2 T,[$22,$63,$41,$49,$49,$7F,$36,$00],O_Kar
Gosub Ata

next

case "4"
For T=0 to 7
lookup2 T,[$30,$38,$2C,$26,$7F,$7F,$20,$00],O_Kar
Gosub Ata

next

case "5"
For T=0 to 7
lookup2 T,[$27,$67,$45,$45,$45,$7D,$39,$00],O_Kar
Gosub Ata

next

case "6"
For T=0 to 7
lookup2 T,[$38,$7C,$4E,$4B,$79,$30,$00,$00],O_Kar
Gosub Ata

next

case "7"
For T=0 to 7
lookup2 T,[$01,$01,$71,$79,$0D,$07,$03,$00],O_Kar
Gosub Ata

next

case "8"
For T=0 to 7
lookup2 T,[$36,$7F,$49,$49,$49,$7F,$36,$00],O_Kar
Gosub Ata

next

case "9"
For T=0 to 7
lookup2 T,[$06,$0F,$49,$49,$69,$3F,$1E,$00],O_Kar
Gosub Ata

next

case ":"
For T=0 to 7
lookup2 T,[$00,$00,$00,$66,$66,$00,$00,$00],O_Kar
Gosub Ata

next

case "-"
For T=0 to 7
lookup2 T,[$00,$00,$08,$08,$08,$08,$00,$00],O_Kar
Gosub Ata

next

case "+"
For T=0 to 7
lookup2 T,[$00,$18,$18,$7E,$7E,$18,$18,$00],O_Kar
Gosub Ata

next

case "."
For T=0 to 7
lookup2 T,[$00,$00,$60,$60,$00,$00,$00,$00],O_Kar
Gosub Ata

next

case ","
For T=0 to 7
lookup2 T,[$00,$00,$B0,$70,$00,$00,$00,$00],O_Kar
Gosub Ata

next

case ";"
For T=0 to 7
lookup2 T,[$00,$00,$B6,$76,$00,$00,$00,$00],O_Kar
Gosub Ata

next

case "&"
For T=0 to 7
lookup2 T,[$00,$36,$49,$55,$22,$50,$00,$00],O_Kar
Gosub Ata

next

CASE "'"
For T=0 to 7
lookup2 T,[$00,$00,$03,$07,$07,$00,$00,$00],O_Kar
Gosub Ata

next

CASE "!"
For T=0 to 7
lookup2 T,[$00,$00,$00,$5F,$5F,$00,$00,$00],O_Kar
Gosub Ata

next

CASE "%"
For T=0 to 7
lookup2 T,[$42,$25,$12,$08,$24,$52,$21,$00],O_Kar
Gosub Ata

next
CASE "?"
For T=0 to 7
lookup2 T,[$02,$52,$51,$09,$09,$06,$06,$00],O_Kar
Gosub Ata

next
case else
For T=0 to 7
lookup2 T,[$00,$00,$00,$00,$00,$00,$00,$00],O_Kar
Gosub Ata

next

end select

return
08/06/2011 #1179

Avatar de Nano24

autotronico dijo: Ver Mensaje
lubeck:

Que tal ya realice el control por teclado pero no me reconoce todos los caracteres deseo llegar a algo como esto:

http://www.youtube.com/watch?v=sVivR...yer_detailpage

por lo que he estado usado el comando select case para contener todos los caracteres del teclado cuando pueda subo avances.

saludos.

este es un pequeño fragmento del programa:
Deberias explicar como lo hiciste? se ve genial y si es en lenguaje Basic uffs mucho mejor, para eso es el foro no!! Para impartir conocimiento
08/06/2011 #1180

Avatar de atricio

si es asi la matriz una maquina felicitaciones por el desarrollo muy interesante ojala puedas postear los resultados para aprender todos
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.