aboutsummaryrefslogtreecommitdiff
path: root/VexRiscvSocSoftware/projects/murax/demo/src/main.c
diff options
context:
space:
mode:
authorFriedrich Beckmann <friedrich.beckmann@hs-augsburg.de>2022-07-25 17:55:39 +0200
committerFriedrich Beckmann <friedrich.beckmann@hs-augsburg.de>2022-07-25 17:55:39 +0200
commit3fff6023602822531efdae30bc8ebf862967f1ef (patch)
tree16028102b8d850f8ab3115d28a8539ca6bc5f51d /VexRiscvSocSoftware/projects/murax/demo/src/main.c
Initial Commit
Diffstat (limited to 'VexRiscvSocSoftware/projects/murax/demo/src/main.c')
-rwxr-xr-xVexRiscvSocSoftware/projects/murax/demo/src/main.c54
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;
+ }
+}
+
+
+