pic 18f4550 caracteres extraños en hyperterminal

Muchachos buenas noches, necesitaria si me puede ayudar con el siguiente problema:

quiere enviar la señal de un potenciometro por medio de una entrada el 18f4550.

este es el programa cometi el error de compilarlo grabarlo y dejar que tenga un tiempo de adquisicion de 2000 ms o sea 2 seg lo cual es muy alto . cuando quise bajar el tiempo me empezo a dar carateres extraños y no como estaba funcionaba antes .

Este es el codigo:


#include <18f4550.h>
#device adc=10
#FUSES INTHS,MCLR,PUT,BROWNOUT
#use delay(INTERNAL=8MHZ)
#use rs232 (BAUD=9600 , XMIT=PIN_C6 , RCV=PIN_C7)


float volt;

float voltaje (float volt)
{
long int q;
set_adc_channel(0);
delay_us(20);
q=read_adc();
volt=((4.98*q)/1023.0);
return volt;
}

void main()
{
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
while(true)
{
volt=voltaje(volt);
printf("%1.2fV \r\n",volt);
delay_ms(2000);
}
}

si lo compilo y lo pruebo en el proteus funciona bien peroooooooo este aqui el problema .

El hex que genere al principio funciona de diez tanto en proteus como en el hardware, pero toma muetras cada 2 seg, y el codigo que esta arriba si genero un nuevo hex, en proteus funciona bien pero en la prueba de hyperterminal aparece esto:

con el primer hex:

V
4.98V
4.98V
4.98V
4.97V
4.97V

con sel segundo:
€€€€ø€€€€€€€ø€€€ø€€€€ø€€€€ø€€€€ø€€ø€€ø€€€€€€€ø€€€€€€€ø€€€€€€€ø€€€€€€€ø
€€€ø€€€€ø€€€€€€€ø€€€ø€€€€ø€€€€€€€ø€€€€€€€ø€€ø€€€øø€€€€ø€€€€ø€€€€ø€€€€€€€ø€€€€ø€€
€€ø€€€€€€€ø€€€€ø€€€€ø€€€€€€€ø€€€€€€€ø€€€ø€€€€ø€€€€€€€ø€€€€ø€€€€ø€€€ø€€€€ø€€€ø€€€
€ø€€€€€€€ø€€€€ø€€€€ø€€€€€€€ø€€€€€€€ø€€€€ø€€€€ø€€ø€€€€ø€€€€ø€€€€€€€ø€€€€€€€ø€€€€€
€€ø€€€€€€€ø€€€€€€€ø€€€€ø€€€€ø€€€€€€€ø€€€€€€€ø€€ø€€€€ø€€€€ø€€€€ø€€€€ø€€€€€€€ø€€€€
€€€ø€€€ø€€€€ø€€€€€€€ø€€€€€€€ø€€€€€€€ø€€€€€ø€€€øø€€ø€€€ø€€€€€ø€€€ø€€€€ø€€€€€€€ø€€
€€€€€ø€€€€€€€ø€€€ø€€€€ø€€€€€€€ø€€€€€€€ø€€€€€€€ø€€€€€€€ø€€€ø€€€€ø€€€€€€€ø€€€€€€€ø
€€€€ø€€€€ø€€€€€€€ø€€€ø€€€€ø€€€øø€€€€ø€€€€€

alguien me podria ayudar con esto .

les adjunto : el hex que anda bien y el proteus.


Saludos.
 

Adjuntos

  • archivos_hex_y_cof(1).rar
    8 KB · Visitas: 7
  • serial com virtual.rar
    14.8 KB · Visitas: 10
Hola Correotptrabajo,

Estamos poniendo mal creo tu codigo al momento de poner el tiempo de adquisicion ya que primero muestras y de ahi le das 2000ms que creo que es mucho con 500 ms es suficiente, antes del printf iria tu delay, pruebalo asi ahi debe funcionar correctamente.

Saludos(y)
 
alguien me podria ayudar con esto .
El problema que tienes se trata solo de configuración fuses y de los parámetros para el oscilador interno.
Con la configuración que tienes, el oscilador interno debe estar funcionando a 4MHz y no a 8MHz.
Y eso lo hará aunque tengas declarada la frecuencia de trabajo a 8MHz en el código.

Utiliza esta palabra de configuración...
#fuses cpudiv1,pll2
#use delay(internal=8MHz)

Y dentro del main coloca esto...
setup_oscillator(OSC_8MHZ|OSC_STATE_STABLE);

Con eso te debe funcionar sin problemas.

Suerte.
 
El problema que tienes se trata solo de configuración fuses y de los parámetros para el oscilador interno.
Con la configuración que tienes, el oscilador interno debe estar funcionando a 4MHz y no a 8MHz.
Y eso lo hará aunque tengas declarada la frecuencia de trabajo a 8MHz en el código.

Utiliza esta palabra de configuración...
#fuses cpudiv1,pll2
#use delay(internal=8MHz)

Y dentro del main coloca esto...
setup_oscillator(OSC_8MHZ|OSC_STATE_STABLE);

Con eso te debe funcionar sin problemas.

Suerte.

Muchas gracias funciona perfecto estare adjuntando el diseño completo saludos
 
Atrás
Arriba