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

Temas similares

24/11/2009 #1


Oscilador PIC18F4550
Hola a todoss!! vereis tengo el pickit 2 y un pic18f4550, y bueno, no se si he conectado mal el oscilador, o que el programa está mal hecho, el caso es que no hace nada. Empezamos por el oscilador, tengo un cristal de 8 MHz y dos condensadores de 22pF (lo recomendado con 20pF pero no creo que haya mucha diferencia), y los tengo conectados a las entradas OSC1 y OSC2 del integrado (pines 13 y 14), la conexión vamos como dice el cristal en paralelo y los dos condensadores a los extremos y a masa, eso creo que lo tengo bien y ahora os pongo el codigo a ver que os parece:
Código:
#include <p18f4550.h>

#pragma config WDT=OFF
#pragma config FOSC=HS
#pragma config DEBUG=ON
#pragma config LVP=OFF
#pragma config MCLRE=OFF
#pragma config ICPRT=OFF

void main (void){

unsigned int a;
TRISA=0x00;
PORTA=0X00;

    while(1){
         if (PORTA==0x01)
            PORTA=0x00;
        else
            PORTA=0x01;

    for(a=0;a<1000000;a++); //retardo

        }
}
el programa es bastante sencillo. . . que se encienda y apague un led, no tiene mas. El programa compila bien pero no hae nada. .
Gracias por adelantado!!

Un saludoo
24/11/2009 #2


Respuesta: Oscilador PIC18F4550
Mira no soy un experto pero me parece que el error esta en que el puerto a "TRISA=0x00" lo tenes como salida y despues intentas tomar un pulso del mismo puerto A
"if (PORTA==0x01)"

Yo lo cambiaria por

void main (void){

unsigned int a;
TRISA=0x02; // 0000 0010 Ra1 como entrada
PORTA=0x00;

while(1){

if (PORTAbits.RA1==1)
PORTAbits.RA0=1;
else
PORTAbits.RA0=0;

for(a=0;a<1000000;a++); //retardo
}
}

Espero sea de ayuda
24/11/2009 #3


Respuesta: Oscilador PIC18F4550
hola!! gracias por contestar pero no es eso.. . porque pruebo con este otro codigo en el que no leo el puerto a sino una variable y tampoco funciona. . .
Código:
#include <p18f4550.h>

#pragma config WDT=OFF
#pragma config FOSC=HS
#pragma config DEBUG=ON
#pragma config LVP=OFF
#pragma config MCLRE=OFF
#pragma config ICPRT=OFF

void main (void){

unsigned int a, b;
TRISA=0x00;
PORTA=0X01;
b=0;
    while(1){
         if (b==0){
            PORTA=0x00;
            b==1;}
        else{
            PORTA=0x01;
            b==0;}

    for(a=0;a<1000000;a++);

        }
}
gracias de todas formas
24/11/2009 #4


Respuesta: Oscilador PIC18F4550
Mmmm, Proba modificando el ADCON1, dejalas configuradas a todas como digitales
agregale esta linea

ADCON1=0X0F;
25/11/2009 #5


Respuesta: Oscilador PIC18F4550
sigue sin hacer nada. . . alguien me puede pasar un programa que funcione con un oscilador de cristal¿¿??? asi lo pruebo!!

vamos a ver!! acabo de hacer un debug en el micro y el porograma funciona perfectamente, el problema debe estar en el oscilador, o en la configuración del oscilador. El oscilador lo tengo conectado como he dicho antes, y la configuracion FOSC=HS, hay algun registro que tenga que modificar mas para que funcione el pic??
25/11/2009 #6


Respuesta: Oscilador PIC18F4550
// DS 51537 - Configuration Settings (Ver. C)


