A project to implement a console using the Mbed using VGA for video output and a PS/2 keyboard for the input. The eventual goal is to also include tools for managing SD cards, and a semi-self-hosting programming environment.

Dependencies:   PS2_MbedConsole fastlib SDFileSystem vga640x480g_mbedconsole lightvm mbed

MbedConsole is a cool little project to have a self-contained computer all on an Mbed. So far it has VGA and PS/2 support and can stand alone without a computer powering it. Next planned features are SD card support and a lightweight programmable VM complete with a file editor and self-hosted assembler.

You can view additional details about it at http://earlz.net/tags/mbedconsole

Committer:
earlz
Date:
Fri Sep 28 04:03:54 2012 +0000
Revision:
11:fede136943a9
Parent:
10:bda85442b674
Child:
12:3ee3062cc11c
Finally have keyboard support, AND it plays nice with VGA

Who changed what in which revision?

UserRevisionLine numberNew contents of line
earlz 1:eb209f0468de 1 #include "mbedconsole.h"
earlz 9:4211d638b2e9 2 #include "clock.h"
earlz 9:4211d638b2e9 3 #include "i2s.h"
earlz 9:4211d638b2e9 4 #include "nvic.h"
earlz 9:4211d638b2e9 5
earlz 9:4211d638b2e9 6
earlz 9:4211d638b2e9 7 PS2Keyboard *ps2kb;
earlz 0:6906dbde03da 8 DigitalOut myled(LED1);
earlz 0:6906dbde03da 9
earlz 1:eb209f0468de 10
earlz 1:eb209f0468de 11 Serial serial(USBTX, USBRX);
earlz 9:4211d638b2e9 12 ConsoleStream console;
earlz 0:6906dbde03da 13
earlz 10:bda85442b674 14 void keyboard_init();
earlz 0:6906dbde03da 15
earlz 0:6906dbde03da 16 int main() {
earlz 11:fede136943a9 17 //Set all priorities to 100 so we are able to make VGA a priority
earlz 11:fede136943a9 18 //By default, all priorities are at their highest 0
earlz 11:fede136943a9 19 NVIC_SetPriority( NonMaskableInt_IRQn, 100 );
earlz 11:fede136943a9 20 NVIC_SetPriority(MemoryManagement_IRQn, 100);
earlz 11:fede136943a9 21
earlz 11:fede136943a9 22 NVIC_SetPriority(BusFault_IRQn, 100);
earlz 11:fede136943a9 23 NVIC_SetPriority(UsageFault_IRQn, 100);
earlz 11:fede136943a9 24 NVIC_SetPriority(SVCall_IRQn, 100);
earlz 11:fede136943a9 25 NVIC_SetPriority(DebugMonitor_IRQn, 100);
earlz 11:fede136943a9 26 NVIC_SetPriority(PendSV_IRQn, 100);
earlz 11:fede136943a9 27 NVIC_SetPriority(SysTick_IRQn, 100);
earlz 11:fede136943a9 28 NVIC_SetPriority(WDT_IRQn, 100);
earlz 11:fede136943a9 29 NVIC_SetPriority(TIMER0_IRQn, 100);
earlz 11:fede136943a9 30 NVIC_SetPriority(TIMER1_IRQn, 100);
earlz 11:fede136943a9 31 NVIC_SetPriority(TIMER2_IRQn, 100);
earlz 11:fede136943a9 32 NVIC_SetPriority(TIMER3_IRQn, 100);
earlz 11:fede136943a9 33 NVIC_SetPriority(UART0_IRQn, 100);
earlz 11:fede136943a9 34 NVIC_SetPriority(UART1_IRQn, 100);
earlz 11:fede136943a9 35 NVIC_SetPriority(UART2_IRQn, 100);
earlz 11:fede136943a9 36 NVIC_SetPriority(UART3_IRQn, 100);
earlz 11:fede136943a9 37
earlz 11:fede136943a9 38 NVIC_SetPriority(PWM1_IRQn, 100);
earlz 11:fede136943a9 39 NVIC_SetPriority(I2C0_IRQn, 100);
earlz 11:fede136943a9 40 NVIC_SetPriority(I2C1_IRQn, 100);
earlz 11:fede136943a9 41 NVIC_SetPriority(I2C2_IRQn, 100);
earlz 11:fede136943a9 42 NVIC_SetPriority(SPI_IRQn, 100);
earlz 11:fede136943a9 43 NVIC_SetPriority(SSP0_IRQn, 100);
earlz 11:fede136943a9 44 NVIC_SetPriority(SSP1_IRQn, 100);
earlz 11:fede136943a9 45 NVIC_SetPriority(PLL0_IRQn, 100);
earlz 11:fede136943a9 46 NVIC_SetPriority(RTC_IRQn, 100);
earlz 11:fede136943a9 47 NVIC_SetPriority(EINT0_IRQn, 100);
earlz 11:fede136943a9 48 NVIC_SetPriority(EINT1_IRQn, 100);
earlz 11:fede136943a9 49
earlz 11:fede136943a9 50 NVIC_SetPriority(EINT2_IRQn, 100);
earlz 11:fede136943a9 51 NVIC_SetPriority(EINT3_IRQn, 100);
earlz 11:fede136943a9 52 NVIC_SetPriority(ADC_IRQn, 100);
earlz 11:fede136943a9 53 NVIC_SetPriority(BOD_IRQn, 100);
earlz 11:fede136943a9 54 NVIC_SetPriority(USB_IRQn, 100);
earlz 11:fede136943a9 55 NVIC_SetPriority(CAN_IRQn, 100);
earlz 11:fede136943a9 56 NVIC_SetPriority(DMA_IRQn, 100);
earlz 11:fede136943a9 57
earlz 11:fede136943a9 58 NVIC_SetPriority(I2S_IRQn, 100);
earlz 11:fede136943a9 59 NVIC_SetPriority(ENET_IRQn, 100);
earlz 11:fede136943a9 60 NVIC_SetPriority(RIT_IRQn, 100);
earlz 11:fede136943a9 61 NVIC_SetPriority(MCPWM_IRQn, 100);
earlz 11:fede136943a9 62 NVIC_SetPriority(QEI_IRQn, 100);
earlz 11:fede136943a9 63 NVIC_SetPriority(PLL1_IRQn, 100);
earlz 0:6906dbde03da 64 init_vga();
earlz 10:bda85442b674 65 vga_cls();
earlz 0:6906dbde03da 66 serial.baud(115200);
earlz 9:4211d638b2e9 67 serial.printf("Initializing PS/2..");
earlz 10:bda85442b674 68 keyboard_init();
earlz 9:4211d638b2e9 69 fl_select_clock_i2s(FL_CLOCK_DIV1); // assume 100MHz
earlz 9:4211d638b2e9 70 fl_i2s_set_tx_rate(1,4); // set 25 MHz pixel clock
earlz 0:6906dbde03da 71
earlz 9:4211d638b2e9 72
earlz 11:fede136943a9 73 NVIC_SetPriority( EINT3_IRQn, 90 );
earlz 10:bda85442b674 74 serial.printf("Done\r\n");
earlz 10:bda85442b674 75
earlz 0:6906dbde03da 76
earlz 0:6906dbde03da 77 while(1)
earlz 0:6906dbde03da 78 {
earlz 1:eb209f0468de 79 vputs("mbedConsole by Jordan Earls\n");
earlz 1:eb209f0468de 80 shell_begin();
earlz 0:6906dbde03da 81 }
earlz 0:6906dbde03da 82 }