Innehållsförteckning:

Handhållen BASIC -dator: 6 steg (med bilder)
Handhållen BASIC -dator: 6 steg (med bilder)

Video: Handhållen BASIC -dator: 6 steg (med bilder)

Video: Handhållen BASIC -dator: 6 steg (med bilder)
Video: Мужская короткая Стрижка Машинкой Пошагово дома | Мужская стрижка Бокс | Как стричь усы, бороду 2024, Juli
Anonim
Handhållen BASIC -dator
Handhållen BASIC -dator
Handhållen BASIC -dator
Handhållen BASIC -dator

Denna instruktionsbok beskriver min process för att bygga en liten handdator som kör BASIC. Datorn är byggd kring ATmega 1284P AVR -chipet, vilket också inspirerade det dumma namnet på datorn (HAL 1284).

Denna konstruktion är TYCKLIGT inspirerad av det fantastiska projektet som finns här och SuperCON BASIC -märket.

Datorn kör en modifierad version av TinyBasic, även om mycket av programvaran är baserad på projektet av dan14. Du kan naturligtvis följa den här instruerbara, eller ännu bättre, förbättra den eftersom jag gjorde några misstag.

För detta projekt skapade jag också en manual. Det nämner några buggar och detaljer för den valda bildskärmen, men viktigast av allt, det har listan över BASIC -operationer.

Efter att detta publicerades gjorde jag en video som presenterade projektet.

Steg 1: Delar jag använde

Delar jag använde
Delar jag använde
Delar jag använde
Delar jag använde
Delar jag använde
Delar jag använde

För huvud IC:

  • ATmega 1284P
  • 16 MHz kristall
  • 2x 22pf keramisk kondensator
  • 10KΩ motstånd (för återställning pull up)
  • 4-stifts knapp (för återställning)
  • 470Ω Reistor (för kompositvideo)
  • 1kΩ motstånd (för kompositvideosynkronisering)
  • 3-stifts bygel (för videosignal)
  • Passiv summer

För tangentbordskontroll:

  • ATmega 328P (som de som används i Arduino Uno)
  • 16 MHz kristall
  • 2x 22pf keramisk kondensator
  • 12x 10KΩ motstånd (för återställning uppåt och knappar)
  • 51x 4-stifts knapp (för det faktiska tangentbordet)

För kraft:

  • L7805 spänningsregulator
  • 3 mm LED
  • 220Ω motstånd (för LED)
  • 2x 0,1µF elektrolytkondensator
  • 0,22 µF elektrolytkondensator (Du kan ersätta denna 0,22 och en 0,1 med en 0,33. Jag har också fått veta att värdena inte spelar någon roll, men jag är inte bra med kondensatorer)
  • 2x 2-polig bygel (för strömförsörjning och för huvudströmbrytare)

GPIO (Kanske lägga till ett par skäl till):

  • 7-polig bygel
  • 2x 8-polig bygel
  • 2-polig bygel (för 5V och GND)
  • 3-4-stifts bygel (för seriell kommunikation)

Icke-PCB:

  • 4 "LCD-skärm med kompositvideo (min hade en ingångsspänning mellan 7-30V)
  • 3D -tryckt hållare för display
  • Någon slags omkopplare

Steg 2: Kretsen

Kretsen
Kretsen

Kretsen är inte särskilt vacker och mycket av IC-huvudregionen är inspirerad av dan14. Med detta sagt är det en ganska rak Arduino på en Breadboard-krets. Tangentbordet är ett enkelt rutnät och styrs av ATmega328. De två AVR -chipsen kommunicerar via UART Serial -stiften.

Både en bild och mina Eagle-filer bifogas och kommer förhoppningsvis att räcka för att återskapa kretsen. Om inte, meddela mig gärna så uppdaterar jag instruktionsboken.

Steg 3: Kretskortet

Kretskortet
Kretskortet
Kretskortet
Kretskortet

Kretskortet är tvåskiktat och skapat med hjälp av Auto Route (Åh, vilket helvete!). Den har knappar och strömindikator -LED på framsidan och resten på baksidan. Jag fick mitt PCB tillverkat med JCL PCB, och de gjorde ett fantastiskt jobb med det. Filerna som behövs för att återskapa kretskortet bör finnas i Eagle-filerna från tidigare.

Jag föreslår att du gör om kretskortet, eftersom jag har några saker som jag skulle vilja ha gjort annorlunda. Om du gillar min design har jag fortfarande (i skrivande stund) fyra oanvända brädor som jag mer än gärna vill sälja.

