Para os amantes das transmissões em CW (o famoso ‘código Morse’ em transmissões), o incrível manipulador eletrônico criado pelo Sr. Steven T. Elliott em 1988, conhecido como “K8”, foi um salto tecnológico nestas transmissões, facilitando em muito as comunicações. Recentemente, foi me pedido sobre a possibilidade de mudar o modêlo do microcontrolador, para um mais atual, com memória flash. Veja o resultado….
Veja o esquema abaixo:
Podemos observar que o esquema, que não difere do original, exceto pela necessidade de colocar um pull up no pino 4. Foi dado opção de escolha entre o modelo 12f629 ou 12f675, bastando alterar comentando ou descomentando, no arquivo asm, e , em seguida, recompilar no MPLAB-IDE. Infelizmente, não tenho conhecimento de código ‘morse’,e portanto , ‘penei’ para entender a rotina (excelente, por sinal). Obtive a ajuda do Sr. João, profundo conhecedor da ‘arte’ do CW. O autor original também disponibilizou seu Email para eventuais dúvidas : email: steve@k1el.com or k1el@aol.com. Vários sites também poderão prover ajuda orientadoras para o uso deste dispositivo (aviso que eu não entendo).
Abaixo, segue os arquivos ASM e HEX compilados com o prefixo da estação original do autor. Servem para testes apenas.
Altere o prefixo para corresponder a sua estação no código ASM, na parte:
CALL_0 EQU M_P ;Coloque seu prefixo aqui, letra por letra (use sempre um M_ na frente da letra)
CALL_1 EQU M_Y ; não mais de 7 caracteres
CALL_2 EQU M_2
CALL_3 EQU M_M
CALL_4 EQU M_G
CALL_5 EQU M_END
CALL_6 EQU M_END
CALL_7 EQU M_END
SPEED_DEFAULT EQU WPM_15 ; E escolha aqui a velocidade padrão que usará nas comunicações
Depois recompile com o MPLAB-IDE para obter o arquivo HEX correto para sua estação.
Segue o arquivo ASM, de novembro de 2012 (obs. com bug ao enviar prefixo da estação em modo BEACON):
K8_629_ASM
Segue o arquivo HEX, de novembro de 2012, da compilação do ASM acima:
K8_629_HEX
Pasta zipada com algumas atualizações feitas em 10/03/2018, sendo corrigido o bug ao enviar prefixo da estação em modo BEACON):
K8_MAN_MORSE
Também, manipulador PIK adaptado para 12f675, de novembro de 2012 aqui.
Links técnicos:
datasheet Pic12f629
Curiosidades:
May Day
Titanic
Telegráfo e a previsão do tempo
Até o próximo artigo!!!
Olá Cláudio, boa tarde.
O circuito com o PIC12C509 não precisa de alimentação, via 10K, no pino 4 e o potenciômetro para ajustar a velocidade de trabalho fica no pino 2. Este potenciômetro de 22K varia a tensão no pino 2.
Ao substituir o PIC509 pelo PIC12F629, a única mudança que faço no circuito é acrescentar o resistor de 10k no pino 4.
Vou fazer as mudanças no ASM depois te informo.
Em tempo: Quanto ao TRISIO foi exatamente o que fiz e aí compilou legal.
Att,
João.
Caro Cláudio, bom dia.
Fiz um teste agora com o PIC12F629 no circuito, alimentando o pino 4 via resistor de 10K, não funcionou.
Tirando o resistor de 10K e inserindo o PIC12C509, funciona normalmente.
Att,
João.
Olá João! O trisio é um registrador que determina a direção da port. Coloque em letras maiúsculas para funcionar (TRISIO). Parece que o problema está na palavra de configuração (__config).
O original trabalha com oscilador externo ‘RC’ usando um potenciômetro para ajustar a frequência de trabalho. Mas você citou que retirou o resistor de 10k e colocou o pic12c509 e funcionou. Não está usando mais o potenciômetro?
Notei também que os pullups internos ficaram ligados. Mude a porção de código:
movlw 0×00 ;setup the options bits
movwf OPTION_REG
para:
movlw 0×80 ;setup the options bits ; desligando os pullups
movwf OPTION_REG
Mude também a palavra de configuração :
__CONFIG _MCLRE_OFF & _CP_ON & _WDT_OFF & _ExtRC_OSC ;ORIGINAL
ou:
__CONFIG 0X3FC6 ; PARA OSCILADOR COM RESISTOR/CAPACITOR
para:
__CONFIG _MCLRE_OFF & _CP_ON & _WDT_OFF & _EXTRC_OSC_NOCLKOUT ;p/ 12f629
Tente compilar e ver se funciona.
Cláudio
Caro Cláudio, bom dia.
Consegui compilar. O HEX ficou igual ao seu.
Fiz um teste no simulador do Proteus alimentando o pino 1 com 5,1v e o 4 via resistor 10k. o pino 3 é a saida para o speek. o pino 5 não usa. O pino 2 alimentei via resistor de 10k. Pelo circuito o pino 2 é alimentado via potenciômetro de 22K, para variar a velocidade. Então inseri um fixo de 10K só para testar.
Resultado: Não emitiu nenhum sinal.
O que pode ter saído errado na conversão?
Att,
João
Olá Cláudio, boa noite.
Agora está resumido em um erro e uma reportagem, conforme abaixo:
Error[113] C:\TESTE\PIK.ASM 117 : Symbol not previously defined (trisio)
Message[302] C:\TESTE\PIK.ASM 122 : Register in operand not in bank 0. Ensure that bank bits are correct.
Esse TRISIO QUE ESTÁ COMPLICANDO TUDO!!!
Não entendi o “x” nem quanto a cor “azul”??
Mas reescrevi alguns “x” e os números de erros realmente reduziram.
O que é esse trisio. O problema está relacionado com trisio.
Att,
João
Olá Cláudio, boa noite.
segue a lista dos erros que surgiram na compilação:
Error[113] C:\TESTE\PIK.ASM 118 : Symbol not previously defined (×00)
Error[112] C:\TESTE\PIK.ASM 118 : Missing operator
Message[302] C:\TESTE\PIK.ASM 119 : Register in operand not in bank 0. Ensure that bank bits are correct.
Error[115] C:\TESTE\PIK.ASM 160 : Duplicate label (“ASPACE” or redefining symbol that cannot be redefined)
Error[115] C:\TESTE\PIK.ASM 168 : Duplicate label (“DIT” or redefining symbol that cannot be redefined)
Error[115] C:\TESTE\PIK.ASM 186 : Duplicate label (“DAH” or redefining symbol that cannot be redefined)
Os tres erros “código 115” aparecem porque não marquei o “case sensitive”.
Att,
Pretti
Olá João!
Estes erros tem que ver com grafia do ‘x’. Digite de novo se não estiver em cor azul.
Gerou este hex abaixo:
:020000040000FA
:100000004028500049004B002000560031002E00CF
:040010003100340087
:10008000030185008316EF30850000308100831264
:10009000073099000330A0010505033920048207C9
:1000A0006728772867286300772877286728630000
:1000B00067287728672860287728772867286028A6
:1000C000A001A201A2097630862022084C2805163C
:1000D000A201A2093B3020158620000005128519D7
:1000E000A015393086202208013800004C2805165A
:1000F000A201A209B5302011862000000512851941
:10010000A01539308620220802384C28A1000508A5
:08011000A205A10B87280034B1
:084000000000000000000100B7
:02400E00C63FAB
:00000001FF
Verifica se é funcional.
Cláudio