Vous êtes sur la page 1sur 4

Relatrio 12

Nome Cynthia Baran Robert Sonnenberg RA 135371 139084

2) Crie um novo projeto e substitua a listagem de main.c pela listagem do anexo 1. Conecte o transdutor piezoeltrico no conector Servo na placa auxiliar (pinos marcados como F, G e H na figura 1). Desta forma o transdutor estar ligado entre PTB1 e o terra geral. Compile o projeto e inicie o debug. Verifique o que acontece. Primeiramente substitumos a listagem da main pela do anexo 1 e conectamos nosso piezoeltrico no conector Servo. Ao iniciar o projeto, o piezoeltrico comeou a vibrar, emitindo um som agudo. 3) Na listagem, procure o comentrio Explique as prximas 4 linhas, e faa no relatrio o que foi solicitado. Explique se a interrupo de timer est sendo utilizada ou no, qual o modo de operao do timer, e determine a frequncia do sinal gerado. As 4 linhas so essas:
TPM1_SC = 0x0000008F; TPM1_CONF = 0x000000C0; TPM1_C1SC = 0x00000094; TPM1_MOD = 320;

1. Este registrador possui flags de status e controle que so utilizadas para configurar a interrupo, modulo de configurao e prescale. Ao passar o valor 10001111 para este registrador, teremos uma mudana do clock. Esse ser dividido por 128, ou seja, teremos um clock de 160Khz. Alm disso, incrementa o contador de LPTPM a cada ciclo do novo clock e faz com que seja desabilitada a interrupo dessa funo. 2. Resumidamente, faz com que a funo continue a contar mesmo em modo debug. 3. Com essa instruo, estamos carregando o valor 320 ao registrador de contagem. Dessa forma, o programa far um toggle da sada a cada 320 ciclos, j contando com o novo clock. 4. Configura para que a interrupo do timer no seja utilizada e que a frequncia do sinal gerado seja 250 Hz. Esse valor foi obtido com a frmula:

clock 2* D

4) Modifique o programa para que o tom gerado seja de 440Hz (referncia de afinao). Apresente as modificaes no relatrio, com os clculos feitos (fclock = 20.48MHz). Sabendo que a frequncia do tom gerado metade da frequncia de atualizao (880Hz) e que ela dada pela seguinte equao:

fdesejada

fclock 2* D

Sabendo que a frequncia atual do clock de 160KHz e a frequncia desejada sendo 440Hz, tendo assim um MOD=182. A alterao feita no programa foi feita em TPM1_MOD, alterando de 320 para 182. 5. Crie um novo projeto e substitua a listagem de main.c pela listagem do anexo 2. Veja a figura 1 e conecte o cabo fornecido (fio simples) entre os pinos marcados como E e F. Com isto, interligamos os pinos PTB0 e PTB1 (este ltimo ir gerar uma onda quadrada de 1kHz atravs do PIT). Compile o projeto e inicie o debug. Coloque um, breakpoint no local indicado no final da listagem. Execute o programa e verifique o que acontece com a varivel media aps o programa ser interrompido. Ao trocar o cdigo da main, executar e interromper o programa, observamos que o valor da varivel media era 1280. Esse valor representa o nmero de ciclos que so contados entre um toggle e outro do sinal. Ao dividir a frequncia do clock pelo prescale (16), temos 1,28MHz. Ao dividir esse valor pela varivel media, obtemos 1KHz, que o valor esperado para frequncia da onda quadrada. 6. Na listagem, procure o comentrio Explique as prximas 4 linhas, e faa no relatrio o que foi solicitado. Explique tambm o funcionamento da rotina FTM1_IRQHandler e da funo main, comentando o modo de operao de TPM1. Por que melhor usar este modo ao invs de fazer um polling do pino de entrada e ler o valor atual do contador? As 4 linhas j foram explicadas nesse relatrio, mencionaremos apenas as caractersticas que foram alteradas.
TPM1_SC = 0x0000008C; TPM1_CONF = 0x000000C0; TPM1_C0SC = 0x000000C4; TPM1_MOD = 0xFFFF;

