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

Temas similares

21/08/2010 #1


Placa de pruebas para pic 18f4550
Hola a todos, aquí os traigo una placa de pruebas para el pic 18f4550, en los archivos adjuntos esta tanto el esquema como las PCB. la pcb esta hecha para que, aunque sale a 2 caras, sea fácil hacer los puentes necesarios para poder hacerla a una cara.
La placa se alimenta mediante un usb hembra de tipo B, o mediante 2 pines. En la placa están sacados todos los puertos excepto el puerto E, ya que no lo veo demasiado útil. Lleva incorporada la comunicación serie rs232 con un max233.
La conexión usb no está conectada ya que personalmente no se utilizarla y la mayoria de principiantes tampoco. He incluido un led conectado al puerto RA0 para hacer diferentes pruebas con la placa sin necesidad de conectar elementos externos.
La placa esta diseñada para poder conectarla al programador PICKIT2, y de paso alimentarlo por ahí si es necesario.
No lleva botón de reset ya que siempre pongo la opción de masterclear desactivada, en caso de activarla bastaría con poner un jumper en los pines diseñados para ello.
Aquí os dejo algunas fotos de la placa ya montada.
espero que os sea útil.

Un saludo
23/08/2010 #2


Programas de prueba para pic 18f4550
Hola a todos de nuevo, por si alguien se anima a hacer la placa, o simplemente por si a alguien le interesan voy a poner 2 programas que he diseñado bastante sencillos pero que utilizan el puerto rs232.
El primer programa utiliza el modulo CCP del microcontrolador junto a un programa de visual basic. Cuando en el programa pulsamos la tecla conectar, el led conectado al puerto RA0 se enciende con un ciclo de trabajo del 50%, en ese momento podemos variar el ciclo de trabajo y se observa que el led se enciende mas o menos. A continuación os pongo el codigo y os adjunto el .exe del programa. No contiene virus, el porgrama lo he hecho yo también.
Código:
//////// Control PWM con CCP / EUSART 18f4550 ///////
////////// Hola mundo 2 desde PC, 8 MHz ////////////



#include <p18F4550.h>

// Bits de configuración
#pragma config WDT=OFF
#pragma config FOSC=HS
#pragma config DEBUG=OFF
#pragma config LVP=OFF
#pragma config MCLRE = OFF           
#pragma config ICPRT = OFF

int duty;

// Declaración de la rutina de tratamiento interrupción de alta prioridad
void R_Int_Alta(void);		

// Vectorización de las interrpciones de alta prioridad
#pragma code Vector_Int_Alta=0x08
void Int_Alta (void)
{
	_asm GOTO R_Int_Alta _endasm	// Cuando se produce una interrupción de alta 
}					// Prioridad se ejecuta la función
#pragma code

#pragma interrupt R_Int_Alta
void R_Int_Alta (void)
{
	if(PIR1bits.RCIF){
		PIR1bits.RCIF=0;
		if (RCREG==0xfa){
			CCP2CON=0x0F;// b00001111: Modo PWM
			duty=50;
			CCPR2L=duty*10/4;
			CCP2CONbits.DC2B1=duty & 0X02;
			CCP2CONbits.DC2B0=duty & 0X01;
		}
	
		if (RCREG==0xfb)
			CCP2CON=0x00;// modulo ccp deshabilitado

		if (RCREG<0xfa){
		duty=RCREG;
		duty=duty*10;
		CCPR2L=duty/4;
		CCP2CONbits.DC2B1=duty & 0X02;
		CCP2CONbits.DC2B0=duty & 0X01;
		}
	}
	
}
	
	
	
void main (void)
{
	
	//configuracion eusart
	BAUDCON=0x00;  //modo 8 bits
	TXSTA=0x24;   //8 bits, transmision habilitada
	RCSTA=0x90;	 //8 bits, canal eusart habilitado, recepcion habilitada
	SPBRG=51; 	//velocidad real de comunbicacion 9600 baudios
	
	//configuración CCP
	CCP2CON=0x0F;// b00001111: Modo PWM
	T2CON=0x04;// b00000100: Post-Escalar desactivado, Pre-Escalar 1:1, T2 en Marcha
	PR2=249; //calculo de pr2 para una frecuencia de 8 KHz 

	//configuracion de interrupciones
	RCONbits.IPEN=0; //Desactivado el sistema de prioridades
	INTCONbits.GIE=1; //Se activan interrupciones a nivel global
	INTCONbits.PEIE=1; //Se activan interrupciones de perifericos a nivel global
	PIE1bits.RCIE=1; //Se habilita la recepcion del canal serie
	
	TRISA=0x00; //puerto A como salidas
	PORTA=0; //Inicializamos el puerto A a 0
	TRISCbits.TRISC1=0;
	PORTC=0;  //inicializamos el puerto C a 0

	CCP2CON=0x00;// modulo ccp deshabilitado
	while (1){
		PORTAbits.RA0=PORTCbits.RC1;
	
	
	}	// Bucle sin fin
}
El siguiente programa que os pongo es un simple voltimetro que mide la tensión que hay en el canal AN0. La tension nos aparece en el programa monitor. en el programa, podemos cambiar la referencia entre 5 voltios y 20 voltios en 4 escalones. OJO!!! no significa que al pic podais ponerle hasta 20 voltios!! sino que con un divisor de tension haciendo que para 20 voltios, a la entrada del pic haya 5 voltios.

Código:
//////// Programa prueba EUSART 18f4550 ///////
//////////Voltimetro, 8 MHz /////////


#include <p18F4550.h>
#include <delays.h>

// Bits de configuración
#pragma config WDT=OFF
#pragma config FOSC=HS
#pragma config DEBUG=OFF
#pragma config LVP=OFF
#pragma config MCLRE = OFF           
#pragma config ICPRT = OFF

	
void main (void)
{
	char a=0, b=0;
	//configuracion eusart
	BAUDCON=0x00;  //modo 8 bits
	TXSTA=0x24;   //8 bits, transmision habilitada
	RCSTA=0x90;	 //8 bits, canal eusart habilitado, recepcion habilitada
	SPBRG=51; 	//velocidad real de comunbicacion 9600 baudios

	//configuración canal AD
	ADCON0=0x01; //Selección de canal analogico 1
	ADCON1=0x0E; // Habilitacion de RA0 como canal analogico, referencias vcc y vss
	ADCON2=0x29; // alineacion a derechas

	//configuracion de interrupciones
	RCONbits.IPEN=0; //Desactivado el sistema de prioridades
	INTCONbits.GIE=1; //Se activan interrupciones a nivel global
	INTCONbits.PEIE=1; //Se activan interrupciones de perifericos a nivel global
	
	
	TRISA=0xFF; //puerto A como entradas
	TRISCbits.TRISC6=0;
	

	while (1){
		
		
		ADCON0bits.GO=1;
		while(ADCON0bits.DONE==0);
		TXREG=ADRESH;
		Delay10KTCYx(50); //retardo de 100ms
	
	}	// Bucle sin fin
}
espero que os sean de ayuda, colgare mas programas conforme los vaya haciendo. Si alguien quiere los codigos de visual basic para mejorarlos o simplemente para aprender que lo doga y los colgare.
Un saludo
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.