BlinkenArea - GitList
Repositories
Blog
Wiki
mips_sys
Code
Commits
Branches
Tags
Search
Tree:
c906a48
Branches
Tags
master
mips_sys
fw
main.c
implemented ethernet RX busmaster -> packet reception working
Stefan Schuermans
commited
c906a48
at 2012-03-03 23:42:55
main.c
Blame
History
Raw
#include "cyc_cnt.h" #include "eth.h" #include "lcd.h" #include "leds.h" #include "uart.h" #include "switches.h" //#define CFG_SIMULATION #define CFG_ETH #define CFG_UART #ifdef CFG_SIMULATION # define CFG_UART_CHK #else # define CFG_DELAY # define CFG_LCD #endif const int myconst = 0x12345678; int myvar = 0x11223344; volatile int data[100]; void switches(void) { #ifdef CFG_LCD lcd_chr(1, 0, switches_get_state(sw_0) ? '0' : ' '); lcd_chr(1, 1, switches_get_state(sw_1) ? '1' : ' '); lcd_chr(1, 2, switches_get_state(sw_2) ? '2' : ' '); lcd_chr(1, 3, switches_get_state(sw_3) ? '3' : ' '); lcd_chr(1, 4, switches_get_state(sw_east) ? 'E' : ' '); lcd_chr(1, 5, switches_get_state(sw_north) ? 'N' : ' '); lcd_chr(1, 6, switches_get_state(sw_south) ? 'S' : ' '); lcd_chr(1, 7, switches_get_state(sw_west) ? 'W' : ' '); lcd_chr(1, 8, switches_get_state(sw_center) ? 'C' : ' '); lcd_chr(1, 9, switches_get_state(sw_rot_a) ? 'a' : ' '); lcd_chr(1, 10, switches_get_state(sw_rot_b) ? 'b' : ' '); #endif #ifdef CFG_LCD unsigned int cnt = switches_get_rot_cnt(); lcd_chr(1, 12, '0' + (cnt >> 9 & 0x7)); lcd_chr(1, 13, '0' + (cnt >> 6 & 0x7)); lcd_chr(1, 14, '0' + (cnt >> 3 & 0x7)); lcd_chr(1, 15, '0' + (cnt & 0x7)); #endif } void delay(void) { unsigned int i; #ifdef CFG_ETH unsigned int sz; unsigned char *ptr; #endif for (i = 0; i < 10; ++i) { switches(); #ifdef CFG_ETH while (eth_rx(&ptr, &sz)) { #ifdef CFG_UART for ( ; sz > 0; ptr++, sz--) uart_tx(*ptr); #endif } #endif #ifdef CFG_DELAY cyc_cnt_delay_ms(20); #endif } } int main() { unsigned int i; unsigned short chr; unsigned char leds; leds_set_state(0x01); for (i = 0; i < sizeof(data) / sizeof(data[0]); ++i) data[i] = i; leds_set_state(0x02); #ifdef CFG_ETH eth_rx_init(); #endif leds_set_state(0x04); #ifdef CFG_LCD lcd_init(); lcd_str(0, "MIPS I system"); lcd_str(1, ""); #endif leds_set_state(0x08); #ifdef CFG_UART uart_cfg_scale(62); /* 115200 */ uart_cfg_bits(8); uart_cfg_stop(1); uart_tx('M'); uart_tx('I'); uart_tx('P'); uart_tx('S'); uart_tx(' '); uart_tx('I'); uart_tx('\r'); uart_tx('\n'); #ifdef CFG_UART_CHK if (uart_rx() != 'M') while(1); if (uart_rx() != 'I') while(1); if (uart_rx() != 'P') while(1); if (uart_rx() != 'S') while(1); if (uart_rx() != ' ') while(1); if (uart_rx() != 'I') while(1); if (uart_rx() != '\r') while(1); if (uart_rx() != '\n') while(1); #endif #endif leds_set_state(0x10); leds = 0x11; while (1) { #ifdef CFG_UART if (uart_can_rx()) { chr = uart_rx(); if (uart_is_err(chr)) leds = 0; else leds = chr; } #endif leds_set_state(leds); leds = leds << 1 | leds >> 7; delay(); } return 0; }