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

Temas similares

23/03/2012 #21


pues... no le veo fallo asi a vista rapida, ahora tampoco puedo ver el datasheet del 18f4550 estoy en el pc del trabajo y tengo muy limitados los accesos. Cuando llegue a casa lo revisaré un poco mejor.
De todos modos piensa que en el simulador el cristal no hace nada ahi, tienes que entrar en las propiedades del pic y poner ahi la velocidad (48000000)

Un saludo y hasta luego
23/03/2012 #22


visto, creo que faltaba configurar los puertos como digitales.
te pongo el codigo modificado

Código:
void configurar_puertos();
bit i;

void main()
{
configurar_puertos();
PORTB=0x00;

while(1)
  {
    if ( RA0_bit == 1)
    PORTB=0x01;
  }
}
void configurar_puertos()
{
   ADCON0=0x00;      //sin puertos analógicos
   ADCON1=0x3F;
   
   TRISB=0x00;
   TRISA=0xFF;
}
Para el circuito te recomiendo ponerle una resistencia al led (+- 330) y aumentar la resistencia del reset (-+10k)

Un saludo
24/03/2012 #23


Hola tannke gracias por la ayuda, en el circuito simulado configure la velocidad del micro y cambie los valores de los resistores del reset y del led, en el codigo configure las salidas/entradas digitales pero ahora cuando presiono el boton enciende pero ya no se apaga cuando lo dejo de presionar. Armado en circuito real si no aterrizo RA0 a tierra se queda encendido desde el principio y con solo desconectarla (quitarla de tierra) y aunque no la ponga a Vcc se enciende el led.
25/03/2012 #24


Primero un fallo mio, donde dige resistencia de reset quise decir resistencia de pull-down.

Ahora vayamos por partes, el que solo se encienda y no se apague es normal, es lo que está programado, en el programa solo le decimos que se encienda. Si tu lo que quieres es que cuando presionemos se encienda y cuando lo soltemos se apague, tendras que agregarle por ejemplo un else, te pongo 2 maneras que funcionarían:

con if/else:
Código:
while(1)
  {
    if ( RA0_bit == 1)
        PORTB=0x01;
    else
        PORTB=0x00;
  }
otra manera mas sencilla:
Código:
while(1)
  {
    RB0_bit = RA0_bit;
  }
Lo segundo que te está pasando, lo de no poner la resistencia pull-down (aterrizar RA0 a tierra) también es normal, no le estas dando ningun nivel lógico, "lo tienes conectado a una antena que te está cogiendo ruido y dando cualquier nivel en esa entrada".

Espero te sea util, un saludo
25/03/2012 #25


Muchas gracias tannke, es verdd no habia puesto la instruccion para apagar, y estuve investigando sobre las resistencias de pull-down pero la verdad no se si conectan fisicamente o se programan, segun yo se programan pero no se como hacerlo, no se si puedas ayudarme en esto, y por ultimo quisiera pedirte un gran favor y si no te molesta me podrias dar tu correo para futuras dudas.
Gracias y un saludo¡¡
25/03/2012 #26


Bueno en tu circuito la resistencia pull-down es la que tienes en el pin 2 que va a masa, su función es mantener la linea en nivel lógico bajo hasta que aprietas el pulsador y la pones a nivel alto (5v).

Sobre el tema de programarlas por soft PULL-DOWN no es posible (almenos con los pic que conozco) preo sí puedes hacer PULL-UP a todas las entradas del puerto B.

En el pic 4550 esto se hace con el registro INTCON2 bit7 (RBPU), si lo pones a 1 las resistencias estan deshabilitadas(estado por defecto), si lo pones a 0 las habilitas.

Un saludo.
25/03/2012 #27


oh lo acabo de probar y funciona a la perfeccion muchas gracias tannke, con respecto a lo de tu e-mail espero puedas darmelo.
Saludos
27/03/2012 #28


