Duda, Hacer una Onda Cuadrada de 650mhz

Hola, me encargaron eso en la escuela pero no se como hacerlo, espero y me ayuden, tengo 2 pic 16f877a y el 16f873a, espero la ayuda....
 
Tiene que ser afuerzas con pic ya que estoy llevando la materia de micros , si habia pensado en compuertas, y ya genere la frecuencia, lo que no se es como aumentarla hasta 650Khz.
 
Última edición por un moderador:
Larcyn

Con cualquiera de los PIC's que posees, un Xtal de 10.4 MHz tendras un ciclo de máquina de 2,6 MHz (0,384615384615 µSeg.).

Tu necesidad es de 650 KHz (1,53846153846153 µSeg.) con lo cual con que cambies una salida de estado cada 2 ciclos de máquina, y luego la vuelvas a cambiar al otro estado luego de otros 2 ciclos de máquina habras logrado la señal cuadrada que necesitas.

Incluso hay muchas otras formas, pero con lo que solo has enunciado no sabria darte mas ayuda, depende de que elementos adicionales te permita tu profesor.

Saludos, JuanKa.-
 
Última edición:
J2C, cómo cambiarías de estado un pin cada 2 ciclos? Lo pregunto en serio porque programar algo así, que esté cambiando de estado cada dos ciclos me parece algo imposible. Corrígeme si me equivoco pero para eso tendrías que hacer algo asi:
Código:
movlw 0x01 ; condicion inicial para cambiar el pin 1 del puerto X
xorwf portx,f ; a partir de aqui contamos
nop ; ciclo 1
xorwf portx,f ; ciclo 2
nop ; ciclo 1
xorwf portx,f ; ciclo 2
nop ; ciclo 1
xorwf portx,f ; ciclo 2
...
Tal vez esté mal pero no se me ocurre otra forma de programar algo que haga que un pin cambie de estado cada dos ciclos y programar algo así es verdaderamente imposible porque en algún momento se acabaría la memoria de programa.

Además, no se si te entendí mal o es que hace mucho que no programo un PIC pero para generar una señal de 650KHz con el oscilador que tu propones no se tendría que cambiar el estado del pin cada 4 ciclos? De esta manera el código sería mucho más simple:
Código:
movlw 0x01 ; condicion inicial para cambiar el pin 1 del puerto X
ciclo xorwf portx,f ; ciclo 1
nop ; ciclo 2
goto ciclo ; ciclos 3 y 4
Otra cosa podrías hacer Larcyn es utilizar el módulo PWM y generar una señal con un ciclo util de 50% y una frecuencia de 650KHz. No es complicado y en el datasheet puedes encontrar todo lo que necesitas. Tal vez mi respuesta no te resuelva el problema pero hace mucho que no agarro un PIC y cualquier código que te pueda pasar probablemente no te serviría de mucho pero la respuesta es: usa el PWM.
 
Última edición:
Protoboard

Solo tire una idea sin entrar en la programación. Tampoco sabemos durante cuanto tiempo debe generar dicha señal por que quien lo solicito no dio mas detalles, fue demasiado escueto!!!.

No recordaba si el PWM llegaba a 650 KHz, que seria lo mejor en todo caso. También pensa que esta estudiando y desconocemos que sabe y que no.

Solo son ideas para entre todos darle mas puntos de vista, a mi no me interesa realizar la tarea de el.

Saludos, JuanKa.-
 
En ese pic una patita del puerto c se pude programar como salida del oscilador del temporizador 1 y ete se puede programar como oscilador variable
 
Miren, yo tengo haci mi codigo, lo que ahora quiero es que saque la frecuensia de 650 KHz


;*********************************************************************************
;Programa practica3.ASM
;1)GENERAR UNA ONDA CUADRADA POR EL PUERTO RB0 DE 650KHZ
;*********************************************************************************
LIST P=16F873A
#INCLUDE P16F873A.INC
R0 EQU 0X20;
R1 EQU 0X21;
R2 EQU 0X22;
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC & _LVP_OFF
ORG 0H ; comando que indica al ensamblador la direccion de la memoria del programa
; donde se va a situra
;*********************************************************************************
BSF STATUS,5 ; PONE RP0 A 1 Y PASA AL BANCO1
MOVLW B'00000000' ; CARGA W CON 00000000
MOVWF TRISB ; Y PASA EL VALOR A TRISB
BCF STATUS,5 ; PONE RP0 A 0 Y REGRESA AL BANCO 0

VAMOS BSF PORTB,0; HABILITA EL PUERTO RB0
NOP ; RETARDO PARA LA FRECUENCIA
BCF PORTB,0; DESHABILITA EL PUERTO RB0
NOP; RETARDO PARA LA FRECUENCIA
GOTO VAMOS
END
 
Atrás
Arriba