Innehållsförteckning:
- Steg 1: Hämtning av kretskortet
- Steg 2: Skaffa komponenterna
- Steg 3: Översikt över lödningsverktyget
- Steg 4: Lödning #1: Lägga till motstånd och kondensatorer
- Steg 5: Lödning #2: Montering av tangentbordet
- Steg 6: Lödning #3: Displayen med sju segment, switch och stifthuvud
- Steg 7: Lödning #4: Lödning av mikrokontrollern
- Steg 8: Lödning #5: Lägg till batterihållarna (sista steget)
- Steg 9: Blinkar emulatorn
- Steg 10: Avslutad
- Steg 11: PCB -designanalys
- Steg 12: Hur programmerar man SUBLEQ?
- Steg 13: Outlook
Video: KIM Uno - en 5 € mikroprocessor Dev Kit -emulator: 13 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
KIM Uno är ett bärbart, mjukvarudefinierat dev -kit för (retro) mikroprocessorer. Men låt mig presentera tanken på det genom att gå tillbaka i tiden:
I slutet av 2018 kom jag på att jag ville bygga ett litet portabelt mikroprocessor dev-kit, precis som den berömda KIM-1 från MOS Technology, Inc. och designad av Chuck Peddle som också var med och skapade 6502 CPU.
Men att bygga ett "bara-ben" dev-kit med diskreta logikkomponenter var inget alternativ eftersom det behövde en stor strömförsörjning (eftersom de gamla enheterna tenderar att ta lite allvarlig ström) och utvecklingen skulle också vara mycket tidskrävande. Och jag vill ha det nu!
Därför designade jag KIM Uno som en bärbar enhet, som passar i ena handen och drivs av två CR2032 -batterier. Den använder ATMega328p ("Arduino") mikrokontroller som körs på 8 MHz för att efterlikna (eller simulera) en önskad CPU. Denna arkitektur ser också till att de emulerade processorerna är utbytbara mot allt som passar inuti mikrokontrollerns flashminne. Så det är en mångsidig enhet.
Av en slump såg jag senare ett riktigt bra föredrag - kallat The Ultimate Apollo Guidance Computer Talk (34C3) - på YouTube där "One Instruction Set Computers" eller OISC nämns. Jag visste inte om dem och tyckte att detta var den perfekta kandidaten för att genomföra det.
KIM Uno emulerar en CPU med bara en instruktion: subleq - subtrahera och förgrena sig om det är mindre än eller lika med noll.
Om du följer med mig genom denna instruerbara kan du bygga din egen KIM Uno på nolltid. Och den bästa delen - förutom att du kan ändra den efter din smak - är att den bara kostar 4, 75 € att göra (i slutet av 2018).
En ledtråd: det finns ett Git -arkiv som innehåller alla filer som tillhandahålls av de olika stegen i denna instruerbara. Om du vill ändra några resurser och dela dem med oss kan du göra en PR. Men du kan också ladda ner alla filer samtidigt. Helt enkelt till https://github.com/maxstrauch/kim-uno. Tack!
Det finns ett annat ganska intressant projekt, kallat samma (KIM Uno), som gör en riktig kopia av 6502 KIM Uno. Kolla in det här. Skaparen säljer till och med satsen. Så om du är intresserad av 6502 och gillar det här projektet bör du ta en titt där!
Steg 1: Hämtning av kretskortet
Som ni ser använde jag tillfället att designa ett kretskort och låta det göras professionellt. Eftersom det tillverkas externt och skickas till dig kommer det att ta mycket tid (beroende på var du är i världen;-)), att få det beställt är det första steget. Vi kan sedan fortsätta med de andra stegen medan kretskortet tillverkas och levereras till dig.
Jag beställde mina PCB i Kina på PCBWay för bara $ 5. Jag får ingen nytta av att presentera PCBWay som min goto -tillverkare för PCB, det är bara att det fungerade bra för mig och kan också fungera bra för dig. Men du kan beställa dem på någon annan plats som JLCPCB, OSH Park eller något lokalt PCB -företag.
Men om du är villig att beställa dem på PCBWay kan du ladda ner den bifogade ZIP-filen "kim-uno-rev1_2018-12-12_gerbers.zip" och ladda upp den direkt till PCBWay utan någon ändring. Det här är den ursprungliga filen jag använde för att beställa kretskort som du kan se på bilderna.
Om du beställer dem från en annan tillverkare kan du behöva exportera dem från de ursprungliga KiCad-källorna, eftersom jag genererade dem med specifikationerna från PCBWay som du hittar här. För de ursprungliga KiCad-källorna, ladda ner "kim-uno-kicad-sources.zip" och extrahera den.
Men det finns även ett andra sätt: om du inte vill beställa kretskortet kan du bygga din egen version med perfboard eller till och med ett brödbräda.
Hur som helst: eftersom kretskortet nu är på väg kan vi fokusera på de andra delarna! Kom följ mig.
Steg 2: Skaffa komponenterna
Nu måste du skaffa komponenterna. För detta hittar du en översiktsbild av alla komponenter och mängder du behöver, bifogad detta steg samt en sammanträde (materiallista).
Stämpeln innehåller länkar till eBay. Även om dessa erbjudanden kan stängas när du läser detta, kan du använda det som utgångspunkt. De använda komponenterna är ganska standard.
I det följande ska jag förklara för dig alla nödvändiga komponenter:
- 7x 1 kΩ motstånd för de sju segmentdisplayerna. Du kan minska värdet (t.ex. till 470 Ω) för att få dem att lysa ljusare, men minska det inte för mycket annars dör lysdioderna eller batteriet töms mycket snabbt. Jag fann att detta värde fungerar för mig
- 1x 10 kΩ som uppdragningsmotstånd för mikrokontrollerns RESET-linje
- 1x 100nF kondensator för att jämna ut eventuella spänningspikar (vilket inte borde hända eftersom vi använder batterier, rätt, men för gott mått …)
- 1x ATMega328P i DIP-28-paketet (vanligtvis benämnt ATMega328P-PU)
- 1x huvudkortet - se föregående steg; antingen beställd eller byggd av dig själv
- 2x CR2032 batterihållare
- 1x SPDT -omkopplare (enpolig, dubbelkastning) som i princip har tre kontakter och i vart och ett av dess två tillstånd (antingen på eller av) ansluter den två kontakter
- 20x taktila tryckknappar för tangentbordet. För att använda baksidan av kretskortet använde jag SMD -taktila tryckknappar (de vanliga 6x6x6 mm) - de är ganska lätta att lödda som du kommer att se
- VALFRITT: 1x 1x6 -stifts rubrik för anslutning av programmeraren, men detta är valfritt som du kommer att se senare
- 1x sjusegmentdisplay med 4 siffror och 1x sjusegmentsdisplay med 2 siffror - kortet tar endast 0,36 tum (9, 14 mm) element med vanliga anodkablar. Båda kraven är viktiga för att få en fungerande enhet. Men också denna typ av sju segmentskärmar är mycket vanliga
Bifogat till detta steg kan du hitta filen "component-datasheets.zip" som innehåller mer exakt information om dimensioner och typer av de använda komponenterna. Men de flesta komponenterna är mycket standard och kan enkelt köpas för lite pengar.
Nu måste du vänta tills du har alla komponenter redo att fortsätta lödningen. Under denna tid kan du redan hoppa till slutet och läsa lite om hur du använder KIM Uno om du vill.
Steg 3: Översikt över lödningsverktyget
För lödning och byggning av KIM Uno behöver du verktygen som visas på bilderna:
- Trådskärare (för att klippa änden av komponenttrådarna)
- Platt tång
- Ett pincett
- (anständigt) Löd som inte är för tjockt - jag använder 0,56 mm löd
- Ett lödkolv - du behöver inte ett avancerat lödkolv (för vi gör inte heller raketvetenskap här) - jag använder Ersa FineTip 260 länge nu och det är riktigt bra
- En flödespenna: genom att lägga till flussmedel till komponenterna och dynorna gör det mycket enklare att lödda dem eftersom lödet sedan "flyter" av sig själv till rätt plats*
- Alternativt: en svamp (av metallull) för ditt lödkolv
För att senare programmera KIM Uno behöver du också:
- en dator med AVR-GCC-verktygskedjan och avrdude för att ladda upp firmware
- en ISP (programmerare) - som du kan se på bilden använder jag min Arduino Uno som en ISP med en speciell skiss - så du behöver inte köpa någon snygg hårdvara
* lite vägledning av människor behövs;-)
Är du redo? I nästa steg ska vi börja montera KIM Uno.
Steg 4: Lödning #1: Lägga till motstånd och kondensatorer
Du bör alltid arbeta från de minsta (i fråga om komponenthöjd) komponenter först, till de högsta komponenterna sist. Därför börjar vi med att lägga till motstånden och böja över benen på baksidan så att motstånden är lätta att löda och hålla sig på plats. Klipp sedan av de långa trådarna.
Lägg inte heller till den lilla 100 nF -kondensatorn på samma sätt, som inte visas på bilderna.
Ett tips: förvara de trådbenen i en liten behållare, de kommer ibland till nytta.
Steg 5: Lödning #2: Montering av tangentbordet
Nästa steg är att löda de 20 SMD -taktila omkopplarna. Eftersom det här arbetet är lite jobbigt gör vi det nu, när kretskortet ligger platt på arbetsbänken.
Vi kommer att arbeta uppifrån och ner (eller från vänster till höger om kretskortet är orienterat som visas på bilderna) och börja med första raden: välj en av de fyra kuddarna för varje omkopplare och blöt den med flödespenna.
Använd sedan en pincett för att ta en strömbrytare och placera den försiktigt på de fyra dynorna. Löd sedan bara benet på omkopplaren som är på dynan du valde och förberedde med fluss. För detta bör du "ta" lite löd med ditt strykjärn innan du börjar. Använd den här metoden för att slutföra hela raden av switchar och lödda bara ett ben.
Bilden med pilarna visar en förstoring hur lödningen utfördes exakt.
När du har lödt hela raden (endast en stift) kan du göra små justeringar genom att värma upp tappen igen och placera omkopplaren igen. Se till att omkopplarna är inriktade så bra som möjligt.
Om du är nöjd med inriktningen kan du blöta alla andra stift med flödespenna och sedan lödda dem genom att röra den med lödkolven och lägga till lite lödning genom att vidröra den också. Du ser att lodet sugs direkt på dynan.
Efter att ha lödt en rad kommer du att märka att du får kläm på det och det är inte så svårt men repetitivt. Så gör bara resten så kommer du att få ett färdigt tangentbord på nolltid.
Steg 6: Lödning #3: Displayen med sju segment, switch och stifthuvud
Nu kan du lägga till omkopplaren och stifthuvudet (tillval) genom att hålla det med fingret och lödda ett stift för att hålla det på kretskortet, så att du kan löda de andra stiften och slutligen röra upp den första hållstiftet.
Var försiktig så att du inte bränner dig med det heta lödkolven. Om du inte känner dig bekväm med detta kan du använda lite tejp (t.ex. målartejp) för att hålla komponenten. På så sätt har du båda händerna fria att röra dig.
De sju segmentdisplayerna är lödda på samma sätt (se bild): du sätter i den, håller den med handen eller tejpen och lödar två motsatta stift för att hålla den på plats medan du kan lödda de andra stiften.
Men var försiktig och placera den sju segmentiga displayen i rätt riktning (med decimalpunkten vänd mot tangentbordet). Annars har du problem …
Steg 7: Lödning #4: Lödning av mikrokontrollern
Nu när du har mycket övning kan du fortsätta och sätta i mikrokontrollen med skåran på toppen (eller första stiftet) vänd mot strömbrytaren. Med platt tång kan du försiktigt böja benen på mikrokontrollen en liten bit in så att de matchar hålen på kretskortet.
Eftersom det sitter tätt behöver du lite kontrollerad kraft för att sätta in mikrokontrollern. Fördelen är att den inte faller ut. Det betyder att du kan ta dig tid och lödda den bakifrån.
Steg 8: Lödning #5: Lägg till batterihållarna (sista steget)
Slutligen måste du lägga till batterihållarna på baksidan. För detta använder du helt enkelt flusspennan och blöter alla fyra dynorna och får sedan lite löd på ditt strykjärn. Rikta in batterihållaren försiktigt på båda dynorna. I båda ändarna av kontakterna bör samma mängd PCB -dynan vara synlig. Rör kretskortet och benet på batterihållaren med ditt strykjärn. Lödet kommer att flyta under dynan och över den och säkra den på plats enligt bilden. Om du har problem med detta kan du lägga till mer flussmedel med pennan.
Steg 9: Blinkar emulatorn
I det bifogade zip-arkivet "kim-uno-firmware.zip" hittar du källkoden för emulatorn tillsammans med en redan sammanställd "main.hex" som du direkt kan ladda upp till mikrokontrollern.
Innan du faktiskt kan använda den måste du ställa in mikrokontrollerns säkringsbitar så att den använder den interna 8 MHz -klockan utan att dela den i hälften. Du kan få jobbet gjort med följande kommando:
avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U lfuse: w: 0xe2: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m
Om du inte känner till avrdude: det är ett program för att ladda upp program till en mikrokontroller. Du kan lära dig mer om det här. I grund och botten installerar du det och sedan är det klart att använda. För din installation kan du behöva ändra argumentet "-P" till en annan seriell port. Kontrollera på din dator vilken serieport som används (t.ex. inuti Arduino IDE).
Efter detta kan du blinka firmware på mikrokontrollen med det här kommandot:
avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U blixt: w: main.hex
Återigen: samma sak gäller "-P" som ovan.
Eftersom jag inte äger en "professionell" ISP (In-System Programmer) använder jag alltid min Arduino UNO (se bild) och skissen jag bifogade ("arduino-isp.ino", från Randall Bohn). Jag vet att det finns en nyare version, men med den här versionen hade jag noll problem med de senaste fem åren, så jag behåller den. Det fungerar bara. Med hjälp av kommentaren i rubriken på skissen får du pinout på Arduino UNO och med hjälp av schemat för KIM Uno (se bifogad) kan du få pinout av 1x6 ISP -rubriken på KIM Uno. Kvadratstiftet, nära sjusegmentdisplayen är stift 1 (GND). Följande stift är (i rätt ordning): RESET, MOSI, MISO, SCK, VCC. Du kan ansluta VCC antingen till 3V3 eller till 5V.
Om du inte har lagt till 1x6 -stiftshuvudet kan du använda brödbrätsledningar och sätta dem i anslutningshålen och vinkla dem med fingret - precis som på bilden. Detta gör tillräckligt med kontakt för att blinka firmware och ställa in säkringar. Men om du gillar en mer permanent installation bör du definitivt lägga till 1x6 -stiftshuvuden.
Jag har två enheter: en produktionsversion utan stifthuvuden och en utvecklingsversion med stifthuvuden som jag lämnar ansluten och använder den om och om igen under utvecklingen. Detta är mycket bekvämare.
Steg 10: Avslutad
Nu är du klar och kan börja skriva dina egna subleq -program på papper, sätta ihop det och sedan mata in det i minnet.
KIM Uno levereras med en förprogrammerad Fibonacci-beräkning som börjar vid minnesplats 0x0a. Den är som standard inställd på n = 6 så bör resultera i ett värde på 8. Tryck på "Go" för att starta beräkningen.
Steg 11: PCB -designanalys
Efter att ha slutfört detta projekt hittade jag ett par punkter som är anmärkningsvärda och som bör tas upp i en ny översyn av styrelsen:
- ATMega328ps silkeskärm har inte det vanliga hacket där den första tappen sitter. DIP-28-fotavtrycket har inte ens en fyrkantig platta där den första tappen sitter. Detta bör definitivt förbättras med en mer detaljerad silkscreen för att förhindra förvirring
- ISP -rubriken har inga anslutningsetiketter på siden. Detta gör det svårt att känna igen hur man ansluter den till Internetleverantören
- ISP -rubriken kan ändras till en 2x6 -pin -header med en standard pin -layout för att förhindra förvirring
Bortsett från dessa punkter är jag ganska glad över hur det blev och fungerade på första försöket.
Steg 12: Hur programmerar man SUBLEQ?
Som nämnts i början emulerar den nuvarande firmware för KIM Uno en One Instruction Set Computer (OISC) och ger subleq -instruktion för att utföra beräkning.
Subleq -instruktionen står för subtraktion och gren om den är mindre än eller lika med noll. I pseudokoden ser det ut så här:
subleq A B C mem [B] = mem [B] - mem [A]; om (mem [B] <= 0) gå till C;
Eftersom KIM Uno emulerar en 8-bitars maskin är alla argument A, B och C 8 bitars värden och därför kan den adressera ett totalt huvudminne på 256 byte. Uppenbarligen kan detta utökas genom att göra A, B och C multi-byte-värden. Men låt oss nu hålla det enkelt.
KIM Uno har också "kringutrustning": skärmen och tangentbordet. Den använder en minneskartad arkitektur för att ansluta dessa kringutrustning, även om minneskartan är mycket enkel:
- 0x00 = Z -registret (noll) och bör hållas noll.
- 0x01 - 0x06 = sex byte som representerar värdet för alla visningssegment (från höger till vänster). Ett värde 0xf - se källkoden (main.c) för mer information.
- 0x07, 0x08, 0x09 = tre byte där varje byte representerar två sju segmentdisplayer (från höger till vänster). Dessa minnesplatser tillåter helt enkelt att visa ett resultat utan att dela upp resultatet i två nibbles för att placera det i enkelsiffriga minnesplatser 0x01 - 0x06.
- 0x0a+ = Ett program börjar vid 0x0a. För närvarande körs "Go" -nyckeln från 0x0a fast.
Med denna information kan man nu skriva ett program i assembler och skriva in instruktionerna i minnet och sedan köra det. Eftersom det bara finns en instruktion anges endast argumenten (A, B och C). Så efter tre minnesplatser börjar nästa instruktionsargument och så vidare.
Bifogat till detta steg kan du hitta filen "Fibonacci.s" och även en bild av det handskrivna programmet som är ett exempel på implementering av Fibonacci. Men vänta: det finns tre instruktioner som används - specifikt ADD, MOV och HLT - som inte är subleq. "Vad är affären? Sa du inte att det bara finns en instruktion, subleq?" frågar du? Det är väldigt enkelt: med subleq kan man efterlikna dessa instruktioner väldigt enkelt:
MOV a, b - kopiera data på plats a till b kan bestå av:
- subleq b, b, 2 (nästa instruktion)
- subleq a, Z, 3 (nästa instruktion)
- subleq Z, b, 4 (nästa instruktion)
- subleq Z, Z, t.ex. 5 (nästa instruktion)
Med subtraktionsfunktionen i subleq, som gör mem - mem [a] och skriver över mem med resultatet, kopieras värdet med hjälp av nollregistret. Och "subleq Z, Z, …" återställer helt enkelt nollregistret till 0, oavsett värdet på Z.
ADD a, b - adderar värdena a + b och lagrar summan i b kan bestå av:
- subleq a, Z, 2 (nästa instruktion)
- subleq Z, b, 3 (nästa instruktion)
- subleq Z, Z, t.ex. 4 (nästa instruktion)
Denna instruktion beräknar helt enkelt mem - (- mem [a]) som är mem + mem [a] genom att också använda subtraktionsfunktionen.
HLT - stoppar CPU: n och avslutar körningen:
Per definition vet emulatorn att CPU: n vill avsluta om den hoppar till 0xff (eller -1 om den är singad). Så enkelt
subleq Z, Z, -1
gör jobbet och indikerar för emulatorn att den ska avsluta emuleringen.
Med hjälp av dessa tre enkla instruktioner kan Fibonacci -algoritmen implementeras och fungerar bra. Detta beror på att OISC kan beräkna allt som en "riktig" dator kan beräkna med endast instruktionens subleq. Men naturligtvis finns det många avvägningar att göra - som kodlängd och hastighet. Men ändå är det ett bra sätt att lära sig och experimentera med programvara och datorer på låg nivå.
Bifogat till detta steg kan du också hitta zip -arkivet "kim_uno_tools.zip". Den innehåller en grundläggande assembler och simulator för KIM Uno. De är skrivna i NodeJS - se till att du har installerat det.
Montering av program
Om du tittar på "Fibonacci/Fibonacci.s" hittar du att det är källkoden för den diskuterade Fibonacci -implementeringen. För att montera det och skapa ett program av det som KIM Uno kan köra, anger du följande kommando (i roten till det extraherade "kim_uno_tools.zip" -arkivet):
nod assemble.js Fibonacci/Fibonacci.s
och det kommer antingen att skriva ut ett fel om du gjorde ett misstag eller spillde ut det resulterande programmet. För att spara det kan du kopiera utdata och spara det till en fil eller helt enkelt köra det här kommandot:
nod assemble.js Fibonacci/Fibonacci.s> yourfile.h
Utdata formateras på ett sätt så att den kan inkluderas direkt i KIM Uno -firmware som en C -huvudfil, men simulatorn kan också använda den för att simulera. Ange bara:
nod sim.js din fil.h
Och du kommer att presenteras med simuleringsresultatet och utgången som förväntas från KIM Uno på displayen.
Detta var en mycket kort introduktion till dessa verktyg; Jag rekommenderar dig att leka med dem och se hur de fungerar. På så sätt får du en djup kunskap och lär dig de fungerande principerna bakom processorer, instruktioner, monterare och emulatorer;-)
Steg 13: Outlook
Grattis
Om du läser detta har du förmodligen gått igenom hela denna instruerbara och byggt din egen KIM Uno. Det här är riktigt trevligt.
Men resan slutar inte här - det finns ett oändligt antal alternativ hur du kan ändra KIM Uno och anpassa den efter dina behov och önskemål.
Till exempel kan KIM Uno vara utrustad med en "riktig" retro -CPU -emulator som kan emulera den berömda MOS 6502 eller Intel 8085, 8086 eller 8088. Då skulle det gå vägen till min första vision, innan jag lärde mig om OISC.
Men det finns möjliga andra användningsområden, eftersom hårdvarudesignen är ganska generisk. KIM Uno kan användas som …
- … en fjärrkontroll t.ex. för CNC -maskiner eller andra enheter. Kanske trådbunden eller utrustad med en IR -diod eller någon annan trådlös sändare
- … en (hexadecimal) fickräknare. Firmware kan enkelt anpassas och bräddesignen behöver inte ändras särskilt mycket. Kanske kan duken anpassas med matematiska operationer och gapet mellan segmenten kan tas bort. Bortsett från detta är det redan redo för denna omvandling
Jag hoppas att du hade lika roligt att följa och förhoppningsvis bygga KIM Uno som jag hade designat och planerat den. Och om du förlänger eller ändrar det - låt mig veta. Skål!
Tvåa i PCB -tävlingen
Rekommenderad:
Ta och skicka bilder med ESP32-Cam med ESP8266 WeMos D1 R1 Wifi-processor med Uno: 7 steg
Ta och skicka bilder med ESP32-Cam med ESP8266 WeMos D1 R1 Wifi-processor med Uno: Ta bild med ESP32-Cam (OV2640) med ESP8266 WeMos D1 R1 WiFI-processor med Uno och skicka den till e-post, spara till Google Drive och skicka den till Whatsapp med Twilio.Krav: ESP8266 WeMos D1 R1 WiFI -processor med Uno (https: // protosupplies
Dev Board Breadboard: 12 steg (med bilder)
Dev Board Breadboard: Denna instruktion visar hur du skapar en skräddarsydd brödbräda för dev board
Kör en stegmotor med en AVR -mikroprocessor: 8 steg
Kör en stegmotor med en AVR -mikroprocessor: Har du några borttagna stegmotorer från skrivare/hårddiskar/etc som ligger? Några undersökningar med en ohmeter, följt av en enkel drivrutinkod på din mikroprocessor och du kommer att kliva med stil
RGB LED Color Sequencer - Utan mikroprocessor: 3 steg
RGB LED Color Sequencer - Utan en mikroprocessor: 'Visa färgkombinationerna för färg -LED utan att använda en mikroprocessor. Med ett enda logikchip som kostar under 50 cent kan du skapa en enkel färgcykeldisplay för RGB -LED. De flera kranarna längst upp används för att "programmera" dis
En bärbar ljud-till-ljus-display, utan mikroprocessor-Musicator Junior: 5 steg (med bilder)
En bärbar ljud-till-ljus-skärm, utan mikroprocessor-Musicator Junior. Mindre än 9-voltsbatteriet som driver det, visar Musicator Jr. ljudet som det '' hör '' (genom Electret-mikrofonen) som fluktuerande ljusstänger . Liten nog för att passa i din skjortficka, den kan också placeras på en plan yta