blob: 323ea371550f9dfb1acf96da94b6068ad67cc2b6 [file] [log] [blame]
#include "n5_drv.h"
#include "n5_int.h"
unsigned int A[100];
void IRQ() {
gpio_write(0x0099);
}
int fact(int n){
int f = 1;
for(int i=2; i<=n; i++)
f = f * i;
return f;
}
int strlen(char *s){
int i=0;
while (*s){
i++;
}
return i;
}
void M23LC_write_byte(int n, unsigned int addr, unsigned int data){
spi_start(n);
spi_write(n, 0x2);
spi_write(n, addr >> 8); // Address high byte
spi_write(n, addr & 0xFF); // Address low byte
spi_write(n, data);
spi_end(n);
}
unsigned char M23LC_read_byte(int n, unsigned short addr){
spi_start(n);
spi_write(n, 0x3);
spi_write(n, addr >> 8); // Address high byte
spi_write(n, addr & 0xFF); // Address low byte
spi_write(n, 0); // just write a dummy data to get the data out
spi_end(n);
return spi_read(n);
}
#define DELAY(n) for(int i=0; i<n; i++)
int main(){
// Initialization
uart_init (0, 0);
gpio_set_dir(0x00FF);
spi_init(0, 0,0,20);
// Start the test
uart_puts (0, "Hello World!\n", 13);
// GPIO
// uart_puts (0, "GPIO Test: ", 11);
// gpio_write(0x0055);
// DELAY(100);
// int gpio_data = gpio_read();
// if((gpio_data >> 8) == 0x55)
// uart_puts(0,"Passed!\n", 8);
// else
// uart_puts(0,"Failed!\n", 8);
// External SPM Accelerator
uart_puts (0, "SPM Test: ", 9);
int factorial = fact(5);
DELAY(100);
if(factorial==120)
uart_puts(0,"Passed!\n", 8);
else
uart_puts(0,"Failed!\n", 8);
// SPI
uart_puts (0, "SPI Test: ", 9);
M23LC_write_byte(0, 0, 0xA5);
unsigned int spi_data = M23LC_read_byte(0, 0);
DELAY(100);
if(spi_data==0xA5)
uart_puts(0,"Passed!\n", 8);
else
uart_puts(0,"Failed!\n", 8);
// PWM
pwm_init(0, 250, 99, 5);
pwm_enable(0);
DELAY(300);
pwm_disable(0);
// Some Delay
DELAY(100);
// Done!
uart_puts(0, "Done!\n\n", 7);
return 0;
}
/*
(unsigned int *)(0x49000000) = -20;
(unsigned int *)(0x49000004) = 50;
int x = 10;
int y = 50;
int z = x * y;
x = fact(5);
gpio_write(x);
uart_init (0, 0);
uart_puts (0, "Hello World!\n", 13);
gpio_write(z);
for(int i=0; i<z; i++);
gpio_write(0x00AA);
x = 5;
//asm volatile ("csrrw zero, mie, %0" :: "r" (x));
asm volatile ("csrrwi zero, mie, %0" :: "i" (5));
x = 0x100;
asm volatile ("csrrw zero, 0x310, %0" :: "r" (x));
gpio_im(0x0100);
for(int i=0; i<50; i++);
*/