diff options
author | Friedrich Beckmann <friedrich.beckmann@hs-augsburg.de> | 2022-07-25 17:55:39 +0200 |
---|---|---|
committer | Friedrich Beckmann <friedrich.beckmann@hs-augsburg.de> | 2022-07-25 17:55:39 +0200 |
commit | 3fff6023602822531efdae30bc8ebf862967f1ef (patch) | |
tree | 16028102b8d850f8ab3115d28a8539ca6bc5f51d /VexRiscvSocSoftware/projects/murax/demo/src/main.c |
Initial Commit
Diffstat (limited to 'VexRiscvSocSoftware/projects/murax/demo/src/main.c')
-rwxr-xr-x | VexRiscvSocSoftware/projects/murax/demo/src/main.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/VexRiscvSocSoftware/projects/murax/demo/src/main.c b/VexRiscvSocSoftware/projects/murax/demo/src/main.c new file mode 100755 index 0000000..9f62ab3 --- /dev/null +++ b/VexRiscvSocSoftware/projects/murax/demo/src/main.c @@ -0,0 +1,54 @@ +#include <stdint.h> + +#include <murax.h> + + +void main() { + volatile uint32_t a = 1, b = 2, c = 3; + uint32_t result = 0; + char msg[] = "Lieber Franz! Wir wünschen Dir eine gute Zeit!"; + uint32_t msgidx = 0; + + interruptCtrl_init(TIMER_INTERRUPT); + prescaler_init(TIMER_PRESCALER); + timer_init(TIMER_A); + + TIMER_PRESCALER->LIMIT = 50000-1; //1 ms rate + + TIMER_A->LIMIT = 1000-1; //1 second rate + TIMER_A->CLEARS_TICKS = 0x00010002; + + TIMER_INTERRUPT->PENDINGS = 0xF; + TIMER_INTERRUPT->MASKS = 0x1; + + GPIO_A->OUTPUT_ENABLE = 0x000000FF; + GPIO_A->OUTPUT = 0x00000000; + + UART->STATUS = 2; //Enable RX interrupts + UART->DATA = 'A'; + + while(1){ + result += a; + result += b + c; + for(uint32_t idx = 0;idx < 200000;idx++) asm volatile(""); + if (msgidx == sizeof(msg)-1) + msgidx = 0; + else + msgidx++; + UART->DATA = msg[msgidx]; + GPIO_A->OUTPUT = (GPIO_A->OUTPUT & ~0x3F) | ((GPIO_A->OUTPUT + 1) & 0x3F); //Counter on LED[5:0] + } +} + +void irqCallback(){ + if(TIMER_INTERRUPT->PENDINGS & 1){ //Timer A interrupt + GPIO_A->OUTPUT ^= 0x80; //Toogle led 7 + TIMER_INTERRUPT->PENDINGS = 1; + } + while(UART->STATUS & (1 << 9)){ //UART RX interrupt + UART->DATA = (UART->DATA) & 0xFF; + } +} + + + |