A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Interrupções, Contadores e Timer

Apresentações semelhantes


Apresentação em tema: "Interrupções, Contadores e Timer"— Transcrição da apresentação:

1 Interrupções, Contadores e Timer
Bruno e Marconi

2 Interrupção É um sinal de dispositivo que resulta em uma troca de contextos, isto é, o processador para de fazer o que está fazendo para atender o dispositivo que pediu a interrupção, em outras palavras são programas ou funções que trabalham em sincronia com o programa principal, em um determinado momento o programa de interrupção é ativado executando alguma ação que foi programada e depois volta as execuções do código principal. Uma troca de contexto para uma rotina de software especificamente escrita para tratar a interrupção esse ato é conhecido como rotina de serviço de interrupção ou tratamento de interrupção. A interrupção é importante pois evita desperdício de tempo com loops, ou invés de ficarem parados esperando eventos ocorrerem, os processadores realizam outras tarefas e a interrupção avisa ao processo quando o evento ocorre.

3 As interrupções podem ser categorizadas em 5 tipos:
1-Maskable interrupt (IRQ): Interrupção de hardware que pode ser ignorada configurando um bit em um registro de mascara de interrupção (bit-mask) 2-Non-maskable interrupt (NMI): É uma interrupção de hardware que precisa de um bit-mask associado, esse modo é muito por timers. 3-inter-processor interrupt (IPI):Caso especial onde um processador é usado para interromper outro processador. 4-Software interrupt: É uma interrupção gerada dentro de um processador pela execução de uma instrução. 5-Spurious interrupt: É uma interrupção falsa, uma interferência gerada por um hardware mal projetado ou interferência elétrica.

4 Uma interrupção bem sucedida tem quatro propriedades:
O PC (Program Counter) é salvo em um lugar conhecido. Todas as instruções apontadas antes pelo PC tem total execução. Não há instruções além da apontada e a que está sendo executada pelo PC. O estado de instrução apontada pelo PC é conhecida

5 Tipos de interrupção Nível de desencadeado (level-triggered):
Essa interrupção trata a presença de interrupções sem serviço em níveis, seja alto (1), baixo (o). Vários dispositivos podem este tipo de interrupção se forem designados para isso. A linha de interrupção deve ter resistores Pull Down e Pull Up, para que quando não ativamente conduzido, pouse em um estado particular. Dispositivos de breve condução de linha para o estado non-default e deixa a linha flutuar (o não ativamento da condução) quando não sinalizar uma interrupção, isto é análogo a um cabo onde qualquer passageiro de ônibus pode puxar para sinalizar ao motorista um pedido de parada. Entretanto a interrupção de pulsos a partir de diferentes dispositivos pode mesclar se ocorrem próximos no tempo, quando ocorrem muitas interrupções a CPU afim de não perdê-las pode acionar o trailling edge do pulso, depois de detectar uma interrupção a CPU pode verificar todos os dispositivos por necessidade de serviço.

6 Interrupções da Edge-triggered (Borda Desencadeada):
Tipo de interrupção momentânea, não sofrem os problemas que as interrupções do level-triggered tem com o compartilhamento. Serviços de dispositivos de baixa- prioridade podem ser arbitrariamente adiados, e interrupções serão continuas para serem recebidas a partir de dispositivos de alta-prioridade que estão sendo atendidos. Se existir um dispositivo que a CPU não sabe como atender, ele pode causar uma interrupção falsa ou falsas interrupções periódicas, mas ela não interfere na sinalização de interrupção de outros dispositivos. Entretanto, isto é razoavelmente fácil para uma interrupção edge-triggered ser perdida – por exemplo, se as interrupções tem que ser mascaradas por um período – e a menos que exista algum tipo de hardware latch (trava) que grave o evento, é impossível recuperar. Tais problemas causados em muitos “travamentos” no hardware dos primeiros computadores porque o processador não sabia o que era preciso fazer. Hardwares modernos tem muitas vezes um ou mais registros de estado de interrupção que travam os pedidos de interrupção: os softwares de interrupção bem escritos edge-drivem muitas vezes verificam esses registros para garantir que os eventos não sejam perdidos

