Stap 4: De Firmware
De standaard TinyBASIC Plus sketch moest worden gewijzigd om te maken een standalone computersysteem. De ongewijzigde versie van TinyBASIC Plus maakt gebruik van de seriële poort van de AVR waarmee gebruikers kunnen interactief werken met de software en programma's maken. Ik de TVout bibliotheek geïmporteerd en vervangen alle uitgang voor seriële oproepen (Serial.write() enz) met TVout oproepen (TV.print() enz). De standaard PS/2 toetsenbord bibliotheek botst met TVout waardoor vreemde uitvoer worden weergegeven op de TV en het toetsenbord niet goed wordt gelezen, maar na wat onderzoek, kwam ik over een bibliotheek bekend als de PS2uartKeyboard die de XCK0 pin en RX0 pin voor een AVR verbinding met het toetsenbord maakt zodat een PS/2-toetsenbord te werken met de TVout bibliotheek. Deze bibliotheek kan hier worden gevonden in de buurt van de onderkant van de pagina:
https://code.Google.com/p/Arduino-tvout/issues/detail?id=38
(Werkelijke bibliotheek link hier)
Ik testte de PS2uartKeyboard-bibliotheek en de bibliotheek TVout samen en ze werkten prima dus ik heb de PS2uartKeyboard bibliotheek toegevoegd aan de schets TinyBASIC Plus wat resulteerde in het creëren van een werkend standalone computersysteem. De seriële oproepen die ingang voor seriële in TinyBASIC Plus gelezen werden vervangen door toetsenbord oproepen om te lezen van de invoer van het toetsenbord. Zoals de TVout bibliotheek, de PS2uartKeyboard bibliotheek en TinyBASIC Plus schets allemaal op de zelfde AVR liepen, vereist de computer slechts één chip (één AVR) om te kunnen opereren. Ik begon TVout met behulp van de volgende regel:
TV.begin (PAL, 720, 480);
die TVout begint bij een hogere resolutie dan de standaard om sommige van de tekstoutput van TinyBASIC Plus op een enkele regel als fit bij de verstekwaarde van de resolutie, sommige van de tekst terugloopt naar de volgende regel. Let op, een resolutie van 720 x 480 niet hier wordt gegenereerd als het naar beneden wordt gedeeld door de TVout bibliotheek naar een lagere resolutie. Startende TVout uitzien gebruikt ongeveer 8KB van de ATmega 1284Ps SRAM (voor de video buffer). Ik moest de waarde van de RAMEND in TinyBASIC Plus veranderen zodat voldoende geheugen voor de video buffer TVout voorgeschreven en ik veranderde ook de break-toets gebruikt in TinyBASIC Plus (het was vorige CTRL + C), omdat Ctrl-toetsen worden niet ondersteund door deze PS2 toetsenbord bibliotheek (ik gebruikte de escape-toets in plaats daarvan).
Mij had voor toepassing van de oorspronkelijke ATmega 1284P 16MHz bootloader om te stoppen geen TVout glitches die zich voordoen bij het gebruik van de bootloader van de optiboot (de oorspronkelijke bootloader veroorzaakt geen deze glitches). Wanneer compling de schets in de IDE Arduino ERW, de grootte van de schets is minder dan 22KB en de geschatte SRAM-verbruik van de AVR is bijna 9KB (vertrekt ongeveer 8KB voor de TVout video buffer). De schets TinyBASIC Plus vindt u bijgevoegd op deze pagina.
De ATmega 1284 P Arduino bootloader kan hier worden gevonden:
https://github.com/fakufaku/Mighty-1284p
De oorspronkelijke TinyBASIC Plus-code kan hier worden gevonden:
https://github.com/BleuLlama/TinyBasicPlus
De bibliotheek TVout kan hier worden gevonden:
https://code.Google.com/p/Arduino-tvout/
Houd er rekening mee, TinyBASIC Plus, Arduino software (bootloaders, IDE enz), de PS2uartKeyboard-bibliotheek en de TVout bibliotheek alle houden er eigen softwarelicenties die moeten worden gevolgd als een van de makers-code gebruikt.
Update (23/06/2014): Ik heb het hex bestand voor de TinyBASIC Plus schets (gecompileerd met behulp van de Arduino IDE) bijgevoegd zodat de Arduino IDE niet hoeft te worden gebruikt voor het programmeren van de ATmega 1284P. Ik heb dit bestand van de tijdelijke map die door de Arduino IDE in de fase van de compilatie van de schets gemaakt dus ik niet zeker ben als het de juiste is (laat het me weten als iemand heeft problemen met het gebruik).