Brädet har fyra borrhål som jag har använt för att montera LCD -skärmen.

Steg 4: Ladda upp koden

Ladda upp koden
Ladda upp koden
Ladda upp koden
Ladda upp koden
Ladda upp koden
Ladda upp koden

Både 1284 och 328 behöver naturligtvis kod och koden jag använde finns här: https://github.com/PlainOldAnders/HAL1284 under ArduinoSrc/src. Jag använde helt enkelt Arduino IDE för att ändra och ladda upp koden men innan det kan göras måste du bränna startladdare på IC: erna:

ATMega328:

Den här är lätt, i den bemärkelsen att det finns mycket stöd där ute om hur man bränner en bootloader och laddar upp kod till denna IC. Jag brukar följa den här guiden, mest för att jag hela tiden glömmer detaljerna.

Koden för 328 (under ArduinoSrc/knappsats) är ganska enkel. Det är helt beroende av Adafruit_Keypad-master-biblioteket. Om något ändras om lib har jag inkluderat den version som jag använde på min github-sida under ArduinoSrc/lib.

ATmega1284:

Detta var lite svårt för mig när jag först fick IC. Jag började med att hämta startladdaren härifrån och följde installationsguiden. För att bränna startladdaren gjorde jag helt enkelt samma sak som med 328 och fick hjälp härifrån. För båda IC: erna använde jag bara en Arduino Uno för både bränning av bootloader och uppladdning av koden (tog bort IC från Arduino Uno vid uppladdning).

Koden (under ArduinoSrc/HAL1284Basic) är alldeles för komplicerad för mig men jag kunde ändra några delar av koden:

Jag lade till ett par kommandon (de markerade med [A] i manualen.pdf), och jag ändrade också andra kommandon:

Ton: Tonkommandot använde precis Arduinos tonfunktion tidigare, men när du använde TVout-biblioteket orsakade detta att summern inte fungerade korrekt. Jag ändrade den för att använda TVouts tonfunktion, men det betyder att tonstiftet måste vara stift 15 (för atmega1284)

Seriell kommunikation: Eftersom tangentbordet är DIY, använder det seriell kommunikation för att läsa karaktärerna. Eftersom atmega1284 används här finns det två tillgängliga seriella kommunikationslinjer, och när "sercom" är aktiverat tillåter koden också skrivning via serieporten (från en dator eller vad som helst).

Upplösning: Bildskärmen som används för detta projekt är ganska dum, och en liten upplösning behövs, annars flimrar bilden. Om en bättre bildskärm används föreslår jag att du ändrar upplösningen i installationsfunktionen.

Steg 5: Montering

hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning

Med koden uppladdad och kretskortet och delar redo är det nu dags för montering. Alla delar jag använde var genomgående hål, så lödningen var inte så svår (i motsats till badass-SMD-lödningsgubbarna där ute). Monitorn fästes på de fyra borrhålen i kretskortet med en 3D -tryckt hållare. Om en annan bildskärm används kan de fyra borrhålen förhoppningsvis användas för att montera detta.

Bildskärmshållaren som används här är också utformad för att inrymma en vippströmbrytare (ansluten till "switch" -bygeln på kretskortet) och de tre kontrollknapparna för monitorn. Hållaren fästs med plast M3 -bultar och distanser.

För strömkontakten använde jag en JST PCB -kontakt, även om en smal fatuttag hade varit lite smidigare. För att driva kortet växlade jag mellan en 12V strömförsörjning eller tre 18650 batterier i serie. En mjukare cowboy än jag själv skulle nog kunna utforma en smidig batterihållare för brädet.

Steg 6: Buggar och framtida arbete

Piltangenter: Piltangenterna placerades av misstag och tjänar inte mycket funktion. Detta gör det svårt att navigera

File I/O: Det finns File I/O -funktioner men dessa implementeras inte. För att bekämpa detta kan programvaran HAL1284Com ladda upp filer till kortet. Det är också möjligt att ladda upp till EEPROM.

PEEK/POKE: PEEK och POKE är otestade, och jag är inte säker på vad adresserna är.

Break: Break (Esc) har ibland bråkat med hela koden i oändliga loopar.

Pin 7: PWM pin 7 kan vara svårt när du försöker att DWRITE High eller AWRITE 255. Det fungerar bra med AWRITE 254.

Idiot: Det skulle vara idealiskt att också kunna ladda upp via UART1 men uppladdning är endast möjlig via UART0, så uppladdning måste göras genom att extrahera huvud -IC. Skärm- och spänningsregulatorn 5 blir lite för varm när den körs länge.

Rekommenderad: