Programa Receptor Multibanda TSA5523/TSA5521

Hola.
Este tema tratara sobre las modificaciones ha hacer al programa que se ofrece en NEOTEO y en SERVISYSTEM con el cual se puede controlar el CI TSA5521 que controla el TUNER de nuestro receptor.
Me he dado cuenta de que mucha gente que ha intentado hacer este proyecto ( RECEPTOR MULTIBANDA DE NEOTEO) y que no han podido encontrar un tuner que use el TSA5521, han hecho la prueba con un tuner que tiene el TSA5523( yo soy uno de ellos :rolleyes: ) resultado solo he podido escuchar un canal del la banda de UHF y pitidos en la banda de VHF a medida que modificaba los pasos de 50KHz.
Así que mosqueado :x intente entender como es al programa leyendo una y otra vez las explicaciones que se dan en el proyecto.
y descubrí que el TSA5521 se controla así:
file.php

Y que el TSA5523 se controla así:
file.php


Como se puede comprobar condicen en todo menos en la ultima linea, la dedicada a la selección de la banda, si bien en la explicación se dice que en el BYTE selector de bandas (Band Switch Byte) se debe configurar así:

Para VHF baja será %00000001 y la llamaremos BB1.
Para VHF alta será %00000010 y la llamaremos BB2
Para UHF será%00001000 y se llamará BB3.
Segun e podido entender se trata de los bits BS4 al BS1
file.php

PERO al ver la configuración del TSA5523 nos dice que la selección de bandas se hacen controlando los bits del P7 al P4:
file.php

Entonces preguntar:
¿ Es correcto esto que he dicho?
Si es así:
¿Para que sirven los bits del P3 al P1?
Adjunto PDF:http://www.datasheetarchive.com/dataframe.php?file=DSA-495240.pdf&dir=Datasheets-25&part=TSA5523M#


Y si no es mucho pedir y es correcto el tema de que hay que modificar el programa, me gustaría pedir a alguien que sepa programar a ver si es tan amable de modificar el programa. :oops: :oops: :oops: :oops: :oops: :oops: :oops: :rolleyes:
Lo pido :rolleyes: porque yo no se nada de programación, solo lo muy básico y porque de esta manera podría darle vida a mi proyecto el cual esta a medias ademas de que ha muchas personas les podrá servir ya que ampliamos los modelos de tuner que puedan ser usados.

Esto son los archibos en BAS, ASM y HEX:http://www.4shared.com/file/166098940/c5383cfb/Receptor1.html
MUCHÍSIMAS GRACIAS AL QUE ME AYUDE.(y)
 

Adjuntos

  • Receptor1.ZIP
    17.7 KB · Visitas: 41
Última edición por un moderador:
Para tener una mejor apreciación de lo que se pretende, seria mas adecuado tener el diagrama completo donde esta usándose el TSA5523M ya que depende de eso; para saber el propósito de P0 a P7, ya que yo entiendo que son puertos de salida (con colector abierto) donde puedes conectar lo que se guste y en el datasheet del integrado TSA5523M, se sugiere el uso de de P7 para UHF, P5 para VHF_H y P4 para VHF_L (puesto que también sugieren el uso de chips de Philips como sintonizadores) y pues yo no se que se este usando en tu aplicación.

Dicho de otra forma, quizás deberías antes que nada, hacer pruebas de comunicación muy simples con el TSA5523M, conectando ocho leds al puerto (P0-P7) del TSA5523M y ver si los enciendes a tu petición con su respectivo control de las banderas o agradecimientos del propio chip (Test BITS que se mencionan en la pagina 7 del datasheet), ya teniendo control del chip, entonces tendrás mucho mas claro el funcionamiento y las prestaciones de la aplicación. Y así adentrarte a ver si modificas a tu gusto el voltaje del pin 9 (Vtune), ya que es el meollo del asunto en un sintonizador que supongo es lo que pretendes desarrollar.



Saludos
 
Última edición:
Hola ... en la pagina 5 de la hoja de datos esta detallado los pines...P0,P1,P2 son entradas-salidas de transistor NPN y son de colector abierto, P3 idem pero solo es salida y P6 es salida de transistor NPN de colector abierto y/o entrada del ADC (Convertidor Analógico a Digital) que incluye. Para que sirven...si se usan como salida como llaves para activar/desactivar cosas, si están como entrada para censar el estado de distintos dispositivos digitales(1 o 0 o estado alto y bajo) a excepción del pin P6 que si se usa como entrada puede leer diferentes voltajes.

Saludos.

Ric.
 
Para tener una mejor apreciación de lo que se pretende, seria mas adecuado tener el diagrama completo donde esta usándose el TSA5523M ya que depende de eso;

No tengo el diagrama de donde se esta usando, lo que si tengo es el datasheet de donde se esta usando, se trata de un TUNER FI1216MK2 https://www.forosdeelectronica.com/attachment.php?attachmentid=93763&d=1370554673
En verdad los PINs del P0 al P4 no me importan solo era curiosidad por que no encontraba ese dato en el datasheet.
A lo que voy, ya me a veis explicado que son esos PINs (entradas-salidas de transistor NPN y son de colector abierto, P3solo es salida y P6 es salida de transistor NPN de colector abierto y/o entrada del ADC ).
Lo que verdaderamente me interesa es el control de los PINs P7 al P4 porque son los que controlan el Band switching del Tuner FI1216MK2.
Hoy me ha dado por mirar en profundidad el datasheet del tuner y he encontrado esto:
Banda Swit.jpg
Y necesito ayudapara modificar esos datos del programa.
Si abro el archibo.BAS con PROTON
Observo esto:
BASIC.png

%00000001 VHF BANDA BAJA
%00000010 VHF BANDA ALTA
%000001000 UHF
Estos son los datos para el TSA5521

Pero para el TSA5523 no valen como se pueden ver en esta tabla:
Banda Swit.jpg
¿Como cambio esos datos? ASÍ:
%00000101 VHF BANDA BAJA
%00001001 VHF BANDA ALTA
%00001100 UHF
¿Vastara con solo cambiar esos datos aqui? :
'NUESTRAS VARIABLES DE TRABAJO *********************************************************
Symbol BB1 = %00000001 'BAND-SWITCH BYTE EN VHF BANDA BAJA
Symbol BB2 = %00000010 'BAND-SWITCH BYTE EN VHF BANDA ALTA
Symbol BB4 = %000001000 'BAND-SWITCH BYTE EN UHF

Symbol ADBW = %11000010 'ADRESS BYTE (TERMINA EN CERO = ESCRIBIREMOS FRECUENCIA EN EL SINTO)
Symbol CB = %11001000 'CONTROL BYTE(MODO NORMAL /AVANZAMOS POR PASOS DE 50KHZ.)
Symbol CMW = %10100000 'PALABRA DE CONTROL PARA ESCRIBIR LA MEMORIA
Symbol CMR = %10100001 'PALABRA DE CONTROL PARA LEER LA MEMORIA

Muchas gracias por la ayuda.

Hola ... en la pagina 5 de la hoja de datos esta detallado los pines...P0,P1,P2 son entradas-salidas de transistor NPN y son de colector abierto, P3 idem pero solo es salida y P6 es salida de transistor NPN de colector abierto y/o entrada del ADC (Convertidor Analógico a Digital)

Saludos.

Ric.

(y)
 
No tengo el diagrama de donde se esta usando, lo que si tengo es el datasheet de donde se esta usando, se trata de un TUNER FI1216MK2 Ver el archivo adjunto 93763
En verdad los PINs del P0 al P4 no me importan solo era curiosidad por que no encontraba ese dato en el datasheet.
A lo que voy, ya me a veis explicado que son esos PINs (entradas-salidas de transistor NPN y son de colector abierto, P3solo es salida y P6 es salida de transistor NPN de colector abierto y/o entrada del ADC ).
Lo que verdaderamente me interesa es el control de los PINs P7 al P4 porque son los que controlan el Band switching del Tuner FI1216MK2.
Hoy me ha dado por mirar en profundidad el datasheet del tuner y he encontrado esto:
Ver el archivo adjunto 96590
Y necesito ayudapara modificar esos datos del programa.
Si abro el archibo.BAS con PROTON
Observo esto:
Ver el archivo adjunto 96591

%00000001 VHF BANDA BAJA
%00000010 VHF BANDA ALTA
%000001000 UHF
Estos son los datos para el TSA5521

Pero para el TSA5523 no valen como se pueden ver en esta tabla:
Ver el archivo adjunto 96590
¿Como cambio esos datos? ASÍ:
%00000101 VHF BANDA BAJA
%00001001 VHF BANDA ALTA
%00001100 UHF
¿Vastara con solo cambiar esos datos aqui? :
'NUESTRAS VARIABLES DE TRABAJO *********************************************************
Symbol BB1 = %00000001 'BAND-SWITCH BYTE EN VHF BANDA BAJA
Symbol BB2 = %00000010 'BAND-SWITCH BYTE EN VHF BANDA ALTA
Symbol BB4 = %000001000 'BAND-SWITCH BYTE EN UHF

Symbol ADBW = %11000010 'ADRESS BYTE (TERMINA EN CERO = ESCRIBIREMOS FRECUENCIA EN EL SINTO)
Symbol CB = %11001000 'CONTROL BYTE(MODO NORMAL /AVANZAMOS POR PASOS DE 50KHZ.)
Symbol CMW = %10100000 'PALABRA DE CONTROL PARA ESCRIBIR LA MEMORIA
Symbol CMR = %10100001 'PALABRA DE CONTROL PARA LEER LA MEMORIA

Muchas gracias por la ayuda.



(y)

Debes probar de esa forma que describes y de %10100000 para VHF banda baja %01000000 para VHF alta y %00110000 para UHF ya que no se como es el envió de los datos. No estudie el programa ni la hoja de datos del PLL y no se si recibe primero el bit bajo o el alto.
Compila dos con cada una de las alternativa y prueba a ver que sucede. Lamentablemente no dispongo de dichos PLL ni Tuner de TV para hacer pruebas.
Cuando se escribe el símbolo "%" en el Proton interpreta que lo que viene es un numero binario y el bit de mayor peso es el que esta a continuacion de símbolo Ej:%10000000 corresponde al numero decimal 128 mientras que %00000001 al numero decimal 1.

Ric.
 
lo que comenta ricbevi es correcto.

Por eso es mi insistencia en que conectes 8 leds, uno para cada puerto, así sabrás que sucede en tu programación. si primero se envía el bit mas significativo o viceversa. con eso se te despejara toda duda, y lo mejor de todo, así tendrás la certeza que en realidad tienes comunicación con el chip.
 
Debes probar de esa forma que describes y de %10100000 para VHF banda baja %01000000 para VHF alta y %00110000 para UHF ya que no se como es el envió de los datos. No estudie el programa ni la hoja de datos del PLL y no se si recibe primero el bit bajo o el alto.
Compila dos con cada una de las alternativa y prueba a ver que sucede. Lamentablemente no dispongo de dichos PLL ni Tuner de TV para hacer pruebas.
Cuando se escribe el símbolo "%" en el Proton interpreta que lo que viene es un numero binario y el bit de mayor peso es el que esta a continuacion de símbolo Ej:%10000000 corresponde al numero decimal 128 mientras que %00000001 al numero decimal 1.

Ric.

Lo mas normal es que le haga caso al datasheet del Tuner
Ver el archivo adjunto 96590
Es decir como yo decia

De todas formas tendre en cuenta tu correcion:

%10100000 para VHF banda baja
%01000000 para VHF alta (¿No debería ser: 10010000?)
%00110000 para UHF
Ya que el datasheet del TSA5523 dice que es como tu dices:
Ver el archivo adjunto 96674

Muchas gracias miborbolla y ricbevi
 
Última edición:
lo que comenta ricbevi es correcto.

Por eso es mi insistencia en que conectes 8 leds, uno para cada puerto, así sabrás que sucede en tu programación. si primero se envía el bit mas significativo o viceversa. con eso se te despejara toda duda, y lo mejor de todo, así tendrás la certeza que en realidad tienes comunicación con el chip.
No hace falta poner LEDs.
Cargas el programa modificado y pruebas.
Como solo hay dos opciones te la juegas al 50% si no pues borras y cambias.
Gracias de todas formas.
 

Adjuntos

  • TSA5523.jpg
    TSA5523.jpg
    46.2 KB · Visitas: 55
Última edición:
Lo mas normal es que le haga caso al datasheet del Tuner
Ver el archivo adjunto 96590
Es decir como yo decia

De todas formas tendre en cuenta tu correcion:

%10100000 para VHF banda baja
%01000000 para VHF alta (¿No debería ser: 10010000?)
%00110000 para UHF
Ya que el datasheet del TSA5523 dice que es como tu dices:
Ver el archivo adjunto 96674

Muchas gracias miborbolla y ricbevi

Si lo vas a utilizar en el tuner debes respetar la hoja de datos correspondiente(%10010000) ya que al conmutar externamente los VCO y tener dicho PLL incluido mas "llaves" el que diseña puede utilizar distintas opciones a las presentadas por el fabricante de dicho IC por ejemplo para simplificar el circuito impreso.

Ric.
 
Hola. Estoy tratando de realizar este proyecto: "Receptor Multibanda Neoteo", autor : Mario Sacco, (no le puedo preguntar a el, porque este
proyecto fue hace mucho y ya no esta en Neoteo)
Quisiera su ayuda para modificar un archivo fuente, porque mis conocimientos en programación son muy limitados.
Hicieron el programa (Basic proton) que va en el PIC18F4550 para el PLL TSA5521 (pasos o avanza de a 50 Kilohertz) y yo tengo un sintonizador con PLL TSA5520 (pasos o avanza de 62,5 Kilohertz)
Entonces debo cambiar dicho archivo pero no sé dónde, porque el numero que tengo que poner en el programa es con coma , no es un entero, entonces por lo que leí parece que tengo que cambiar el tipo de variable pero no sé hasta dónde hay que modificar o que modificar aparte de las variables.
Lo que no entiendo también es si debo cambiar no solo la variable de 50 Khz por 62,5 Khz sino también la de 1 Mhz y la de 10 Mhz por multiplos o submultiplos de 62,5 Khz.
Necesitaría si me pueden orientar en qué cambiar, cómo y en dónde.
Perdón si me equivoqué en algún nombre o termino. Desde ya, muchas gracias.
Código:
'****************************************************************
'*  Name    : RECEPTOR NEOTEO.BAS                               *
'*  Author  : Mario G. Sacco                                    *
'*  Notice  : Copyright (c) 2009 NeoTeo                         *
'*          : All Rights Reserved                               *
'*  Date    : 17/11/2009                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

