Aula Teórica 7 - w3.ualg.ptw3.ualg.pt/~apcosta/pin/Teoricas/Teorica08.doc  · Web viewOs chips...

6
Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa Aula Teórica 8 Sumário: O timer e o relógio do sistema. Leitura Recomendada: Capítulo 19 - Hans-Peter Messmer, The Indispensable PC Hardware Book, Addison-Wesley. Capítulo 7 - Peter Norton, Peter Aitken e Richard Wilton, PC Programmer ´s Bible, Microsoft Press. Timer Um chip muito importante na motherboard é o PIT (Programmable Internal Timer). O PIT gera intervalos de tempo programáveis a partir de um sinal externo criado por um oscilador. O sinal gerado é independente do processador e cria “o bater do coração” do computador. O 8253/8254 é um PIT muito flexível que pode trabalhar em 6 modos de operação diferentes. Figura nº 1 – A estrutura do PIT 8253/8254. O 8253/8254 tem três contadores completamente independentes (0 a 2). Cada um dos contadores tem 16 bits e tem um sinal de relógio próprio (só dele) que é usado como base temporal para o respectivo contador (sinal CLKx). Tem ainda um sinal GATEx que é enviado ao contador para o activar. Este sinal depende do modo de operação definido. O contador 1

Transcript of Aula Teórica 7 - w3.ualg.ptw3.ualg.pt/~apcosta/pin/Teoricas/Teorica08.doc  · Web viewOs chips...

Page 1: Aula Teórica 7 - w3.ualg.ptw3.ualg.pt/~apcosta/pin/Teoricas/Teorica08.doc  · Web viewOs chips DRAM que constituem a memória principal têm que ser acedidos a intervalos regulares

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Aula Teórica 8

Sumário:O timer e o relógio do sistema.

Leitura Recomendada:Capítulo 19 - Hans-Peter Messmer, The Indispensable PC Hardware Book, Addison-Wesley. Capítulo 7 - Peter Norton, Peter Aitken e Richard Wilton, PC Programmer´s Bible, Microsoft Press.

Timer

Um chip muito importante na motherboard é o PIT (Programmable Internal Timer). O PIT gera intervalos de tempo programáveis a partir de um sinal externo criado por um oscilador. O sinal gerado é independente do processador e cria “o bater do coração” do computador.

O 8253/8254 é um PIT muito flexível que pode trabalhar em 6 modos de operação diferentes.

Figura nº 1 – A estrutura do PIT 8253/8254.

O 8253/8254 tem três contadores completamente independentes (0 a 2). Cada um dos contadores tem 16 bits e tem um sinal de relógio próprio (só dele) que é usado como base temporal para o respectivo contador (sinal CLKx). Tem ainda um sinal GATEx que é enviado ao contador para o activar. Este sinal depende do modo de operação definido. O contador envia o sinal de saída na linha OUTx, a forma do sinal de saída também depende do modo do contador.

O buffer de dados, conjuntamente com o read/write logic permitem ler/escrever de/para o PIT. O registo de controlo carrega os contadores e controla os vários modos de operação, é um registo apenas de escrita.

Programação do PIT 8253/8254

Para programar o PIT primeiro é preciso indicar qual o contador que se pretende aceder e quais as características do acesso, enviando uma word ao registo de controlo, via porto 43H. Depois é só aceder ao contador pretendido, através do porto respectivo (ver figura nº 2).

1

Page 2: Aula Teórica 7 - w3.ualg.ptw3.ualg.pt/~apcosta/pin/Teoricas/Teorica08.doc  · Web viewOs chips DRAM que constituem a memória principal têm que ser acedidos a intervalos regulares

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Figura nº 2 – Portos de acesso ao PIT.

Formato do registo de controlo:

Figura nº 3 – Formato do registo de controlo.

Neste registo define-se qual o contador requerido (SC), o número e o tipo de bytes a serem lidos/escritos (RW), o modo de operação desse contador (Mode) e o formato da contagem (BCD).

Modos de operação

Em todos os modos o PIT conta do valor inicial para valores mais baixos, decrementando. Pode-se escrever novos valores de contagem.

Modo 0 (interrupt during counting)É usado para activar interrupções de hardware depois de um determinado período de tempo. O modo 0 não é periódico.

Modo 1 (programmable monoflop)

Modo 2 (rate generator)O modo 2 é periódico e é usado pelo contador 0 do PIT para gerar a interrupção periódica do relógio do sistema (a interrupção de hardware 08H que é enviada pela linha IRQ0, 18.2 vezes por segundo).

Modo 3 (square-wave generator)Pode ser usado, por exemplo, para transmissão de dados através da porta série. Neste caso, o PIT actua como gerador da taxa de transmissão dos dados (baude rate).

No PC, os contadores 1 e 2 operam em modo 3 para activar o refrescamento da memória e o speaker, respectivamente.

2