7 Hibrido: Alguns sistemas utilizam sinalização hibrida de Edge-triggered e level- triggered. O hardware não só procura por uma borda como também verifica se sinal de interrupção está ativo por um certo período de tempo. O uso desta interrupção é para o NMI (Non-Maskable interrupt), uma boa implementação deste sinal tenta assegurar que a interrupção seja válida e verificar por quanto tempo ele permanece ativo, esse tipo de abordagem ajuda a eliminar falsas interrupções.

8 Mensagem Sinalizada de interrupção:
Não usa uma linha de interrupção física, mas um sinal do dispositivo é pedido enviando uma curta mensagem sobre algum meio de comunicação, normalmente barramento de computador. Sobre a mensagem, ela pode ser algum tipo de mensagem reservada para interrupções ou algum tipo pré- existente com memória escrita. Mensagens sinalizadas agem muito bem como edge-triggered, em que as interrupções são momentâneas. O software de tratamento de interrupção trata de dois em muitos da mesma maneira. Mensagens sinalizadas de interrupção vetorial podem ser compartilhadas, a medida em que o meio de comunicação pode ser compartilhado, para isso nenhum esforço adicional é requerido. A identidade da sinalização é indicada por um padrão de bits de dados, não exigindo um condutor físico separado, mensagens de interrupção podem ser passadas através de um barramento serial.

9 Campainha Em analogia é muitas vezes utilizado para descrever um mecanismo pelo qual um sistema de software pode sinalizar ou verificar um dispositivo de hardware que tenha algum trabalho para ser feito. Normalmente o sistema de software ira colocar os dados em um lugar conhecido as vezes por região de campainha e pode haver diversas campainhas com funções diferentes. A campainha é ativada para notificar o dispositivo de hardware que os dados estão prontos, normalmente esses dados são gravados em um disco rígido e enviados através de uma rede.

10 Dificuldade de compartilhamento com linhas de interrupção:
Vários dispositivos de compartilhamento em linha de interrupção agem como fonte falsa de interrupção em relação uns aos outros, as interrupções no serviço crescem em proporção ao quadrado do numero de dispositivos. A escassez de linhas de interrupção é um problema nos desenhos mais antigos do sistema onde as linhas de interrupção são distintos condutores físicos. Interrupções de mensagens sinalizadas, onde a linha de interrupção é virtual são favorecidas em um novo sistema de arquitetura e ajuda a aliviar este problema. Alguns dispositivos de interface de programação mal desenhada tem dificuldade em detectar se algum serviço foi ou não solicitado, tais dispositivos não podem tolerar interrupções falsas e nem compartilhamento de linha de interrupção, uns dos fatores causadores deste tipo de problema são os projetos de construções baratas.

11 Uso típico Os usos típicos incluem : system time (temporizador do sistema), discos I/O, power-off signal ( liga/desliga sinal) e traps (armadilhas). Manipulador de interrupções conta as interrupções para manter o tempo, outras interrupções são utilizadas para transferir dados UARTs ou ETHERNET. Um timer clássico gera interrupções periódicas de um controlador ou powe-line, a interrupção de um timer também pode ser utilizada por um agendador de tarefas do sistema operacional para reagendar prioridades de processo em execução.

12 Resumo Interrupções de hardware foram introduzidas como forma de evitar o desperdício de tempo valioso do processador em polling loops, a espera de eventos externos. Eles podem ser implementados no hardware como um sistema distinto, com linhas de controle ou podem ser integrados no subsistema da memória. Se implementados em hardware, um circuito controlador de interrupção, pode ser conectado entre o dispositivo de interrupção e o pino de interrupção do processador para varias fontes multiplexadoras de interrupção em uma ou duas linhas disponíveis da CPU. Se implementado como parte do controlador de memória as interrupções são mapeadas para dentro do sistema de espaço de endereço de memória. Interrupções podem ser caracterizadas em: maskable interrupt, non- maskable interrupt (NMI), inter-processor interrupt (IPI), software interrupt e spurius interrupt