'SELECCIONAMOS EL PIC Y LA FRECUENCIA DE TRABAJO (48Mhz PARA USB)
Device = 18F4550
Xtal = 48  

'ESTA FILA LA GENERA EL MISMO "EASYHID USB WIZARD" Y LA COLOCA
'JUNTO A ESTE ARCHIVO .BAS DONDE TRABAJAREMOS LA APLICACIÓN
'(EN LA MISMA CARPETA)  
USB_Descriptor = "RxNeoTeoDESC.inc"

'SETEO EL LCD 16X2 PARA 4 CABLES    ****************************************************
LCD_DTPin = PORTB.4        
LCD_RSPin = PORTB.3
LCD_ENPin = PORTB.2
LCD_Interface = 4  
LCD_Lines = 2
LCD_Type = 0

'BUS I2C   *****************************************************************************
Declare SDA_Pin PORTB.0     'DECLARO CUALES PINES DEL PIC VAN A SER
Declare SCL_Pin PORTB.1     'SDA Y SCL CON UN BUS DE MENOS DE 8 MHZ
Declare Slow_Bus=On                                                                          

ADCON1 = %00001110
TRISE = %00000100

'LOS TAMAÑOS DEL BUFFER USB  ***********************************************************
Symbol USBBufferSizeMax = 32
Symbol USBBufferSizeTX  = 32
Symbol USBBufferSizeRX  = 32
Dim    USBBuffer[USBBufferSizeMax] As Byte

   
'NUESTRAS VARIABLES DE TRABAJO *********************************************************  
    Symbol BB1 = %00000001       'BAND-SWITCH BYTE EN VHF BANDA BAJA
    Symbol BB2 = %00000010       'BAND-SWITCH BYTE EN VHF BANDA ALTA
    Symbol BB4 = %000001000      'BAND-SWITCH BYTE EN UHF
    Symbol ADBW = %11000010      'ADRESS BYTE (TERMINA EN CERO = ESCRIBIREMOS FRECUENCIA EN EL SINTO)
    Symbol CB = %11001000        'CONTROL BYTE(MODO NORMAL /AVANZAMOS POR PASOS DE 50KHZ.)
    Symbol CMW = %10100000       'PALABRA DE CONTROL PARA ESCRIBIR LA MEMORIA
    Symbol CMR = %10100001       'PALABRA DE CONTROL PARA LEER LA MEMORIA
   
    Symbol X50KMAS = PORTD.0     'SUBIR DE A 50KHZ Y SUBE MEMORIAS
    Symbol X50KMENOS = PORTD.1   'BAJAR DE A 50KHZ Y BAJA MEMORIAS
    Symbol X1MMAS = PORTD.2      'SUBIR DE A 1MHZ
    Symbol X1MMENOS = PORTD.3    'BAJAR DE A 1MHZ
    Symbol X10MMAS = PORTD.4     'SUBIR DE A 10MHZ
    Symbol X10MMENOS = PORTD.5   'BAJAR DE A 10MHZ
    Symbol MUTE = PORTD.6        'ACTIVA EL SILENCIADOR DE AUDIO
    Symbol SQUELCH = PORTD.7     'ACTIVA EL SILENCIADOR DE RUIDO ENTRE EMISORAS
   
    Symbol CONEXION = PORTC.0    'DETECTA QUE SE CONECTÓ O DESCONECTÓ DE USB
    Symbol MEM = PORTC.1         'ACTIVO LA RUTINA DE GUARDAR EN MEMORIA
    Symbol VFO = PORTC.2         'SALGO DE LA RUTINA DE GRABADO DE MEMORIA Y VUELVO                    
                                 'A SINTONÍA CONTÍNUA Y VICEVERSA
    Symbol MUTEON = PORTE.0      'ACTIVO EL MUTE
    Symbol SQUELCHON= PORTE.1    'ACTIVO EL SQUELCH                                                  
   
    Dim MFLAG As Bit                  'BANDERA DE LECTURA DE MEMORIA
    Dim MODO As Bit                   'BANDERA VFO <> MEMORIA
    Dim DIVIDER As Word               'NÚMERO A CARGAR EN EL OSCILADOR LOCAL  
    Dim FREC As Dword                 'FRECUENCIA QUE SE MUESTRA EN EL DISPLAY
    Dim DIVIDER1 As DIVIDER.HighByte  'SUBPARTES DE LA VARIABLE DIVIDER
    Dim DIVIDER2 As DIVIDER.LowByte
    Dim MEMORIA As Word               'NUMERO DE MEMORIA EN DISPLAY
    Dim ADDMEM As Byte                'BYTE INDICANDO DIRECCIÓN DENTRO DE LA DE MEMORIA
    Dim DATO As Byte                  'DATO EXTRAÍDO DESDE LA MEMORIA
    Dim BB As Byte                    'VARIABLE TEMPORAL DE LECTURA DE LA MEMORIA (BANDA)  
    Dim A As Word                     'VARIABLE MULTIFUNCIóN

'***********************************************************************************
'REGISTROS Y BANDERAS
Dim PP0 As Byte System        ' REGISTRO DENTRO DEL PIC USBPOLL STATUS
Symbol CARRY_FLAG = STATUS.0  ' EN ESTADO ALTO SI EL PIC NO TIENE
                              ' EL CONTROL SOBRE EL BUFFER
Symbol ATTACHED_STATE = 6     ' SI USB ESTÁ CONECTADO

'***********************************************************************************
Clear                         'LIMPIO LA RAM AL INICIAR
MODO = 0                      'ARRANCO CON LA BANDERA DEL OSCILADOR EN VFO
MUTEON = 0                    'ARRANCO CON EL MUTE DESACTIVADO
SQUELCHON = 0                 'ARRANCO CON SQUELCH ACTIVADO

Cls                           'LIMPIO DISPLAY AL INICIAR


GoSub AttachToUSB             'ME VOY A VER SI ESTÁ CONECTADO A USB
                              'AL INICIAR EL PROGRAMA
   
' *****************************************************************    
' *****************************************************************
' * LAZO PRINCIPAL DEL PROGRAMA MIENTRAS SE ESTÁ CONECTADO A USB; *
' * RECUERDA QUE DEBES MANTENER LA CONEXIÓN "VIVA" CON LLAMADOS   *
' * CONSTANTES A LAS RUTINAS USBPoll, USBIn or USBOut CADA ALGUNOS*
' * MILISEGUNDOS O MÁS                                            *
' *****************************************************************
' *****************************************************************