Page 3: Aula Teórica 7 - w3.ualg.ptw3.ualg.pt/~apcosta/pin/Teoricas/Teorica08.doc  · Web viewOs chips DRAM que constituem a memória principal têm que ser acedidos a intervalos regulares

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Os chips DRAM que constituem a memória principal têm que ser acedidos a intervalos regulares de forma a fazer o “refresh” da informação lá representada. O sinal gerado no contador 1 é dedicado ao refrescamento da RAM. Não pode ser usado em aplicações de sofware.

O gerador de sons pode produzir uma variedade de sons através do speaker do computador. O speaker pode ser forçado a vibrar por impulsos eléctricos gerados pelo computador. Estes impulsos podem ter voltagens altas ou baixas e são estas variações que produzem o som. O contador 2 é usado para controlar o speaker. A frequência do sinal produzido por este contador determina a frequência do som.

Modo 4 (software-triggered pulse)No modo 4, o contador é activado por software, não é periódico.

Modo 5 (hardware-triggered pulse)No modo 5, o contador é activado por hardware.

Relógio do sistema

O DOS e outros sistemas operativos utilizam um relógio (chamado relógio do sistema) para gestão interna da data e hora. É com estas que são definidas a data e hora da última actualização de ficheiros e directorias, por exemplo. O relógio do sistema também pode emitir sinais de alarme.

Figura nº 4 – Esquema do relógio do sistema.

Não confundir o relógio do sistema com o relógio de tempo real, são coisas diferentes. O relógio de tempo real continua a trabalhar mesmo quando o PC está desligado. O relógio do sistema é criado usando o contador 0 do PIT e as interrupções de hardware 08H e 1CH.

A linha OUT0 do contador 0 do PIT é ligada à entrada IRQ0 do PIC. O contador 0 opera em modo 2 (rate generator), por isso o PIT envia um pulso periódico exactamente 18.206 vezes por segundo. O pedido de interrupção na linha IRQ0 leva à chamada da interrupção 08H. A rotina correspondente vai actualizar o relógio do sistema 18.206 vezes por segundo, escrevendo numa word na zona de memória 0040H:006CH, que faz parte da área de dados da BIOS relativa ao relógio do sistema.

Figura nº 5 – Área de dados da BIOS relativa ao relógio do sistema.

3

Page 4: Aula Teórica 7 - w3.ualg.ptw3.ualg.pt/~apcosta/pin/Teoricas/Teorica08.doc  · Web viewOs chips DRAM que constituem a memória principal têm que ser acedidos a intervalos regulares

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

Depois, a interrupção 1CH é chamada para retornar da IRQ0. Esta interrupção pode ser usada pelos utilizadores para criar uma rotina que será chamada 18.2 vezes por segundo.

Serviços DOS para trabalhar com o relógio

O DOS tem serviços que permitem aceder e alterar a data e hora actuais a partir de um programa. A BIOS também tem serviços que fazem o mesmo, mas é melhor usar os serviços DOS, porque se se usar os serviços BIOS, o DOS pode não ser notificado que houve alteração da hora do sistema.

Os serviços são acedidos através da interrupção 21H.

Nº da Função Descrição Registos de entrada Registos de saída2AH Obtém a data ah = 2ah al = dia da semana (de 0

a 6, domingo a sábado)cx = ano (de 1980 a 2099)dh = mês (de 1 a 12)dl = dia (de 1 a 31)

2BH(*)

Altera a data ah = 2bhcx = anodh = mêsdl = dia

al = 00h se tudo okal = ffh se data inválida

2CH Obtém a hora ah = 2ch ch = horas (0 a 24)cl = minutos (0 a 59)dh = segundos (0 a 59)dl = 100s de segundo (0 a 99) são obtidos a partir do contador de ticks guardado no endereço 0040H:006CH

2DH(*)

Altera a hora ah = 2dhch = horas cl = minutosdh = segundosdl = 100s de segundo

al = 00h se tudo okal = ffh se hora inválida

(*) As funções 2BH e 2DH, em PC´s com 286 ou superior actualizam também o relógio de tempo real na CMOS.

Exemplo de um programa

/* exercício para saber a data actual do sistema, utilizando a função 2AH da interrupção 21H do DOS */#include <stdio.h>#include <dos.h>

main ( ){ union REGS inregs, outregs;

inregs.h.ah = 0x2a; intdos (&inregs, &outregs); // também podia ser: int86 (0x21, &inregs, &outregs); printf (“Dia da semana: “); switch (outregs.h.al) { case 0: printf (“Domingo\n”); break; case 1: printf (“Segunda\n”); break; case 2: printf (“Terça\n”); break; case 3: printf (“Quarta\n”); break;

4

Page 5: Aula Teórica 7 - w3.ualg.ptw3.ualg.pt/~apcosta/pin/Teoricas/Teorica08.doc  · Web viewOs chips DRAM que constituem a memória principal têm que ser acedidos a intervalos regulares

Periféricos e Interfaces Ano lectivo 2003/2004Docente: Ana Paula Costa

case 4: printf (“Quinta\n”); break; case 5: printf (“Sexta\n”); break; case 6: printf (“Sábado\n”); break; }

printf (“%2d/%2d/%4d\n”, outregs.h.dl, outregs.h.dh, outregs.x.cx);}

5