#pragma config OSC = HS /* Para osc a 20Mhz */
#pragma config FCMEN = OFF /* Para forzar a usar solo el osc externo */
#pragma config IESO = OFF /* Osc Interno OFF */
#pragma config PWRT = ON /* Power Up Timer ON */
#pragma config BOREN = ON /* Si detecta una falla en la alimentacion: RESET */
#pragma config BORV = 3 /* La tensión a la que se resetea, antes 43 */
#pragma config MCLRE = ON /* MCLR Externo ON */
#pragma config LPT1OSC = OFF /* Timer 1 Osc Int OFF */
#pragma config PBADEN = OFF /* Pines del B no analógicos */
#pragma config CCP2MX = PORTC /* El capture del PWM lo manejo por el puerto C */
#pragma config STVREN = ON /* Si hay un desborde del stack: RESET */
#pragma config LVP = OFF /* Low Voltage Programming OFF */
#pragma config XINST = ON /* Para modo extendido */
#pragma config DEBUG = ON /* Para habilitar el ICD */
#pragma config WDT = ON, WDTPS = 128 /* Watch Dog Timer ON y con un preescaler de 128 */
25/11/2009 #7


Respuesta: Oscilador PIC18F4550
sigue sin funcionar!!! ya he cambiado hasta el cristal!! no se que mas hacer

una cosa. . . el pin mclr tengo que ponerlo a vcc si lo tengo en ON?? y si lo tengo en OFF?¿?¿¿?
25/11/2009 #8


Respuesta: Oscilador PIC18F4550
Mandalo con una resistencia (menor que 40K) a positivo, para resetearlo le pongo un pulsador a masa, fijate que en las hojas de datos sugieren un circuito, como estas alimentando el pic? que raro que no funcione
25/11/2009 #9


Respuesta: Oscilador PIC18F4550
Hola

pues que yo sepa en la configuracion de los TRIS un pin para entrada es 1 y para salida es 0
y en la carpeta donde instalaste el c18 tienes un archivo en la carpeta docs hlpPIC18ConfigSet.chm
que tiene toda la informasion acerca de la configuracion.
lo primero que se me ocurre es que debes cambiar esto:
#pragma config DEBUG=ON por
#pragma config DEBUG=OFF
esta opcion la debes activar solamente si quieres depurar y cuentas con un depurador ya sea este un pickit 2 o 3 o un ICD2 o 3.

y si sigue sin funcionar depura tu codigo en el MPLAB o usando proteus.

salu2
26/11/2009 #10


Respuesta: Oscilador PIC18F4550
ya he depurado el programa con el pickit2 y funciona, por eso he legado a la conclusion de que el problema esta en la configuración.
Ok pues ahora no que no puedo pero cuando pueda pruebo lo que me has dicho gonzalo. El pic d emomento lo estoy alimentando con la alimentación de pickit2, probe con una fuente a parte pero seguia sin funcionar. Graciasss!!!

bueno bueno bueno. . . pues he llevado con una resistencia de 10k el reset a +vcc y tampoco funciona. . . ... de todas formas, si lo pòngo en off no deberia de interferir ese pin no¿?¿?
27/11/2009 #11


Respuesta: Oscilador PIC18F4550
hola
si no pones el debug en off no funcionara sin el pickit.
yo ya lo experimente antes y ese pic no trabajara nunca mientras tengas acivado el flag de debug.
pero si no quieres creerme alla tu.

salu2
27/11/2009 #12


Respuesta: Oscilador PIC18F4550
mil gracias!!! ya funciona!!! en el mensaje anterior pensaba que me pedias que le hiciera un debug y ya se lo habia hecho y si que funcionaba. . ahora ha sido poner eso a off y ya funciona!!!!! gracias!!!!!
28/11/2009 #13


Respuesta: Oscilador PIC18F4550
Hola
Bueno, por lo menos ya aprendiste como hacer un debug. y eso te sera muy util en el futuro.

salu2
07/12/2009 #14


Respuesta: Oscilador PIC18F4550
El programa está bien. El programa está corriendo a gran velocidad y no se alcanza a ver el destello. La idea del for para crear una pausa es buena... pero lo estás haciendo con un int. Según el compilador que utilices algunos lo consideran de 8 bits. Intentá declarando la variable a como unsigned long (te creará una variable de 16 bits sin signo en caso de que utilices CCS como compilador. Igualmente, el varlor más grande que te tomará es 65534.) Y si utilizás un delay_ms(500), como para crear una pausa de medio segundo en lugar de un for???
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.