Relógio de tempo real

Registos RTC, formatos BCD, leituras coerentes e causas de interrupção.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Registos e formatos

O RTC mantém data e hora com alimentação própria; o timer mede intervalos. Seleciona o índice em 0x70 e transfere dados em 0x71, preservando a política de NMI. Protege seleção e transferência de acessos concorrentes.

ÍndiceConteúdo
00, 02, 04Segundos, minutos, horas
01, 03, 05Alarme
07, 08, 09Dia, mês, ano
0A, 0B, 0C, 0DAtualização/taxa, configuração, causas, validade

No registo B, DM, bit 2, vale 1 para binário e 0 para BCD; bit 1 vale 1 para 24 horas e 0 para 12 horas.

BCD válido guarda dois algarismos, cada nibble entre 0 e 9:

decimal=10(value≫4)+(value&0x0F).decimal=10(value\gg4)+(value\mathbin{\&}\texttt{0x0F}).

0x59 BCD dá 59; 0x3B binário já dá 59. Em 12 horas, retira primeiro o bit 7 de PM. Converte 12 AM para 0, 12 PM para 12 e 9 PM para 21. Não reconfigures o formato apenas para facilitar a leitura.

Leitura coerente

Campos individualmente válidos podem pertencer a atualizações diferentes. UIP, bit 7 de A, assinala a atualização 244 µs antes de ela começar; observá-lo a 0 uma vez não protege contra suspensão do processo.

  1. Espera UIP=0 com limite.
  2. Lê todos os campos e a configuração; rejeita se UIP estiver ativo no fim.
  3. Repete desde UIP=0 e aceita apenas duas fotografias consecutivas iguais, sem atualização assinalada.

A estratégia pressupõe acessos curtos e ausência de reconfiguração concorrente. Alternativamente, lê após a interrupção de fim de atualização, dentro do tempo disponível. SET de B inibe atualizações para escrever, alterando o funcionamento do RTC.

Eventos na IRQ8

CausaAtivação em BFlag em C
PeriódicaPIE, bit 6PF, bit 6
AlarmeAIE, bit 5AF, bit 5
Fim de atualizaçãoUIE, bit 4UF, bit 4

Ler C limpa as causas. Guarda esse byte e testa flags com if independentes; C=0xD0 contém IRQF, PF e UF. Flags podem aparecer mesmo com a respetiva geração de IRQ desativada; considera a configuração.

Para RS entre 3 e 15 em A, a taxa periódica é 32768/2RS−132768/2^{RS-1} Hz. RS=6 dá 1024 Hz; não extrapoles para códigos especiais 0, 1 e 2.

Um campo de alarme com os dois bits superiores a 1 aceita qualquer valor. Hora/minuto indiferentes e segundo 0 coincidem a cada minuto. VRT, bit 7 de D, a 0 põe em dúvida a validade da hora.

Altera apenas os bits necessários, preserva formatos e repõe configurações. No fim, desativa as causas no RTC e remove a subscrição Minix.

Leitura coerente e respetivas hipóteses.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.