From 39085938cf15f33a16f84621161b5c0b18c790fe Mon Sep 17 00:00:00 2001
From: Abb1x <54687179+Abb1x@users.noreply.github.com>
Date: Fri, 16 Apr 2021 15:26:33 -0400
Subject: [PATCH 1/4] WIP RTC
---
.../p\303\251riph\303\251riques/RTC.md" | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 "src/x86_64/p\303\251riph\303\251riques/RTC.md"
diff --git "a/src/x86_64/p\303\251riph\303\251riques/RTC.md" "b/src/x86_64/p\303\251riph\303\251riques/RTC.md"
new file mode 100644
index 0000000..2a95488
--- /dev/null
+++ "b/src/x86_64/p\303\251riph\303\251riques/RTC.md"
@@ -0,0 +1,49 @@
+
+Attention!
Cet article est en cours de rédaction.
+
+
+# Introduction
+
+RTC ou Real-Time Clock, est une puce qui mesure le passage du temps.
+Elle peut être utilisée pour avoir la date et heure précise. (voir ACPI pour le siècle)
+
+# Lire le temps
+Il est possible de lire depuis la RTC en utilisant les fonctions suivantes:
+```c
+/* Check if RTC is updating */
+int rtc_is_updating()
+{
+ outb(0x70, 0x0A);
+ return inb(0x71) & 0x80;
+}
+
+unsigned char rtc_read(int reg)
+{
+ while (rtc_is_updating());
+ outb(0x70, reg);
+
+ return inb(0x71);
+}
+```
+Voici la table des éléments à lire depuis la RTC et leur registre CMOS
+| Élement de temps | Registre
+|-------------|---------------|
+| Secondes | 0x0 |
+| Minutes | 0x02 |
+| Heures | 0x04 |
+| Jour de la semaine | 0x06 |
+| Jour | 0x07 |
+| Année | 0x09 |
+
+**Note:** les valeurs retournées sont en BCD et non pas en décimal.
+# Exemples
+Voici un exemple d'une lecture des secondes
+
+```c
+unsigned char rtc_get_seconds()
+{
+ unsigned char seconds = rtc_read(0);
+ unsigned char second = (seconds & 0x0F) + ((seconds / 16) * 10);
+ return second;
+}
+```
From 191ddf0d167d192c94736180764cfb177c59ef37 Mon Sep 17 00:00:00 2001
From: Abb1x <54687179+Abb1x@users.noreply.github.com>
Date: Fri, 16 Apr 2021 15:33:40 -0400
Subject: [PATCH 2/4] Ajout de commentaires, images et ressources
---
"src/x86_64/p\303\251riph\303\251riques/RTC.md" | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git "a/src/x86_64/p\303\251riph\303\251riques/RTC.md" "b/src/x86_64/p\303\251riph\303\251riques/RTC.md"
index 2a95488..afd150d 100644
--- "a/src/x86_64/p\303\251riph\303\251riques/RTC.md"
+++ "b/src/x86_64/p\303\251riph\303\251riques/RTC.md"
@@ -7,10 +7,13 @@
RTC ou Real-Time Clock, est une puce qui mesure le passage du temps.
Elle peut être utilisée pour avoir la date et heure précise. (voir ACPI pour le siècle)
+
+
+
# Lire le temps
Il est possible de lire depuis la RTC en utilisant les fonctions suivantes:
```c
-/* Check if RTC is updating */
+/* Vérifier si la RTC est en train de se mettre à jour */
int rtc_is_updating()
{
outb(0x70, 0x0A);
@@ -19,7 +22,7 @@ int rtc_is_updating()
unsigned char rtc_read(int reg)
{
- while (rtc_is_updating());
+ while (rtc_is_updating()); /* Attendre que l'update finisse */
outb(0x70, reg);
return inb(0x71);
@@ -43,7 +46,12 @@ Voici un exemple d'une lecture des secondes
unsigned char rtc_get_seconds()
{
unsigned char seconds = rtc_read(0);
- unsigned char second = (seconds & 0x0F) + ((seconds / 16) * 10);
+ unsigned char second = (seconds & 0x0F) + ((seconds / 16) * 10); /* Convertir au décimal */
return second;
}
```
+
+# Ressources
+[Wikipedia](https://en.wikipedia.org/wiki/Real-time_clock)
+[OSDev.org - CMOS](https://wiki.osdev.org/CMOS)
+[OSDev.org - RTC](https://wiki.osdev.org/RTC)
From 004808bd93f5e9b1ebd2b94afc09d1344f7fd747 Mon Sep 17 00:00:00 2001
From: Abb1x <54687179+Abb1x@users.noreply.github.com>
Date: Fri, 16 Apr 2021 15:34:11 -0400
Subject: [PATCH 3/4] Markdown fix
---
"src/x86_64/p\303\251riph\303\251riques/RTC.md" | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git "a/src/x86_64/p\303\251riph\303\251riques/RTC.md" "b/src/x86_64/p\303\251riph\303\251riques/RTC.md"
index afd150d..b99d3e2 100644
--- "a/src/x86_64/p\303\251riph\303\251riques/RTC.md"
+++ "b/src/x86_64/p\303\251riph\303\251riques/RTC.md"
@@ -52,6 +52,6 @@ unsigned char rtc_get_seconds()
```
# Ressources
-[Wikipedia](https://en.wikipedia.org/wiki/Real-time_clock)
-[OSDev.org - CMOS](https://wiki.osdev.org/CMOS)
-[OSDev.org - RTC](https://wiki.osdev.org/RTC)
+- [Wikipedia](https://en.wikipedia.org/wiki/Real-time_clock)
+- [OSDev.org - CMOS](https://wiki.osdev.org/CMOS)
+- [OSDev.org - RTC](https://wiki.osdev.org/RTC)
From 73396eef1346fbe7f7aa5ac1e52cdfb88713e105 Mon Sep 17 00:00:00 2001
From: Abb1x <54687179+Abb1x@users.noreply.github.com>
Date: Wed, 28 Apr 2021 09:25:35 -0400
Subject: [PATCH 4/4] Update RTC.md
---
"src/x86_64/p\303\251riph\303\251riques/RTC.md" | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git "a/src/x86_64/p\303\251riph\303\251riques/RTC.md" "b/src/x86_64/p\303\251riph\303\251riques/RTC.md"
index b99d3e2..0ddf7a7 100644
--- "a/src/x86_64/p\303\251riph\303\251riques/RTC.md"
+++ "b/src/x86_64/p\303\251riph\303\251riques/RTC.md"
@@ -13,19 +13,27 @@ Elle peut être utilisée pour avoir la date et heure précise. (voir ACPI pour
# Lire le temps
Il est possible de lire depuis la RTC en utilisant les fonctions suivantes:
```c
+
+enum
+{
+ CMOS_ADDRESS = 0x70,
+ CMOS_DATA = 0x71,
+ STATUS_REGISTER_A = 0x0A
+};
+
/* Vérifier si la RTC est en train de se mettre à jour */
int rtc_is_updating()
{
- outb(0x70, 0x0A);
- return inb(0x71) & 0x80;
+ outb(CMOS_ADDRESS, STATUS_REGISTER_A);
+ return inb(CMOS_DATA) & 0x80;
}
unsigned char rtc_read(int reg)
{
while (rtc_is_updating()); /* Attendre que l'update finisse */
- outb(0x70, reg);
+ outb(CMOS_ADDRESS, reg);
- return inb(0x71);
+ return inb(CMOS_DATA);
}
```
Voici la table des éléments à lire depuis la RTC et leur registre CMOS