Holas de nuevo, te paso mi correo: políticas@delforo.com
Esperé un poco para leer las normas del foro porque no sabía si se podía poner el correo.

Un saludo


21/04/2012 #29

Avatar de Norberto

soy nuevo con mikroc, alguien me puede decir como hago para ver el valor que van teniendo las variables dentro del programa en c a medida que lo hago correr con F8
21/04/2012 #30


en la pestaña de depuración (normalmente a la derecha) hay un recuadro que pone "Select variable from list", ahi buscas tu variable (puedes escribirla), cuando la tengas, le das a "Add" arriba, es un + verde. Ahora ya te aparecera en el listado de abajo donte te pone el nombre, valor (puedes seleccionar como visualizaro char, bin, hex...) y direccion.

Un saludo
21/04/2012 #31

Avatar de Norberto

Muchisimas gracias tanquee!!!
01/09/2012 #32

Avatar de ByAxel

Revisa la hoja de datos del PIC que estas programando, recuerda que muchos PIC (la mayoria hoy en dia) tienen módulos internos para trabajo especial y que algunos de estos comparten sus pines... Con eso supongo que el PORTA tiene por defecto el módulo ADC asociado a sus pines y trabajan como entradas análogas... entonces para que sean digitales lo debes configurar en el registro/s respectivo/s... Busca en el foro, que estos temas ya se han hablado bastante.

Saludos
20/09/2012 #33


alfabeto en un display alfanumerico en mikroC
hola soy nueva en el mundo del microcontrolador y quisiera que me ayuden en un programa del alfabeto que muestre en un display alfanumero con el pic16f877 con el programa del mikroC y estoy un poco perdida en ese tema quisiera que me ayuden
20/09/2012 #34

Avatar de DJ DRACO

Buenas, pero qué significa un poco perdida?

Sabes algo de programación en C o ASM al menos?

Entendés el funcionamiento de un display alfanumérico?

Deberías hacer alguna rutina de retardo para que cada letra se vea un par de segundos..o minutos..

Con tan poca información es dificil en qué ayudarte.

En el programa live wire hay un ejemplo, de cómo manejar los 16 bits para ir formando las letras, supongo que si definis eso en el programa es cuestión de hacer las 28 letras y listo...
Archivos Adjuntos
Tipo de Archivo: rar display.rar (3,7 KB (Kilobytes), 37 visitas)
20/09/2012 #35


gracias pero recien estoy llevando un poco de mikroC
20/09/2012 #36

Avatar de DJ DRACO

ok, recién empezando a estudiar el lenguaje digamos.

Bueno, basicamente por qué querés usar ese PIC?

Digamos que vas a usar ese PIC..como ya te dije para 1 sólo display alfanumérico necesitas 16 puertos del PIC o una especie de multiplexor, o decodificador, que no se si existe.

O tal vez lo puedas ir diseñando con decodificadores para 7 segmentos y compuertas lógicas, para ahorrar algunos puertos del PIC
20/09/2012 #37


podria usar los puertos B y puertosC

para el display en si el programa no lo tengo bien claro
20/09/2012 #38

Avatar de DJ DRACO

Yo sabría guiarte un poco en assembler, no tanto en C

Mi idea sería declarar las 28 letras como bits en 2 registros, uno para puerto B y otro para el C

Mandar de a 1 letra a los puertos y mantenerlos así digamos 5 segundos...apagar y mandar la siguiente letra ... y asi
20/09/2012 #39


si eso estaba pensando pero el programa tiene k ser en mikroC pero estaba pensando hacer unas tablas para el alfabeto y sacarlo en hexadecimal
20/09/2012 #40


Esto seria una opción , es un video donde explica a groso modo como programar un pic con mikroC en los ejemplos que muestra hace referencia a encender o apagar leds pero en tu caso tendrías que saber que "leds" te formarían las letras en el display y asi encender o apagar los que sea necesario.
te dejo el link si te interesa
¿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 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.