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

Temas similares

30/10/2012 #1


PIC omite secuencias de iluminación de leds
Hola, tengo un curioso problema, estoy empezando en la programación de pics y tras realizar el encendido y apagado de un led con éxito decidí probar una secuencia con 5 leds conectados en el puerto B (RB0 a RB4).

El caso es que en mi programa he incluido 10 secuencias de encendido de leds y para mi sorpresa después de programar el pic sólo hace las 3 primeras secuencias, he probado a omitir las primeras y ver si se hace el resto y sí, las hace, pero nunca hace más de tres del total que le defina al programa.

USO:

MPLAB X IDE

XC8

PICKIT 3

16F84A

El código:

Código PHP:
/* 
 * File:   main.c
 * Author: nimio
 *
 * Programa para encender una secuencia de 5 Leds en el Puerto B (RB0-RB4)
 *
 * Created on 29 de octubre de 2012, 20:54
 */

#include <xc.h>  // Librerías del compilador XC8.

#define _XTAL_FREQ 4000000 // Frecuencia Cristal 4MHz.

#pragma config FOSC=XT, WDTE=ON, PWRTE=OFF, CP=OFF //Configuración de Bits del PIC.


void main(void) {

    
TRISB=0//Todos los puertos B como salidas.
    
PORTB=0//Todas las salidas del puerto B a 0 voltios.

    
while (1) {

        
__delay_ms(600); // Retardo de 600 milisegundos.
        
PORTB=0b00000001// RB0 a 5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo de 600 milisegundos.
        
PORTB=0b00000010// RB1 a 5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo de 600 milisegundos.
        
PORTB=0b00000100// RB2 a 5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo a 600 milisegundos.
        
PORTB=0b00001000// RB3 a 5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo de 600 milisegundos.
        
PORTB=0b00010000// RB4 a 5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo de 600 milisegundos.
        
PORTB=0b00011111// RB0-RB4 a 5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo de 600 milisegundos.
        
PORTB=0b00010001// RB0 Y RB4 a 5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo de 600 milisegundos.
        
PORTB=0b00001010// RB1 y RB3 a 5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo a 600 milisegundos.
        
PORTB=0b00000100// RB2 a 5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo de 600 milisegundos.
        
PORTB=0b00010101//RB0, RB2 y RB4  5 voltios y el resto a 0 voltios.
        
__delay_ms(600); // Retardo de 600 milisegundos.
    
}
    


Tiene algo que ver con que no haya conectado el resto de pins que no uso a 5 voltios? Si así fuera... que pins se conectan? sólo los del puerto que uso (B)? o todos los puertos?
He visto que para pequeñas prácticas como esta no los suelen conectar, en que punto tendría que empezar a plantearme conectarlos?

Espero que me podáis ayudar porque no me esperaba este revés.

Gracias de antemano.

Saludos
31/10/2012 #2


Hola, prueba a poner el WDTE=OFF, igual se te está reseteando por el whatchdog.

Un saludo.
31/10/2012 #3


Sí! así es!! Muchas gracias!! estaba a punto de autoresponderme!

Tenía el watchdog ON.

Gracias por el interés.

Saludos!
Respuesta
¿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.