ProgramLoop:
   GoSub DoUSBIn
   GoSub DoUSBOut
   GoTo ProgramLoop
 
' ************************************************************
' *               RUTINA DE RECEPCIÓN DE DATOS               *
' ************************************************************
DoUSBIn:
   If CONEXION = 0 Then GoTo FUERA 'CONTROLO SI SE DESCONECTÓ DE USB
   USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
   Return
 
' ************************************************************
' *              RUTINA DE TRANSMISIÓN DE DATOS              *
' ************************************************************
DoUSBOut:
   If CONEXION = 0 Then GoTo FUERA 'CONTROLO SI SE DESCONECTÓ DE USB
   USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
   Return

' ************************************************************
' *           ESPERA HASTA QUE EL USB SE CONECTE             *
' ************************************************************
AttachToUSB:
   If CONEXION = 0 Then GoTo FUERA 'CONTROLO SI SE DESCONECTÓ DE USB
   Repeat                              
      USBPoll      
   Until PP0 = ATTACHED_STATE
   Return
 
'******************************************************************************
'******************************************************************************
'**         INICIO DEL PROGRAMA QUE SE DESARROLLA DE FORMA AUTÓNOMA          **
'******************************************************************************
'******************************************************************************  

   FUERA:                                'RUTINA FUERA DEL CONTACTO USB
   Cls                                   'LIMPIO LA PANTALLA AL INICIAR
   Print At 1,1," Funcionamiento "       'AVISO QUE SE DESCONECTÓ DE USB
   Print At 2,1,"    sin USB     "
   DelayMS 2000                          'MANTENGO EL MENSAJE Y PASO A MODO
   Cls                                   'AUTÓNOMO
 
'******************************************************************************
'******************************************************************************
'**         INICIO DEL PROGRAMA QUE SE DESARROLLA DE FORMA AUTÓNOMA          **
'******************************************************************************
'******************************************************************************  

   FUERA2:                     'COMIENZO LAZO CERRADO HASTA
 
   MFLAG = 0                   'ARRANCO CON LA BANDERA LIMPIA PARA LEER MEMORIA
   MEMORIA = 1                 'DIRECCIÓN INICIAL DE MEMORIA
   GoTo OSCILADOR              'AL COMENZAR LO HAGO EN LA MEMORIA 1 Y LUEGO DESDE
                               'ALLÍ ME MUEVO POR TODO EL DIAL PASANDO A VFO
                             
