EA079 { Laboratorio de Micro e Minicomputadores: Hardware Laborat orio III Projeto de Interfaces com o Oscilosc opio 1 Objetivos do Laborat orio III 1. Entender o mecanismo de interrupc~ao do MC68HC11. 2. Entender o funcionamento do temporizador embutido no MC68HC11 e o circuito de interrupc~ao associado a ele implementado na placa PDHC11FEEC. 3. Projetar e implementar a interface entre o MC68HC11 e o osciloscopio. 4. (Opcional) Projetar e implementar a interface entre o MC68HC11 e quatro displays de 7 segmentos. 5. Desenvolver um programa de forma que nos permite visualizar no osciloscopio a partir das amostras carregadas na memoria um padr~ao de sinal gerado pelo gerador em projeto Teclado Interface de Entrada Interface com Memória Microcontrolador Memória Interfaces de Saída Osciloscópio Beeper O sinal analogico que entra num dos canais do osciloscopio deve ter os valores compreendidos entre a faixa [0; 2:56V ]. permitido o reuso dos circuitos ja existentes na placa PDHC11-FEEC. E 1 EA079/FEEC/3o Roteiro { 2o SEM/2002 (Profs. Ting, Lotufo, Eduardo e J.Raimundo)2 2 Material Placa PDHC11-FEEC Placa de montagem wire-wrap Componentes disponveis no almoxarifado da FEEC (p.ex.: soquetes, re- sistores, rolo de o para wire-wrap , CI's) Ferramentas de montagem: kit de wire wrap Ferramentas de depurac~ ao: osciloscopio e multmetro 3 Cronograma de Atividades Na setima aula do curso cada grupo deve ter um esboco dos esquematicos do projeto da interface e ter providenciado junto com o almoxarifado da FEEC os componentes necessarios para a montagem. 7a aula: montagem/teste da interface com o osciloscopio e programac~ao do temporizador. 8a aula: programac~ao do controle do osciloscopio de forma a gerar a par- tir das amostras fornecidas pelo usuario uma forma de onda no perdo especicado. 9a aula: nalizar testes e demos. 4 Projeto Conceitual Para visualizar no osciloscopio um sinal equivalente a um eletrocardiograma, o gerador deve processar as amostras de tal forma que elas sejam enviadas para o osciloscopio na mesma frequ^encia em que elas foram amostradas. Para isso, podemos utilizar o temporizador (timer ) para gerar interrupc~oes nos instantes pre-estabelecidos. E se quisermos ainda obter um sinal xo na tela do osciloscopio, devemos prover um sinal de sincronismo adicional (base de tempo). Como existe um timer embutido no MC68HC11, o projeto de circuitaria se reduziria ao projeto de interface com o osciloscopio [3, 4, 5]. 4.1 Eletrocardiograma Um padr~ao de um ciclo cardaco de um eletrocardiograma normal e composto por uma onda P, um complexo QRS e uma onda T. Uma onda P representa a despolarizac~ao (ativac~ao) atrial e o complexo QRS, a despolarizac~ao ventricular. A onda T reete a fase da rapida repolarizac~ao dos ventrculos [1]. EA079/FEEC/3o Roteiro { 2o SEM/2002 (Profs. Ting, Lotufo, Eduardo e J.Raimundo)3 Qualquer disturbio cardaco altera a forma do complexo QRS. Pode-se classicar o tipo de disturbio atraves do padr~ao do complexo QRS [2]. Os geradores de padr~ao s~ao muito utilizados pelos tecnicos para aferir um eletrocaridografo ou um monitor cardaco que foi consertado. Nos geradores de padr~oes ha uma sinalizac~ao com um led quando ocorre a onda R (ou o complexo QRS como um todo). Com isso os tecnicos podem vericar se o equipamento consertado detecta a onda R, ja que este deve dar um beep sinalizando a detecc~ao da onda. No projeto do nosso gerador optamos por emiss~ao de sinais sonoros (beep ) quando e gerada uma onda R. 4.2 MC68HC11 Antes de iniciar o projeto devemos analisar/avaliar as funco~es relacionadas ao tratamento de perifericos disponveis no MC68HC11. 4.2.1 Interface E/S 1. Existem basicamente tr^es formas para iniciar uma transfer^encia de dados entre uma unidade processadora/microcontrolador e seus perifericos: E/S controlada por programa, que por sua vez pode ser condicional (polling ) e incondicional (por amostragem), E/S por interrupc~ao, e E/S por acesso direto a memoria. Quais s~ao as formas suportadas pelo MC68HC11? 2. A transfer^encia de dados pode ser em forma serial ou paralela, sncrona ou assncrona. No MC68HC11 as transfer^encias paralelas s~ao feitas de forma sncrona ou assncrona? E as transfer^encias seriais? 3. Os dados a serem transferidos podem ser em forma analogica ou em forma digital. Esta embutida no MC68HC11 interface de entrada para sinais analogicos. Em quais enderecos est~ao mapeados esta interface de entradas analogicas? E para as sadas analogicas? 4. MC68HC11 prov^e no total 7 pinos de interrupca~o (X I RQ, I RQ, PA0/IC3, PA1/IC2, PA2/IC1, PA7/PAI/OC1, e AS/STRA). Quais deles s~ao associados aos perifericos embutidos na MCU? Quais s~ao associados as fontes externas? EA079/FEEC/3o Roteiro { 2o SEM/2002 (Profs. Ting, Lotufo, Eduardo e J.Raimundo)4 5. O que voc^e entende por uma interrupca~o mascaravel? Como se pode mascarar uma requisic~ao de interrupca~o no MC68HC11? 6. Existem duas formas para tratar as interrupc~oes: interrupc~ao auto-vetorizada e interrupc~ao vetorizada. Qual e a forma suportada pelo MC68HC11? No modo expandido quais s~ao os enderecos das rotinas de servico que tratam os sinais de interrupc~ao externos? 7. MC68HC11 suporta multiplas fontes de requisic~ao de interrupc~oes? Caso sim, qual e a ordem de atendimento e como se pode ligar varias fontes num unico pino de entrada, como I RQ, sem causar contenc~ao na linha? (Dica: circuito wired-or com resistores pull-up ) 4.2.2 Interface de Temporizador A logica do timer embutido no MC68HC11 e apresentada na Figura 10-1 da refer^encia [5]. 1. O que e o contador livre do MC68HC11, denominado free-running counter ou timer counter (TCNT)? Quantos bits tem este contador? E em que endereco esta mapeado este contador? 2. Como e quando se pode alterar a frequ^encia do timer ? Em que frequ^encia opera o contador na placa PDHC11-FEEC? 3. Qual e a func~ao dos registradores TOCx? Quantos bits tem estes registradores? E em que enderecos est~ao mapeados estes registradores? 4. Qual e a func~ao dos registradores TICx? Quantos bits tem estes registradores? E em que enderecos est~ao mapeados estes registradores? 5. A cada registrador de captura, TOCx ou TICx, e associado um endereco de rotina de servico (vector address ). Onde est~ao armazenados estes enderecos? 6. Quando um ag de interrupc~ao TFLGx e setado? Ele e resetado automaticamente quando a interrupc~ao correspondente for atendida? Como se pode reseta-lo? possvel mascarar seletivamente as interrupco~es originadas dos registra7. E dores TOCx e TICx? 8. Por qu^e e necessario limpar o ag TFLGx na inicializac~ao? 9. Quais s~ao as condico~es necessarias para gerar um sinal de interrupca~o correspondente a um registrador TOCx/TICx? 10. Como se pode programar interrupc~oes periodicas de 1ms por exemplo? 11. Quantas interrupc~oes diferentes o timer do MC68HC11 suporta? Cada uma pode ser associada a um intervalo de tempo distinto? EA079/FEEC/3o Roteiro { 2o SEM/2002 (Profs. Ting, Lotufo, Eduardo e J.Raimundo)5 4.3 Interface com o Osciloscopio Um projeto adequado para a interface com o osciloscopio requer o conhecimento das caractersticas funcionais, eletricas e temporais deste dispositivo. 1. Qual e o princpio de funcionamento de um osciloscopio? 2. Os sinais de entrada de um osciloscopio s~ao analogicos. Esta embutido no MC68HC11 circuito de convers~ao de sinais digitais para analogicos, ou seja, s~ao disponveis no MC68HC11 pinos de sada analogicos? Caso n~ao, como seria um cirucito de convers~ao dos sinais de sada do MC68HC11 com os de entrada do osciloscopio? (Observe que ha um circuito implementado na placa PDHC11-FEEC) 3. Pelos dados digitais serem de natureza discreta, eles ser~ao visualizados em forma de degrau. Uma soluc~ao para \alisar" esta onda seria utilizar um ltro RC (passivo) passa-baixo, cuja constante de tempo tem que ser proxima da taxa de amostragem. Determine os valores de capacitor e resistor que voc^es utilizar~ao no seu circuito de interface? 4. Esboce o esquematico completo do circuito de interface entre MC68HC11 e o osciloscopio que voc^es utilizar~ao no projeto do seu gerador. Liste os componenetes do circuito. Analise ainda no qual endereco esta mapeado este circuito de convers~ao? 5. Para efeito de requisica~o de materiais no almoxarifado, liste somente os componentes adicionais necessarios. 6. (Opcional) Um circuito de convers~ao D/A muito popular e simples de implementar e a rede R/2R na qual somente dois tipos de resistores s~ao utilizados. Explique o princpio de funcionamento deste circuito de convers~ao. 4.4 Interface com os Displays de 7 Segmentos (Opcional) Pode-se incluir no projeto um circuito de interface com 4 displays de 7 segmentos, onde e mostrado o tipo de batimento correspondente ao padr~ao visualizado no osciloscopio. Um conjunto de func~oes (em assembler ) para enviar caracteres em ASCII para os displays existentes na placa PDHC11-FEEC pode ser encontrado em www.dca.fee.unicamp.br/~ting/Courses/ea079/rotdisp.zip 4.5 Programac~ao em Linguagem C Do circuito referente ao projeto deste experimento ha varias partes disponveis ou on-chip ou na placa PDHC11-FEEC. Portanto, grande parte das atividades e ligada a programac~ao do MC68HC11 para controlar o timer e o osciloscopio. aconselhavel o uso da linguagem C para aumentar a produtividade da proE gramac~ao. EA079/FEEC/3o Roteiro { 2o SEM/2002 (Profs. Ting, Lotufo, Eduardo e J.Raimundo)6 1. Qual e o manual do compilador icc11? Onde ele se encontra? 2. Qual e a sintaxe da linha de comando do compilador icc11? 3. Quais s~ao os passos intermediarios que o compilador icc11 executa ate a gerac~ao do arquivo hexadecimal de extens~ao .s19? 4. Qual e o formato deste arquivo s19? Qual e o comando do BUFFALLO que carrega este arquivo? 5. Qual e o procedimento de carregamento do arquivo s19 usando o HiperTerminal do MS-Windows? 6. Para que serve o arquivo crt.s? Para que serve os dois ORGs que se encontram no incio deste arquivo? Qual e a mensagem de erro que aparece no icc11 se este arquivo n~ao existir? 7. Qual e a mensagem de erro do compilador, quando o seu programa fonte n~ao possui a func~ao main? Em qual passo intermediario aparece este erro: compilac~ao C ou montagem assembler? 8. O que e necessario para poder usar a func~ao printf? 9. Qual e a representaca~o de constantes hexadecimal em C? 10. Como se faz em C para ler ou escrever num endereco especco de memoria? Por exemplo ler da posica~o 8000H ? 11. Como se faz para programar o vetor de interrupc~ao usando C? Como se faz para ler o endereco de uma dada subrotina? 12. Qual e a diferenca de uma func~ao C para uma subrotina de interrupc~ao? 13. Quais s~ao as instruc~oes em assembler do HC11 que n~ao tem correspond^encia em linguagem C \compilavel" por icc11 para se tratar com interrupc~ao? O que elas fazem? 14. Como se insere instruco~es em assembler dentro do codigo C? Qual e o cuidado que se deve ter nesta inserc~ao em relaca~o ao campo de rotulos do assembler? 15. Por que se recomenda a codicac~ao da rotina de servico usando duas func~oes como no esquema abaixo? Uma funca~o e a entrada da rotina de servico (rotservico, que possui a instruca~o RTI no nal e a outra func~ao e a que implementa de fato a rotina de servico. void servico() { /* implementa a rotina de servi{\c c}o */ EA079/FEEC/3o Roteiro { 2o SEM/2002 (Profs. Ting, Lotufo, Eduardo e J.Raimundo)7 } void rotservico() { servico(); asm{`` RTI''} } necessario desabilitar a interrupc~ao dentro de uma rotina de tratamento 16. E de interrupc~ao? Por qu^e? 5 Programac~ao O objetivo e programar o microcontrolador de forma que seja gerada uma onda no osciloscopio a partir das amostras dos padr~oes de batimentos do arquivo www.dca.fee.unicamp.br/~ting/Courses/ea079/batimentos.h carregados pelos usuarios na memoria RAM adicional. A taxa de amostragem e 64 amostras/segundo. Para facilitar a depurac~ao, recomendamos a seguinte metodologia: 1. (Opcional, recomendado para os alunos que t^em pouca experi^encia de programac~ao com o HC-11) Escreva um programa que l^e os dados da memoria e os envia para o osciloscopio. Verique a frequ^encia das ondas. Caso necessario, adicione instruc~oes no laco para aumentar o perodo das ondas. 2. Escreva um programa que leia e envia as amostras por interrupc~ao gerada pelo temporizador do HC11. 3. Inclua no programa uma logica para detectar a onda R em func~ao das amostras processadas. 4. (Opcional) Inclua no programa controle dos displays de forma que seja visualizado o tipo de batimento que esta sendo gerado. 5. (Opcional) Verique a necessidade ou n~ao de gerar um sinal de sincronismo para o osciloscopio de modo que o sinal gerado seja sempre mostrado na mesma posic~ao. Se este sinal de sincronismo for necessario, como podemos gera-lo? Refer^encias [1] [email protected]. ECG Tutorial. emergency-nurse.com/resource/ecg/conduction.htm. http://www. [2] Dean Jenkins e Stephen Gerred. ECG library. http://www.ecglibrary. com/ecghome.html EA079/FEEC/3o Roteiro { 2o SEM/2002 (Profs. Ting, Lotufo, Eduardo e J.Raimundo)8 [3] Alan Clements, Microprocessor Systems Design: 6800 Hardware, Software, and Interfacing, 3rd edition, PWS Publishing Company, 1997 (ISBN: 0-53494822-7) [4] -. HC11 M68HC11A8 Technical Data. Motorola. [5] -. HC11 M68HC11 Reference Manual. Motorola.