COPYRIGHT (C) 2018-2021 Adrian Kundert
[email protected]
The APL development begun with an hobbyst project having as goal to design a single board computer with audio-video and PS/2 keyboard interfaces. Such open source implementations are already realized by other Atmel programmers like Nick Gammon and Sandro Maffiodo. Since every design is a resource tradeoff and my features priorization were different I came out with a different implementation. Indeed the VGA resolution was important but I wanted to keep the UART port available for communication and also use as less as possible RAM by storing the font/tile data in the PGM memory but which is a bit slower than reading from the RAM.
- Timer Interrupt based implementation (execution not impacted by the main loop)
- Low RAM footprint by tile rendering from PGM memory (4 clocks / pixel)
- Tile size is 6 px by 8 px (Text mode) or 8 px by 8 px (GraphicPgm and Graphic modes)
- Runtime tile creation for the Graphic mode with tiles allocated in the RAM
- Fast screen horizontal and vertical pixel scrolling for the GraphicPgm and Graphic modes
- Optional hardware pixel multiplexer for RGB capability
- PS/2 keyboard support
- Sound Tone from 45 Hz to 12 KHz
- SD card interface (TBD)
The APL is designed for Arduino software development environement. The hardware configuration is flexible from standart board like Arduino Uno or Nano,
Configuration | Pixel height) | Tile Resolution in Text mode (Pixel width) | Tile Resolution in GraphicPGM mode (Pixel width) | Tile Resolution in Graphic mode (Pixel width) |
---|---|---|---|---|
32 MHz (experimental) | 160 | 29 (172) | 19 (152) | 17 (136) |
24 MHz | 160 | 19 (114) | 13 (104) | 11 (88) |
16 MHz (Uno/Nano) | 160 | 8 (48) | 6 (48) | 4 (32) |
but can also be customized with an higher system clock for better performance. Additionally, an external pixel multiplexer circuit can be added to increase even more the pixel resolution.
Configuration | Pixel height) | Tile Resolution in Text mode (Pixel width) | Tile Resolution in Graphic mode (Pixel width) |
---|---|---|---|
32 MHz (experimental) | 160 | 29 (172) | 21 (168) |
24 MHz | 160 | 20 (120) | 14 (112) |
-
Having installed Atmel Studio 7
-
Open the solution file "APL.atsln" for the demo application "Font" or "Pong" or "Sokoban"
-
(if required) in config.h change the sys clock and Pixel_Mux definition:
#define F_CPU 16000000UL // system clock
#define PIXEL_HW_MUX // enable this define when Pixel Hardware Mux is used
-
Build and Program your device
-
Having installed Arduino IDE version 1.8.10 or newer
-
Import the APL library in your Arduino library folder: menu Sketch -> Include library -> add .ZIP Library
-
Open the demo application "Font" or "Pong" or "Sokoban" with the Arduino IDE
-
(if required) in APLcore.h and config.h change the sys clock and Pixel_Mux definition:
#define F_CPU 16000000UL // system clock
#define PIXEL_HW_MUX // enable this define when Pixel Hardware Mux is used
-
Verify and Program your device