Chip dator: Lätt att producera AVR BASIC dator (4 / 6 steg)
Steg 4: Firmware
Standard TinyBASIC Plus skiss hade ändras för att skapa en fristående datorsystem. Den oförändrad versionen av TinyBASIC Plus använder den seriella porten på AVR för att tillåta användare att interagera med programvaran och skapa program. Jag importerade TVout biblioteket och ersatt alla serial output samtal (Serial.write() etc) med TVout samtal (TV.print() etc). PS/2 tangentbord standardbiblioteket sammandrabbningar med TVout orsakar konstiga utdata ska visas på TV: N och tangentbordet inte läses korrekt, men efter lite forskning, jag kom över ett bibliotek som kallas PS2uartKeyboard som använder XCK0 stift och RX0 stift för en AVR ansluta till tangentbordet för att tillåta en PS/2 tangentbord att arbeta med TVout biblioteket. Detta bibliotek finns här längst ner på sidan:
https://code.Google.com/p/Arduino-tvout/Issues/detail?ID=38
(Själva biblioteket länk här)
Jag testade det PS2uartKeyboard och det TVout biblioteket tillsammans och de fungerade bra så jag la PS2uartKeyboard biblioteket på TinyBASIC Plus skissen som resulterade i att skapa ett fungerande fristående datorsystem. De seriella samtal som läst seriell in i TinyBASIC Plus ersattes med tangentbord samtal att läsa den på tangentbordet. Som TVout biblioteket, den PS2uartKeyboard och TinyBASIC Plus skiss alla kör på samma AVR, kräver datorn endast ett enda chip (en AVR) för att fungera. Jag började TVout med följande rad:
TV.begin (PAL, 720, 480);
som börjar TVout vid en högre upplösning än standard för att passa några av textproduktion från TinyBASIC Plus på en enda rad som med standard upplösning, några av text sveper till nästa rad. Observera att en upplösning på 720 x 480 inte genereras här eftersom det delas ner av TVout biblioteket till en lägre upplösning. Start TVout såhär använder ca 8KB av ATmega 1284Ps SRAM (för video buffert). Jag var tvungen att ändra värdet RAMEND i TinyBASIC Plus för att ge tillräckligt med minne för video buffert krävs av TVout och jag har också ändrat break nyckeln som används i TinyBASIC Plus (det var tidigare CTRL + C) eftersom kontroll nycklar inte stöds av denna PS2 Tangentbord bibliotek (jag använde escape-tangenten i stället).
Jag hade gå använda den ursprungliga ATmega 1284P 16MHz bootloader för att stoppa någon TVout glapp som uppstår när du använder uppstartshanteraren optiboot (ursprungliga bootloader inte orsaka dessa buggar). När compling skiss på Arduino ERW IDE, skiss storlek är mindre än 22KB SRAM beräknade användningen av AVR och nästan 9KB (lämnar ca 8KB för TVout video buffert). TinyBASIC Plus skissen finns bifogade på denna sida.
ATmega 1284 P Arduino bootloader kan hittas här:
https://github.com/fakufaku/Mighty-1284p
Den ursprungliga TinyBASIC Plus koden kan hittas här:
https://github.com/BleuLlama/TinyBasicPlus
TVout biblioteket kan hittas här:
https://code.Google.com/p/Arduino-tvout/
Observera att TinyBASIC Plus, Arduino programvara (bootloaders, IDE etc), det PS2uartKeyboard och det TVout biblioteket alla håll det egna programvarulicenser som måste följas om du använder någon av skaparna koden.
Uppdatera (23/06/2014): Jag har bifogat den hex filen för TinyBASIC Plus skissen (kompileras med Arduino IDE) så Arduino IDE inte har används för att programmera ATmega 1284P. Jag fick denna fil från den temporära katalogen skapad av Arduino IDE under sammanställning av skiss så jag inte vet om det stämmer (Låt mig veta om någon har några problem med det).