diff options
Diffstat (limited to 'include/07.pit')
| -rw-r--r-- | include/07.pit/deo1 (renamed from include/07.pit/pit00.c) | 0 | ||||
| -rw-r--r-- | include/07.pit/deo10 | 4 | ||||
| -rw-r--r-- | include/07.pit/deo2 | 1 | ||||
| -rw-r--r-- | include/07.pit/deo3 (renamed from include/07.pit/pit01.c) | 1 | ||||
| -rw-r--r-- | include/07.pit/deo4 | 9 | ||||
| -rw-r--r-- | include/07.pit/deo5 | 3 | ||||
| -rw-r--r-- | include/07.pit/deo6 | 3 | ||||
| -rw-r--r-- | include/07.pit/deo7 | 4 | ||||
| -rw-r--r-- | include/07.pit/deo8 | 2 | ||||
| -rw-r--r-- | include/07.pit/deo9 | 3 | ||||
| -rw-r--r-- | include/07.pit/pit02.c | 13 | ||||
| -rw-r--r-- | include/07.pit/timer.c (renamed from include/07.pit/pit03.c) | 25 |
12 files changed, 54 insertions, 14 deletions
diff --git a/include/07.pit/pit00.c b/include/07.pit/deo1 index 13fd550..13fd550 100644 --- a/include/07.pit/pit00.c +++ b/include/07.pit/deo1 diff --git a/include/07.pit/deo10 b/include/07.pit/deo10 new file mode 100644 index 0000000..208a223 --- /dev/null +++ b/include/07.pit/deo10 @@ -0,0 +1,4 @@ + // Send the frequency divisor. + ioport_out(0x40, l); + ioport_out(0x40, h); +} diff --git a/include/07.pit/deo2 b/include/07.pit/deo2 new file mode 100644 index 0000000..dfa7284 --- /dev/null +++ b/include/07.pit/deo2 @@ -0,0 +1 @@ +void add_idt_entry(size_t num,uint32_t offset); diff --git a/include/07.pit/pit01.c b/include/07.pit/deo3 index c199373..025eb31 100644 --- a/include/07.pit/pit01.c +++ b/include/07.pit/deo3 @@ -1,4 +1,3 @@ -void add_idt_entry(size_t num,uint32_t offset); uint32_t tick=0; const uint32_t TICKS_PER_SECOND=50; extern uint32_t time; diff --git a/include/07.pit/deo4 b/include/07.pit/deo4 new file mode 100644 index 0000000..8eba051 --- /dev/null +++ b/include/07.pit/deo4 @@ -0,0 +1,9 @@ +void timer_handler() +{ + tick++; + if(tick==TICKS_PER_SECOND) + { + //printf("%d seconds passed\n",time); + tick=0; + time++; + } diff --git a/include/07.pit/deo5 b/include/07.pit/deo5 new file mode 100644 index 0000000..eaf7bcf --- /dev/null +++ b/include/07.pit/deo5 @@ -0,0 +1,3 @@ + ioport_out(0x20, 0x20); + ioport_out(0xa0,0x20); +} diff --git a/include/07.pit/deo6 b/include/07.pit/deo6 new file mode 100644 index 0000000..12cee6a --- /dev/null +++ b/include/07.pit/deo6 @@ -0,0 +1,3 @@ +void init_timer(uint32_t frequency) +{ + // Firstly, register our timer callback. diff --git a/include/07.pit/deo7 b/include/07.pit/deo7 new file mode 100644 index 0000000..c780ebc --- /dev/null +++ b/include/07.pit/deo7 @@ -0,0 +1,4 @@ + // The value we send to the PIT is the value to divide it's input clock + // (1193180 Hz) by, to get our required frequency. Important to note is + // that the divisor must be small enough to fit into 16-bits. + uint32_t divisor = 1193180 / frequency; diff --git a/include/07.pit/deo8 b/include/07.pit/deo8 new file mode 100644 index 0000000..8c64aaf --- /dev/null +++ b/include/07.pit/deo8 @@ -0,0 +1,2 @@ + // Send the command byte. + ioport_out(0x43, 0x36); diff --git a/include/07.pit/deo9 b/include/07.pit/deo9 new file mode 100644 index 0000000..1deca04 --- /dev/null +++ b/include/07.pit/deo9 @@ -0,0 +1,3 @@ + // Divisor has to be sent byte-wise, so split here into upper/lower bytes. + uint8_t l = (uint8_t)(divisor & 0xFF); + uint8_t h = (uint8_t)( (divisor>>8) & 0xFF ); diff --git a/include/07.pit/pit02.c b/include/07.pit/pit02.c deleted file mode 100644 index 523d14b..0000000 --- a/include/07.pit/pit02.c +++ /dev/null @@ -1,13 +0,0 @@ -void timer_handler() -{ - tick++; - if(tick==TICKS_PER_SECOND) - { - //printf("%d seconds passed\n",time); - tick=0; - time++; - } - - ioport_out(0x20, 0x20); - ioport_out(0xa0,0x20); -} diff --git a/include/07.pit/pit03.c b/include/07.pit/timer.c index 287adba..390e512 100644 --- a/include/07.pit/pit03.c +++ b/include/07.pit/timer.c @@ -1,3 +1,28 @@ +#include<types.h> +#include<asm.h> +#include<stdio.h> + +void add_idt_entry(size_t num,uint32_t offset); + +uint32_t tick=0; +const uint32_t TICKS_PER_SECOND=50; +extern uint32_t time; +uint32_t time=0; + +void timer_handler() +{ + tick++; + if(tick==TICKS_PER_SECOND) + { + //printf("%d seconds passed\n",time); + tick=0; + time++; + } + + ioport_out(0x20, 0x20); + ioport_out(0xa0,0x20); +} + void init_timer(uint32_t frequency) { // Firstly, register our timer callback. |
