por Fabio_Jerena » 30 Mai 2007 14:08
Pessoal, ainda estou tentando ler esse encoder mas por enquanto sem sucesso, não sei se eu não entendi direito a carta de tempos dele...
Eu estou fazendo o seguinte, meu PIC 16F628A está trabalhando à 4MHz (período de 1us), quando eu recebo um pulso no pino RB0 (interrupção externa) e configurado para Interrupção Externa por borda de descida eu seto o timer0 para contar até 200 (inicio ele em 55 e com um pré-scaler de 32, contando até 200 ele contará até 6400 que é 80% do tempo que leva entre duas bordas de descida no startbit (24 ciclos para um clock de 3KHz) , então na Interrupção de estouro do timer0 eu seto um flag de ocorrência do startbit, dessa forma quando ocorrer a borda de descida do startbit eu posso iniciar a leitura dos bits pois já sei se o startbit ocorreu ou não.
Para ler os bits logo depois dessa borda de descida zero o timer1 e programo para interromper numa borda de subida, quando ocorrer guardo o valor do timer1 (tempo_low) e zero ele novamente e programo para interromper na borda de descida, quando esta ocorrer leio o valor do timer1 e guardo (tempo_high), comparo esses dois tempos e sei se o bit é 0 ou 1 (se tempo_low maior que tempo_high vale 1 e no inverso vale 0), fazendo isso 28 vezes para ler tb o anti-code que são os últimos 4 bits finais...
Minha dúvida é o seguinte, logo depois do anti-code já se inicia o startbit novamente ou acontece alguma coisa nesse meio tempo (que até agora eu ainda não entendi aquele bendito desenho do datasheet (Transmission Timing), pela carta de tempos eu adotei os ciclos de clock como sendo o período referente à uma freqüência de 3KHz, ou seja, para o número zero são 333 us em low e 666us em high, é isso mesmo?
Eu não tenho oscilosópio para mexer com isso e é um inferno ficar só imaginando as coisas sem poder realmente "ver" o que está acontecendo, alguem sabe algum meio de simular isso no Proteus, eu estou usando ele para conferir meu projeto, mas não tenho muita técnica para debugar e avaliar programas com o próprio Proteus (eu ia tentar usar o Pulso pw (não lembro o nome direitinho) porem devido estilo do gráfico eu não consigo misturar os bits com o startbit devido escala no tempo...)
Obrigado pessoal!!!
Fábio Jerena