13 Contadores digitais São dispositivos uteis e versáteis que são considerados como sendo um grupo de flip-flop onde a forma que estão conectados e a quantidade utilizada vai determinar modulo e sequencia que o contador vai percorrer. São divididos em : Assíncronos Síncronos

14 Assíncronos O pulso de clock é aplicado apenas no primeiro flip-flop, enquanto nos demais blocos a saída do anterior é que serve como clock. Principais tipos de contadores assíncronos: Contador de pulso Contador de década Contador sequencial de O a N Contador assíncrono Up-Down

15 Contador de Pulso Tem como principal característica apresentar nas saídas um código binário 8421 em sequência. É composto por um grupo de 4 flip-flops JK mestre-escravo que por sua vez possuem as entradas JK sempre em nível lógico alto (1). No seu sistema os pulsos de saída é sempre a metade da frequência do pulso de entrada no bloco ex: I/O 1KHz na entrada 1, logo 500KHz Funcionamento do divisor se dá utilizando a primeira Saída (2), onde: 2¹=2 ; Segunda saída 2²=4 formando valores que vão de 2 até 4096 para um CI com 12 saídas. Esse contador vai de 0-15 em sequência onde a saída “Q” de maior frequência é menos significativa e a de menor frequência é a mais significativa.

16 Contador de Década Aqui é efetuado uma contagem em números binários de 0-9, ou código BCD que significa uma sequência binária 8421 que vai de Na construção deste circuito é utilizado um contador de pulso interligados a entradas clear do flip-flop. Com intuito de fazer com que o contador vá apenas de 0-9 deve-se jogar nível zero no 10º pulso, para isso ocorrer ligamos as saídas “Q” do flip-flop 4 e 2, e as saídas “Q*”(Q barra) dos flip-flop 3 e 1 em uma porta nand, assim só terá entrada 1, ativando o clear do flip-flop.

17 Contador Sequencial de O a N
Neste contador a quantidade de blocos flip-flop depende da quantidade de bits do limite de contagem. Tendo dois blocos a contagem vai de 0-3, tendo 3 blocos pode ir de 0-7 e assim por diante. Funciona com o mesmo principio de década porém o nível zero a ser jogado no clear mudará, se tivermos 3 flip-flops a contagem será feita até 7, porém esse será observado por um tempo mais curto, pois 7 em binário 111, assim tendo que ligar todas as saídas “Q” na porta nand para o nível zero ativar o clear do flip-flop.

18 Contador Up/Down Também conhecido como crescente/decrescente , neste circuito existe um multiplex entre os blocos, que está ligado a um barramento de controle, que irá determinar se a contagem será crescente que possui nível lógico do barramento (1) ou decrescente que possui nível lógico do barramento (0).

19 Contadores Síncronos O contador síncrono é o mais completo contador, ele tem condições de gerar qualquer tipo de sequência binária. Nesse tipo de contador o clock entra em todos os flip-flops simultaneamente. A mudança de estado se dá pela mudança de comportamento dos vários flip-flops, obtendo assim nas saídas as sequencias desejadas. Para isso deve-se escrever a tabela verdade das estradas J K e flip-flops .

20 Aplicações Relógio digital
Um relógio digital mostra horas, minutos e segundos, onde uma tensão senoidal de 60Hz por segundo é convertida em forma de onda e dividida para formar pulsos de 1Hz por segundo. Para cada pulso de 1Hz o display apresenta sua contagem, o contador de segundos gera um clock para o contador de minutos, que gera um clock para o contador de horas. O contador de minutos e segundos contam de 0-59, já o de horas 0-12.