'**********************************************************************************************
'              ACÁ LLEGO POR HABER SIDO ENVIADO DESDE LA RUTINA MEMO
'**********************************************************************************************
    CANAL2:                    'VHF "L" EL PROGRAMA ARRANCA EN LO MÁS BAJO QUE SE PUEDA
   
    GoSub BAJA                 'LLAMA A LA RUTINA PARA ESCRIBIR EN EL IC DEL SINTO
                               'LA FRECUENCIA DE INICIO  
   
    POWVHFL:                            'LAZO DE DETECCIÓN DE TECLA PULSADA
    If X50KMAS = 0 Then SUMAVHFL        'SI PULSAMOS +50K MANDAMOS A INCREMENTAR LA FRECUENCIA
    If X50KMENOS = 0 Then RESTAVHFL     'SI PULSAMOS -50K MANDAMOS A BAJAR LA FRECUENCIA
    If X1MMAS = 0 Then SUMA1VHFL        'SI PULSAMOS PARA SUBIR DE A 1MHZ
    If X1MMENOS = 0 Then RESTA1VHFL     'SI PULSAMOS PARA BAJAR DE A 1MHZ
    If X10MMAS = 0 Then SUMA10VHFL      'SI PULSAMOS PARA SUBIR DE A 10MHZ
    If X10MMENOS = 0 Then RESTA10VHFL   'SI PULSAMOS PARA BAJAR DE A 10MHZ
   
    If VFO = 0 Then GoSub OSCILADOR     'CONTROLAMOS SI SE PULSA EL BOTÓN VFO<>MEMORIA
    If MEM = 0 Then GoTo GUARDAR        'VOY A LA RUTINA DE GUARDAR LA FRECUENCIA EN MEMORIA
   
    If MUTE = 0 Then
    Toggle MUTEON                       'ACTIVO EL MUTE DE AUDIO
    DelayMS 250                         'CON TIEMPO PARA EVITAR REBOTE DEL BOTÓN
    EndIf
   
    If SQUELCH = 0 Then
    Toggle SQUELCHON                    'ACTIVO EL SQUELCH
    DelayMS 250                         'CON TIEMPO PARA EVITAR REBOTE DEL BOTÓN
    EndIf
   
    DelayMS 1                           'PEQUEÑO RETARDO
   
    GoTo POWVHFL                        'CIERRO EL LAZO DE INTERROGACIÓN DE TECLAS        
                                        'Y REINICIO EL CICLO DE INTERROGACIÓN
                                       
    SUMAVHFL:               'CUANDO RECIBIMOS LA INSTRUCCIÓN DE SUBIR
    DIVIDER = DIVIDER + 1   'SUMAMOS 50KHZ (LE AGREGAMOS UNA UNIDAD A LA VARIABLE "DIVIDER")
    GoTo MASVHFL            'PULSADA LA TECLA SALTAMOS A INCREMENTAR VHFL
   
    SUMA1VHFL:              'SE PULSÓ 1MHZ+
    MODO = 0                'SI ESTABAMOS EN MEMORIA PASAMOS A VFO
    DIVIDER = DIVIDER + 20  'SUMAMOS 1MHZ (LE AGREGAMOS 20 UNIDADES A LA VARIABLE "DIVIDER")
    GoTo MASVHFL            'PULSADA LA TECLA SALTAMOS A INCREMENTAR VHFL
   
    SUMA10VHFL:             'SE PULSÓ 10MHZ+
    MODO = 0                'SI ESTABAMOS EN MEMORIA PASAMOS A VFO
    DIVIDER = DIVIDER + 200 'SUMAMOS 10MHZ (LE AGREGAMOS 200 UNIDADES A LA VARIABLE "DIVIDER")
   
    MASVHFL:
    If DIVIDER > 3580 Then GoTo CANAL7   'SI NOS PASAMOS, SALTAMOS DE VHFL A VHFH
    GoTo CANAL2                          'SINÓ, VOLVEMOS AL INICIO DE LA BANDA EN QUE ESTÁBAMOS (VHFL)
         
   
    RESTAVHFL:                           'CUANDO RECIBIMOS LA INSTRUCCIÓN DE BAJAR
    DIVIDER = DIVIDER - 1                'BAJAMOS 50KHZ
    GoTo MENOSVHFL                       'PULSADA LA TECLA SALTAMOS A DECREMENTAR VHFL
   
    RESTA1VHFL:                          'SE PULSÓ 1MHZ-
    MODO = 0                             'SI ESTABAMOS EN MEMORIA PASAMOS A VFO
    DIVIDER = DIVIDER - 20               'BAJAMOS 1MHZ
    GoTo MENOSVHFL                       'PULSADA LA TECLA SALTAMOS A DECREMENTAR VHFL
   
    RESTA10VHFL:                         'SE PULSÓ 10MHZ-
    MODO = 0                             'SI ESTABAMOS EN MEMORIA PASAMOS A VFO
    DIVIDER = DIVIDER - 200              'BAJAMOS 10MHZ
   
    MENOSVHFL:                           'SI BAJANDO EXCEDEMOS EL LÍMITE
    If DIVIDER < 1800 Then DIVIDER = 20823:GoTo TECLAS51 'SALTAMOS AL FINAL DEL DIAL
    GoTo CANAL2                          'VOLVEMOS AL INICIO
   
   
    CANAL7:                              'VHF "H"
    GoSub MEDIA                          'LLAMA A LA RUTINA PARA ESCRIBIR EN EL IC DEL SINTO
   
    POWVHFH:
    If X50KMAS = 0 Then SUMAVHFH         'MANDAMOS A SUBIR 50KHZ
    If X50KMENOS = 0 Then RESTAVHFH      'MANDAMOS A BAJAR 50KHZ
    If X1MMAS = 0 Then SUMA1VHFH         'MANDAMOS A SUBIR 1MHZ
    If X1MMENOS = 0 Then RESTA1VHFH      'MANDAMOS A BAJAR 1MHZ
    If X10MMAS = 0 Then SUMA10VHFH       'MANDAMOS A SUBIR 10MHZ
    If X10MMENOS = 0 Then RESTA10VHFH    'MANDAMOS A BAJAR 10MHZ
   
    If VFO = 0 Then GoSub OSCILADOR     'CONTROLAMOS SI SE PULSA EL BOTÓN VFO<>MEMORIA
    If MEM = 0 Then GoTo GUARDAR        'VOY A LA RUTINA DE GUARDAR LA FRECUENCIA EN MEMORIA
    If MUTE = 0 Then
    Toggle MUTEON                       'ACTIVO EL MUTE DE AUDIO
    DelayMS 250                         'CON TIEMPO PARA EVITAR REBOTE DEL BOTÓN
    EndIf

    If SQUELCH = 0 Then
    Toggle SQUELCHON                    'ACTIVO EL SQUELCH
    DelayMS 250                         'CON TIEMPO PARA EVITAR REBOTE DEL BOTÓN
    EndIf
   
    DelayMS 1                    'PEQUEÑO RETARDO

    GoTo POWVHFH                 'VUELVO A INICIAR EL CICLO DE INTERROGACIÓN DE TECLAS
   
    SUMAVHFH:                    'CUANDO RECIBIMOS LA INSTRUCCIÓN DE SUBIR
    DIVIDER = DIVIDER + 1        'SUMAMOS 50KHZ (LE AGREGAMOS UNA UNIDAD A LA VARIABLE "DIVIDER")
    GoTo MASVHFH
   
    SUMA1VHFH:
    MODO = 0
    DIVIDER = DIVIDER + 20                                  
    GoTo MASVHFH
   
    SUMA10VHFH:
    MODO = 0
    DIVIDER = DIVIDER + 200
   
    MASVHFH:
    If DIVIDER > 8250 Then GoTo TECLAS51
    GoTo CANAL7                                                    
         
    RESTAVHFH:                                                  
    DIVIDER = DIVIDER - 1                                  
    GoTo MENOSVHFH
   
    RESTA1VHFH:
    MODO = 0
    DIVIDER = DIVIDER - 20                                  
    GoTo MENOSVHFH
   
    RESTA10VHFH:
    MODO = 0
    DIVIDER = DIVIDER - 200
   
    MENOSVHFH:
    If DIVIDER < 3579 Then GoTo CANAL2
    GoTo CANAL7                                                    
   
    TECLAS51:
    GoSub CANAL51
 
    POW51:
    If X50KMAS = 0 Then SUMA51                            
    If X50KMENOS = 0 Then RESTA51                          
    If X1MMAS = 0 Then SUMA1UHF
    If X1MMENOS = 0 Then RESTA1UHF
    If X10MMAS = 0 Then SUMA10UHF
    If X10MMENOS = 0 Then RESTA10UHF
   
    If VFO = 0 Then GoSub OSCILADOR     'CONTROLAMOS SI SE PULSA EL BOTÓN VFO<>MEMORIA
    If MEM = 0 Then GoTo GUARDAR        'VOY A LA RUTINA DE GUARDAR LA FRECUENCIA EN MEMORIA
   
    If MUTE = 0 Then
    Toggle MUTEON                       'ACTIVO EL MUTE DE AUDIO
    DelayMS 250                         'CON TIEMPO PARA EVITAR REBOTE DEL BOTÓN
    EndIf
   
    If SQUELCH = 0 Then
    Toggle SQUELCHON                    'ACTIVO EL SQUELCH
    DelayMS 250                         'CON TIEMPO PARA EVITAR REBOTE DEL BOTÓN
    EndIf
 
    DelayMS 1
   
    GoTo POW51
   
    SUMA51:                                                      
    DIVIDER = DIVIDER + 1                                  
    GoTo SUMAUHF
   
    SUMA1UHF:
    MODO = 0
    DIVIDER = DIVIDER + 20
    GoTo SUMAUHF
   
    SUMA10UHF:
    MODO = 0
    DIVIDER = DIVIDER + 200
   
    SUMAUHF:
    If DIVIDER > 20823 Then DIVIDER = 1800:GoTo CANAL2    
    GoTo TECLAS51                                              
         
    RESTA51:                                                  
    DIVIDER = DIVIDER - 1                                  
    GoTo RESTAUHF
   
    RESTA1UHF:
    MODO = 0
    DIVIDER = DIVIDER - 20
    GoTo RESTAUHF
   
    RESTA10UHF:
    MODO = 0
    DIVIDER = DIVIDER - 200
   
    RESTAUHF:
    If DIVIDER < 8249 Then CANAL7
    GoTo TECLAS51                                            
   
    BAJA:
    GoSub DISPLAY            'MUESTRO LA FRECUENCIA EN EL DISPLAY
    BStart                   'INICIO EL CONTACTO I2C
    BusOut ADBW              'ENVÍO EL BYTE DE ADDRESS PARA ESCRIBIR EN EL SINTO
    BusOut DIVIDER1          'ENVÍO EL PRIMER BYTE DEL DIVISOR PROGRAMABLE (DIVIDER1)
    BusOut DIVIDER2          'ENVÍO EL SEGUNDO BYTE DEL DIVISOR PROGRAMABLE (DIVIDER2)
    BusOut CB                'ENVÍO EL CONTROL BYTE
    BusOut BB1               'ENVÍO EL BAND-SWITCH BYTE (VHFL)
    BStop                    'TERMINO EL CONTACTO I2C  

    DelayMS 300
    BB = BB1                 'TRANSMITO A LA VARIABLE BB EL DATO DE LA BANDA SINTONIZADA
    Return
   
    MEDIA:
    GoSub DISPLAY            'MUESTRO LA FRECUENCIA EN EL DISPLAY
    BStart                   'INICIO EL CONTACTO I2C
    BusOut ADBW              'ENVÍO EL BYTE DE ADDRESS PARA ESCRIBIR EN EL SINTO
    BusOut DIVIDER1          'ENVÍO EL PRIMER BYTE DEL DIVISOR PROGRAMABLE (DIVIDER1)
    BusOut DIVIDER2          'ENVÍO EL SEGUNDO BYTE DEL DIVISOR PROGRAMABLE (DIVIDER2)
    BusOut CB                'ENVÍO EL CONTROL BYTE
    BusOut BB2               'ENVÍO EL BAND-SWITCH BYTE (VHFH)
    BStop                    'TERMINO EL CONTACTO I2C  
   
    DelayMS 300  
    BB = BB2                 'TRANSMITO A LA VARIABLE BB EL DATO DE LA BANDA SINTONIZADA
    Return
   
    CANAL51:  
    GoSub DISPLAY            'MUESTRO LA FRECUENCIA EN EL DISPLAY
    BStart                   'INICIO EL CONTACTO I2C
    BusOut ADBW              'ENVÍO EL BYTE DE ADDRESS PARA ESCRIBIR EN EL SINTO
    BusOut DIVIDER1          'ENVÍO EL PRIMER BYTE DEL DIVISOR PROGRAMABLE (DIVIDER1)
    BusOut DIVIDER2          'ENVÍO EL SEGUNDO BYTE DEL DIVISOR PROGRAMABLE (DIVIDER2)
    BusOut CB                'ENVÍO EL CONTROL BYTE
    BusOut BB4               'ENVÍO EL BAND-SWITCH BYTE (UHF)
    BStop                    'TERMINO EL CONTACTO I2C  
 
    DelayMS 300
    BB = BB4                 'TRANSMITO A LA VARIABLE BB EL DATO DE LA BANDA SINTONIZADA
    Return
   