1. Seleciona o prescale como sendo 16. 2. Nenhum aspecto foi alterado. 3. Essa instruo responsvel pela limpeza das flags de interrupo antes de comear o programa.

4. Quando o contador LPTPM atingir o valor que est no registrador Modulo, uma flag acionada de forma que o contador zere. Com essa configurao, o valor mximo para a contagem de 65535. A rotina FTM1_IRQHandler desempenha a funo de transmitir a informao para a main de que a borda de subida ou descida foi detectada, para limpar a flag. Quando a borda detectada, a varivel det recebe o valor 1 e o programa entra no loop da funo main, iniciando assim a contabilizao do tempo. O loop fica comparando o tempo inicial com o tempo final. Se o tempo inicial for maior que o tempo final, a contagem j atingiu o valor mximo e comeou a contar novamente. Caso contrrio, a funo calcula o tempo total gasto e calcula a mdia. Esse mtodo bastante til para verificar a frequncia do sinal gerado pela interrupo. Neste caso, o modo de operao do TPM1 input capture. Quando o tipo de borda selecionado, o valor atual do contador TPM capturado no registrador CnV, sendo que o bit CHnF setado ao mesmo tempo. A interrupo do canal gerada se ativada pelo CHnIE=1. Quando a configurao do canal feita dessa maneira, o pino TPM_CHn configurado para ter entrada sensvel borda. Outros bits de controle determinam qual borda, mas no caso a borda de subida. Nesse modo, a contagem feita at receber o pulso, independente do resto do programa. No caso de fazer o polling do pino, a contagem s iria parar quando chegasse na instruo que l o pino, o que poderia resultar em um excesso de contagens. Da forma que fizemos, o delay causado pelo hardware muito menor do que o delay causado pelo software. 7) A partir do valor da varivel media, quais seriam as equaes para calcular o perodo e a frequncia do sinal? Justifique. Como sabemos que a frequnciaatualizao = frequciaclock/PS, sendo PS o prescale(16), temos a frequnciaatualizao = 20,48MHz/16 = 1,28MHz. Assim a frequnciasinal = frequnciaatualizao/mdia = 1MHz. Ento, como o perodo = 1/frequncia, temos que a o perodosinal = 1ms 9. Antes de compilar o projeto, determine os valores das constantes MAX e MULT nos defines, considerando fclock = 20.48 Hz, um prescaler de 128, e uma frequncia de chaveamento desejada de 100Hz. Apresente os clculos no relatrio. Para encontrar os valores de MAX e MULT fazemos os seguintes clculos: MAX = frequnciaentrada /frequnciachaveamento. A frequnciaentrada definida pela fclock/PS = 160KHz, assim MAX = 160KHz/100Hz = 1600 MULT difinido por MAX/frequnciachaveamento. MULT = 160/100 = 16 Portanto, temos que MULT = 16 e MAX = 1600

10. Explique no relatrio o que fazem as instrues TPM1_SC = 0x0000008F e TPM1_C0SC = 0x000000A8 . A instruo TPM1_SC = 0x0000008F faz com que o prescaler volte a ter valor de 128, como era quando usvamos o anexo 1 na main, e a instruo TPM1_C0SC = 0x000000A8 faz com que a interrupo do canal seja desativada (CHIE=0) e ativa o modo PWM. 11. Compile o projeto e inicie o debug, executando o programa e abrindo o terminal serial. Digite no terminal nmeros entre 0 e 100 (seguidos de Enter ) e veja o que acontece. Expliq ue como se faz este controle. Devido ao PWM, podemos colocar valores de 0 a 100 que iro controlar a velocidade do nosso ventilador (quanto maior o nmero digitado, mais alta a velocodade do ventilador). Assim, quando digitamos 0, o ventilador no recebe energia, ao aumentar o valor percebemos que o ventilador comea a funcionar com aproximadamente 20% da energia total. Notamos tambm que com uma energia menor que essa o ventilador tambm funciona, mas precisa de uma ajuda inicial para girar as suas ps.

Vous aimerez peut-être aussi