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.
Fiz mais um teste.
Alimentei os pinos 6 e 7 via resistor de 10k não aconteceu nada.
Parei de alimentar o pino 4 via resistor.
Veja bem. Qando aterra o pino 6 ou o pino 7 o oscilador responte certinho. O problema é que quando os pinos 6 e 7 estão livres (desaterrados) ele continua emitindo sons aleatórios.
Se esses sons aleatórios parassem, estaria tudo certo, entendeu.
Att,
João.
Olá João! Por favor, poderia repetir o que vai ligado em cada pino do circuito?
Pino 2 – ligado a….. para… por meio de …. etc
pino 3 …..
pino 4 …
pino 5…
pino 6…
pino 7 …
Não tendo o esquema fica as vezes confuso saber o que ocorre.
Cláudio
Caro Cláudio, Boa noite.
Desculpe.
Esses resistores de 1K que tenho nos pinos 6 e 7 do circuito não tem nada a ver com “VCC”. Eles estão ligados nos pinos 6 e 7 e as outras extremidades são os contatos para terra.
O que voce quer é que ligue o VCC aos pinos 6 e 7 via resistor. pode ser de 1K?
Att,
joão
Olá Cláudio, boa noite.
No circuito já tenho os resistores de 1K nos pinos 6 e 7.
Quanto ao resistor no pino 4 do 12F629 não é necessário? Desculpe responder com outra pergunta.
Todo circuito que vejo com o PIC12F629 tem esse resistor, por isso estou acrescentando. Mas não está fazendo nenhuma diferença com ou sem.
Att,
João.
Olá João!
Deixa ver se entendi: Ao pressionar a chave para um lado fornece VCC para o pino 6 e para o outro, para o pino 7, certo? E os resistores são para o Gnd (pulldown)? Se for isto, então não necessita estar ativo os pullups internos. Experimente então desliga-los por substituir esta porção no código:
movlw 0X00 ;setup the options bits liga pullup
movwf OPTION_REG
por:
movlw 0X80 ;setup the options bits desliga pullup
movwf OPTION_REG
Cláudio
Olá Cláudio, bom dia.
Para voce entender melhor o resultado: O pino 6 do PIC ao ser aterrado o oscilador emite uma sequência de sons curtos dit dit dit dit, que são os pontos. Ao aterrar o pino 7 ele emite uma sequência de sons longos dah dah dah dah que são os traços (funcionamento básico). O potenciômetro ligado ao pino 2 aumenta ou diminui a velocidade desses pontos e traços. O que está ocorrendo é que ao ligar o oscilador e sem aterrar o pino 6 ou 7 ele já fica emitindo sons aleatórios. O resistor de 10k no pino 4 não está surtindo nenhum efeito mas o potenciômetro está atuando para maior ou menor velocidade.
Usei o seu HEX porque não consegui compilar o ASM.
Att,
João
Olá João! Por favor, poderia fazer o seguinte teste: colocar 2 resistores de pullup (ao vcc) , sendo um no pino 6 e outro no pino 7. Verifique se normaliza. Quanto ao pino 4, está ligado como e qual a sua função?
Cláudio
Olá Cláudio. Segue o resultado do teste:
Ao ligar o circuito com o PIC12F629 e mesmo sem alimentar o pino 4, via resistor de 10K, ele fica emitindo, aleatóriamente, uma sequência de traços _ _ _ _ (dah dah dah dah…). O potenciômetro está atuando, aumentando ou diminuindo a velocidade desses traços.
Ao ligar o resistor de 10K no pino 4, permaneceu da mesma forma. Ou seja, o resistor não surtiu efeito.
Os sons dos traços só param se desligar a chave.
Att,
João
Olá João!
Alterar modelo de Pic dá um pouco de canseira. Notei diferença na questão do pullup e modo sleep.
Tente o seguinte:
__CONFIG _MCLRE_OFF & _CP_ON & _WDT_OFF & _EXTRC_OSC_NOCLKOUT ;
LIST P=12f629
__IDLOCS h’1′
RADIX hex
#include
#DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA
#DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1
;port & flgs mask definitions
;these equates must be contiguous from 0
DITSW equ 0 ;dot switch (on paddle key)
DAHSW equ DITSW+1 ;dash switch (on paddle key)
IL equ DAHSW+1 ;iambic dash flag
IC equ IL+1 ;in character
AS equ 0x03 ;auto character spacing
TX equ 0x04 ;keying output
;timing calibration values
DAH equ 0xb5 ;counts for dah
DIT equ 0x3b ;counts for dit
REST equ 0x39 ;counts for dit rest
ASPACE equ 0x76 ;counts for char space
cblock 0x20 ;antes 07
flgs
timer1
paddle
endc
;======================================================================
org 0x0
goto start
data ‘P’,’I’,’K’,’ ‘,’V’,’1′,’.’,’1′,’4′
org 0x40 ;leave unprotected memory unused
;======================================================================
start
clrw ;initialise GPIO
movwf GPIO
BANK1
movlw ~(1<
Olá João! Atente que após o simbolo ‘menor que’ não irá aparecer neste editor, apagando completamente. Recupere esta informação no ‘include’ e nos outros lugares que aparecer. Troque as aspas e os benditos ‘x’. Ajuste para ‘sensitive case’ no mpasmwin.
Claudio