'**********************************************************************************************
'                        MUESTRO FRECUENCIA Y LEYENDA EN PANTALLA
'**********************************************************************************************
   
    DISPLAY:                     'MUESTRO EN EL DISPLAY LA FRECUENCIA DE RECEPCIÓN
   
    Print At 1,1,"Receptor NeoTeo "

    FREC = DIVIDER * 50
    FREC = FREC -42500           'ACÁ SE RESTA EL VALOR DE LA FRECUENCIA INTERMEDIA
   
    Print At 2,1,Dec FREC,"Khz " 'MUESTRO A LA IZQUIERDA DEL SEGUNDO RENGLÓN LA FRECUENCIA EN Khz
   
    Return
   

'**********************************************************************************************
'               RUTINA AL INICIAR EL EQUIPO O AL PULSAR EL BOTÓN M<>VFO
'**********************************************************************************************

    OSCILADOR:                         'LLEGO ACÁ SI SE PULSÓ EL BOTON M<>VFO
   
    DelayMS 200                        'TIEMPO PARA EL BOTÓN
    MODO = MODO + 1                    'INCREMENTO LA BANDERA QUE INDICARÁ QUE ESTOY EN MEMORIA
   
    If MODO = 0 Then                   'SI LA BANDERA MODO ESTÁ EN CERO VOY A VFO
    Print At 2,10,"    VFO"            'Y LO MUESTRO EN PANTALLA
    Else                               'SINO
    Print At 2,13,"M:",Dec2 MEMORIA    'ESCRIBO MEMORIA Y SU NÚMERO
    DelayMS 200
    MFLAG = 0                          'DEBO SALIR Y ESCRIBI EL VALOR DE LA MEMORIA
    GoTo MEMO                          'SALTO AL LAZO DE MEMORIA
    EndIf
   
    Return                             'REGRESO A DONDE ME LLAMARON
   
'************************************************************************************
'                  INGRESAMOS AL MODO MEMORIA
'************************************************************************************

    MEMO:
   
    If X50KMAS = 0 Then                'SI SE PULSA PARA AVANZAR UNA MEMORIA
    MEMORIA = MEMORIA + 1              'INCREMENTO EL NÚMERO EN PANTALLA
    If MEMORIA > 79 Then MEMORIA = 1   'SI LLEGO AL MÁXIMO DE LOS VALORES VUELVO A LA PRIMERA                          
    Print At 2,13,"M:",Dec2 MEMORIA    'ESCRIBO EN PANTALLA LA LETRA Y EL NÚMERO DE MEMORIA  
    MFLAG = 0                          'VACÍO LA BANDERA PARA PODER SALTAR A LEER EL NUEVO VALOR
    End If
    DelayMS 150                        'TIEMPO PARA PULSAR EL BOTÓN                      

    If X50KMENOS = 0 Then              'SI SE PULSA PARA RETROCEDER UNA MEMORIA                      
    MEMORIA = MEMORIA - 1              'DECREMENTO EL NÚMERO EN PANTALLA
    If MEMORIA < 1 Then MEMORIA = 79   'SI LLEGO AL MÍNIMO DE LOS VALORES VUELVO A LA MÁXIMA
    Print At 2,13,"M:",Dec2 MEMORIA    'ESCRIBO EN PANTALLA LA LETRA Y EL NÚMERO DE MEMORIA
    MFLAG = 0                          'VACÍO LA BANDERA PARA PODER SALTAR A LEER EL NUEVO VALOR
    End If
    DelayMS 150                        'TIEMPO PARA PULSAR EL BOTÓN
   
    If MUTE = 0 Then
    Toggle MUTEON                       'ACTIVO EL MUTE DE AUDIO
    DelayMS 100                         'CON TIEMPO PARA EVITAR REBOTE DEL BOTÓN
    EndIf
   
    If SQUELCH = 0 Then
    Toggle SQUELCHON                    'ACTIVO EL SQUELCH
    DelayMS 100                         'CON TIEMPO PARA EVITAR REBOTE DEL BOTÓN
    EndIf
 
    If MFLAG = 1 Then GoTo SALGO       'SI EL SELECTOR YA FUÉ LEÍDO SALTO LA INSTRUCCIÓN
                                       'DE VOLVER A LEERLO PARA EVITAR RUIDOS RAROS
                                     
    GoSub LEO                   'ME VOY A LEER LA MEMORIA
                                'SINO, CONTINÚO EN ESTE LAZO ESPERANDO Y ESCUCHANDO
                                'LA ÚLTIMA MEMORIA SELECCIONADA
   
    SALGO:                      'VUELVO A MANEJAR LA POSIBILIDAD DE SALIR
    If VFO = 0 Then             'SI SE PULSA VFO
    DelayMS 500                 'TIEMPO PARA EL BOTÓN
   
    Print At 2,10,"    VFO"     'AL SALIR A VFO VAMOS A TENER EL VALOR DE DIVIDER
                                'Y CON ESO LO SACAMOS DE ESTE LAZO Y LO MANDAMOS
                                'A LA POSICIÓN (L/H/UHF) QUE LE TOQUE AL SALIR DE MEMORIA.
    MODO = 1                    'MODO VFO

