Autor Tema: modulo ccp restet on timer 1 y pic18f4550  (Leído 3946 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado nahumof

  • PIC10
  • *
  • Mensajes: 24
modulo ccp restet on timer 1 y pic18f4550
« en: 08 de Junio de 2010, 18:31:45 »
hola todos en el foro

espero puedan orientarme:
la idea es adquirir datos por adc y graficarlos en glcd. simple. controlando el tiempo de muestreo, el cual controla el timer.

1.-tengo un pic 18f4550 al que no le puedo asignar el valor al ccpx, de ninguna forma lo he podido hacer, mi intencion es usar el CCP_1=XXX y compararlo con el timer para resetearlo pero no puedo asignarlo y hace la cuenta de 16 bits, usando el ccp como (CCP_COMPARE_RESET_TIMER)

2.-tambien probe con setup_ccp2(CCP_COMPARE_RESET_TIMER|ccp_use_timer3); y usar el timer 3 me marca error (no sabe que es la instruccion apesar de estar declarada en el header del pic)...busque en todos lados en el foro pero tampoco encontre mucho.

en proteus no se ve que se muevan los registros de ccp para asignar los valores que yo quiero.

les mando el codigo que utilizo por si le ven algo rraro y porcierto el codigo funciona perfecto con un pic 16f877

Código: [Seleccionar]
//osciloscopio nahum 1/jun/2010
//
 
#include <18f4550.h>
#device ADC=10

#define CRYSTAL 20000000
#use delay(clock=CRYSTAL)
#fuses HS,NOWDT
#include <HDM64GS12.c>
#include <graphics.c>

#define CLOCKFREQ (0.25 * CRYSTAL) // clock es 1/4 de la frecuencia del cristal;
#define TimerCounts(seconds) ((int16) (CLOCKFREQ * (seconds) + 0.5))

int16 valor;
float tension;

#int_ad
void ad_int()
 {
  valor=read_adc(ADC_READ_ONLY);
  CCP_2 =(TimerCounts (2e-4)); // Interrupt at 0.0002sec-5khz;
 
 }                             
 
 void main()
 {
  int8 xa=128,ya=0;
  glcd_init(ON);
  disable_interrupts(global);
 
 
  setup_adc_ports(AN0);
  setup_adc(ADC_CLOCK_INTERNAL);
  set_adc_channel(0);
 
 
   
  setup_ccp2(CCP_COMPARE_RESET_TIMER);
  setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
  set_timer1(0);
  CCP_2 =(TimerCounts (2e-4)); // Interrupt at 1 msec-1khz;
  enable_interrupts(INT_AD);
  enable_interrupts(global);
 
 
  glcd_fillscreen(0);
  glcd_line(1,63,1,1,1);
  glcd_line(1,31,127,31,1);
 
 
 do{
    tension=(valor*5.0)/1024.0;
    ya=1.0+12.6*tension;
    glcd_pixel(xa,ya,1);
    xa--;
    if(xa<2)
     {
      xa=128;
      glcd_fillscreen(0);
      glcd_line(1,64,1,1,1);
      glcd_line(1,31,128,31,1);
     }
   } while(true);
 }

saludos y gracias desde ya. :-/

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: modulo ccp restet on timer 1 y pic18f4550
« Respuesta #1 en: 09 de Junio de 2010, 13:24:44 »
  :z) Si funciona perfecto el el Microcontrolador, ya está! Proteus es un simulador y puede tener bugs  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado nahumof

  • PIC10
  • *
  • Mensajes: 24
Re: modulo ccp restet on timer 1 y pic18f4550
« Respuesta #2 en: 09 de Junio de 2010, 16:07:11 »
perdon por poner el post donde no era y gracias por moverlo.

pues funciona en un pic 16f877 mas no funciona en un pic 18f4550... y proteus creo tiene entonces un bug.

esta bien el codigo???
ayudita :-/

gracias.:)