LA PROGRAMMATION DU RTC (MC 146818)

      Le RTC (Real Time Clock) est un circuit qui s'occupe de la date, de l'heure et de générer certaines interruptions.
      Il possède une RAM de 64 octets (parfois 128) qu'on peut adresser par l'intermédiaire des ports 70H et 71H .
      Le RTC peut générer 3 types interruptions :
      - 1 interruption à chaque mise à jour de la date, c'est-à-dire à chaque seconde.
      - 1 interruption alarme.
      - 1 interruption périodique, c'est une interruption qui sera générer à intervalle régulier.

    Le port 70H est le registre d'index :

    Bit 7


    Bit 6-0

    =
    =

    =

    0 Autorise les NMI (Non Masquable Interrupt).
    1 Interdit les NMI.

    Index dans la RAM (de 0 à 63 ou 127).

    L'écriture dans ce registre doit être suivit par la lecture
    du registre de donnée (au port 71H).

    Le port 71H est le registre de données :

    Bit 7-0

    =

    DATA

    LA MÉMOIRE DU RTC :

    MÉMOIRE

    DESCRIPTION (CONTENU)

     

      00H
      01H
      02H
      03H
      04H
      05H
      06H
      07H
      08H
      09H
      32H

     

      SECONDES (actuel)
      alarme secondes
      MINUTE (actuel)
      alarme minute
      HEURE (actuel)
      alarme heure
      JOUR DE LA SEMAINE : (1 = DIMANCHE, 2 = LUNDI, ..., 7 = SAMDEDI)
      JOUR DU MOIS
      MOIS : (1 = janvier, ..., 0Ch (ou 12H) = décembre)
      ANNÉE
      SIÈCLE

     

      0AH
      0BH
      0CH
      0DH

     

      REGISTRE D'ÉTAT A (de l'horloge)
      REGISTRE D'ÉTAT B
      REGISTRE D'ÉTAT C
      REGISTRE D'ÉTAT D

    LES OCTETS SUIVANT SERVENT AU BIOS :

     

      0EH
      0FH
      10H
      11H
      12H
      13H
      14H
      15H
      16H
      17H
      18H
      19H
      1AH
      1BH à 2DH
      2EH
      2FH
      30H
      31H
      32H
      33H
      34H à 3FH

     

      OCTET DE DIAGNOSTIC
      ÉTAT LORS DE L'ARRÊT DU SYSTEM (RESET)
      DESCRIPTION DES LECTEURS DE DISQUETTES
      RÉSERVÉ
      TYPE DES DISQUE DUR (C, D)
      RÉSERVÉ
      OCTET DE CONFIGURATION
      TAILLE DE LA MÉMOIRE DE BASE en Ko (octet de poids faible)
      TAILLE DE LA MÉMOIRE DE BASE en Ko (poids fort)
      TAILLE DE LA MÉMOIRE ÉTENDU en Ko (poids faible)
      TAILLE DE LA MÉMOIRE ÉTENDU en Ko (poids fort)
      TYPE DDUR C (octet d'extension)
      TYPE DDUR D (octet d'extension)
      RÉSERVÉ (pas d'infos)
      OCTET FAIBLE DU CHECKSUM (de 10H à 2DH)
      OCTET FORT DU CHECKSUM (de 10H à 2DH)
      TAILLE MÉMOIRE ÉTENDU au dessus des 1Mo (octet faible)
      TAILLE MÉMOIRE ÉTENDU au dessus des 1Mo (octet fort)
      SIÈCLE
      SETUP information
      RÉSERVÉ (pas d'infos)

     

      40H à 7FH

     

      PAS D'INFORMATIONS ?

     
    DESCRIPTION DES REGISTRES :

    REGISTRE A :

    Bit 7


    =
    =

    0
    1

    Indique que l'heure et la date peuvent être lues.
    Indique que l'heure ou la date sont en cours de
    changement dans la mémoire et ne peuvent être lues.

    le bit 7 (UIP) est accessible uniquement en lecture.

    Bit 6-4



    Bit 3-0
















    =
    =
    =

    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =

    Fréquence horaire (XTAL)
    010 => 32,768 Hz Défaut
    les autres valeurs ???

    Sélection de la vitesse pour les interruptions périodiques
    0000 arrêt de l'horloge
    0001 XTAL diviser par 128 (256 INT / seconde)
    0010 XTAL /256 (128 INT/S = 1 INT toute les 7812 uS)
    0011 XTAL /4 (8192 INT/S = 1 INT tte les 122 uS)
    0100 XTAL /8 (4096 INT/S = 1 INT tte les 244 uS)
    0101 XTAL /16 (2048 INT/S = 1 INT tte les 488 uS)
    0110 XTAL /32 (1024 INT/S = 1 INT tte les 976,562 uS)
    0111 XTAL /64 (512 INT/S = 1 INT tte les 1953 uS)
    1000 XTAL /128 (256 INT/S = 1 INT tte les 3906 uS)
    1001 XTAL /256 (128 INT/S = 1 INT tte les 7812 uS)
    1010 XTAL /512 (64 INT/S = 1 INT tte les 15625 uS)
    1011 XTAL /1024 (32 INT/S = 1 INT tte les 31250 uS)
    1100 XTAL /2048 (16 INT/S = 1 INT tte les 62500 uS)
    1101 XTAL /4096 (8 INT/S = 1 INT tte les 125 mS)
    1110 XTAL /8096 (4 INT/S = 1 INT tte les 250 mS)
    1111 XTAL /16192 (2 INT/s = 1 INT tte les 500 mS)

     
    ---------------------------------------------------------------------------------------------------

    REGISTRE B :


    Ce registre permet d'autoriser ou d'interdire les
    interruptions et de choisir le format de l'heure
    et de la date.

    Bit 7


    =
    =

    0
    1

    L'heure est actualisée toutes les secondes
    L'heure est actualisée toutes les secondes
    une nouvelle heure ou date )

     

    Bit 6

    =
    =

    0
    1

    Permet les interruptions périodiques
    Interdit les interruptions périodiques

     

    Bit 5

    =
    =

    1
    0

    Permet les interruptions pour l'alarme
    Interdit les interruptions pour l'alarme

     

    Bit 4


    =

    =

    1

    0

    Permet les interruptions après update de l'heure
    (toute les secondes)
    Interdit les interruptions ...

     

    Bit 3


    =

    =

    1

    0

    Permet l'activation de l'horloge pour les
    interruptions périodiques.
    Désactive l'horloge des interruptions périodiques.

     

    Bit 2


    =


    FORMAT DE LA DATE ET DE L'HEURE
    0 = BCD
    1 = BINAIRE

     

    Bit 1


    =


    FORMAT DE L'HEURE
    0 = Format 12 heures (il n'y a pas 13, 14, ..., 24)
    1 = Format 24 heures (de 0 à 24 H)

     

    Bit 0

    =
    =

    1
    0

    Tient compte de l'heure d'été.
    Ne tient pas compte de l'heure d'été

     
    ---------------------------------------------------------------------------------------------------

    REGISTRE C :


    en lecture uniquement. Quand une interruption survient,
    ce registre permet de savoir quelle est le type
    d'interruption .

     

    Bit 7



    Bit 6


    Bit 5


    Bit 4


    =
    =


    =
    =

    =
    =

    =
    =

    0
    1


    0
    1

    0
    1

    0
    1

    Pas d'interruption
    Indique qu'il y a une interruption
    (périodique, alarme, update heure)

    Pas d'interruption
    Indique une interruption périodique

    Pas d'interruption
    Indique une interruption alarme

    Pas d'interruption
    Indique une interruption UPdate
    (de mise a jour de la date)

     

    Bit 3-0

    =

    ???? Pas utilisé

     
    ---------------------------------------------------------------------------------------------------

    REGISTRE D : En lecture uniquement

    Bit 7

    =
    =

    0
    1

    Pile usée (à changer)
    Pile OK

     

    Bit 6-0

    =

    ?? Pas utilisé