'***********************************************************************************************
'             DEVOLVER AL VFO INDICADO PARA QUE FUNCIONE EL SELECTOR DE BANDAS  
'***********************************************************************************************  
   
    If BB > 1800 Or BB < 3579 Then  'DEVUELVO AL VFO DESDE LA FRECUENCIA
    GoTo POWVHFL                    'Y BANDA DONDE ESTUVE ESCUCHANDO LA
    End If                          'ÚLTIMA EMISORA PARA ESCUCHAR SINTONIAS
    If BB > 3579 Or BB < 8249 Then  'CERCANAS Y GRABAR NUEVAS MEMORIAS SEGÚN LO  
    GoTo POWVHFH                    'RECUPERADO DESDE DIVIDER Y BB
    End If
    If BB > 8249 Or BB < 20823 Then
    GoTo POW51
    End If
                                     
'***********************************************************************************************  
    End If                                                        
    GoTo MEMO                   'SINO CIERRO EL CICLO DE MEMORIA
 
'************************************************************************************    
'    ACÁ MANEJAMOS EL I2C CON LA MEMORIA PARA LEER Y OBTENEMOS EL DIVIDER Y EL BB
'************************************************************************************
   
   LEO:
    MFLAG = 1                 'CAMBIO EL ESTADO DE LA BANDERA PARA NO VOLVER A ESTA SUBRUTINA
    ADDMEM = MEMORIA * 3      'LA POSICIÓN DENTRO DE LA MEMORIA ES EL TRIPLE (SON TRES BYTES)
    ADDMEM = ADDMEM - 2       'SACANDO DOS ARRANCO DESDE EL PRIMERO DE LOS TRES
                              'AL TENER LA POSICIÓN, YA PUEDO LEER
    BStart                    'ABRO EL CONTACTO I2C
    BusIn CMR,ADDMEM,[BB]     'LEO EL DATO DE LA BANDA GRABADA (PREVIO ENVIAR DIRECCIÓN Y POSICIÓN)                    
    BStop                     'TERMINO EL CONTACTO I2C
    DelayMS 20                 'ESPERO A QUE SE GRABE
    ADDMEM = ADDMEM + 1       'INCREMENTO A LA SIGUIENTE POSICIÓN
    BStart                    'ABRO EL CONTACTO I2C
    BusIn CMR,ADDMEM,[DIVIDER]'LEO EL DATO DE LA BANDA GRABADA (PREVIO ENVIAR DIRECCIÓN Y POSICIÓN)                        
    BStop                     'TERMINO EL CONTACTO I2C                                                                            
   
    DelayMS 20                'ESPERO A QUE SE DESPEJE EL BUS I2C
 
    BStart                    'INICIO EL CONTACTO I2C
    BusOut ADBW               'ENVÍO EL BYTE DE ADDRESS PARA ESCRIBIR EN EL SINTO
    BusOut DIVIDER1           'ENVÍO EL PRIMER BYTE DEL DIVISOR PROGRAMABLE (DIVIDER1)
    BusOut DIVIDER2           'ENVÍO EL SEGUNDO BYTE DEL DIVISOR PROGRAMABLE (DIVIDER2)
    BusOut CB                 'ENVÍO EL CONTROL BYTE
    BusOut BB                 'ENVÍO EL BAND-SWITCH BYTE
    BStop                     'TERMINO EL CONTACTO I2C  
    DelayMS 20                'ESPERO A QUE SE GRABE
   
    GoSub DISPLAY             'MUESTRO EN PANTALLA LO QUE PUSE EN EL SINTO
   
   Return                     'VUELVO AL SITIO DE DONDE NOS ENVIARON
 
'*************************************************************************************************
'                       RUTINA PARA GUARDAR FRECUENCIA EN MEMORIA
'*************************************************************************************************
    GUARDAR:
    Print At 2,13,"M:",Dec2 MEMORIA    'ESCRIBO EN PANTALLA LA LETRA Y EL NÚMERO DE MEMORIA
    DelayMS 300                        'LO DEJO UN TIEMPO
    Print At 2,13,"M:  "               'APAGO EL NÚMERO

    If X50KMAS = 0 Then                'SI SE PULSA PARA AVANZAR UNA MEMORIA
    MEMORIA = MEMORIA + 1              'INCREMENTO EL NÚMERO EN PANTALLA
    End If
    DelayMS 150                        'TIEMPO PARA PULSAR EL BOTÓN
    If MEMORIA > 80 Then MEMORIA = 1   'SI LLEGO AL MÁXIMO DE LOS VALORES VUELVO A LA PRIMERA                          
   
    If X50KMENOS = 0 Then              'SI SE PULSA PARA RETROCEDER UNA MEMORIA
    MEMORIA = MEMORIA - 1              'DECREMENTO EL NÚMERO EN PANTALLA
    End If
    DelayMS 150                        'TIEMPO PARA PULSAR EL BOTÓN
    If MEMORIA = 0 Then MEMORIA = 80   'SI LLEGO AL MÍNIMO DE LOS VALORES VUELVO A LA MÁXIMA
   
    If MEM = 1 Then GoTo GUARDAR       'SI NO SE VUELVE A PULSAR "M" SE QUEDA TITILANDO
                                       'EL Nº DE MEMORIA
   
    MFLAG = 0                  'LEVANTO LA BANDERA PARA QUE AL SALIR AL MODO MEMORIA
                               'NO REENVÍE EL DATO AL SINTO
    ADDMEM = MEMORIA * 3       'LA POSICIÓN DENTRO DE LA MEMORIA ES EL TRIPLE (SON TRES BYTES)
    ADDMEM = ADDMEM - 2        'SACANDO DOS ARRANCO DESDE EL PRIMERO DE LOS TRES
                               'AL TENER LA POSICIÓN, YA PUEDO ESCRIBIR
   
    BStart                     'INICIO EL CONTACTO I2C
    BusOut CMW,ADDMEM,[BB]     'ENVÍO LA DIRECCIÓN, LA LA POSICIÓN Y GRABO LA BANDA SELECCIONADA
    BStop                      'TERMINO EL CONTACTO I2C
    DelayMS 20                 'ESPERO UN TIEMPO
    ADDMEM = ADDMEM + 1        'INCREMENTO UN POSICIÓN DE MEMORIA
    BStart                     'INICIO EL CONTACTO I2C
    BusOut CMW,ADDMEM,[DIVIDER]'ENVÍO LA DIRECCIÓN, LA LA POSICIÓN Y GRABO LA FRECUENCIA SELECCIONADA
    BStop                      'TERMINO EL CONTACTO I2C                  

    DelayMS 300
   
    Print At 2,13,"M:",Dec2 MEMORIA    'ESCRIBO EN PANTALLA LA LETRA Y EL NÚMERO DE MEMORIA
   
    GoTo MEMO                   'CIERRO EL LAZO EN LA RUTINA DE MEMORIA
'*************************************************************************************************
                                       
   If CONEXION = 1 Then GoTo ProgramLoop 'CONTROLO SI SE CONECTÓ A USB
   GoTo FUERA2                             'CIERRO EL LAZO EJEMPLO DE ACTIVIDADES QUE
                                         'PUEDE ESTENDERSE A LA CANTIDAD QUE NECESITEMOS
                                         'DURANTE EL FUNCIONAMIENTO SIN CONEXIÓN USB
 