21 O que são os Timers? Um timer nada mais é do que um contador que é incrementado a cada intervalo de tempo (em alguns microcontroladores intervalo pode ser configurado, o Arduino é um deles). Os timers funcionam como um relógio que pode ser usado para contar o tempo, medir a duração de certos eventos, entre outras aplicações.​ O Arduino vem equipado com um microcontrolador ATmega168 ou ATmega328 (que diferem apenas na quantidade de memória interna). Esses microcontroladores possuem e timers: timer0, timer1 e timer2, Timer0 e timer2 são contadores de 8bits, ou seja, contam de 0 a 255, e o timer1 é um contador de 16bits, conta de 0 a ​ O Arduino Mega vem equipado com o ATmega1280 ou ATmega2560 (que diferem apenas na quantidade de memória). Eles possuem 6 timers: timer0, timer1, timer2, timer3, timer4, timer5. Os timers 0, 1 e 2 são idênticos aos do ATmega168/328, e os timers 3, 4 e 5 são ambos de 16bits.

22 Como utilizar o timer? A grande jogada dos timers é que você não precisa manter o processador travado em delay aguardando o momento de realizar uma função. Em alguns casos, sem o uso de timers, seria quase que impossível de realizar determinadas tarefas em conjunto (controle de servo motores por exemplo).​ A ineficiência do delay, em alguns casos, pode ser comparada a uma pessoa que tem compromissos durante o dia só que, ao invés de olhar no relógio ou usar um despertador, a pessoa fica parada só contando os segundos até chegar o momento dela realizar determinada tarefa (almoçar, trabalhar, etc.) desperdiçando tempo que poderia ser gasto com outras tarefas.​ Os timers são registradores que servem como contadores em que, a cada pulso de clock, ele realiza um incremento nesse registrador (timer = timer + 1 ou timer++). Após o timer incrementar até o seu valor limite (que depende da quantidade de bits do timer que você esta utilizando) ocorre o que chamamos de "estouro de contagem", este então é zerado e é acionada a interrupção.​

23 Timer0 O timer0 é utilizado pelo Arduino para funções como delay(), millis() e micros().​ Então não se deve utilizar esse timer para evitar comprometer essa funções.​ É um timer de 8 bits, logo, ele pode armazenar até o numero 256.​ O timer0 vai começar a incrementar a partir do zero (ou valor que você programar) e quando ele estiver com o valor 256 e passar para 257 (valor que não cabe em 8 bits) ocorre um "estouro" de contagem. Após isso, o flag de interrupção do timer0 é setado e o timer é zerado, começando assim um novo ciclo de contagem.

24 Timer1 No Arduino UNO esse é o timer utilizado pela biblioteca de controle de servos. Caso você não esteja utilizando essa biblioteca, esse timer está livre para ser utilizado para outros propósitos. ​ No Arduino Mega esse timer só será utilizado para controlar os servos se você estiver usando mais de 12 servos.​ É um timer de 16 bits, logo, ele pode armazenar até o numero ​ O timer1 vai começar a incrementar a partir do zero (ou valor que você programar) e quando ele estiver com o valor e passar para (valor que não cabe em 16 bits) ocorre um "estouro" de contagem. Após isso, o flag de interrupção do timer1 é setado e o timer é zerado, começando assim um novo ciclo de contagem.

25 Timer2 ​ Esse timer é utilizado pela função tone(). Então se você não precisar da função tone() esse timer está livre para outras aplicações.

26 Timer3 e Timer4 Esses timers só estão presentes no Arduino Mega e eles só serão utilizados pela biblioteca do Arduino caso vocês esteja utilizando mais de 24 servos. De 25 a 36 servos o timer3 será utilizado e de 37 a 48 servos o timer4 será utilizado.

27 Timer5 No Arduino Mega esse é o timer padrão para o controle de servos, ou seja, se você estiver utilizando de 1 a 12 servos, apenas esse timer será utilizado pela biblioteca.​

28 bibliografia https://pt.wikipedia.org/wiki/Temporizador
Collins, Jack A. Projeto Mecanico de Elementos de Maquinas. [[Brasil]: 2006 Westphal, Bruno. Temporizadores. Brasil: 2012 F.G. Rayer, 1984. Proyectos de temporizadores electrónicos. Espanha: 1984 ogica%20Sequencial.pdf re

29 FIM


Carregar ppt "Interrupções, Contadores e Timer"

Apresentações semelhantes


Anúncios Google