Adjuntos

  • etapa del PIC.rar
    472.6 KB · Visitas: 7
  • tuner y tsa5520- 1.png
    tuner y tsa5520- 1.png
    1 MB · Visitas: 12
  • tsa5520- datasheet.pdf
    187.1 KB · Visitas: 1
  • Receptor Multibanda NeoTeo (Parte II)+.pdf
    1.4 MB · Visitas: 7
  • escribiendo pll 6.png
    escribiendo pll 6.png
    475.7 KB · Visitas: 11
  • escribiendo pll 5.png
    escribiendo pll 5.png
    582.3 KB · Visitas: 10
  • escribiendo pll 4.png
    escribiendo pll 4.png
    518.6 KB · Visitas: 8
  • escribiendo pll 3.png
    escribiendo pll 3.png
    609.5 KB · Visitas: 8
  • escribiendo pll 2.png
    escribiendo pll 2.png
    473.2 KB · Visitas: 8
  • escribiendo pll 1.png
    escribiendo pll 1.png
    541.5 KB · Visitas: 9
  • RxNeoTeoDESC.rar
    2.1 KB · Visitas: 5
Última edición por un moderador:
...el numero que tengo que poner en el programa es con coma , no es un entero

El mismo artículo te da la respuesta:
Oscilador en 100 MHz y salto de frecuencia cada 50 KHz:
100000/50 = 2000
2000 en binario = 11111010000
Le añadimos 5 ceros a la izquierda para completar los 16 bits = 0000011111010000 que definen a las variables de tipo DWORD.
(Este número sigue siendo 2000, pero expresado como binario de 16 bits)
Lo partimos por la mitad y obtenemos las variables, de tipo WORD, DB1 y DB2 , de 8 bits, listas para el código de Protón
DB1= %00000111
DB2= %11010000

Ahora ya sabes cómo hacer el cálculo para 62,5 KHz.

Fe de erratas del post anterior:
Donde dice:
...que definen a las variables de tipo DWORD.
debe decir:
"...que definen a las variables de tipo WORD."

Donde dice:
Lo partimos por la mitad y obtenemos las variables, de tipo WORD...
debe decir:
"Lo partimos por la mitad y obtenemos las variables, de tipo BYTE..."
 
Última edición:
Hola...Te sugiero que consigas un "sinto" con el PLL que corresponde porque no vas a poder sintonizar las FM comerciales, etc ya que no te da "redondo" la división con el "paso"(step) del PLL.

Tampoco te va a coincidir los botones de subir y bajar de frecuencia con 100KHz y 1MHz porque lo maneja a nivel del numero a cargar al IC PLL y este siempre maneja enteros y no fraccionarios o "numero con coma".

Proton puede trabajar con números "con coma" si defines(Dim) la variable como del tipo "Float" y las variables involucradas en el resultado de las operaciones matemáticas también ya que de otra forma puede prestarse a errores cuando las variables estan definidas como enteros y el resultado da como resultados números con coma.

Me parece que lo único que lograras es complicarte la vida a menos que solo quieras recibir señales de TV cuya portadora de video y/o canalización coincide con los 62,5KHz de ese IC.

Saludos.
 
El mismo artículo te da la respuesta:
Oscilador en 100 MHz y salto de frecuencia cada 50 KHz:
100000/50 = 2000
2000 en binario = 11111010000
Le añadimos 5 ceros a la izquierda para completar los 16 bits = 0000011111010000 que definen a las variables de tipo DWORD.
(Este número sigue siendo 2000, pero expresado como binario de 16 bits)
Lo partimos por la mitad y obtenemos las variables, de tipo WORD, DB1 y DB2 , de 8 bits, listas para el código de Protón
DB1= %00000111
DB2= %11010000

Ahora ya sabes cómo hacer el cálculo para 62,5 KHz.

Fe de erratas del post anterior:
Donde dice:

debe decir:
"...que definen a las variables de tipo WORD."

Donde dice:

debe decir:
"Lo partimos por la mitad y obtenemos las variables, de tipo BYTE..."
Gracias.
Hola...Te sugiero que consigas un "sinto" con el PLL que corresponde porque no vas a poder sintonizar las FM comerciales, etc ya que no te da "redondo" la división con el "paso"(step) del PLL.

Tampoco te va a coincidir los botones de subir y bajar de frecuencia con 100KHz y 1MHz porque lo maneja a nivel del numero a cargar al IC PLL y este siempre maneja enteros y no fraccionarios o "numero con coma".

Proton puede trabajar con números "con coma" si defines(Dim) la variable como del tipo "Float" y las variables involucradas en el resultado de las operaciones matemáticas también ya que de otra forma puede prestarse a errores cuando las variables estan definidas como enteros y el resultado da como resultados números con coma.

Me parece que lo único que lograras es complicarte la vida a menos que solo quieras recibir señales de TV cuya portadora de video y/o canalización coincide con los 62,5KHz de ese IC.

Saludos.
No habia pensado en los detalles que me marcas, voy a tener que buscar un sintonizador como decis vos, gracias igual.
 
Hola, yo quisiera hacer una pregunta, estoy con un tema parecido pero con un "sinto" analogico y no se si funcionaria bien.
Trato de hacer esto -https://www.qsl.net/py2ohh/trx/tvtunerrx/tvtunerrx.htm pero conectando directamente la salida del "sinto" a un receptor sintonizado a la frecuencia de salida del "sinto" (supongo que 38,9 Mhz ) .
¿Creeis que podria funcionar?
 
Hola, yo quisiera hacer una pregunta, estoy con un tema parecido pero con un "sinto" analogico y no se si funcionaria bien.
Trato de hacer esto -https://www.qsl.net/py2ohh/trx/tvtunerrx/tvtunerrx.htm pero conectando directamente la salida del "sinto" a un receptor sintonizado a la frecuencia de salida del "sinto" (supongo que 38,9 Mhz ) .
¿Creeis que podria funcionar?
Sí, perfectamente, puedes conectar un receptor tipo scanner o un Sdr, y como la salida de estos tuners de tv es bastante ancha, te puedes mover +/-4MHz respecto a la frecuencia central para explorar con más detalle con filtros estrechos y tal.
La cuestión es experimentar...
 
Hola...El concepto de "funcionar bien" depende de para que lo pretendas usar.


Ten en cuenta que el sintonizador fue diseñado para emisiones de TV que tienen un ancho de canal de 4,5 o hasta 6MHz dependiendo del sistema de TV por lo que el uso para emisiones de 5KHz o 25KHz de ancho de banda(audio) no es su propósito especifico.

El problema suele ser la estabilidad de frecuencia la cual no es suficiente para dejar cierto tiempo la sintonía de un canal sin que este se desplace o haya que corregirlo.

Si ya se contempló todo esto y el uso es otro como, por ejemplo, la sintonía de estaciones de FM con canales más anchos, puede funcionar.
 
Atrás
Arriba