Posted on Leave a comment

Crystal Quartz frequencies

This is an overview of all the Crystal Quartz Resonator frequencies I have available with a short description of use.

Crystal Quartz Resonator 32.768 kHz (small)Used in RTC circuits, the frequency 32768 Hz (32.768 KHz) is commonly used, because it is a power of 2 (215) value. And, you can get a precise 1 second period (1 Hz frequency) by using a 15 stage binary counter.
Crystal Quartz Resonator 1.8432 Mhz (high) UART clock allows integer division to common baud rates up to 115,200(×16×1) or 230,400(×8×1). Since older UARTs used this frequency to derive common baud rates up to 115,200, then multiples of this frequency are able to do the same, such as 3.6864 / 5.5296 / 7.3728 / 9.216 / 11.0592 / 12.9024 / 14.7456 / 16.5888 / 18.432 / 20.2752 / 22.1184 / 23.9616 / 25.8048 / 27.648 / 29.4912 / 31.3344 / 33.1776 / 35.0208 / 36.864 / …, and is why these MHz frequencies are commonly used.
Crystal Quartz Resonator 2.4576 Mhz (high)UART clock allows integer division to common baud rates up to 38,400(×16×4) or 76,800(×16×2).
Crystal Quartz Resonator 3 MHz (high) –
Crystal Quartz Resonator 3.2768 MHz (high) Allows binary division to 100 Hz (32,768×100 Hz, or 215×100 Hz) and to 50 Hz, used in e.g. wattmeters and DC-AC converters.
Crystal Quartz Resonator 3.579545 Mhz (High)NTSC M color subcarrier; see colorburst. More specifically, 5 * 7 * 9 / 88 = 3.57954 MHz. Because these are very common and inexpensive they are used in many other applications, for example DTMF generators. Also used in some Retro Pinball machines.
Crystal Quartz Resonator 3.58 Mhz (low) –
Crystal Quartz Resonator 3.6864 Mhz (High)
Crystal Quartz Resonator 3.6864 Mhz (Low)
UART clock allows integer division to common baud rates up to 230,400(×16×1) or 460,800(×8×1). Also used in W-CDMA systems.
Crystal Quartz Resonator 4 Mhz (high)
Crystal Quartz Resonator 4 Mhz (low)
 –
Crystal Quartz Resonator 4.032 Mhz (low)UART clock allows integer division to common baud rates up to 7,200(×16×35) or 14,400(×8×35), used for some 1200, 2400, and 4800 baud modems.
Crystal Quartz Resonator 4.096 Mhz (low)Allows binary division to 1 kHz (212×1 kHz). Used in ISDN systems.
Crystal Quartz Resonator 4.1920 Mhz (High)
Crystal Quartz Resonator 4.194304 Mhz (high)
Crystal Quartz Resonator 4.194304 Mhz (low)
 allows binary division to 1 Hz and 32.768 kHz. Real-time clock. For DDS generators with 1 Hz step. Used in the original Game Boy.
Crystal Quartz Resonator 4.433619 MHz (High) Used on original MK14   SC/MP board
Crystal Quartz Resonator 4.9152 Mhz (low) Used in CDMA systems; divided to 1.2288 MHz baseband frequency as specified by J-STD-008. UART clock allows integer division to common baud rates up to 38,400(×16×8) or 76,800(×8×4).
Crystal Quartz Resonator 5 Mhz (high)Common standard frequency.
Crystal Quartz Resonator 6 Mhz (low)Common in low-speed (1.5 Mbit/s) USB devices such as computer keyboards.
Crystal Quartz Resonator 7.15909 Mhz (Low)Used in old video cards & computers.
Crystal Quartz Resonator 7.3778 Mhz (low)
Crystal Quartz Resonator 8 Mhz (high)Common used in old computers.
Crystal Quartz Resonator Mhz (low) Allows binary division to 1 kHz (213×1 kHz). Used in ISDN systems. Used in OKI Speech Processor. Common audio clock, 256×32 kHz (see also 11.2896, 12.288, 16.384, 18.4323, 22.5792, 24.576 MHz). Typical TDM/PCM audio interface clock, 1/6 of 49.152 MHz
Crystal Quartz Resonator 9.8304 MHz (high)Used in CDMA systems (2×4.9152 MHz); divided to 1.2288 MHz baseband frequency. UART clock allows integer division to common baud rates up to 38,400(×16×16) or 76,800(×8×16).
Crystal Quartz Resonator 10 Mhz (high)
Crystal Quartz Resonator 10 Mhz (low)
Crystal Quartz Resonator 10.7386 Mhz (Low)Used in old video cards & computers.
Crystal Quartz Resonator 11.0592 Mhz (high)
Crystal Quartz Resonator 11.0592 Mhz (Low)
Common used in old computers and serial I/O chips.
Crystal Quartz Resonator 12 Mhz (high)
Crystal Quartz Resonator 12 Mhz (low)
 UART clock allows integer division to common baud rates up to 1,800(×16×450) or 7,200(×8×225)
Crystal Quartz Resonator 12.288 Mhz (low) Digital audio systems – DAT, MiniDisc, sound cards; 256×48 kHz (28×48 kHz). UART clock allows integer division to common baud rates up to 76,800(×16×20) or 256,000(×16×3)
Crystal Quartz Resonator 12.960 MHz (high)UART clock allows integer division to common baud rates up to 1,800(×16×450) or 7,200(×8×225)
Crystal Quartz Resonator 13.56 Mhz (high)
Crystal Quartz Resonator 13.56 Mhz (low)
 Common contactless smartcard frequency (ISO/IEC 14443). Also used as clock in some 433.92 MHz remote fob transmitters (multiplied by 32); 9.84375 MHz used for 315 MHz
Crystal Quartz Resonator 14.318 Mhz (low)NTSC M color subcarrier (4×3.579545 MHz). Common seed clock for modern PC motherboard clock generator chips, clock for ISA bus, also common on CGA and VGA cards and in some 8-bit computers. Exactly 315/22 MHz. 4f(sc) sampling for NTSC or 525/60 (raw image size 910×525, visible 768×475), SMPTE 244M standard.
Crystal Quartz Resonator 14.7456 Mhz (low)Common used in old computers as the frequency is ideal for generating video signals.
Crystal Quartz Resonator 16 Mhz (high)
Crystal Quartz Resonator 16 Mhz (low)
Crystal Quartz Resonator 16 Mhz (small)
Common used in old and new computers. Pixel clock for Hercules Graphics Card. Also used for ZigBee, Bluetooth and BLE, WiFi.
Crystal Quartz Resonator 16.3825 Mhz (low)UART clock allows integer division to common baud rates up to 115,200(×16×1) or 230,400(×8×1). Since older UARTs used this frequency to derive common baud rates up to 115,200, then multiples of this frequency are able to do the same, such as 3.6864 / 5.5296 / 7.3728 / 9.216 / 11.0592 / 12.9024 / 14.7456 / 16.5888 / 18.432 / 20.2752 / 22.1184 / 23.9616 / 25.8048 / 27.648 / 29.4912 / 31.3344 / 33.1776 / 35.0208 / 36.864 / …, and is why these MHz frequencies are commonly used.
Crystal Quartz Resonator 18.432 Mhz (low)UART clock allows integer division to common baud rates up to 230,400(×16×5) or 576,000(×16×2).
Audio clock allows integer division for 48 / 96 / 192 ksps. Integer division for 50 Hz and 60 Hz.
Crystal Quartz Resonator 20 Mhz (low)
Crystal Quartz Resonator 20 Mhz (low)
Crystal Quartz Resonator 21.32813 Mhz (high)
Crystal Quartz Resonator 22.1184 Mhz (Low)UART clock allows integer division to common baud rates up to 460,800(×16×3) or 921600(×8×3). Twice the 11.0592 MHz frequency.
Crystal Quartz Resonator 22.33 Mhz (high)
Crystal Quartz Resonator 24 Mhz (high)
Crystal Quartz Resonator 24 Mhz (Low)
Crystal Quartz Resonator 25 Mhz (low)
Crystal Quartz Resonator 30 Mhz (High)Common CPU clock.
Crystal Quartz Resonator 32 Mhz (low)Common CPU clock and common crystal for LoRa RF chips 
Crystal Quartz Resonator 36 Mhz (high)Video Graphics Array pixel clock (VESA modes VGA 640×480@85 with hsync 43.3 kHz, SVGA 800×600@56 with hsync 35.2 kHz.[28] Pixel clock for SDTV PAL/NTSC (FWVGA 960×480p@59.94, 960×576p@50).

Posted on Leave a comment

Intel support chips

Intel8080A

This is a list of Intel support chips for various Intel chipsets, with a link to products in this webshop and alternatives / second source chips, most of them are also available in this webshop. AMD, OKI and NEC made a lot of second source chips for Intel.

Microprocessor support and other ICs for 8088 family

Type nr.DescriptionAlternatives
8202A Dynamic RAM controller
D8203 Dynamic RAM controller
8208 Dynamic RAM controller
P8212 8-BIT Input/Output MPU MCU
P8237 DMA controller D8237AC-5 (NEC)
P82343 8 bit I/O expander
P8251 Universal Synchronous/Asynchronous Receiver/Transmitter (USART) 
P8254 Programmable interval timer
P8255 Parallel I/O interfaceP82C55A2 (Intel) M82C55A-2 (OKI) 82C55AC-2 (NEC) P8255A-5 (Intel) D82C55AC-2 (NEC) TMP82C55AP-2
P8256 Multifunction microprocessor support controller
P8259 Programmable interrupt controller
D8273 Programmable HLDC/SLDC protocol controller P8273 (Intel)
D8274 Multi-protocol serial controller P8274 (Intel)
8276H Small system CRT controller
D8282 Octal latch with 3-state outputs P8282 (Intel)
D8284 Clock generator
D8286 8-bit bus transeiver with 3-state outputs P8286 (Intel)
D8287 8-bit bus transeiver with 3-state outputs (invert) P8287 (Intel)
D8288 Bus controller

Posted on Leave a comment

Basiskennis Cmos ic’s

cmos

Ik hield niet zo van Cmos Ic’s toen ik jong was, vooral omdat ze (in die tijd) vaak snel stuk gingen door statische elektriciteit Ik gebruikte liever de meer robuuste TTL Ic’s en in de meeste computerschakelingen zag ik ook meestal TTL in plaats van Cmos, behalve bij de processoren. Op deze pagina vertel ik wat meer over Cmos ic’s.  Cmos ic’s bevatten digitale schakelingen en kunnen voor meer doeleinden gebruikt worden dan men op het eerste gezicht zou denken. Toen in de jaren zeventig voor het eerst Cmos schakelingen werden geïntroduceerd, waren zij veel duurder dan de andere logica-families, nu is dat niet meer zo en zijn zij bijna het goedkoopst van allemaal. Eenvoudige Cmos ic’s zijn zelfs vaak goedkoper dan normale transistoren.

Oudere TTL IC’s hebben een paar nadelen, ze hebben een relatief groot stroomverbruik, de voedingsspanning is nogal kritisch (5 v 10%) en de ingangsimpedantie is nogal laag, in de orde van een paar honderd ohm.  Cmos ic’s hebben geen van deze nadelen en ze verbruiken zeer weinig stroom en eenvoudige poortschakelingen verbruiken nagenoeg geen vermogen, wanneer zij in een statische toestand verkeren. De voedingsspanning is voor de meeste Cmos ic’s tussen de 3 Volt en de 15 Volt.  De ingangsimpedantie van een Cmos ic is erg groot en wel in de orde van 1.000.000 megohm. Voor de meeste toepassingen kan dit als oneindig hoog worden beschouwd. Cmos schakelingen zijn dus eerder spanning- dan stroom gestuurd.

Opbouw van de Cmos schakeling

 De meest eenvoudige Cmos schakeling is de inverter die uit slechts twee actieve onderdelen bestaat. De uitgang van deze schakeling kent ook slechts twee stabiele toestanden “hoog” en “laag” en de werking van de schakeling is gemakkelijk te begrijpen. De uitgang moet het tegenovergestelde niveau hebben als de ingang.

Deze inverter bevat een P-channel IGFET (insulated gate field effect transistor) en een N-channel IGFET. De ingang is of ‘hoog’ wanneer de potentiaal ervan in de nabijheid van de positieve voedingsspanning ligt, of “laag’ wanneer de potentiaal in de buurt van de negatieve voedingsspanning ligt. Deze toestanden worden ook wel logisch “1 respectievelijk logisch 0 genoemd. Een IGFET heeft een zeer grote draln-source weerstand, wanneer de spanning op de gate dezelfde is als die op de source. In deze schakeling kan slechts één van de twee IGFET’s in geleidende toestand zijn en keren ze het niveau van de ingang spanning dus om.

Men zou hierdoor de indruk kunnen krijgen  dat de schakeling helemaal geen stroom verbruikt, maar dit is niet het geval, transistoren zijn geen volmaakte schakelaars, ze hebben een weerstand van een paar honderd ohm wanneer ze in geleiding zijn en van duizenden megohm wanneer ze sperren. Er loopt dus ook door een statische inverter een zeer kleine stroom. Er ontstaat slechts een kleine stroomimpuls in de schakeling wanneer deze van toestand verandert. Hoewel Cmos IC’s aan de uitgang slechts een kleine stroom kunnen leveren, hebben zij toch een grote ‘fanout’ bij gebruik van andere Cmos IS’s  omdat de vereiste ingangsstroom te verwaarlozen is.

Beveiliging van cmos schakelingen

Wat de meeste lezers waarschijnlijk wel zullen weten worden IGFETs gemakkelijk beschadigd door de  hoge spanningen van statische lading. Zelfs iemand met een nylon shirt kan de oorzaak vormen van het beschadigen van een IGFET wat de indruk zou kunnen wekken dat Cmos IC’s erg teer en bijna niet bruikbaar zijn. De werkelijkheid is dat alle huidige Cmos IC’s intern zijn voorzien van beveiligingsdioden, die de spanning op ingangen tot een veilige waarde begrenzen.  Toch is het aan te bevelen een paar eenvoudige regels te volgen, wanneer men met Cmos ic’s omgaat. De ic’s worden meestal geleverd met de aansluitpennen gestoken in een stukje geleidend schuim en het best kan men het ic in dit schuim laten totdat men het werkelijk nodig heeft. Verwijder een IC nooit uit de voet wanneer de voedingsspanning nog is ingeschakeld en draag bij voorkeur een geaard armbandje wanneer u met Cmos Ic’s werkt.

Posted on 1 Comment

Computer geschiedenis 1939-2000

history

Op deze pagina staat een overzicht van de geschiedenis van computers en digitale techniek vanaf het begin van de vorige eeuw tot het jaar 2000. De geschiedenis van de computer begint met de geschiedenis van het rekenen, als heel vroeg hebben mensen hulpmiddelen ontwikkeld voor berekeningen die niet gemakkelijk uit het hoofd gemaakt konden worden. Het telraam (abacus) was hier een goed voorbeeld van. Toen de behoefte aan berekeningen steeds complexer werd ontwikkelde men tabellen met getallen als hulp bij het vermenigvuldigen. Ook de rekenliniaal was een uitvinding om meer complexe berekeningen met een beperkte nauwkeurigheid eenvoudiger te maken, deze verdween echter in de jaren 70 met de uitvinding van de zakrekenmachine.

Geschiedenis van de computer in grote lijnen

Charles Babbage, een wiskundige, was erg geïnteresseerd in de astronomie. Een grote kwelling voor een astronoom in die tijd was echter het feit dat in iedere rekentabel onvermijdelijk fouten zaten. Babbage vroeg zich af of de tabellen niet machinaal gegenereerd konden worden en hiervoor bedacht hij in 1822 de differentiemachine die tabellen van veeltermen kon uitschrijven. Hij begon aan de bouw van de machine, maar het bouwen ervan viel niet mee. De machine werkte mechanisch en de tandwieltechniek was nog niet geavanceerd genoeg om tot een goed resultaat te komen. Verder veranderde Babbage steeds het ontwerp van de machine. Een hedendaagse grap is dat dit het eerste automatiseringsproject was dat uit tijd en budget gelopen is, net als (bijna) alle projecten tegenwoordig.

Eind 19e eeuw construeerde Herman Hollerith telmachines die werkten op basis van invoer met ponskaarten maar pas in 1938 werd de eerste computer gebouwd door Konrad Zuse. Ook Zuses machine werkte nog mechanisch, maar Zuse had het zichzelf een stuk eenvoudiger gemaakt door van het binaire stelsel gebruik te maken. Door de Tweede Wereldoorlog kreeg de ontwikkeling van computers een snelle vlucht deze werden namelijk gebruikt om berichten te kraken die met de Duitse Lorenz-codeermachine vercijferd waren.

Deze computer was de Colossus en deze werd ontwikkeld door Tommy Flowers en was de eerste elektronische computer, gebruik makend van elektronenbuizen. De eerste computer in Amerika was de ENIAC (Electronic Numerical Integrator And Calculator), die enkele zalen in beslag nam, 18.000 elektronenbuizen, 70.000 weerstanden, 10.000 condensatoren, en 6000 verschillende schakelaars bevatte. De eerste computer in Nederland was de ARRA I bij het Mathematisch Centrum.

De computers werden al een stuk kleiner toen in 1947 de transistor werd uitgevonden, maar IBM beweerde dat er wereldwijd niet meer dan een stuk of 7 computers nodig zouden zijn wat achteraf de beste grap in de historie van de computer is. Het tijdschrift “Popular Mechanics” voorspelde zelfs dat er ooit een computer zou komen die ‘maar’ 1500 kilo zou wegen. Tegenwoordig zit er meer rekenkracht in een eenvoudige mobiele telefoon dan in de minicomputers van 1500 kilo uit deze jaren.

Met de enorme ontwikkeling van de elektronica en de halfgeleiders, toegepast in transistoren, kon de computer veel kleiner en sneller worden. Later werden de transistors geïntegreerd in een computerchip ook wel geïntegreerde schakeling (integrated circuit, IC) genoemd. De complexiteit van de chips werd in de jaren 70 verbeterd zodat het mogelijk werd om een complete processor (CPU) op een chip te integreren. Het werd daardoor veel goedkoper om computers te bouwen.

Home computers uit de periode 1975-1985 waren o.a. de Apple I, de Apple II, de TRS-80, de Commodore PET, de ZX-81, de Nascom, de Commodore VIC-20, de BBC Micro, de MSX 1 en opvolgers, de Commodore 64 en de Acorn-Atom. Op 12 augustus 1981 presenteerde IBM hun personal computer wat een heel nieuw tijdperk aankondigde. Tegen het einde van 1982 werd op werkdagen al een computer per seconde verkocht. De pc werd steeds goedkoper en gemakkelijker te gebruiken waardoor steeds meer bedrijven en huisgezinnen er een kochten. De ontwikkelingen gaan nog steeds door elk jaar verdubbeld de capaciteit en halveren de prijzen. Zakenmensen gebruiken veelal een laptop om met hun computer op stap te gaan. De steeds verdere miniaturisering leidde er toe dat de kleine Personal Digital Assistant (PDA) met steeds meer mogelijkheden in beeld kwam. Ook veel apparaten zoals wasmachines, videorecorders, digitale camera’s en dergelijke bevatten tegenwoordig een computer om allerlei zaken te regelen. Ondertussen ging ook de ontwikkeling van besturingssystemen, opslag media en netwerken gestaag door de laatste vijftig jaar en ook hiervan probeer ik hier een overzicht te geven.

Computer geschiedenis met een overzicht per jaar

1939Z1 computer z1 computer Konrad Zuse studeerde in Berlijn vanaf 1927 werktuigbouwkunde, en haalde zijn diploma in 1935. In 1938 voltooide Zuse de Z1, de eerste programmeerbare rekenmachine ter wereld, deze werkte nog geheel mechanisch, maar wel binair. Helaas heeft de Z1 nooit betrouwbaar gewerkt. wikipedia Z1
1939Z2 computer z2 computer Konrad Zuse voltooide in 1938 de Z1, de eerste programmeerbare rekenmachine ter wereld, deze werkte nog geheel mechanisch, maar wel binair. In 1939 volgde de Z2, een proefmodel dat bestond uit het mechanische geheugen van de Z1, een kaartlezer, en een uit tweehonderd relais opgebouwde processor. wikipedia Z2
1940CNC computer cnc computer In 1939 voltooide Bell Telephone Laboratories deze rekenmachine die ontworpen was door de wetenschapper George Stibitz. Maar al in november 1937 besloot Stibitz om te kijken of relais konden worden gebruikt om eenvoudige wiskundige functies uit te voeren en hij bouwde met geleende hardware uit het Bell-magazijn thuis een eenvoudig computersysteem Het systeem bestond uit de relais, een batterij, zaklampen en metalen strips die uit een tabaksblik waren gesneden. Stibitz’ collega’s gaven later de naam “K-Model” aan deze primitieve computer omdat deze op zijn keukentafel was gebouwd. In 1939 stemde de toenmalige leiding van Bell labs in voor de bouw van een groot experimenteel model en het eindproduct werd voor het eerst in gebruik genomen op 8 januari 1940. De machine, de Complex Number Calculator (CNC) genoemd, had de capaciteit om complexe getallen op te tellen, af te trekken, te vermenigvuldigen en te delen. George R. Stibitz Biography
1941Z3 computer z3 computer In december 1941 was de Z3 gereed, de eerste volledig elektromagnetische computer ter wereld, Konrad Zuse lag hiermee ruim drie jaar voor op de geallieerden. Van de Z3 zou later bewezen worden dat deze Turing-volledig was, wat dit apparaat zou kwalificeren voor het predicaat “eerste computer”. Overigens hadden de Z1 en de Z3 logisch gezien in grote lijnen hetzelfde ontwerp, de Z1 heeft echter door precisieproblemen nooit betrouwbaar gewerkt. wikipedia Z3
1942ABC computer Abc computer In 1943 werd de Atanasoff-Berry Computer (ABC) voltooid, na demonstratie van een proof-of-concept type in 1939 krijgt professor John Vincent Atanasoff geld om een echte machine te bouwen bij het Iowa State College. De ABC was het middelpunt van een octrooi rechtzaken met betrekking tot de uitvinding van de computer, dat in 1973 werd opgelost toen werd aangetoond dat mede-ontwerper van ENIAC John Mauchly de ABC gezien had vlak nadat deze operationeel was. Atanasoff werd uitgeroepen tot de bedenker van verschillende basiscomputerideeën, maar de computer als concept werd niet-octrooieerbaar verklaard. Een werkende replica op ware grootte van het ABC werd in 1997 voltooid en is momenteel te zien in het Computer History Museum. Geen bron
1943Colossus computer colossus computer De Colossus wordt gezien als de eerste elektronische computer en werd eind 1943 in productie genomen. Daarmee was de topgeheime computer twee jaar eerder in bedrijf dan de publiekelijk bekende ENIAC. Hij werd tijdens de Tweede Wereldoorlog door de Britten gebruikt om het Duitse berichtenverkeer te ontcijferen. De Colossus was opgebouwd uit twee grote rekken met ongeveer 1500 elektronenbuizen voor de tellers, schuifregisters en logische bewerkingen. Hij had een systeem om ponsbanden te lezen met de Baudotcode, zoals ook de telexmachines in die tijd gebruikten, maar dan met fotosensors in plaats van mechanische aftasting. Het leessysteem haalde een snelheid van 5000 karakters per seconde. De Colossus kon geprogrammeerd worden via een paneel met schakelaars, stekkers en kabels. De Colossus computers waren zeer succesvol en braken een enorm aantal topgeheime Duitse berichten. Na de oorlog werd Bletchley Park (waar de Colossus computers stonden) gesloten en werden acht Colossus computers vernietigd om veiligheidsredenen en de laatste twee computers verhuisden naar Cheltenham en werden ontmanteld in 1960. De Colossus computers en hun taak tijdens de oorlog waren topgeheim en bleven dat ook voor vele jaren na de oorlog en lange tijd was niemand op de hoogte van de Colossus. Hierdoor kreeg de Amerikaanse ENIAC de onverdiende roem van eerste programmeerbare digitale computer, dit is later hersteld. wikipedia Colossus computer
1944Harvard Mark I computer Harvard Mark I computer Deze computer was eigenlijk een IBM Automatic Sequence Controlled Calculator (ASCC) die door de staf van Harvard University Mark I genoemd, was. Het was een elektromechanische computer voor algemeen gebruik die werd gebruikt in de oorlogsinspanning tijdens het laatste deel van de Tweede Wereldoorlog. Een van de eerste programma’s op de Mark I werd op 29 maart 1944 geïnitieerd door John von Neumann. Von Neumann werkte op dat moment aan het Manhattan-project en moest bepalen of implosie een haalbare keuze was om de atoombom die een jaar later zou worden gebruikt tot ontploffing te brengen. De Mark I berekende en printte ook wiskundige tabellen, wat het oorspronkelijke doel was geweest van de Britse uitvinder Charles Babbage voor zijn “analytische machine”. De Mark I werd in 1959 gedemonteerd, maar delen ervan werden tentoongesteld in het Science Center als onderdeel van de Harvard Collection of Historical Scientific Instruments. Andere universiteiten hadden ook “Mark I”-computers, maar de Harvard Mark I wordt meestal bezien als dé Mark I. wikipedia Harvard Mark I computer
1945Z4 computer z4 computer De Z4 computer was net als de Z1, de Z2 en de Z3 ontworpen door de Duitse ingenieur Konrad Zuse en gebouwd door zijn bedrijf Zuse KG en werd in september 1950 verkocht aan ETH Zürich in Zwitserland. Het was de eerste computer ter wereld die echt werd verkocht en versloeg daarmee de Britse Ferranti Mark I en de UNIVAC I computer. De Z4 was de opvolger van de Z3 en net als de Z3 was het een elektromechanische machine. Geen wikipedia pagina
1946Eniac computer eniac computer In 1943 bundelden de Moore School of Electrical Engineering (Univ. van Pennsylvania) en het (militaire) Ballistic Research Lab hun krachten om een elektronisch computer te ontwerpen die het bestaande rekentuig verre zou overtreffen. Met een militair budget van $ 150.000 begon men de constructie van de ENIAC, het was een kolos van 30 keer 3 keer 1 meter, dat met 17.468 radio-buizen 140 kilowatt gebruikte en permanente koeling eiste. Getallen van 0 tot 9 werden vanuit een IMB-ponskaartlezer de ENIAC ingevoerd en in verschillende soorten geheugens opgeslagen, in elektromechnische telwielen, en in elektronische geheugens bestaande uit paren vacuümbuizen die flipflop-schakelingen vormden. De ENIAC was in staat om 5000 optellingen en 300 vermenigvuldigingen per seconde te verrichten. wikipedia ENIAC computer
1947Williams tube Williams tube De Williams tube won de race voor een praktisch directe toegankelijk geheugen. De heer Frederick Williams van de Universiteit van Manchester wijzigde een kathodestraalbuis door punten en streepjes van fosforescerende electrostatische lading op een scherm te schrijven en zodoende nullen en enen vast te leggen. Een plaat voor het scherm las de electrische lading en gaf dus een een of een nul terug. De lading werd maar een fractie van een seconde vastgehouden en moest dus wel “ververst”worden. Het geheugen had voor die tijd een grote capaciteit van 500 tot 1000 bits. wikipedia Williamsbuis
1948Eerste computerprogramma Eerste computerprogramma In 1948 werd het allereerste computerprogramma op een computer uitgevoerd, daarvoor werden de stappen nog handmatig ingevoerd. De onderzoekers Frederic Williams, Tom Kilburn en Geoff Toothill van de University of Manchester ontwikkelen de Small-Scale Experimental Machine (SSEM), beter bekend als de Manchester “Baby”. De Baby is gebouwd om een nieuwe geheugentechnologie te testen (de Williams Tube) wat het eerste snelle elektronische random access-geheugen voor computers was. Hun eerste programma, bestaande uit zeventien instructies en geschreven door Kilburn, liep op 21 juni 1948. Dit was het eerste computerprogramma in de geschiedenis dat op een digitale, elektronische computer met een opgeslagen programma’s draaide. Wikipedia EDSAC computer (Eng)
1949EDSAC computera EDSAC computer In 1949 werd de EDSAC computer gebouwd aan de universiteit van Cambridge met behulp van vacuümbuizen en kwikvertragingslijnen voor geheugen. Het EDSAC-project werd geleid door de Cambridge-professor en directeur van het Cambridge Computation Laboratory, Maurice Wilkes. Een belangrijke vooruitgang in het programmeren was het gebruik van een bibliotheek met korte programma’s, ‘subroutines’ genaamd, die op geperforeerde papieren tapes waren opgeslagen en die werden gebruikt voor het uitvoeren van algemene repetitieve berekeningen binnen een groter programma. Het hoofdgeheugen van de EDSAC bestond uit 1024 locaties van 18 bits, maar het bovenste bit was altijd niet beschikbaar vanwege timingproblemen, dus er werden slechts 17 bits gebruikt. Geen bron
1950ERA 1101 computera Era 1101 computer In 1950 werd de ERA 1101 computer (later omgedoopt tot UNIVAC 1101) geleverd, een computersysteem dat was ontworpen en gebouwd door Engineering Research Associates (ERA). De eerste klant van het bedrijf was de Amerikaanse marine. De 1101, ontworpen door ERA maar gebouwd door Remington-Rand, was bedoeld voor zeer snelle berekeningen en kon 1 miljoen bits opslaan op zijn magnetische trommel, een technologie die ERA had geperfectioneerd. Veel van de elementaire architectonische details van de 1101 werden tot de jaren zestig opnieuw gebruikt in latere Remington-Rand-computers. Wikipedia UNIVAC 1101
1951Univac computer univac computer De eerste computer bedoeld voor algemeen gebruik en met een commercieel oogmerk, was de UNIVAC computer: de Universal Automatic Computer. Remmington Rand een verre voorganger van het huidige UNISYS, verkoopt ‘s-werelds eerste computer aan het Amerikaanse buro voor volkstelling. Het is de UNIVAC 1. (Universal Automatic Computer). Het apparaat woog een paar duizend kilo, rekende met 5000 electronenbuizen met een snelheid van duizenden berekeningen per seconde. Het geheugen van 256 Kb, was opgebouwd uit ferrietringen. Eén van de beroemdste klusjes van de UNIVAC was het voorspellen van de uitslag van de Amerikaanse presidentsverkiezingen van 1952. Nadat het ‘rekenmonster’ één procent van de stemmen had geteld wist hij al dat Dwight Eisenhouwer zou winnen en hij kreeg gelijk. wikipedia UNIVAC computer
1952ARRA computer Arra computer De ARRA (Automatische Relais Rekenmachine Amsterdam) was de eerste computer van het Mathematisch Centrum. De machine werd gemaakt door Carel Scholten en Bram Loopstra en het was een binaire relais computer. De relais hadden een onbetrouwbare schakeltijd van een paar milliseconden en kwamen uit een Engelse oorlogsdump. De machine had een trommelgeheugen met 1024 woorden van 30 bits. De ARRA had zestien verschillende instructies, waaronder vermenigvuldigen met en zonder rest, en delen met en zonder rest. Voor de in- en uitvoer van de machine werd een bandlezer, die papier las, en een telex gebruikt. De ARRA was zo onbetrouwbaar dat de computer praktisch onbruikbaar was. De computer werd eind 1952 uit elkaar gehaald. Er zijn geen overblijfselen van de ARRA meer over. wikipedia ARRA computer

Testudo computer Testudo computer Testudo, oorspronkelijk bekend onder de naam ARCO (Automatische Relais Calculator voor Optische berekeningen, of Automatic Relay Computer for Optics), is de eerste computer die ontworpen is door Willem van der Poel en daarna ook echt gebouwd is. Hij begon eraan te werken in 1947. Van der Poel heeft de computer zelf niet afgebouwd; dat werd door anderen gedaan. Vanaf 1952 tot 1964 was de Testudo in gebruik bij de Technisch Physische Dienst voor het doorreken van lenzen. Daar kreeg de computer de naam Testudo, het Latijnse woord voor schildpad. Deze computer was dan ook erg traag, maar zeer betrouwbaar. Een optelling of een aftrekking duurden beide 30 seconden en een vermenigvuldiging, deling of worteltrekking duurden elk 45 seconden. Ook de wortel van 1 min een getal in het kwadraat duurde 45 seconden. Deze instructie was handig voor het converteren van een sinus in een cosinus. De testudo deed ‘s nachts in 16 uur wat een optisch ontwerper in 8 uur zou kunnen doen. ‘s Middags om 5 uur werd de Testudo gevoerd met gegevens en de volgende morgen gaf de machine het resultaat terug. wikipedia Testudo computer

IBM 701 computer IBM 701 computer In 1952 produceert IBM de 701, de eerste machine waarin de elektromechanische schakelingen zijn vervangen door elektronenbuizen. Een veel kleinere en vooral snellere machine, die zo’n 2200 bewerkingen per seconde haalt. Aanvankelijk slechts bedoeld voor overheidsdiensten en wetenschappelijk gebruik. Maar al spoedig past men de nieuwe techniek ook toe in apparatuur voor het bedrijfsleven. Het systeem gebruikte 72 “Williams tubes” als geheugen die elk een capaciteit hadden van 1024 bits wat een totaal van 2048 woorden van 36 bits opleverde. Instructies waren 18 bits lang, 5 bits voor de opcode wat 32 verschillende instructies betekende en 12 bits voor het adres, getallen waren of 36 bits of 18 bits lang. wikipedia IBM 701 computer
1953ARRA 2 computer Arra II computer De ARRA II was een computer van het Mathematisch Centrum, de letters staan voor Automatische Relais Rekenmachine Amsterdam II. Alleen in naam was het de opvolger van de ARRA, want het ontwerp was geheel anders. Maar tegenover de geldschieters konden de makers van de ARRA II het niet maken om geld te vragen voor een compleet nieuwe machine. Op 1 november 1952 sloot Gerrit Blaauw zich aan bij Carol Scholten en Bram Loopstra om een betrouwbare versie van de ARRA te maken. In december 1953 voerde de ARRA II zijn eerste programma uit en tot midden 1956 was de computer onafgebroken in gebruik. De ARRA II was geheel elektronisch, in plaats van elektromechanisch. De computer had trommelgeheugen met 1024 woorden van 30 bits. De gemiddelde snelheid van de ARRA II was ongeveer 40 instructies per seconde. De ARRA II kon hardwarematig vermenigvuldigen en delen en er waren 25 verschillende instructies. Er is niets van de ARRA II bewaard gebleven. wikipedia ARRA II computer

PTERA computer PTERA computer PTERA staat voor PTT Elektronische RekenAutomaat, in Den Haag gebouwd door Leen Kosten en Willem van der Poel in 1953 op het Centraal Laboratorium van de PTT. De PTERA bestond uit 700 elektronenbuizen en 120 relais en had een trommelgeheugen van 2048 woorden (elk 31 bits lang). De machine heeft 100.000 gulden gekost, hetgeen weinig was in vergelijking met machines uit het buitenland. De in- en uitvoer van de PTERA gebruikte een ponsband. In september 1953 werd de computer in gebruik genomen en in 1958 werd de PTERA in een paar uur tijd grondig gesloopt toen een ZEBRA computer zijn plaats innam. De uptime van de PTERA was ongeveer 50%. De andere 50% van de tijd bestond uit het repareren van de computer, er is niets van bewaard gebleven. pagina over de PTERA computer
1954IBM 650 computer IBM 650 De IBM 650 was een van de eerste computers van de firma IBM en ook de eerste die in grote aantallen geproduceerd is. De computer werd in 1953 aangekondigd en vanaf 1954 tot 1962 zijn er meer dan 2000 systemen verkocht, in 1969 stopte de support. De IBM 650 was een decimale machine met radio-buizen en een trommelgeheugen en gebruikte ponskaarten voor de invoer van data.
wikipedia IBM 650 computer

Fortran(Programmeertaal) programmeertaal Fortran Fortran is een programmeertaal die speciaal ontwikkeld is voor rekenwerk in de exacte wetenschappen. Het woord Fortran is afgeleid van The Formula Translating System. Fortran is om verschillende redenen belangrijk, ten eerste was het de eerste hogere programmeertaal die in algemeen gebruik kwam, waardoor Fortran een belangrijke stempel op alle navolgende programmeertalen gedrukt heeft. Ten tweede was het de eerste taal die door het ANSI gestandaardiseerd werd (FORTRAN 66, FORTRAN 77, Fortran 90, Fortran 95 en Fortran 2003), waarbij de compatibiliteit met voorgaande versies zo veel mogelijk behouden bleef. Het was decennialang de meest toegepaste taal voor technische, natuurwetenschappelijke en econometrische vraagstukken. wikipedia Fortran programmeertaal
1955FERTA computer Ferta computer De FERTA (Fokker’s Eerste Rekenmachine Type ARRA, of Fokker Electronische Rekenmachine Te Amsterdam) was een verbeterde versie van de ARRA II met verfijnde bit verschuif instructies, die speciaal is gemaakt voor Fokker door het Mathematisch Centrum. Dankzij de verbeteringen was de FERTA ongeveer twee keer zo snel als de ARRA II. In mei 1954 werd er begonnen aan de ontwikkeling van de FERTA en op 1 april 1955 werd de computer overhandigd aan Fokker. De FERTA werd tot 1963 gebruikt, totdat de computer werd vervangen door een X1 computer. Fokker gebruikte deze machine voor het berekenen van eigenwaarden van matrices die werden gebruikt voor het ontwerp van de vleugels van de Fokker F27 “Friendship”. wikipedia FERTA computer
1956ARMAC computer ARMAC De ARMAC (Automatische Rekenmachine van het MAthematisch Centrum) was de opvolger van de ARRA II. Er werd intern gebruik van gemaakt in het Mathematisch Centrum. De computer werd in gebruik genomen in juni 1956. Het ontwerpen en het bouwen van de ARMAC duurde anderhalf jaar Het was de laatste computer die werd gebouwd in het Mathematisch Centrum. Fysiek is er helaas niets van overgebleven. Het geheugen van de ARMAC bestond uit twee delen: trommelgeheugen, net zoals de ARRA II, en het nieuwere en snellere magnetisch kerngeheugen. Dit magnetische kerngeheugen werd gebruikt als een buffer om de inhoud van een track van het trommelgeheugen in op te slaan. Het trommelgeheugen van de ARMAC had 3584 woorden van 34 bits, 33 data bits en 1 pariteit bit. Een klokpuls duurde 13,3 milliseconden. Het kerngeheugen had twee keer 32 woorden en het duurde 20 microseconden voor een klokpuls. De computer bestond uit 1200 buizen en verbruikte 10 kiloWatt. Volgens Loopstra was de gemiddelde snelheid van de ARMAC ongeveer 1000 instructies per seconde. wikipedia ARMAC computer

Z22 computer z22 computer De Z22 was het zevende computermodel dat Konrad Zuse ontwikkelde (de eerste zes waren respectievelijk de Z1, Z2, Z3, Z4, Z5 en Z11). De belangrijkste versiesprong van de Z11 naar de Z22 was het gebruik van vacuümbuizen, in tegenstelling tot de elektromechanische systemen die in eerdere modellen werden gebruikt. De eerste gebouwde machines werden verscheept naar Berlijn en Aken. Tegen het einde van 1958 had men een werkende ALGOL 58 compiler gebouwd voor de Z22 computer. De Hogeschool Karlsruhe heeft nog steeds een operationele Z22 die in permanente bruikleen is bij het ZKM in Karlsruhe. In totaal werden er 55 van deze Z22 computers geproduceerd. wikipedia Z22 computer pagina (Eng)
1957PETER computer PETER De PETER (Philips Experimentele Tweetallige Electronische Rekenmachine) was de eerste computer die Philips heeft gemaakt. De computer werd ontworpen door H.J. Heyn en Arie Slob en in 1956 was de machine klaar. Het was een kleine, maar voor zijn tijd erg snelle computer, die voor een deel parallel werkte met snel trommelgeheugen en nog sneller kerngeheugen. Maar de PETER was ook erg onbetrouwbaar. Een woord was 20 bits lang. De opcodes waren 4 bits en adressen 12 bits. Een optelling duurde 15 microseconden. wikipedia PETER computer

ZEBRA computer ZEBRA De ZEBRA was een computer en stond voor Zeer Eenvoudige Binaire Reken Automaat. De ZEBRA is ontworpen door Willem van der Poel en gebouwd door Standard Telephones and Cables Ltd. in Groot-Brittannie. Er zijn ongeveer 55 ZEBRA’s verkocht over de hele wereld, waarvan negen in Nederland. Zo was de ZEBRA de eerste computer van de universiteiten van Groningen, Utrecht en Delft. Het trommelgeheugen van de ZEBRA bestond uit 8192 woorden van 33 bits waarvan 1 bit voor het teken. De eerste versie van de computer had 600 vacuumbuizen, maar latere versies waren volledig getransistoriseerd. De ZEBRA had twee rekenregisters en twaalf hulpregisters. De computer had geen hardwarematige vermenigvuldig en deling. Voor de ZEBRA bestond een interpretator voor Simple Code. Het inverteren van een 30 bij 30 matrix met behulp van een programma geschreven in Simple Code kostte 63 minuten. Er zijn twee ZEBRA simulators voor de PC geschreven, waarvan een door Willem van der Poel zelf. wikipedia Willem van der Poel

X1 computer X1 De X1 is de eerste computer die Electrologica heeft uitgebracht. De X1 was een volledig getransistoriseerde computer. In september 1956 werden de specificaties van de X1 opgesteld. Eind 1956 was het gedetailleerde ontwerp klaar. En eind 1957 deed het prototype van de X1 zijn eerste berekening. De X1 was een binaire computer, de woordlengte was 27 bits. Het geheugen bestond volledig uit magnetisch kerngeheugen en was maximaal 32768 woorden groot, waarvan 8192 woorden bestonden uit read-only geheugen. De X1 had een interruptsysteem dat een interrupt genereerde als een in- of uitvoer opdracht klaar was. Edsger Dijkstra en Jaap Zonneveld hebben de eerste ALGOL 60 compiler ter wereld geschreven voor de X1. wikipedia X1 computer
1958Eerste chip eerste computer chip De eerste chip of integrated circuit werd gemaakt, Jack Kilby van Texas Instruments ziet kans een aantal transistoren op een plaatje halfgeleidermateriaal met elkaar te verbinden, en hij bouwt zo het allereerste geïntegreerde circuit (IC). De microprocessor zal nog tot 1971 op zich laten wachten.
wikipedia Jack Kilby

Algol (Programmeertaal) programmeertaal Algol Algol is een zeer invloedrijke programmeertaal, de naam is een afkorting voor Algorithmic Language. De taal is voortgekomen uit de wens om een machine-onafhankelijke programmeertaal te maken die zoveel mogelijk moest lijken op gebruikelijke wiskundige notatie. De taal was daarmee een reactie op de weinige andere destijds al bestaande programmeertalen, Cobol en Fortran. Algol was ook de eerste taal die alle programmeerparadigma’s zou combineren, alle moderne programmeertalen ontlenen wel ideeën aan Algol. Ironisch genoeg was de taaldefinitie zo ontzettend uitgebreid, dat nooit iemand het voor elkaar heeft gekregen een compiler voor de complete taal te maken… Toch waren de gedeeltelijke implementaties, die gebruik maken van een interpreter. In 1960 kwam Algol-60 uit, als resultaat van werk van John Backus, Peter Naur en Edsger W. Dijkstra. De Amerikaans beroepsvereniging ACM besloot dat deze taal de standaardtaal zou worden voor het weergeven van algoritmes in haar blad Communications of the ACM.
wikipedia Algol programmeertaal
1959Hein Pragt geboren Hein Pragt geboren Dit is het jaar dat ik geboren ben, mijn geboortejaar valt dus samen met het geboortejaar van de programmeertaal Cobol! Leuk om te vermelden dat ik ook ooit het praktijkdiploma Cobol programmeur gehaald heb maar het verder nooit gebruikt heb behalve in 1999 toen ik een in Cobol geschreven applicatie jaar 2000 proof gemaakt heb.

Cobol (Programmeertaal) programmeertaal Cobol Cobol is ontwikkeld in 1959 in opdracht van het Amerikaanse Department of Defense, het moest een taal zijn die gemakkelijker te lezen, schrijven en onderhouden was dan de tot dan toe gangbare talen en die op meerdere typen computers inzetbaar moest zijn. De eerste versie van Cobol stamt uit 1960, COBOL-60. De thuisbasis van COBOL is het IBM-mainframe, tegenwoordig draait COBOL daarnaast ook op onder meer Microsoft Windows en Unix. Van oudsher was de taal gericht op het makkelijk omspringen met (grote) gegevensbestanden in een batch-georiënteerde omgeving. Nog zeker 30 procent van alle software die momenteel in gebruik wordt is in Cobol geschreven, echter het vinden van goede Cobol programmeurs wordt steeds moeilijker. wikipedia COBOL programmeertaal

DEC PDP 1 computer DEC PDP 1 computer De PDP-1 (Programmed Data Processor-1) is de eerste computer van Digital Equipment Corporation en deze kwam in 1959 op de markt. Men noemde het een Programmed Data Processor in plaats van een computer om politieke redenen en de naam PDP is daarna blijven hangen. Deze computer is legendarisch omdat hierop de hacker cultuur bij het MIT ontstond en het eerste echte computerspel “Spacewar” op deze computer ontwikkeld is. The PDP-1 gebruikte een 18-bit word geheugen van standard 4096 words. The PDP-1 bestond uit 2,700 transistoren en 3,000 diodes op diverse printplaten in een 19 inch rack en de rekenkracht was vergelijkbaar met een draagbare rekenmachine van begin jaren 90 vorige eeuw. The PDP-1 woog ongeveer 730 kg.
wikipedia DEC PDP 1 computer (Eng)
1960PASCAL (Programmeertaal) PASCAL De PASCAL (vernoemd naar Blaise Pascal, tevens een afkorting voor Philips Akelig Snelle CALculator) was de tweede computer die Philips heeft gemaakt. De PASCAL begon als een betrouwbare PETER, maar uiteindelijk werd besloten om een geheel nieuwe computer ervan te maken. Toen hij klaar was, was het de snelste computer in de hele wereld, zelfs sneller dan de X1. De hoge werkfrequentie, dankzij het erg snelle trommelgeheugen en een nieuwe oplossing voor het probleem met de tien transfer, resulteerde in de hoge snelheid. Philips gebruikte de PASCAL in het Philips Natuurkundig Laboratorium in Eindhoven om berekeningen te doen aan cryogeen materiaal, halfgeleiders, televisies en hete lucht motoren. Van deze computer werd later en kopie gemaakt, de P3, het logische ontwerp en de snelheid was hetzelfde, maar de P3 was volledig opgebouwd uit transistoren. Deze computer is gebruikt in het researchlaboratorium van Manufacture Belge de Lampes Electriques in Brussel. wikipedia PASCAL computer
1961Eerste TTL IC TTL TTL technologie werd uitgevonden in 1961 door James L. Buie. Transistor-transistorlogica of TTL is een standaard voor digitale logica. TTL werkt met geïntegreerde schakelingen waarvan het typenummer meestal begint met 74. Er bestaan ook TTL-chips voor militaire toepassingen. Deze hebben zwaardere specificaties en het typenummer begint met 54. TTL-chips gebruiken een voedingsspanning van 5 Volt. Ze hebben verder aan aantal digitale in- en uitgangen waardoor ze met elkaar gekoppeld kunnen worden. Oudere huiscomputers waren vaak voor een groot deel uit TTL-chips opgebouwd. wikipedia TTL
1962DEC PDP 4 computer DEC PDP 4 computer De DEC PDP-4 was de opvolger van de DEC PDP-1 die door Digital Equipment Corporation in 1992 voor het eerste geleverd werd. Van de tussenliggende nummers 2 en 3 zijn er geen echte exemplaren verkocht. De PDP-4 was eigenlijk een goedkopere (en langzamere) versie van de PDP-1. De machine woog ook maar 490 kg (i.p.v. de 730 kg voor de PDP-1) en er zijn er c.a. 54 exemplaren van verkocht. wikipedia DEC PDP 4 computer (Eng)
1963DEC PDP 5 computer DEC PDP 5 computer De DEC PDP-5 computer was de eerste echte commercieel geproduceerde computer ter wereld en deze verscheen in 1993 op het toneel. Het was de eerste 12 bits computer van DEC en de instructieset was de grondslag voor de oh zo bekende PDP-8. De minimale configuratie van de PDP-5 bestond uit één enkele 19-inch kast met 150 printplaten die samen meer dan 900 transistors bevatten. De machine werd aangeboden met 1024 tot 32.768 12-bits woorden ringkerngeheugen. Er werden meer dan 1000 exemplaren van gebouwd en verkocht. wikipedia DEC PDP 5 computer (Eng)
1964DEC PDP 6 computer DEC PDP 6 computer De PDP-6 was in 1964 DEC’s eerste “grote” computer, het gebruikte 36-bits woorden, net als IBM, Honeywell en General Electric. De adressering bleef 18-bit, zoals in eerdere DEC-machines en de machine werd geleverd met een ringkerngeheugen 32.768 woorden. Daarnaast bevatte de PDP-6 ook 16 geheugenlocaties die door middel van snelle flip-flops waren opgebouwd en deze werden als snelle registers gebruikt als eerste 16 geheugenlocaties van het geheugen. De PDP-6 woog ongeveer 770 kg. Wereldwijd werden er slechts 23 exemplaren, de machine was complex en duur om te bouwen, maar ook moeilijk te installeren en werkend te krijgen op de locatie van de klant. Commercieel gezien was de computer geen succes. wikipedia DEC PDP 6 computer (Eng)
1965Multics (Os) multics besturingsysteem In 1965 werkte Bell Telephone Laboratories (Bell Labs, een afdeling van AT&T ) met General Electric en Project MAC van MIT aan het schrijven van een besturingssysteem genaamd Multics. Helaas besloot Bell Labs dat het project nergens toe leidde en brak de groep uiteen, hierdoor bleef Bell Labs achter zonder goed besturingssysteem. Dit systeem was echter wel de basis van het latere Unix besturingsysteem. wikipedia Multics (Os)

PDP-7 computer pdp-7 De DEC PDP-7 is een minicomputer die gemaakt werd door Digital Equipment Corporation. De introductie was in 1965, het was het eerste system dat hun Flip-Chip techniek gebruikte en de prijs was voor die tijd maar $72,000 USD. De PDP-7 was de derde tak van de Digital 18-bit machines met ongeveer dezelfde instructie set en architectuur als de PDP-4 and the PDP-9. Ook een leuk details is dat het de eerste wire-wrapped PDP machine was. Er draaien momenteel nog steeds een paar PDP-7 machines. wikipedia PDP-7

X8 computer X8 De X8 is net zoals zijn voorganger, de X1, gemaakt door Electrologica en was min of meer upward compatible met de X1. Het kerngeheugen had minimaal 16384 woorden en maximaal 262144 woorden. Een geheugencyclus duurde 2,5 microseconden. De X8 had drie registers van 27 bits en een register van 54 bits. Al deze registers waren bruikbaar als indexregisters. De X8 had hardwarematige ondersteuning voor floating-point getalen. De computer had een aparte communicatie-processer die CHARON (Centraal Hulporgaan Autonome Regeling Overdracht Nevenapparatuur) werd genoemd. Deze computer heet de X8 omdat deze machine was ontworpen als een computer die acht keer zo snel zou zijn als de X1. Uiteindelijk was de X8 ongeveer twaalf keer zo snel als de X1. wikipedia X8 computer

Computer muis eerste comnputermuis Uitvinding van de muis door Doug Engelbart in het Stanford Research Instituut. In die tijd deed men daar al onderzoek naar zaken als grafische gebruikersinterfaces. De eerste muis was nog geheel van hout en maakte gebruik van twee schijven die haaks op elkaar stonden. Muizen met bal zouden nog jaren op zich laten wachten. De muis is pas echt doorgebroken bij de introductie van de Apple-Macintosh-computer in 1984. wikipedia computer muis
1966 
1967Floppy disk Floppydisk De diskette en floppy disk drive (FDD) werd in 1967 uitgevonden door de IBM-technicus Alan Shugart. De eerste floppydrives gebruikten een schijf met een diameter van 8 inch, ongeveer 20 centimeter en een capaciteit van slechts 80 kilobytes. Leveranciers van homecomputers, die tot dan toe gebruik maakten van magnetische tapes (compact cassette), zagen al snel de mogelijkheden van het nieuwe medium. De eerste floppydisk in een thuiscomputer was de 5¼” versie (ongeveer 13 centimeter), klein genoeg om in een desktopmachine te passen, met een capaciteit van 360 kB. Omdat deze machines nog geen harde schijf hadden, werd het besturingssysteem geladen van een floppy, waarna het schijfje werd vervangen door een ander waarop de applicatie stond. Latere machines hadden twee drives zodat de schijf met het besturingssysteem in drive A kon blijven terwijl de applicatieschijf in drive B werd geladen. Latere disketteversies konden 1,2 megabytes bevatten. wikipedia Diskette
1968HP9100A programmeerbare rekenmachine hp9100a In 1968 bracht HP zijn eerste computer op de markt en hoewel het eigenlijk een volwaardige computer was noemde HP het om marketing redenen een programmeerbare rekenmachine. Hoewel HP (Hewlett-Packard Company) al bestond sinds 1939, maakte men in de beginjaren alleen maar elektronische apparatuur. Dit was hun eerste stap naar het bouwen van computers. Het idee voor het apparaat stamde van de ingenieur Thomas “Tom” E. Osborne en het was een technisch hoogstandje omdat er geen geïntegreerde schakelingen in zaten, de CPU was volledig uitgevoerd in discrete componenten. Vanwege de overeenkomsten tussen de machines van Hewlett-Packard en Olivetti volgde een juridische strijd die gewonnen werd door Olivetti waarna HP een flink bedrag aam royalty’s moest betalen. wikipedia HP0100A
1969 
1970PDP-11 pdp-11 In 1970 kwam de PDP-11 uit, PDP staat voor Programmable Data Processor. De PDP-11 computers werden geproduceerd door de Amerikaanse leverancier Digital Equipment Corporation (DEC). De PDP-11 was de opvolger van DEC’s PDP-8 computer. Door de 16 bits architectuur kon de PDP-11 64 kilobyte geheugen adresseren. Op den duur was dat een belangrijke beperking. De PDP-11 werd in de 80-er jaren opgevolgd door de 32 bits VAX minicomputer van DEC. wikipedia PDP-11 computer
{mid_ad}
1971Unix (Os) unix In 1965 werkte Bell Telephone Laboratories aan het schrijven van een besturingssysteem genaamd Multics, dit project werd gestopt waarna Ken Thompson op eigen initiatief verder ging eerst op een ongebruikte PDP-7. Later werden er een hoop nieuwe hulpprogramma’s geschreven door Ritchie en Thompson en anderen en het systeem ontwikkelde zich steeds meer tot een volwaardig bruikbaar besturingssysteem op de PDP-7. Om te laten zien wat het besturingssysteem waard was werd het in 1971 overgezet naar de PDP-11, financiering voor dit experiment was beschikbaar omdat de patentenafdeling van Bell Labs een nieuw tekstverwerkingssysteem nodig had; dit zou samen met het nieuwe systeem ontwikkeld worden. Intussen was UNICS veranderd in Unix. In 1973 werd nagenoeg het hele systeem herschreven in C waardoor het makkelijker overdraagbaar werd naar andere computertypes en er steeds meer gebruikers bij kwamen. wikipedia Unix OS

4004 (Processor) 4004 processor Een Japanse klant vraagt het nog jonge Intel Corporation of ze een serie chips wil maken voor een programmeerbare rekenmachine. Dat lijkt ingenieur Ted Hoff een uitdaging. Alleen vindt hij losse chips maar lastig en nodeloos ingewikkeld. Waarom niet één programmeerbaar “logisch apparaat” dat verschillende taken aankan en zijn instructies uit halfgeleidergeheugenput? Samen met collega’a Les Vadasz, Stan Mazor en Federico Faggin gaat Hoff aan het werk, en uiteindelijk weten ze alle schakelingen op één chip onder te brengen. Het resultaat is de allereerste microprocessor , de Intel 4004. Deze processor draaide op een kloksnelheid van 108 KHz en kon een geheugen van maximaal 640 bytes aanspreken. De 4004 is een 4-bits processor. (8-bits architectuur waarvan slechts 4-bits werden gebruikt. Deze processor had 2300 transistoren, die samen evenveel rekenkracht hebben als de kolossale ENIAC van een kwart eeuw eerder. Maar hij kost maar 200 dollar, dat is ruim 2000 keer goedkoper. De 4004 heeft een 16-pens behuizing, ter vergelijking, de huidige Intel Core heeft er 1366. De 4004 heeft 2300 transistors aan boord, zoveel waren er in die tijd nog nooit op één chip geplaatst. De 4004 chip heeft 46 (later 50) instructies en werkt maximaal op 740 kHz. De 4004 heeft een voedingsspanning van maar liefst 15 volt nodig, dat is bijna 15 keer zo veel als zuinige processoren nu. Het is niet zo dat er in één cyclus één instructie kan uitgevoerd worden, bijna alle instructies hebben meerdere cycli nodig. Toch was het voor die tijd een revolutionaire uitvinden. wikipedia 4004 (Processor)

Pong (Spel) Pong spel Pong was in 1971 de eerste commercieel echt succesvolle game. Het stond in speelhallen, bowlingbanen en snackbars en was verpakt in een nep-houten kast met een knalgeel front waar in grote zwarte letters Pong op staat. Twee besturingsknoppen, twee balkjes en een balletje op een zwart Tv-scherm, dat is het. Dankzij z’n eenvoud is het spel een onmiddellijk en enorm succes, in het eerste jaar verkoopt Atari 8500 kasten à 1200 dollar (fabricagekosten: 500 dollar)! wikipedia Pong videospel
1972C (Programmeertaal) Programmeertaal C De programmeertaal C (gemaakt door Dennis Ritchie) is gebaseerd op de programmeertaal B, die weer op BCPL was gebaseerd. Het is een zeer praktische programmeertaal die meer op Algol lijkt dan op andere voorlopers zoals in historische volgorde Fortran, Cobol en BASIC. Pascal is ook een versimpeling van Algol, maar dan in een andere richting. Terwijl Pascal juist meer afstand neemt van de machine waar het op moet werken, ligt C juist dicht tegen de machine aan; het is betrekkelijk ‘low-level’. De invloed van C is zo groot dat sindsdien de meeste nieuwe talen zoals C++, Objective C, Java, Javascript, C# en PHP grotendeels de syntaxis van C gebruiken. Hoewel het in eerste instantie bedacht was om besturingsystemen mee te schrijven (Unix is volledig met C gemaakt) werd het een hele populaire taal voor vele toepassingen. De taal C is binnen de Unix wereld nog steeds de broncode distributie voor vele programma’s en voor “snelle” spellen was en is het nog steeds populair. wikipedia programmeertaal C

HP-35 rekenmachine hp35 rekenmachine In 1972 bracht HP de HP-35 uit en dit was de eerste zakrekenmachine en ook werelds eerste wetenschappelijke zakrekenmachine. Rond 1970 daagde HP mede-oprichter Bill Hewlett zijn collega’s uit om een “HP-9100 (hun kantoor rekenmachine) in zakformaat” te maken en zo ontstond deze rekenmachine. De “35” in de naam van de rekenmachine kwam van het aantal toetsen. De originele HP-35 was verkrijgbaar van 1972 tot 1975. Intern was de rekenmachine gemaakt met een seriële (1-bits) processorchipset die onder contract door Mostek gemaakt werd, die 56-bits drijvende-kommagetallen kon verwerken.
wikipedia 8008 (Processor)

8008 (Processor) 8008 processor De Intel 8008 processor is een type processor van Intel, die diende als de opvolger van de 4004. Deze processor was de eerste 8-bit processor en bevatte al 3,500 transistors. De adresbus was 14-bits en kon daarmee 16 kB geheugen adresseren. Omdat de constructie van een hardware met een enkele processor eenvoudig was, werd hij veel in laboratoria gebruikt en bij het technisch onderwijs als studiemateriaal. De processor werd weinig in computers toegepast omdat de prestaties niet bijzonder waren en de processor ingewikkelde elektronica nodig had. wikipedia HP35
19738080 (Processor) 8080 processor De Intel 8080 was een microprocessor ontworpen en gefabriceerd door Intel. De 8-bits CPU werd in april 1974 uitgebracht met een klokfrequentie van 2 MHz. Door de brede 40-pinsbehuizing van de 8080 kan de processor een 16-bits brede adresbus en een 8-bits brede databus gebruiken, waardoor de adresruimte 64 kilobytes bedraagt. Er zijn zeven 8-bit registers, een 16-bits stack pointer en een 16-bits program counter, de eerste microcomputer op één enkele kaart werd gebouwd op basis van de 8080. De 8080 werd gebruikt in veel computers uit de begintijd, zoals de MITS Altair 8800 en de IMSAI 8080, waarmee de basis gelegd werd voor machines met het CP/M-besturingssysteem. De ontwerpers van de processors begonnen na een verschil van mening met Intel hun eigen fabriek en brachten de kloon Z80 (Zilog) op de markt, deze processor is veel uitgebreider maar verder volledig compatibel met de 8080.
wikipedia 8080 (Processor)
1974Altair 8800 computer Altair 8800 De Altair 8800 had geen muis, geen toetsenbord en geen beeldscherm. Op basis van de Intel 8080 microprocessor, waarin 4800 transistors waren verwerkt was het de eerste personal computer. Klanten moesten de Altair zelf in elkaar zetten en programmeren, aanvankelijk werden de gegevens op audiocassettes opgeslagen. Een zekere Bill Gates schreef hiervoor samen met Paul Allen een programmeertaal (Basicversie). De invoer gebeurde door schakelaartjes in de drukken, de uitvoer was antwoord door lampjes te laten knipperen. De Altair had een geheugen van welgeteld 256 bytes en kostte als bouwpakket 400 dollar.
wikipedia Altair 8800
1975Oprichting Microsoft Oprichting Microsoft In 1975 converteerden Bill Gates (19) en Paul G. Allen (22), twee jeugdvrienden uit Seattle, de programmeertaal BASIC wat tot die tijd een populaire mainframe-computerprogrammeertaal was, voor gebruik op een eenvoudige personal computer, de Altair. Altair Basic functioneerde in maart en het “Micro-soft”-partnerschap werd in april bezegeld, maar zou pas een paar maanden later zijn naam krijgen. In de daaropvolgende jaren verfijnden ze BASIC en ontwikkelden ze andere programmeertalen, MS-DOS en MS-Windows.
wikipedia History of Microsoft

Basic (Programmeertaal) Basic programmeertaal De programmeertaal BASIC was bedoeld om mensen snel te kunnen leren programmeren. De naam is een acroniem voor Beginners All-purpose Symbolic Instruction Code. Er is een grote gelijkenis met de taal Fortran. Microsoft schreef in 1975 de eerste BASIC-interpreter voor de MITS Altair 8800 computer. Deze werd daarna ook verkrijgbaar veel andere computers. Veel oude computers, waaronder de originele IBM PC uit 1981, werden geleverd met een BASIC interpreter in ROM, genaamd BASICA, zodat de computer na aanzetten onmiddellijk kon worden geprogrammeerd. Op computers voor thuisgebruik (Commodore64 e.a.) werd rond 1980 een variant van BASIC geleverd die door Microsoft was gestandaardiseerd en uitgebreid: MSX-BASIC (de MSX staat hier voor Microsoft eXtended). Microsoft zou later ook BASIC-interpreters uitbrengen voor MS-DOS 3 (GWBASIC, 1985), gebundeld met MS-DOS 5.0 (QBasic, 1991), met een grafische interface (Visual Basic 1.0 voor MS-DOS en Windows, 1991) en gebundeld in het pakket Visual Studio (1996). Over de versie Visual Basic .NET (ook wel VB7 genoemd, 2002) zegt Microsoft zelf dat de taal zodanig veel veranderd is dat alle oude gebruikers hem helemaal opnieuw zullen moeten leren.
wikipedia Basic (Taal)
{mid_ad}
1976Apple I computer Apple 1 Apple Computers, Inc. werd op 1 april 1976 opgericht door schoolverlaters Steve Jobs en Steve Wozniak, die het nieuwe bedrijf een visie gaven om de manier waarop mensen naar computers keken te veranderen. Jobs en Wozniak wilden computers klein genoeg maken voor mensen om ze in hun huis of kantoor te hebben. Jobs en Wozniak begonnen met het bouwen van de Apple I in jobs garage en verkochten deze voor 695 dollar. Dit systeem bestond uit een hoofdkaart die op een stuk triplex was geschroefd, een kast en een voeding zaten er niet bij. Er werden maar een paar van deze computers gemaakt, het werkgeheugen was . Wozniak verliet Apple in 1983 omdat hij niet zoveel interesse had in het managen van het bedrijf Apple Computers.
wikipedia Apple I computer

Z80 (Processor) Z80 processor De Z80 (mijn eerst liefde als processor) ontstond in 1974 toen Federico Faggin vertrok bij Intel om samen met Ralph Ungermann het bedrijf Zilog te starten. Faggin werkte eerder als hoofdontwerper onder meer aan de Intel 4004 en de 8080 processor. De Z80 is een 8 bit processor en werd officieel uitgebracht in 1976. De processor is opcode compatibel met de 8080 van Intel (wat een erg slimme zet was), maar had meer instructies, registers en adresseringsmethoden. Het ontwerp van de Z80 was gericht op het gebruik in computerterminals, printers, kasregisters, maar er zijn ook zeer veel thuiscomputers gemaakt op basis van de Z80 computer zoals de TRS80, de Sinclair computer reeks, de Philips P2000 en de bekende MSX computers. Zelf heden ten dage is er nog een club fanatieke hobbyisten die ontwerpen bouwen voor de Z80 microprocessor. De chip is nog steeds leverbaar.
wikipedia Z80 (Processor) 

INS8060, of SC/MP (Processor) sc/mp processor In 1976 bracht National Semiconductor de INS8060 of SC/MP (uitgesproken als scamp) processor uit als Simple Cost-effectieve Micro Processor. De processor had een paar vreemde eigenaardigheden zoals een 12 bits program counter en vier bank switch adres bits en de vreemde mogelijkheid om via een control pin drie processoren op één enkele set geheugen te laten werken waardoor er heel eenvoudig een multiprocessor systeem te maken was. Ook had het on kosten te verlagen een 1 bit ALU waardoor de processor niet echt snel was. Maar het was een mooi simpel ontwerp en het bekende elektronicablad Elektuur bouwde er meerdere systemen mee. Dit was mijn eerste kennismaking met een microprocessor. Sinclair bracht een board met de naam MK14 uit met daarop een SC/MP processor. Voor de hobbyist was het een leuke en relatief goedkope processor, in de industrie sloeg het niet aan. wikipedia SC/MP (Processor) (Eng) 
1977TRS80 Model I computer trs80 model I Dit was een computer in de vorm van een dik toetsenbord, dat werd aangesloten op een losse monochrome monitor. De computer beschikte over een BASIC-taal in ROM en was standaard uitgerust met 4 kB RAM en er kon een cassetterecorder op worden aangesloten, waarop programmatuur en data kon worden opgeslagen. De eerste BASIC-versie betrof een eenvoudige versie (level 1). Deze werd al spoedig vervangen door een uitgebreidere door Microsoft gelicenseerde versie (level 2). De TRS-80 model 1 level 2 kon ook uitgebreid worden met een zogenaamde Expansion Interface (EI). Hierdoor kon beschikt worden over meer geheugen (tot 48kB) en een aansluiting voor een parallelle printer. Ook kon men hierdoor de computer verder uitbreiden met (tot 4) diskettestations (single sided, single density 5¼”-diskettestations) en een seriele verbinding RS232. Naast BASIC kon men ook programma’s ontwikkelen in zogenaamde assembler of machinetaal. Veel hobbyisten hebben de model 1 zelf uitgebreid met hardware-aanpassingen zoals de processor versnellen (van 1,7 naar 2,5 MHz), het weergeven van kleine letters (lower case), het in het toetsenbord uitbreiden van het geheugen, enz. In Nederland werd op 1 oktober 1978 de ‘TRS-80 Gebruikersvereniging’ opgericht die 2-maandelijks het blad ‘Remarks’ uitgaf.
wikipedia TRS80 Model I computer  

Apple II computer Apple II De Apple II was een pc voor thuisgebruik, gebouwd met de Motorola 6502 microprocessor met een geheugen van 16 kB. Deze computer wordt aangesloten op een (kleuren!) tv, de data wordt bewaard op cassettebandjes. Het geheugen was 4 kB, uit te breiden tot 64 kB. Deze Apple II wordt een enorm succes en Apple II levert Apple de eerste miljoenen op. Het was een kant-en-klaar systeem met ingebouwd toetsenbord, geluid, kleurengraphics en optioneel een diskettestation. Met een prijs van $2600.- was het de duurste thuiscomputer.
wikipedia Apple II computer

Atari 2600 spelcomputer Atari 2600 spelcomputer De Atari 2600 spelcomputer die oorspronkelijk de Atari VCS (Video Computer System) werd genoemd, kunnen we beschouwen als de oervader van alle moderne gamecomputers. Er werden totaal meer dan dertig miljoen van verkocht en er werden, samen met andere bedrijven, honderden miljoenen spellen verkocht. Het toestel werd pas echt populair toen het spel Space Invaders werd uitgebracht. Het system was gebouwd rond een 6507 processor en een custom TIA video chip en had maar liefst 128 bytes Ram.
wikipedia Atari 2600 computer

Commodore PET computer Commodore PET computer In juni 1977 bracht Commodore de Commodore PET (Personal Electronics Transactor) op de markt en het was een van de eerste personal computers en het was de basis voor de gehele 8-bits productielijn die Commodore zou gaan opzetten. De computer bevat een MOS 6502-processor en maximaal 96 kB intern geheugen en de videochip was in de eerste modellen een TTL videocircuit en later een MOS 6545. De computer had ingebouwde BASIC programmeertaal in ROM-geheugen.
wikipedia Commodore PET computer

MK14 computer MK14 computer De MK14 computer is gebaseerd op de SC/MP CPU (INS8060) van National Semiconductor en wordt standaard geleverd met 256 bytes RAM en 512 bytes ROM. Het gebruikte een achtvoudige rode zevensegmentendisplay en er was ook een optionele VDU die 32 × 16 tekst of 64 × 64 afbeeldingen ondersteunde. Invoer was een toetsenbord met 20 membraantoetsen en een resetschakelaar. Een cassette-gebaseerde en PROM gebaseerd opslag waren optionele extra’s net als een zeer eenvoudige geluidskaart. Het was een echte hobby computer die men zelf uit kon breiden en het basis model moest in HEX machinecode geprogrammeerd worden.
wikipedia MK14 computer (Eng)
19788086 (Processor) 8086 processor De Intel 8086 processor was zowel de eerste 16-bit processor als de eerste x86 processor en werd uitgebracht in 1978 door Intel. Intel bracht korte tijd later een versie van de 8086 uit, de 8088, die intern in 16-bit werkte, maar aan de buitenkant een 8-bits bus had, deze processor werd door IBM verkozen voor de eerste IBM PC. De 8086 is uitgebracht in kloksnelheden van 4,77 (de snelheid in de eerste PC) tot 10 MHz. Veel PC-klonen hadden een optie om de processor tussen de oorspronkelijke 4,77 MHz en 8 MHz te kunnen schakelen. Instructies werden in 4 tot ongeveer 200 klokpulsen uitgevoerd. wikipedia 8086 (Processor)

ABC 80 computer ABC 80 computer In 1978 kwam de ABC 80 (Advanced BASIC Computer 80) op de makt, het was een personal computer ontwikkeld door het Zweedse bedrijf Dataindustrier AB (DIAB). De ABC 80 was gebouwd rond een Z80 en 16 KB ROM met een snelle semi-compilerende BASIC-interpreter. Het had 16-32 KB RAM als hoofdgeheugen en een speciale (meegeleverde) bandrecorder voor programma- en gegevensopslag, maar kon ook worden uitgebreid om diskdrives en vele andere randapparatuur. De ABC 80 werd gebruikt in scholen en kantoren in Scandinavië en delen van Europa maar werd ook gebruikt voor industriële automatisering en wetenschappelijke meet- en regelsystemen.
wikipedia ABC 80computer (Eng)
1979Acorn Atom computer Acorn Atom De Acorn Atom, die in Nederland ook bekend stond als de Hobbit Computer, is een uit 1979 stammende hobbycomputer van de firma Acorn Computers Ltd. Het ontwerp was van Sophie (Roger) Wilson die toen daar werkte. De Atom werd geleverd, als bouwpakket of compleet gebouwd, met een uitvoerige handleiding, het complete schema met een technische documentatie. Het was voor de gebruikers een machine die bij uitstek geschikt was voor allerlei experimenten. Hij was gebaseerd op de 6502 processor, voor veel gebruikers was een belangrijk gegeven dat naast BASIC ook een assembler in ROM meegeleverd was. Alles, maar dan ook alles, aan de machine was goed gedocumenteerd.
wikipedia Acorn Atom computer

Motorola 68000 (Processor) 68000 processor De Motorola 68000 processor was in de jaren 80 een bijzonder populaire processor in homecomputers. Onder andere Commodore, Apple en Atari gebruikten deze processoren. Ook de CD-i speler van Philips werkte met een 68000 processor. In de jaren 90 is deze processor in ontelbare apparaten ingebouwd. Type architectuur was CISC (Complex Instruction Set Computer) en het aantal registers was 8 x 32-bit dataregisters en 8 x 32-bit adresregisters. wikipedia Motorola 68000 (Processor)

TI-99 computer TI-99 computer In juni 1981 kwam de Texas Instruments TI-99 op de markt, de computer werd op de antenne-ingang van een televisie aangesloten via een apart kastje. Data bewaren gebeurde met een cassetterecorder, en ook was er een aansluiting voor een joystick. Boven op het apparaat was een uitbreidingsslot waar modules in gestoken konden worden. Helaas had de computer zeer beperkte grafische mogelijkheden behalve een zelf te definiërende tekenset. Mede hierdoor is de computer uiteindelijk voor onder de kostprijs gedumpt op de markt. Wat bijzonder was aan deze computer was de geheel eigen TMS9900 (16-bits-chip processor) van Texas Instruments zelf.
wikipedia TI-99 computer

Atari 400 / 800 computer Atari 400 / 800 computer In 1979 werden door Atari een reeks 8 bit-homecomputers die waren gebaseerd op de MOS Technology 6502-processor. De eerste modellen waren de Atari 400 en 800 en uiteindelijk waren deze computers de grootste concurrenten voor de Commodore 64. De computer was sneller en had meer grafische mogelijkheden, alleen het geluid was minder dan dat van de Commodore 64. Uiteindelijk ging de markt naar 16 bits computers en verdween de Atari 8 bit reeks van de markt.
wikipedia Atari 400 / 800 computer

Acorn System 1 computer Acorn System 1 computer In Maart 1979 kwam de Acorn Microcomputer (later hernoemd tot Acorn System 1) op de markt, met een 6502 op 1MHz, die was bedoeld voor gebruik in laboratoria, maar door de lage prijs ook redelijk populair bij hobbyisten was. In 1980 ontwikkelde Acorn deze computer door naar de System 2 en uiteindelijk naar de System 3, System 4 en System 5. Alle Acorn System-systemen konden worden gekoppeld met een extern toetsenbord die ook voor de Acorn Atom werd gebruikt.
wikipedia Acorn System 1 computer
1980Ada (programmeertaal) ada programmeertaal In de zeventiger jaren was het Amerikaanse ministerie van defensie bezorgd om het grote aantal verschillende programmeertalen dat werd gebruikt voor militaire projecten. In 1975 werd de Higher Order Language Working Group (HOLWG) gevormd met de opdracht om een manier te vinden om dit aantal te reduceren. De werkgroep schreef een serie documenten met eisen waaraan een standaardtaal moest voldoen en er werd een aanbesteding uitgeschreven voor een nieuwe programmeertaal en vier bedrijven werden ingehuurd om hun voorstellen verder uit te werken onder de codenamen Rood, Groen, Blauw en Geel. In mei 1979 werd het Groene voorstel, ontworpen door Jean Ichbiah van Honeywell Bull, gekozen en kreeg het de naam Ada. Het reference manual werd goedgekeurd op 10 december 1980 (Ada Lovelace’s verjaardag). Het Amerikaanse ministerie van defensie eiste het gebruik van Ada voor elk software project dat zij financierden als er meer dan 30% nieuwe code uit zou komen (hoewel er vaak uitzonderingen op deze regel werden toegestaan). De regel werd officieel afgeschaft in 1997. Soortgelijke eisen bestaan in andere NAVO landen. De taal werd een ANSI standaard in 1983 en een ISO standaard in 1987.Ada 95 is de gecombineerde ISO/ANSI standaard (ISO-8652:1995) en is de meest recente Ada standaard. Het oorspronkelijke doel om het aantal programmeertalen binnen het ministerie van defensie te verminderen is gehaald. In 1983 waren er meer dan 450, in 1996 waren dat er nog “maar” 37.
wikipedia Ada (programmeertaal)

ZX80 computer zx80 De Sinclair ZX80 was een eenvoudige thuiscomputer die door het bedrijf Sinclair Research van Clive Sinclair in 1980 werd uitgebracht. Het was de eerste computer die voor minder dan 100 pond verkocht werd in Groot-Brittannië, namelijk voor £99,95. De ZX80 kon enkel via de post besteld worden, en werd geleverd als kit om zelf te assembleren, dan was de prijs £79,95. De machine had een witte plastic kast en een klein blauw membraan-toetsenbord en ze moest op een televisietoestel worden aangesloten. Het display had 24 regels van 32 tekens, voor het genereren van het videosignaal gebruikte de ZX80 een combinatie van (zeer eenvoudige) hardware en software, waardoor ze enkel een beeld kon genereren wanneer er geen programma werd uitgevoerd, dus wanneer de machine wachtte op een toetsaanslag van de gebruiker viel het videosignaal weg. Programma’s kon men bewaren op audiocassettes. De computer gebruikte als CPU een Zilog Z80-kloon, de NEC 780C-1 chip, en had 1 KB RAM-geheugen (optioneel uitbreidbaar tot 16 KB) en een Sinclair BASIC-editor/interpreter samen met het besturingssysteem in een 4 KB ROM.
wikipedia Sinclair ZX80

HP85 computer hp85 In 1980 kwam HP met de Hewlett-Packard serie 80 kleine wetenschappelijke desktopcomputers op de markt. De HP-85 bevatte een CPU en het toetsenbord en een geïntegreerde monitor, met een ROM-gebaseerd besturingssysteem, 16 kB dynamisch RAM, een tapedrive voor DC-100 cartridges (210 kB capaciteit, 650 B/s overdracht) en een thermische printer. Zowel het scherm als de printer geven naast tekst ook afbeeldingen weer en de printer kan alles kopiëren wat op het scherm wordt weergegeven. De machines waren gebouwd rond een HP-gepatenteerde CPU met de codenaam Capricorn die draaide op 625 kHz en had een BASIC-interpreter in ROM (32 kB). Programma’s kunnen worden opgeslagen op DC-100 cartridgetapes of op externe disk/tape-eenheden. Voor de grotere HP-86- en HP-87-serie bood HP ook een plug-in CP/M-processorkaart met een aparte Zilog Z-80-processor.
wikipedia HP 80 series

Intel 8051 (Processor) Intel 8051 In 1980 bracht Intel de 8051 microcontroller op de markt en ik heb zelf veel schakelingen en apparaten (modems) ontworpen met deze processor. De 8051 is een acht bit CISC processor die in heel veel types op de markt is gebracht, ook door vele andere fabrikanten waarvan Atmel wel de bekendste is. Het systeem had santaard 4 kb rom en 256 bytes ram aan boord wat een grote uitdaging was voor de programmeur. Maar er kon ook 64 kb ROM en 64 kb Ram extern aangesloten worden waarbij men dan wel veel I/O pinnen moest opofferen. De processor had standaard een aantal Timers meerdere Interrupt lijnen en een interne seriële uart aan boord en veel programmeerbare I/O pinnen. De processor was ook niet duur en werd in vele apparaten als centrale processor gebruikt. Ook tegenwoordig word deze processor nog steeds gebruikt en is het nog steeds verkrijgbaar.
wikipedia Intel 8051 processor
1981Comodore VIC 20 comodore vic 20 In 1981 kwam de Commodore VIC 20 op de markt als een van de eerste homecomputers. Het grootste verschil met zijn opvolger de Comodore 64 was het beperkte geheugen van 5kB RAM en 20kB ROM. Het RAM-geheugen was wel weer uitbreidbaar met een externe module (cartridges) van bijvoorbeeld 16kB. VIC staat voor Video Interface Chip, waar de 20 voor staat is niet duidelijk. Ondanks het beperkte geheugen waren er toch veel spellen beschikbaar voor deze computer waardoor deze snel erg populair werd.
wikipedia Comodore VIC 20

Philips P2000 computer Philips P2000 computer In 1981 introduceerde Philips de P2000 homecomputer en het was een voor die tijd redelijk geavanceerde computer. De P2000 bestond uit een Z80 microprocessor op 2,5 MHz., 4 KB ROM, 16 KB RAM en 2 KB video RAM. Voor video werd gebruik gemaakt van een Teletext chip waardoor de video mogelijkheden overeen kwamen met Viditel en Teletext (40 tekens en 24 regels). De computer had een platte kast met een daarop vast gemonteerd toetsenbord. Bovenop zaten twee slots, een voor een Rom cartridge en een voor een I/O cartridge. Het bijzondere was een ingebouwde mini-cassettedrive die erg snel was en waarbij het opzoeken en wegschrijven volledig automatisch was. De computer was relatief duur maar wel van erg goede kwaliteit hardware die tegen een stootje kon en de P2000 was daarom redelijk populair in het onderwijs.
wikipedia Philips P2000
{mid_ad}
1982MSX 1 computer MSX 1 computer In 1982 introduceerde ASCII Corporation de MSX-standaard, de afkorting betekende ‘Machines with Software eXchangeability’, al werd ‘MicroSoft eXtended’ ook gebruikt. Het kwam er op neer dat MSX-software op iedere computer kon draaien waar het MSX-logo op stond. Dit voor die tijd revolutionaire idee sloeg aan, mede door Microsoft, die het BIOS, de BASIC en besturingssysteem voor de machines schreef. Grote merken als Philips en Sony brachten meerdere MSX-homecomputers uit. In Amerika en Engeland werd het geen succes; mede daardoor kwam de productie van MSX-computers in 1992 ten einde. Uiteindelijk zijn er wel ruim 5 miljoen systemen verkocht.
wikipedia MSX 1 computer

ZX Spectrum computer ZX Spectrum computer In 1982 introduceerde Clive Sinclair de ZX Spectrum als opvolger van de ZX80 en ZX81 computer. Hoewel de naam van deze computer eerst ZX82 zou gaan worden, werd er voor ZX Spectrum gekozen omdat deze computer met kleuren kon werken. Opvallend aan deze computer waren de kleine rubberen toetsen en de mogelijkheid om via toetscombinaties te kunnen programmeren. Er waren veel spellen voor deze computer beschikbaar. De computer was net als zijn voorgangers voorien van een Z80 microprocessor en een spciale ULA (Uncommitted Logic Array) chip die speciaal voor de ZX Spectrum gemaakt was en waar veel functies in waren ondergebracht. In 1984 werd de Spectrum+ uitgebracht met een grotere behuizing en een toetsenbord met harde plastic toetsen.
wikipedia ZX Spectrum computer
1983Comodore 64 computer comodore 64 De Commodore 64 (ook C64 of CBM64) is een bekende maar ook tamelijk onconventionele homecomputer van de firma Commodore uit de beginperiode voor hobby- en thuisgebruik. Het is met een geschat aantal van 17 tot 30 miljoen exemplaren nog steeds de best verkochte computer aller tijden. Het apparaat kwam in 1983 op de markt, de behuizing bestond uit een soort dik toetsenbord, waarbij het computergedeelte zich onder de toetsen bevond. De Commodore 64 werd aangesloten op een televisietoestel, die als monitor voor beeld en geluid diende. De Commodore 64, die bij de ontwikkeling VIC-30 werd gedoopt, maar nooit onder die naam op de markt kwam, was door Commodore ontwikkeld als opvolger van de VIC-20. Het nummer 64 slaat op het werkgeheugen van 64 kB, onder BASIC was er echter slechts 38 kB vrij voor de gebruiker.
wikipedia Comodore 64 computer

C++ (programmeertaal) C++ programmeertaal C++ is een programmeertaal die ontworpen is door Bjarne Stroustrup in het Bell Labs gedurende 1983-1985. C++ is een uitbreiding van de programmeertaal C, voor 1983 voegde Bjarne Stroustrup als features toe aan C en noemde dat “C with Classes”. He combineerde het gebruik van classes uit Simula’s en object georienteerdheid samen met de snelheid en efficiency van de taal C. De taals C++ was zeer populair, grote delen van windows zijn er in geschreven maar ook voor snelle spellen was de programmeertaal. De taal is door de taal java en het C# voorbijgestreefd maar het heeft als basis voor beide voorgenoemde talen gediend.
wikipedia C++ (programmeertaal)

HP150 computer hp 150 computer HP-150 (ook bekend als HP Touchscreen of HP 45611A) was een compacte, krachtige computer en het was gebaseerd op de Intel 8088. Het was een van ‘s werelds eerste touchscreen computers. Ondanks dat het een aangepaste MS-DOS versie draaide, was de computer niet IBM PC compatibel. De 8088 CPU draaide op 8 MHz (de IBM PC op 4,77 MHz) en met behulp van add-onkaarten kon het hoofdgeheugen worden verhoogd van 256 kB naar 640 kB. Het moederbord had echter geen optie voor een 8087 math coprocessor. Onzichtbaar voor de gebruiker, draait de HP 150 ook het “Terminal Operating System” (TOS) voor de terminalemulator en als laag onder MS-DOS.
wikipedia HP 150

Tulip System 1 computer Tulip System 1 computer In 1983 bracht Compudata (toen nog geen Tulip computers) de Tulip System 1 op de markt. Het was een volwaardige 16 bits microcomputer met een 8086 processor aan boord die op 8 Mhz draaide. Met deze computer waren ze zelfs iets eerder dan de IBM PC op de markt en die draaide op een 8088 (en 16 bits CPU met een 8 bits bus) en op de helft van de snelheid van de Tulip computer. De eerste System I draaide onder CP/M 86, maar na de komst van de IBM PC werd er snel overgeschakeld naar MS-DOS. Standaard had de System I met 128Kb RAM en dat kon naar 896 KB geüpgraded worden en het had een optie voor een 8087 math coprocessor.
wikipedia Tulip System 1 (Eng)
1984Apple Macintosh computer Apple Macintosh Introductie Apple Macintosh, de eerste computer voor thuis met een grafisch scherm. De Macintosh of kortweg Mac is de naam voor een serie computers op de markt gebracht door het Amerikaanse bedrijf Apple. De eerste Macintosh werd in 1984 vooral geïntroduceerd als goedkope opvolger van de Apple Lisa, een computer waarop al een visuele en muisgestuurde gebruikersinterface als op de Macintosh beschikbaar was en die zijn tijd ver vooruit was, maar vooral door zijn hoge prijs geen succes was. De Macintosh is in veel opzichten de grondlegger van wat nu de PC wordt genoemd. Computers zonder muis- en vensterbesturing a la MS-DOS waren rond 2002 nauwelijks meer verkrijgbaar. De eerste Macintosh draaide op 7,83 MHz terwijl in 2003 kloksnelheden tot bijna 500 keer zo groot worden gehaald. Het oorspronkelijke Mac-besturingssysteem (MacOS) werd uitgefaseerd rond 2002 en vervangen door het op BSD Unix gebaseerde Mac OS X.
wikipedia Apple Macintosh computer

HP Laserjet printer eerste HP Laserjet printer In 1984 introduceert HP zijn eerste LaserJet als merknaam voor de lijn laserprinters die op de markt, deze HP LaserJet was werelds eerste desktoplaser printer. Canon leverde zowel mechanismen als cartridges voor alle HP laserprinters. Het was een 300-dpi printer en het gebruikte een 8 MHz Motorola 68000-processor en kon afdrukken in verschillende tekenlettertypen. Het werd bestuurd met PCL3. Vanwege de hoge geheugenkosten had de eerste LaserJet slechts 128 kilobytes geheugen. De eerste LaserJet was een snelle vervanging voor daisy wheel impact printers met alleen tekst en de luidruchtige dot matrix printers. De LaserJet Plus volgde in september 1985.
wikipedia HP Laserjet
1985Atari ST computer Atari ST De Atari ST is een homecomputer die van 1985 tot begin jaren ’90 populair was. Officieel staat “ST” voor “Sixteen/Thirty-two, wat betrekking had op de 16-bits externe bus en 32-bit interne processor. De Atari ST was gebaseerd op de Motorola 68000 CPU-chip, met minimaal 512 kilobyte RAM-geheugen en een 3½-inch floppy diskdrive als opslagmedium. Hij leek op de Apple Macintosh en de Commodore Amiga die ook gebaseerd waren op de Motorola 68000. De 520ST was een alles-in-één apparaat, vergelijkbaar met eerdere homecomputers als de Commodore 64. In de tijd dat de 520ST uitkwam wilden de consumenten een volwaardig toetsenbord, inclusief cursortoetsen en een numeriek toetsenbord. Daardoor viel de 520ST wat groot uit, als men het toetsenbord wilde verschuiven moest de hele computer verplaatst worden.
wikipedia Atari ST computer

Comodore Amiga computer Comodore Amiga In 1984 kocht Commodore de firma Amiga Corp. Op, ze hoopten zo een vervolg te breien op het succesverhaal van de Commodore 64. In juli 1985 werd de nieuwe Amiga voorgesteld in New York, het toestel was in tal van opzichten zijn tijd ver vooruit. Het ondersteunde een kleurenpalet van 4096 kleuren en kon in 4-kanaals stereo (2 kanalen per stereo-kanaal) in 8-bit formaat weergeven. Hierdoor was het in tal van opzichten de eerste echte multimediacomputer voor thuisgebruik. Lang voor Windows beschikte Amiga ook over een grafische interface met elkaar overlappende vensters. Een systeem dat werd geïntroduceerd door Apple. Het besturingssysteem AmigaOS ondersteunde eveneens multitasking, shared libraries en het gebruik van de rechtermuisknop. Het was destijds al mogelijk om meerdere programma’s tegelijk te laten draaien.
wikipedia Comodore Amiga computer

Windows 1.0 (Os) Windows 1.0 De allereerste Windows versie kwam uit in 1985 en heette Windows 1.0 en woog totaal 1 mb. Op de verpakking van Windows 1.0 stond dat het in 256 KB geheugen moest kunnen draaien, maar een recensent van de New York Times schreef: Het draaien van Windows in 512 KB is vergelijkbaar met het schenken van stroop op de Zuidpool. Deze eerste versie van Microsoft Windows was geen groot succes. Het was meer een grafische uitbreiding van MS-DOS en bovendien konden de vensters elkaar niet overlappen, omdat dit principe door Apple gepatenteerd was.
wikipedia Windows 1.0 (Os)

MT-Telcom (Modem) MT-Telcom modem In 1985 werkte ik voor Micro Technology als embedded software ontwikkelaar en (mede) hardware ontwerper en we waren toen al bekend om onze MSX Modems. De gangbare standaard was in die tijd nog V23 (1200/75 baud) en V21 (300/300 baud). Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen.
1986MSX 2 computer MSX 2 In 1986 werd er door de MSX computer producenten een meer geavanceerde MSX2-computer uitgebracht, die in eerste instantie concurreerde met de Atari ST serie en later met de Commodore Amiga. Helaas voor de MSX2 waren er al meerdere 16-bits computers. De MSX2 standaard, hoe geavanceerd ook, was nog gebaseerd op een 8-bits architectuur en kon zich niet meten met de veel snellere, modernere en met grotere geheugens uitgeruste 16-bits Atari’s en Commodore’s. Wel een voordeel was dat diskettes aangemaakt met dit MSX-DOS-besturingssysteem door MS-DOS machines gelezen kon worden en dat er aangepaste CP/M-programma’s op gebruikt konden worden.
wikipedia MSX 2 computer
1987Windows 2.0 (Os) Windows 2.0 Windows 2.0 kwam uit in 1987 en het was een verbeterde versie van Windows 1.0 en leek daar dan ook veel op. In 1988 werden er twee varianten uitgebracht: Windows 2.1/286 en Windows 2.1/386. Deze gebruikten de mogelijkheden van de Intel 80286 en de Intel 80386 chips, zoals de protected mode. Een belangrijke verandering t.o.v. Windows 1.0 was dat vensters elkaar nu ook konden overlappen.
wikipedia Windows 2.0 (Os)

PS/2 computer PS/2 IBM introduceert de Personal System/2 (PS/2) systemen, het PS/2 Model 30 heeft een 8-MHz 8086 aan boord. De modellen 50 en 60 een 10 MHz 80286 en model 80 een 20 MHz 80386. Model 50 heeft een nieuw soort videokaart met VGA. Hierdoor is het mogelijk om 256 kleuren tegelijkertijd te tonen met een resolutie van 320×200 en 16 kleuren bij 640 x 480.
wikipedia PS/2 computer

Motorola 68030 (Processor) 68030 Processor Motorola 68030 is een microprocessor uit de 32 bits in Motorola’ s 68000 familie. Vrijgegeven in 1987, waren 68030 de opvolger aan Motorola 68020, en werden gevolgd door Motorola 68040. De 68030 werd gebruikt in vele modellen van Apple Macintosh II en de Amiga van de Commodore, Sun 3/80 desktopwerkstation, Atari TT en diverse unix werkstations en laserprinters.
wikipedia Motorola 68030 (Processor)

MT-Plusmodem (Modem) MT-plusmodem modem In 1987 werkte ik nog steeds voor Micro Technology als embedded software ontwikkelaar en (mede) hardware ontwerper en we brachten het goedkope (maar later ook redelijk verfoeide) MT-Plusmodem uit dat meegeleverd werd door de Postbank voor hun Girotel telebankier pakket. Er waren in deze tijd ook al V22 modems op de markt die (1200/1200 baud full duplex waren) maar wij gebruikten nog steeds onze oude modem technologie en dat was nog steeds V23 (1200/75 baud) en V21 (300/300 baud). Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen.
1988Laser 128 computer Laser 128 Apple II kloon In 1988 komt het bedrijf VTech uit Hong Kong met een Apple II kloon op de markt. Daarvoor maakte VTech elektronische spellen en educatief speelgoed. In plaats van simpelweg het basic input output system (BIOS) van de Apple II te kopiëren, hebben ze het systeem compleet reverse-engineered en verkochten het voor een veel lagere prijs dan de vergelijkbare Apple II. Hoewel Apple een rechtszaak aanspande om de Laser 128 van de markt te halen, was dat niet succesvol en bleef de Laser een van de weinige Apple “klonen” die te koop waren.
wikipedia Laser 128

MT1200 (Modem) MT1200 modem In 1988 ontwikkelde ik voor Micro Technology het MT1200 modem, ons eerste modem dat als PC insteekkaart V22 ondersteunde en dus ook 1200/1200 full duplex communicatie ondersteunde. Daarnaast ondersteunde het modem ook nog de oude V23 (1200/75) en V21 (300/300) standaard. Al onze modems werden geleverd met het zeer goede datacommunicatie pakket Mightycom dat ook door mij ontwikkeld was. Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen. Modems werden in deze periode veel gebruikt om zogenaamde BBS systemen te benaderen waar berichten en veel software uitgewisseld werd.
1989Intel 486 (Processor) Intel 486n In 1989 introduceerde Intel de 80486-processor als optimalisatie van de 80386-processor. De 80486-processor kon instructies in minder klokpulsen uitvoeren en was bij dezelfde kloksnelheid bijna twee maal sneller dan de 80386 en was er een intern cachegeheugen toegevoegd. Aan de instructieset en functionaliteit was echter nauwelijks iets veranderd. De 80486DX2/66 was de eerste processor waarbij de kloksnelheid van bus en processor gescheiden waren. De 80486DX2/66 draaide intern op 66 MHz, het moederbord draaide op 33 MHz. Ook was de 80486 de eerste processor die koeling nodig had om goed te kunnen werken.
wikipedia Intel 486

MT Quintet (Modem) MT-Quintet modem In 1989 ontwikkelde ik voor Micro Technology het MT Quintet V22Bis modem, ons eerste modem dat als PC insteekkaart V22Bis ondersteunde en dus ook 2400/2400 full duplex communicatie ondersteunde. Daarnaast ondersteunde het modem ook nog de oude V22 (1200/1200), V23 (1200/75) en V21 (300/300) standaard. Al onze modems werden geleverd met het zeer goede datacommunicatie pakket Mightycom dat ook door mij ontwikkeld was. Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen. Modems werden in deze periode veel gebruikt om zogenaamde BBS systemen te benaderen waar berichten en veel software uitgewisseld werd. De snelheid van de modems verdubbelde bijna elk half jaar en elk bedrijf probeerde de eerste te zijn, ook wij.
1990Windows 3.0 (Os) Windows 3.0 Windows 3.0 kwam uit in 1990, met Windows 3.0 werd een grote stap gezet en kreeg het ook een iets ander uiterlijk wat vooral ook grafisch beter was doordat het VGA kaarten ondersteunde. Er werden van versie 3.0 meer dan 10 miljoen exemplaren verkocht. Windows was op dat moment het best verkochte besturingssysteem. In Windows 3.1 kwam vervolgens de tekstverwerker erbij in de vorm van Word waardoor het nog populairder werd plus een aantal games waaronder patience en ondersteuning voor Internet.
wikipedia Windows 3.0 (Os)
1991Linux (Os) Linux besturingsysteem De Finse student Linus Torvalds kondigde in 1991 op Usenet aan dat hij een nieuw, op Minix gelijkend, besturingssysteem heeft gemaakt. “Het heeft al eens gewerkt…” zegt hij gekscherend, hij noemt het besturingssysteem Linux. In 1992 verscgijnt versie 0.12 van Linux onder de GNU general public license. GNU is een verzameling software zonder goed werkende kernel en Torvalds heeft een goed werkende kernel. Het resultaat is GNU / Linux, nog steeds het hart van iedere distributie.
wikipedia Linux (Os)

MT3242 (Modem) MT3242 modem In 1991 ontwikkelde ik voor Micro Technology het MT3242 en het MT2242 modems, deze twee modems ondersteunden ook MMP5 en V42Bis datacompressie waardoor er snelheden tot 19200 baud mogelijk waren over een standaard telefoonverbinding. De MT2242 was goedkoper en ondersteunde alleen V22Bis (2400/2400 baud) als basissnelheid, de MT3242 ondersteunde V32 (9600/9600 baud) als basissnelheid. Op deze modems zat een 80186 processor en alle interne software voor de modem en de compressie protocollen waren geschreven in de taal ‘C’. Ook deze modems werden geleverd met het zeer goede datacommunicatie pakket Mightycom dat ook door mij ontwikkeld was maar ook met een FAX programma dat door mij ontwikkeld was. Ik was verantwoordelijk om de modems aan de PTT standaarden te laten voldoen in software en hardware en onze modems door de PTT / KEMA keuring te krijgen. In deze tijd werden modems naast voor BBS systemen ook al voor het Internet (Usenet) gebruikt.
1992Wolfenstein 3D (Spel) Wolfenstein 3D Het spel dat voor de doorbraak van het bedrijf ID zorgde was Wolfenstein 3D, een first person shooter met vloeiende 3D-beelden die toen ongekend waren in computerspellen, en met een gewelddadige game-play die veel spelers wist te boeien. Nadat ze in feite een volledig genre hadden gecreëerd door dit spel. Wolfenstein 3D is één van de eerste First Person Shooters ooit en daarom zeer revolutionair en belangrijk in de gamegeschiedenis. Je speelt het spel als B.J. Blazkowicz en zult verschillende verdiepingen moeten doorlopen om uiteindelijk op verdieping negen te komen waar je de eindbaas moet verslaan. Behalve de negen reguliere levels heb je ook nog een bonus level, welke dan logischerwijs op de tiende verdieping ligt. Deze hoef je echter niet verplicht te halen om het spel uit te spelen.
wikipedia Wolfenstein 3D (Spel)
1993Doom (Spel) Doom spel Doom is een first-person shooter computerspel uit 1993, ontwikkeld door id Software. Het spel is vooral bekend als een van de pioniers op het gebied van 3D-graphics voor computerspellen en multiplayerspellen via netwerken. Het spel kwam oorspronkelijk uit voor de Personal Computer, maar is in de loop der jaren overgezet naar meerdere andere spelconsoles. De opbouw van de levels in Doom is redelijk standaard, de speler baant zich een weg door eindeloze gangen en levensgevaarlijke hallen. Grauw beton, poelen vol radioactieve blubber en levensgevaarlijke plateau’s geven perfect de troosteloze en sombere sfeer weer waarin hij zich begeeft. Een wereld waar pure agressie en snelheid zijn enige kansen op overleven zijn.
wikipedia Doom (Spel)

Pentium (Processor) Pentium processor De introductie van de Pentium processor in 1993 was technisch een flinke stap voor Intel. Logischerwijs zou de processor het nummer 80586 of i586 gekregen hebben, maar de naam werd veranderd in Pentium (het Griekse telwoord voor vijf), omdat getallen niet als merk geregistreerd konden worden. Net als bij de 80486 was er aan de instructieset van de processor nagenoeg niets veranderd. Het accent bij de Pentium lag op snelheid. De grote vernieuwing van de Pentium was dat hij superscalair was, wat betekent dat hij meerdere instructies tegelijk kan uitvoeren. Logica in de processor bepaalde of twee opeenvolgende instructies van elkaar afhingen; zo nee, dan werden ze naar de twee verschillende uitvoeringseenheden in de processor doorgestuurd.
wikipedia Pentium (Processor)

Mosaic en Netscape Mosaic browser In februari 1993 lanceerde NCSA de eerste webbrowser voor het World Wide Web met een volledig grafische interface, genaamd Mosaic. Daarmee legde dit bedrijf de basis voor bijna alle huidige browsers, deze grafische webbrowser wist in korte tijd een revolutie te ontketenen. Eén van de programmeurs van Mosaic was Marc Andreessen, deze ging na afloop werken voor het zojuist opgerichte bedrijf Mosaic Communications, dat later vanwege onenigheid over de naam werd omgedoopt tot Netscape.
wikipedia Mosaic browser

MTD Dolphin (Modem) MT3242 modem In 1993 ontwikkelde ik voor Micro Technology Datacom (MTD) de opvolger van het bedrijf Micro Technology het Dolphin modem, dit modem ondersteunden V32Bis dat (19200/19200 baud) als basissnelheid op een standaard telefoonlijn ondersteunde waardoor samen met MMP5 en V42Bis datacompressie er snelheden tot 57600 baud mogelijk waren. Ook ondersteunde het modem FAX en waren we een van de eersten die Voice over Data geïmplementeerd hadden waardoor er naast data ook tegelijkertijd spraak over dezelfde lijn kon gaan. Dit modem had een nieuwe Rockwell modem chipset en data basis besturing processor was weer een 80186 processor en alle interne software voor de modem en de compressie protocollen waren geschreven in de taal ‘C’. Ook deze modems werden geleverd met het zeer goede datacommunicatie pakket Mightycom dat ook door mij ontwikkeld was maar ook met een FAX programma en MT-Voice dat door mij ontwikkeld was. Daarnaast leverden we ook MT-Edit en MT-Archive en nog een paar andere programma’s mee met onze modems. In deze tijd werden modems nog steeds voor BBS systemen gebruikt maar ook steeds meer voor Internet.
1994Iomega Zip Drive Iomega Zip Drive De Iomega Zip drive was een verwisselbare floppy schijf die wel iets weg had van de 3,5 inch diskette. De Zip kon echter 100 MB aan gegevens opslaan op 1 disk. Later werd de opslagcapaciteit nog 250 MB en zelfs 750 MB. Een groot probleem van de Zip was dat er een fout in het ontwerp zat, sommige exemplaren raakten defect door de Click of Death, waardoor de zipschijf niet langer bruikbaar was. Tegenwoordig levert Iomega ook standaard opneem- en afspeelapparatuur, zoals CD- en DVD-drives.
wikipedia Iomega Zip Drive
1995Internet explorer 1.0 Internet explorer 1.0 De NCSA die in eerste instantie de browser mosaic gemaakt had, gaf de commerciële exploitatiein 1994 in handen van Spyglass. Deze tekende een deal met Microsoft, dat het programma vervolgens verbouwde tot Internet Explorer 1.0 en in augustus 1995 uitbracht. Internet Explorer 1.0 is maar zeer kort in omloop is geweest, in december 1995 werd Internet Explorer (versie 2.0) voor het eerst meegeleverd met Windows. Tegen die tijd begon Microsoft in te zien dat het het World Wide Web had onderschat.
wikipedia Internet explorer 1.0

Java (programmeertaal) Java programmeertaal Java ontstond begin jaren 90 in een klein dochterbedrijf van Sun Microsystems onder leiding van James Gosling. De werknaam Oak werd gekozen toen men naar buiten keek bij het zoeken naar een naam en daar een eik (Engels: Oak) zag staan. Er bleek echter al een programmeertaal met die naam te bestaan, dus kozen ze “Java”, een verwijzing naar koffie. Aanvankelijk wilde men Java promoten als programmeertaal voor allerhande elektronische apparaten, zoals televisies, afstandsbedieningen en koelkasten, maar later bedacht Sun dat ze hun (toen nog steeds niet al te populaire) taal goed konden gebruiken in een webomgeving. Op 13 november 2006 gaf Sun delen van Java vrij als opensourcesoftware, onder de GNU General Public License (GPL). Op 8 mei 2007 gaf Sun de laatste delen van Java vrij onder de GPL, op enkele kleine gedeeltes na waar Sun niet het auteursrecht op heeft. Java is nu, na de overname van Sun door Oracle nog steeds eigendom van Oracle.
wikipedia Java (programmeertaal)
1996Windows NT (Os) Windows nt In 1996 werd Windows NT op de markt gebracht, waarvan het uiterlijk vrijwel hetzelfde was als die van Windows 95. In de jaren die volgden werden geen nieuwe versies van Windows NT uitgebracht, maar wel een aantal updates, de zogeheten ‘Service Packs’. Deze versie wordt ook wel beschouwd als de eerste echt stabiele Windows. De man doe NT ontwikkeld heeft was afkomstig van het team dat voor Digital Equipment Corporation aan hun VMS besturingssysteem had gewerkt. Sommige aspecten van VMS zijn dan ook in Windows NT nog enigszins te herkennen. Leuk detail is dat de afkorting WNT per letter net één verder in het alfabet stond dan VMS.
wikipedia Windows NT (Os)

Deep blue (Schaak) Deep blue Op 11 mei heeft de computer de mens verslagen, dat gebeurde in Amerika waar wereldkampioen schaken Garry Kasparov schaakte tegen de computer Deep Blue en de computer won. Het jaar daarvoor won Kasparov nog tegen de computer, maar ondertussen werd die sterker en krachtiger. Kasparov was erg onder de indruk van zijn verlies.
wikipedia Deep blue (Schaak)

MTDS GSM modem MTDS GSM Modem Nadat de modem markt ingestort was door de one dollar modem chip van Rockwell ging ook MTD als grootste modem fabrikant in Nederland helaas failliet. We maakten een doorstart met MTDS en ontwikkelden software voor GSM telefoons en we ontwikkelden de SMS techniek (waar onze toenmalige directeur miljonair mee is geworden), ik ontwikkelde een complete GSM datacommunicatie stack in C++ en we ontwikkelden een PCMCIA kaart voor laptops om door middel van een GSM telefoon een (9600/9600 bps) dataverbinding op te kunnen bouwen. Dit was het begin van Data over het GSM netwerkt. Nadat ik nog meegewerkt heb aan Symbian bij Psion in Londen voor het GSM protocolstack gedeelte, ben ik gestopt met embedded programmeren en overgestapt naar Internet en Applicatie programmeren.
1997 
1998Windows 98 (Os) Windows 98 In 1998 werd Windows 98 (versie 4.10.1998, codenaam Memphis) uitgebracht door Microsoft voor microcomputers, een grafisch besturingssysteem dat intern nog steeds gebaseerd was op MS-DOS 7.1. Windows 98 was een geactualiseerde versie van Windows 95 maar het had een geïntegreerde AGP-ondersteuning en functionele USB-drivers. Ook bevat het ondersteuning voor het gebruik van meerdere beeldschermen. De integratie van Internet Explorer in Windows 98 was een omstreden zet van Microsoft en aanleiding voor de Amerikaanse justitie een jaren slepende rechtszaak te beginnen.
wikipedia Windows 98 (Os)

Apple Imac computer Imac De Apple iMac is een desktop computer van Apple, waarbij de ‘i’ van iMac staat voor internet. De computer maakt een groot deel uit van Apples consumentenaanbod sinds de introductie in 1998. De iMac heeft sindsdien vier duidelijk onderscheidbare gedaantes gehad, waarbij altijd de integratie van beeldscherm en computer centraal staat. De iMac computer bezit een relatief grote bekendheid in populaire cultuur dankzij zijn herkenbare uiterlijk en Apples succesvolle marketing. De iMac en andere Macintosh computers zijn vaak te zien in films, reclame en TV-series.
wikipedia Apple Imac computer

Celeron (Processor) Celeron processor Begin 1998 had Intel het moeilijk om de Pentium II chips te verkopen omdat ze vrij duur waren en veel klanten dus voor de goedkopere AMD K6-233 processor kozen. Daarom maakte Intel een nieuwe CPU met de naam Celeron die vergelijkbaar was met de Pentium II maar zonder L2-cache. Tegenwoordig zijn Celeron-processors nog steeds beschikbaar als dual-core en werken ze met hogere snelheden en met cache die rechtstreeks in de kern-CPU is ingebouwd.
wikipedia Celeron (Processor)
1999USB Flash disk USB Flash disk In 1999 bracht het bedrijf M-Systems (een Israëlische producent van flash geheugen opslag producten) de eerste USB-flashdrive op de markt. Hert bedrijf werd in 2006 overgenomen door hun eerdere concurrent SanDisk. M-System was vooral bekend door het ontwikkelen en patenteren van de eerste flashdrive in 1995 die op de markt gebracht werden als DiskOnChip.
wikipedia M0System flash disk
2000C# (programmeertaal) C# programmeertaal C# (uitgesproken als “C sharp”) is een programmeertaal ontwikkeld door Microsoft als reactie op Sun’s Java en deels teruggrijpend op C++. Volgens sommigen is de taal beter dan Java, volgens anderen juist weer niet. Een van de verwijten is dat het noch geheel Java is, noch geheel C++ en dus een eigen standaard probeert te zetten terwijl het geen originele ontwikkeling is. Met dit soort taktieken probeert Microsoft wel vaker markten naar zijn hand te zetten. Dat de taal speciaal voor .NET (dotnet) ontworpen zou zijn zoals sommigen beweren is niet juist. De ontwerper van de taal C# is niet de eerste de beste, Anders Hejlsberg was de man achter het ontwerp van Turbo Pascal, Delphi en Visual J++. De taal is zeer uitgebreid en consequent in datatypes en ontwerp.
wikipedia C# (programmeertaal)
Posted on Leave a comment

Motorola MC14500B processor

mc14500

Deze pagina gaat over de Motorola MC14500B, een eenvoudige 1-bit microprocessor ook wel een Industrial Control Unit (ICU) genoemd. De MC14500B is een CMOS één-bits microprocessor die in 1977 ontworpen is door Motorola voor eenvoudige besturingstoepassingen. Ik leerde deze microprocessor kennen door enkele opensource projecten en aangezien het IC nog steeds leverbaar is was het een leuk experiment om eens te onderzoeken. Na korte tijd raakte ik zo enthousiast over deze kleine krachtpatser met zijn zo eenvoudige maar krachtige (eigenzinnige) ontwerp dat ik besloot om er een schakeling en een complete IDE voor te schrijven. Het idee is om er een soort hogere meta taal voor te ontwikkelen, just for fun.

MC14500 internal diagram

De MC14500B is heel geschikt voor de implementatie van ladderlogica en kan dus worden gebruikt ter vervanging van (of als) programmeerbare logische controller. De processor ondersteunt 16 commando’s die allemaal 1 cycle duren en de chip werkt op een frequentie van maximaal 1 MHz. De chip heeft een interne RC clock waarbij een externe weerstand de frequentie bepaalt, maar het kan ook aangestuurd worden door een externe clock. De MC14500B-eenheid bevat geen interne  programmateller maar verwacht dat op de opgaande flank van de clock een externe teller opgehoogd zal worden die de nieuwe instructie uit de rom op de 4 bits opcode bus zet. De grootte van het programma en de grootte van de rom kan dus zo groot zijn als de ontwerper zelf wil.

MC14500 pin assignment

De chip heeft een 1 bit ALU en één 1 bit intern register om logische bewerkingen uit te kunnen voeren. Daarnaast heeft de chip een aantal output lijnen die door instructies een hoog puls kunnen krijgen en waarbij externe logica aangestuurd kan worden. Ook is het enige interne RR register via een pin als output beschikbaar. De lijnen zijn: RR – de logische staat van het internet RR register, JMP – deze pin zal tijdens het uitvoeren van een JMP instructie even hoog zijn, RTN – deze pin zal tijdens het uitvoeren van een RTN instructie even hoog zijn, FLAG 0 – deze pin zal tijdens het uitvoeren van een NOP0 (0x00) instructie even hoog zijn en FLAG F – deze pin zal tijdens het uitvoeren van een NOPF (0xff)  instructie even hoog zijn.

MC14500 instructionset
MC14500 instructionset

Er is op de chip zelf geen ondersteuning voor JMP en RTN, dit kan door de ontwerper van de schakeling in hardware zelf geïmplementeerd worden. In de meest eenvoudige vorm stuurt de JMP pin de reset van de program counter aan waardoor een JMP instructie altijd JMP 0000 tot gevolg zal hebben en zo een eenvoudige programma loop gemaakt kan worden. Ook de andere signaal pinnen kunnen gebruikt worden voor eigen invulling en zo kan men een geheel eigen invulling in hardware aan de werking van het RTN signaal geven (wat niets met een RTN instructie te maken heeft) om bijvoorbeeld iets aan te sturen of een latch aan te sturen. Hetzelfde gaat op voor zowel de NOPO en de NOPF instructie. De ontwerper van de schakeling krijgt alle vrijheid om dit zelf in te vullen, wat het een schitteren universeel te gebruiken ontwerp maakt.

MC14500 minimal system

 Het is een 5V statische processor die extern zelfs met de hand geklokt kan worden, wat debuggen ook erg gemakkelijk maakt. In de meest elementaire uitvoering heb ik op een breadboard een 8 bits dipswitch en een 8 bits led array aangesloten op de chip en kon zo via de dipswicht (die ook aan de clock lijn hing) instructies laten uitvoeren die zichtbaar werden op de ouput leds. Hiermee kon ik de volgorde en de timing van signalen helemaal uitzoeken en documenteren.

MC14500 minimal breadboard design

Een mooi opensource project voor de MC1400 is de PLC14500 van  Nicola Cimmino  (https://github.com/nicolacimmino/PLC-14500) dit is een complete PLC oplossing door middel van een MC14500 processor met 7 inputs, 7 outputs, een 8 bits sram en een instelbare timer die onder software controle gebruik kan worden. De programmeer interface is erg skim gedaan door middel van een Arduino Nano die de adres- en databus van het programmageheugen kan overnemen om zo nieuwe code te uploaden. Ik heb contact met Nicola en heb zijn board ook besteld en gebouwd.

Het kunnen werken met een microprocessor en een board heeft ook een programmeer omgeving nodig. Er waren wat losse programma’s, ik heb mijn programmeer IDE omgebouwd voor de MC14500 processor met een two pass assembler, een disassember, een emulator voor diverse boards inclusief visuele weergave en clickbare buttons, een single step debugger, breakpoint en trace mogelijkheid. Ook kan deze IDE code rechtsreeks uploaden in de diverse boards.

Deze IDE kan hier gedownload worden: https://www.heinpragt.nl/?product=mc14500b-processor-ide

Deze download is een zip bestand met daarin een portable x64 (en x32 versie) van de Windows exe programma’s, een custom bootloader en een examples directory.

Links en download

Posted on Leave a comment

Informatie oude (micro)processors

Computer chips history

Ik ben sinds 1970 werkzaam in de computerindustrie en heb veel verschillende microprocessors gebruikt en geprogrammeerd, zowel thuis als voor mijn werk. Ik heb jarenlang gewerkt als hoofd van een R&D afdeling. Ik probeer ook iets over deze processors te vertellen en probeer te linken naar andere informatie zoals Wikipedia en datasheets die ik ook verzamel. De tabel is georganiseerd volgens het eerste jaar dat de microprocessor uitkwam en het dus ook een historisch overzicht. Naast informatie over microprocessors staat hier ook informatie over ondersteuningschips en de videocontrollerchips. Op deze website staat ook een pagina met de meest bekende home computer systemen met de daarin gebruikte processor, ondersteunende chips en video processors. Deze pagina kunt u ook in het Engels vinden op deze website. Vriendelijke groet, Hein Pragt.

1971

4004 (Processor)

Intel 4004 processor In 1971 creëerde Intel de eerste echte microcessor-chip, de Intel 4004. Het is een legendarische chip en er zijn er tegenwoordig niet veel meer.
Ik heb geen 4004-chip maar ik zou dat wel graag willen, en ook de 4001, 4003 en 4003 ondersteunende chips.
wikipedia Intel 4004 (Processor) (Eng)
4004 Processor Datasheet

1972

8008 (Processor)

Intel 8008 processor In 1972 introduceerde Intel hun tweede echte microcessor-chip, de Intel 8008. Het is ook een legendarische chip en er zijn er niet veel meer van tegenwoordig.
Ik heb geen 8008-chip maar ik zou dat wel graag willen, en ook de 1201 en 8228 ondersteunende chips.
wikipedia Intel 8008 (Processor) (Eng)
8008 Processor Datasheet

1973
1974

RCA 1802 (Processor)

RCA 1802 processor In 1974 kwam de RCA 1802 (COSMAC 8-bit microprocessor family) beschikbaar, het ontwerp van de processor begon in 1973. De meeste processors uit die tijd waren NMOS, de 1802 werd geïmplementeerd in CMOS en gebruikte statische logica. De processor had niet zoveel succes en het bedrijf ontwierp een (doe-het-zelf) single board eenvoudig computer genaamd de COSMAC ELF, met schakelaars om code en gegevens in te voeren en twee hexadecimale LED-displays. De 1802 microprocessor werd gebruikt als embedded controller, met name in de ruimtevaart en de Hubble Ruimtetelescoop. De 1802 voerde in 1989 ook de Galileo-sonde naar Jupiter. Sommige computers waren gebaseerd op de 1802, zoals sommige op ELF gebaseerde systemen, de COMX-35-thuiscomputer en Telmac thuiscomputers die alleen in Finland uitkwamen. De COMX-35 was de enige computer die ik kende en zag werken. Het is grappig maar een beetje vreemde processor.
wikipedia RCA 1802 (Processor) (Eng)
CDP1802ACE Processor Datasheet

MC6820 (Peripheral Interface Adapter)

MC6820 (Peripheral Interface Adapter) In 1974 introduceerde Motorola tegelijkertijd met de MC6800-familie een PIA (Peripheral Interface Adapter) de MC6820 als een 40-pins DIP-chip om de 6800 te ondersteunen. De MC6820 had 20 I/O-lijnen (twee 8-bits bidirectionele poorten en 4 stuurlijnen voor handshaking en interruptgeneratie. De MC6820 werd onder meer gebruikt in de Apple I om het ASCII-toetsenbord en het display te koppelen. Het werd ook gebruikt in elektronische flipperkasten, de Atari 400 / Atari 800 en Commodore PET.
wikipedia MC6820 (Peripheral Interface Adapter) (Eng)
PMC6820 (PIA) Datasheet

Intel 8080 (Processor)

8080 processor In 1974 introduceerde Intel de 8080-processor, een 8-bits microprocessor en het was een uitgebreide en verbeterde variant van het eerdere 8008 ontwerp. De 8080 heeft twee ondersteunende chips nodig om te kunnen functioneren: de i8224 klokgenerator/driver en de i8228 buscontroller. De eerste versie werd geïmplementeerd in NMOS en had een +12 V en een -5 V en + 5 spanning nodig. Met zijn volledige 16-bits adresbus kon het toegang krijgen tot 64 KB geheugen. Het kreeg een goede concurrent in de vorm van de Z80 chip die binair compatibel was en veel meer instructies en registers had. De Intel 8080 werd gebruikt in de Altair 8800 en S-100 bus personal computers en het was de basis voor het CP/M besturingssysteem totdat de Z80 het overnam.
wikipedia Intel 8080 (Processor) (Eng)
P8080A-1 Processor Datasheet

Intel 8224 (Clock generator)

Intel 8224 (Clock generator) In 1974 produceerde Intel ook enkele ondersteunende chips voor hun 8080-processor en de 8224 chip was een enkele chip klokgenerator voor de 8080 processor. Het bevatte circuits voor power-up reset, status strobe en sync of ready signalen. De chip was bedoeld om het aantal chips van 8080 gebaseerde computers te verminderen.
wikipedia Intel 8080 (Processor) (Eng)
D8224 Datasheet

Intel 8212 (Input/Output port)

8212 (Input/Output port) In 1974 produceerde Intel ook een andere ondersteunende chip voor hun 8080 processor en dat was de 8212, een I/O-chip dis speciaal ontworpen was voor de Intel 8080/8085 processors. De chip werd geleverd in een 24-pins DIL uitvoering. De belangrijkste functie van de Intel 8212 is een 8-bits latch en een flip-flop voor interrupt verzoeken. Het was ook bedoeld om het aantal chips van 8080 te verminderen in computersystemen.
wikipedia Intel 8212 (German)
8212 Datasheet

Motorola 6800 (Processor)

Motorola 6800(Processor) In 1974 introduceerde Motorola de 6800-processor, het is een 8-bits microprocessor en een van de eersten die slechts een enkele 5V-voeding nodig had. de 6800 heeft een 16-bits adresbus die rechtstreeks toegang geeft tot 64 KB geheugen en een 8-bits bidirectionele databus. Het heeft 72 instructies met zeven adressering modi voor een totaal van 197 opcodes. De 6800 was populair in computer randapparatuur, testapparatuur en point-of-sale-terminals en arcadespellen en flipperkasten.
wikipedia Motorola 6800
6800 Datasheet

1975

6502 (Processor)

6502 processor In 1975 introduceerde MOS Technology de 6502 8-bit microprocessor die is ontworpen door een klein team onder leiding van Chuck Peddle, een team dat voorheen bij Motorola had gewerkt voor het Motorola 6800 project. De 6502 is in wezen een vereenvoudigde, goedkopere en snellere versie van het 6800 ontwerp. Het was goedkoop en de grootste concurrent van de Z80 processor. Ik heb deze processor nooit gebruikt, voor mij was hij inferieur aan de Z80, zonder I/O (alleen geheugen toegewezen I/O) en een zeer beperkte instructieset. Maar de processor werd erg populair in systemen zoals de Atari 2600, Atari 8-bit familie, Apple II, Nintendo Entertainment System, Commodore 64, Atari Lynx en de BBC-microcomputer. Tegenwoordig wordt de CMNOS versie nog steeds gebruikt in embedded systemen. Ik heb twee 40-pins DIL processors MOS6502 en UM6502A, maar het is nog steeds niet mijn favoriete processor. Het verschil tussen de 6502 en de 6502A is dat de A versie op 2 Mhz loopt i.p.v. de 1Mhz van de gewone 6502.
wikipedia 6502 (Processor)
UM6502A Processor Datasheet

Mos 650x (Processor)

Mos 6502 processor Er waren nog meer andere types 6502 processoren met wat verschillende toevoegingen (enkel heb ik ook in mijn webshop en staan ook op deze pagina):

  • 6503, 6505, 6506 – Hetzelfde als de 6502 met 12 bit addressbus (4K)
  • 6504, 6507 – Hetzelfde als de 6502 met 13 bit addressbus (8K)
  • 6509 – Hetzelfde als de 6502 met 20 bits addressbus (1Mb)
  • 6510 – Hetzelfde als de 6502 met 6 bit I/O port (gebruikt in de Commodore 64) (Ik heb er één!)
  • 6511 – Hetzelfde als de 6510 met I/O port, serial port en Ram onboard (Rockwell)
  • 65F11 – Hetzelfde als de 6511 but met buildin Forth interpreter.
  • 7501 – 6510 in HMOS gebruikt in de Commodore 16 en Commodore Plus/4
  • 8500 – 6510 in CMOS technology (Ik heb er één!)
  • 8501 – 6510 in HMOS with 8 bit I/O port used in Commodore 16 and Commodore Plus/4 (Ik heb er één!)
  • 8502 – 6510 op 2 Mhz gebruikt in de Commodore 128
  • 65816 – 16 bit variant of 6502 van Westen Digital gebruikt in de Apple II GS (16 bit ALU, 24 bits address, 24 Mhz clock)
  • 65802 – 65816 die pin compatible is met 6502, max 16 Mhz

R6532(RIOT)

MC6520 (Peripheral Interface Adapter) In 1975 introduceerde Rockwell de R6532 (RIOT) Ram, I/O, Timer-chip, die 128 x 8 bytes statische ram, twee 8-bits bidirectionele datapoorten en een programmeerbare timer bevatte met interrupt mogelijkheden. De R6532 chip was 6500 / 6800 bus compatibel en ik vond het gebruik van deze chip terug in elektronische flipperkasten van die tijd en ik weet dat de Atari 2600 er een gebruikte.
R6532 (RIOT) Datasheet

AM2901CPC (4 Bits processor)

AM2901CPC (4 Bits processor) Am2900 is een familie van geïntegreerde schakelingen (IC’s) die in 1975 zijn gemaakt door Advanced Micro Devices (AMD). Er is iets speciaals aan deze chip, de Am2900-familie was in staat om een ​​CCU te implementeren met gegevens, adressen en instructies om een ​​veelvoud van 4 bits te zijn door het aantal IC’s te vermenigvuldigen. De Am2901-chip was de rekenkundige-logische eenheid (ALU), en de “kern” van de reeks. Het kan tellen met behulp van 4 bits en binaire bewerkingen uitvoeren, evenals verschillende bit-verschuivende bewerkingen. De 2901 en enkele enere chips in de familie werden als ontwerp ingekocht door een ongewoon groot aantal enere fabrikanten en de chips waren in 2016 nog steeds in productie.
wikipedia AM2901 (Processor)
AM2901CPC Processor Datasheet

1976

Z80 (Processor)

Z80 processor Het ontwerp van de Z80 (mijn eerste liefde als processor) begon in 1974 toen Federico Faggin Intel verliet om samen met Ralph Ungermann het bedrijf Zilog te starten. Faggin werkte bij Intel als hoofdontwerper onder meer aan de Intel 4004 en de Intel 8080 processor. De Z80 is een 8 bit processor en officieel uitgebracht in 1976. De processor is opcode compatibel met Intel’s 8080 (wat een heel slimme zet was), maar had meer instructies, registers en adresseringsmethoden. De Z80 is ontworpen voor gebruik in computerterminals, printers, kassa’s, maar er zijn ook veel thuiscomputers geproduceerd op basis van de Z80 processor zoals de TRS80, de Sinclair computers, de Philips P2000 en de bekende MSX-computers. Ook nu nog is er een club enthousiaste hobbyisten die ontwerpen maken voor de Z80 microprocessor. De chip is nog beschikbaar. De Z80 processor was de hoofdprocessor in mijn eerste TRS80-computer, de Sinclair ZX81, de Sinclair Spectrum, de MSX1 en MSX2 computer en de CP/M-systemen en embedded machinebesturingen bij mijn eerste baan. Ik heb meerdere soorten Z80 processors in mijn webshop waaronder een originele.
wikipedia Z80 (Processor)
Mijn eigen pagina over de Z80 (Processor)

z84c2006pec Z80 PIO

z84c2006pec PIO De Z80 PIO chip is eigenlijk gewoon een digitale parallelle I/O-poortchip. U kunt de afzonderlijke poortpinnen configureren als digitale in- of uitgangen en deze vervolgens gebruiken voor wat men wil. De A/B ingang selecteert tussen PortA of PortB en de C/D ingang selecteert tussen het besturingsregister of het dataregister. De controleregisters worden gebruikt om de poorten te configureren en de dataregisters worden gebruikt om de feitelijke gegevens te lezen/schrijven. Door deze aan te sluiten op A0 en A1 kan men toegang krijgen tot het gewenste register met behulp van de adresbus en in een I/O lezen of schrijven. Het minst significante bit van het geheugenadres A0 selecteert dan de poort A of B en de A1 lijn selecteert tussen de data- en de controleregisters. Met een adresdecoder kun je deze chip overal in de I/O-adresruimte plaatsen. In veel systemen werd deze chip werd gebruikt om een parallelle printerpoort toe te voegen aan het Z80-systeem. Maar de chip kan ook digitale invoer van schakelaars aan en kan worden gebruikt als driver voor LED’s. Een van de unieke kenmerken van de Z80-PlO is dat alle gegevensoverdracht tussen het renapparaat en de CPU kan worden uitgevoerd onder totale interrupt controle, zelfs met geneste interrupts. De PlO kan worden geprogrammeerd om de CPU te onderbreken als er gespecificeerde condities. Deze onderbrekingsmogelijkheid vermindert de hoeveelheid tijd die de processor moet besteden aan het pollen van de perifere status. U kunt deze chip nog steeds kopen en het kost maar een paar euro.
z80piomn.pdf Z80 PIO User Manual (Pdf).

Z84C4006PEC Z80 SIO

Z84C4006PEC SIO Samen met de Z80-processor produceerde Zilog ook enkele enere ondersteunende chips en een van deze chips was de Z80 SIO. Het is eigenlijk een twee kanaals seriële input/output chip met alle besturingslogica aan boord. Omdat veel Z80-systemen een seriële console gebruikten voor input en output, was dit een belangrijke chip. De Z80 SIO is een perfecte match met de Z80 processor.
Z84C4006PEC Datasheet (pdf)
Z80 ZIO programming (pdf)

Z8430 Z80 CTC

Z8430 CTC Nog een belangrijke chip die Zilog samen met de Z80 processor produceerde was de ondersteunende chip in de vorm van de Z80 CTC. De Z80 CTC is een vier kanaals teller/timer die kan worden geprogrammeerd door systeemsoftware voor een breed scala aan tel- en timingtoepassingen. Deze vier onafhankelijk programmeerbare kanalen kunnen worden gebruikt voor het tellen van systeemgebeurtenissen, interrupt en interval timing, en het genereren van een kloksignaal.
Z8430 CTC Datasheet (pdf)

INS8060, of SC/MP (Processor)

sc/mp processor In 1976 bracht National Semiconductor de INS8060- of SC/MP-processor (uitgesproken als scamp) op de markt als een eenvoudige, kosteneffectieve microprocessor. De processor had een paar vreemde eigenaardigheden zoals een 12-bits programmateller en vier bankswitch adresbits op de datapoort en de vreemde mogelijkheid om één besturingspin te gebruiken om drie processors op een enkele set geheugen aan te sluiten waardoor het heel eenvoudig is om een systeem met meerdere processors te creëren. Het moest ook de kosten verlagen met een 1 bit ALU waardoor de processor niet echt snel was. Maar het was een mooi simpel ontwerp en het bekende elektronica tijdschrift Elektuur bouwde er meerdere systemen mee. Dit was mijn eerste kennismaking met een microprocessor. Sinclair heeft een bord uitgebracht genaamd MK14 met een SC/MP-processor erop. Voor de hobbyist was het een mooie en relatief goedkope processor, in de industrie sloeg de processor niet aan. Ik had er een gekocht, maar op het laatste moment verdubbelde de koper de prijs, dus ik heb er nog steeds geen.
wikipedia SC/MP (Processor) (Eng)
n pagina over de SC/MP (Processor)
INS8060 Processor Datasheet

Intel 8085 (Processor)

Intel 8085 processor In 1976 introduceerde Intel de 8085, een 8-bit microprocessor die software binair compatibel was met de Intel 8080 met slechts twee kleine instructies toegevoegd. De 5 in het onderdeelnummer was omdat de 8085 slechts een enkele +5 V-voeding gebruikte, in tegenstelling tot de 8080 die +5 V, -5 V en +12 V nodig had. De processor was een concurrent (Intel’s antwoord op) de zeer populaire Z80 processor. De 8085 werd vaak gebruikt als microcontroller in embedded systemen dankzij de ingebouwde seriële I/O en vijf geprioriteerde interrupts, functies die de Z80 CPU niet had. Het werd gebruikt in de beroemde VT102-terminal en de TRS-80 Model 100. De processor werd ook gekloond in de Sovjet-Unie en ook NASA gebruikte het in verschillende ruimtemissies. Ik heb het nooit gebruikt, ik was een Z80-fan.
wikipedia 8085 (Processor) (Eng)
M5L8085AP Processor Datasheet

Intel 8035 (Processor)

Intel 8035 processor In 1976 introduceerde Intel de MCS-48 microcontroller-serie, de eerste leden waren 8048, 8035 en 8748. In het begin maakten deze chips gebruik van NMOS-technologie, later kwamen ze beschikbaar in CMOS technologie. De MCS-48-serie werd later vervangen door de zeer succesvolle MCS-51-serie, maar de chips worden nog steeds gebruikt in goedkope consumentenelektronica zoals tv-afstensbedieningen, computertoetsenborden. en speelgoed. Ten opzichte van een 8048 heeft de 8035 geen interne ROM en 64 x 8 bytes intern RAM geheugen.
wikipedia MCS-48 / 8035 (Processor) (Eng)
UPD80C35 Processor Datasheet

Intel 8039 (Processor)

Intel 8039 processor In 1976 introduceerde Intel de MCS-48 microcontroller-serie, en de 8039 was één van de varianten. In het begin maakten deze chips gebruik van NMOS-technologie, later kwamen ze beschikbaar in CMOS technologie. De MCS-48-serie werd later vervangen door de zeer succesvolle MCS-51-serie, maar de chips worden nog steeds gebruikt in goedkope consumentenelektronica zoals tv-afstensbedieningen, computertoetsenborden. en speelgoed. Ten opzichte van een 8048 heeft de 8039 geen interne ROM en 128 x 8 bytes intern RAM geheugen.
wikipedia MCS-48 / 8035 (Processor) (Eng)
P8039AHL Processor Datasheet

MC6821 (Peripheral Interface Adapter)

MC6821 (Peripheral Interface Adapter) In 1974 introduceerde Motorola samen met de MC6800-familie een PIA (Peripheral Interface Adapter) zoals de MC6820 als een 40-pins DIP chip om de 6800 processor. Het leverde 20 I/O-lijnen (twee 8-bits bidirectionele poorten en 4 besturingslijnen voor henshaking en het genereren van interrupts. In 1976 Motorola schakelde de MC6800 familie over op nieuwe technologie, zodat de MC6820 de MC6821 werd. De MC6820 werd gebruikt in de Apple I als interface voor het ASCII toetsenbord en de video weergave. De Teny Color Computer gebruikte twee MC6821’s om I/O-toegang te bieden en video I/O, audio en renapparatuur.
wikipedia MC6820 (Peripheral Interface Adapter) (Eng)
PMC6821 (PIA) Datasheet

TMS9900 (Processor)

MC6821 (Peripheral Interface Adapter) In juni 1976 introduceerde Texas Instruments de TMS9900 processor en het was een van de eerste commercieel verkrijgbare 16-bits microprocessors in één chip. Het implementeerde Texas Instruments TI-990 minicomputerarchitectuur in een enkele chip, maar het 64 pins DIP-formaat maakte het duurder om te implementeren in kleinere machines dan de meer gebruikelijke 40-pins DIP chips. Het is dan ook een kolossale chip. Het werd gebruikt in de eigen thuiscomputer van Texas Instruments, de TI-99/4. Het heeft een beetje vreemde architectuur vergeleken met enere microprocessors uit die tijd, gezien de oorsprong vanuit een minicomputer.
wikipedia TMS9900 (16-bit microprocessors) (Eng)
TMS9900 DatasManual

P8274 (Intel – Multi Protocol Serial Controller)

 P8274 (Intel - Multi Protocol Serial Controller) In 1976 (voor zover ik weet) introduceerde Intel de P8274 Multi Protocol Serial Controller. Het had twee onafhankelijke full-duplex zenders en ontvangers, het kon asynchrone, byte-synchrone en bit-synchrone bewerkingen uitvoeren en was volledig compatibel met de 8048, 8051, 8085, 8088, 8086 CPU’s. Het ondersteunde 4 onafhankelijke DMA-kanalen.
P8274 DatasManual

8042 (MCU)

8042 (MCU) IIn 1976 introduceerde Intel ook de MCS-48 microcontroller-serie en de eerste leden waren 8048, 8035 en 8748. De 8048 is waarschijnlijk het meest prominente lid van de familie. In het begin waren deze chips NMOS, tegen het begin van de jaren tachtig kwamen ze beschikbaar in CMOS-technologie. De MCS-48-serie heeft een aangepaste Harvard-architectuur, met intern of extern programma-ROM en 64-256 bytes intern (on-chip) RAM. De I/O wordt toegewezen aan zijn eigen adresruimte, gescheiden van programma’s en gegevens. De MCS-48-serie werd uiteindelijk vervangen door de zeer succesvolle MCS-51-serie, hij wordt nog steeds gebruikt omdat hij erg goedkoop is en een zeer eenvoudige effectieve instructie set heeft. Het wordt veel gebruikt in grote, goedkope elektronische apparaten zoals tv-afstensbedieningen, computertoetsenborden en speelgoed.
wikipedia 8048 (Eng)
MBL8042 DatasManual

1977

6802 (Processor)

6802 processor In 1977 introduceerde Motorola de 6802 processor gebaseerd op het al beroemde 6800 ontwerp. Het was een 8-bits microprocessor en het had een 16-bits adresbus en het kon rechtstreeks toegang krijgen tot 64 KB geheugen. De 6800 processor heeft 72 instructies met zeven adresseringsmodi voor een totaal van 197 opcodes. De MC6802 had ook 128 bytes RAM en een interne klokoscillator op de chip.
wikipedia 6800 (Processor) (Eng)
MC68A02 Processor Datasheet

Motorola 6808 (Processor)

6808 processor Deze processor os een MC6802 met defecte interne ram, het ius dus eigenlijk een MC6800 met als extra een interne klokoscillator op de chips zoals de MC6802 maar dan zonder de interne RAM.
wikipedia 6800 (Processor) (Eng)
MC68A02 Processor Datasheet

MC14500BCP (Processor)

MC14500BCP processor In 1977 introduceerde Motorola ook de MC14500B (ICU) ter vervanging van relaissystemen en programmeerbare logische controllers en seriële datamanipulatie. De processor ondersteunt 16 commeno’s en werkt op een frequentie van 1 MHz. Het heeft geen programmateller (PC), in plaats daarvan stuurt een kloksignaal een aparte chip aan de dus ook ondersteunde geheugengrootte bepaalt. De ICU architectuur lijkt op die van de DEC PDP-14-computer.
wikipedia MC14500 (Processor) (Eng)
MC14500 Processor Datasheet

MC6845 (Display controller)

MC6845 video display controller In 1977 introduceerde Motorola de MC6845 Display controller en deze werd in de jaren tachtig veel gebruikt in 8-bits computer systemen. Het is oorspronkelijk ontworpen voor de Motorola 6800 CPU, maarwerd ook gebruikt voor veel meer processors zoals de Zilog Z80 en MOS 6502. Het was niet een allesomvattende oplossing, het had enere chips nodig en de implementatie van die hardware was geheel aan de ontwerper. Het werd gebruikt in de BBC Micro, Amstrad CPC en Videx VideoTerm weergave kaarten voor de Apple II. Het werd ook gebruikt in vroege grafische adapterkaarten voor de IBM PC, zoals de MDA, Hercules Graphics Card en Color Graphics Adapter (CGA).
wikipedia MC6845P (Display controller) (Eng)
MC6845 Processor Datasheet

6522 (Versatile Interface Adapter VIA)

6522 Versatile Interface Adapter In 1977 introduceerde MOS Technology de 6522 Versatile Interface Adapter (VIA), als een I/O-poortcontroller voor de 6502-familie van microprocessors. Het leverde twee bidirectionele 8-bits parallelle I/O-poorten, twee 16-bits timers en een 8-bits schuifregister voor seriële communicatie. De 6522 werd veel gebruikt in computers in de jaren 1980, met name Commodore’s machines, de Apple III, Oric-1 en Oric Atmos, BBC Micro, Victor 9000 / Sirius 1, de Apple Macintosh en de Vectrex game console.
wikipedia 6522 (Versatile Interface Adapter VIA) (Eng)
6522 Datasheet

P8155 (2048 bit sram – I/O port – timer)

P8155 (2048 bit sram - I/O port - timer) In 1977 introduceerde Intel de P8155 als ondersteuningschip voor de 8085 (en 8088) processor. Het bevat 2038 bits (256 x 8 bytes) statische Ram, twee programmeerbare 8 bit I/O poorten, een 6 bit programmeerbare I/O poort en een 14 bit programmeerbare timer/counter. Het was een poging van Intel om het aantal chips in 8085- en 8088-ontwerpen te verlagen.
P8155 Datasheet

1978

Motorola 6809 (Processor)

6809 processor In 1978 introduceerde Motorola de 6809, een 8-bit microprocessor met enkele 16-bit features. Het was source compatibel met Motorola 6800, maar bood enkele goede verbeteringen. Vergeleken met enere populaire processors uit die tijd was hij erg duur (4 keer de prijs van een Z80). De 6809 werd gebruikt in de TRS-80 Color Computer, Dragon 32/64, SuperPET, de beroemde Vectrex spelconsole en enkele arcade-machines. Ik heb deze processor nooit geprogrammeerd, maar het is leuk om er een MC6809P te hebben.
wikipedia 6809 (Processor) (Eng)
MC6809P Processor Datasheet

Motorola 6803 (Processor)

6803 processor In 1978 introduceerde Motorola ook de 6803, een 8-bit microprocessor met enkele 16-bit features. Het was source-compatibel met Motorola 6800, maar bood wat goede verbeteringen zoals de 6801 en 6802. De MC6803 had geen ROM en minder verschillende busconfiguraties. Ik heb deze processor nooit geprogrammeerd, maar het is leuk om een MC6803P te hebben.
wikipedia 6800 (Processor) (Eng)
MC6803P Processor Datasheet

Motorola 6840 (Programmable Timer Module PTM)

Motorola 6840 Programmable Timer Module PTM In 1978 introduceerde Motorola ook de 6840, de MC6840 programmable counter had drie 16-bit binary counters die gebruikt konden worden voor frequentie metingen, event counting of interval timing.
wikipedia 6800 (Processor) (Eng)
MC6840 Datasheet

Intel 8086 (Processor)

8086 processor In 1978 bracht Intel de 8086 processor op de markt, de 8086 werd ook wel iAPX 86 genoemd en het is een 16-bits microprocessor. De 8086 was de basis van alle x86-architectuur die Intel’s meest succesvolle lijn van processors werd. Ik gebruikte deze processor veel en de segmentregisters waarmee de 8086 CPU toegang kreeg tot één megabyte geheugen was een “pain in the ass” voor veel programmeurs. Vroeger verving ik de Intel-processors vaak door de NEC-versies.
wikipedia 8086 (Processor) (Eng)
D8086-2 en D8086 Processor Datasheet

AY-3-8910A (Sound)

AY-3-8910A (Sound) In 1978 introduceerde General Instrument de AY-3-8910 soundchip. Het is een 3-stemmige programmeerbare geluidsgenerator (PSG). De AY-3-8910 en zijn varianten waren gebruikt in veel arcadespellen en flipperkasten, maar het was ook de typische geluidschip in de Intellivision- en Vectrex videogameconsoles, de Amstrad CPC, Oric-1, Color Genie, MSX en later ZX Spectrum thuiscomputers. Het werd ook gebruikt in de Mockboard- en Cricket-geluidskaarten voor de Apple II en de Spraak-/geluidscartridge voor de TRS-80 kleurencomputer. Na de spin-off van General Instrument van Microchip Technology in 1987, werd de chip een paar jaar verkocht onder het merk Microchip. Het werd ook onder licentie door Yamaha vervaardigd als de YM2149F, de Atari ST gebruikt deze versie. Ik heb geluk dat ik een paar AY-3-8910A chips heb in mijn webshop.
wikipedia AY-3-8910A (Eng)
AY-3-8910A Datasheet

SN76477N (Sound generator)

SN76477NE (Sound generator) In 1978 introduceerde Texas Instruments de SN76477 complexe geluidsgenerator. De chip wordt meestal gebruikt als generator voor geluidseffecten in arcadespellen en speelgoed. Het gebruik van de SN76477 in een muzikale context wordt beperkt door het feit dat het moeilijk was om de toonhoogte te bepalen. De SN76477 genereert complexe audio die de uitgangen van een LFO, VCO en ruisgenerator combineert via een envelop ADSR. Het geluid generatie wordt geregeld door het leveren van stuurspanningen, logische niveaus en verschillende weerstens- en condensatorwaarden.
wikipedia SN76477 (Eng)
SN76477 Datasheet

1979

Motorola 68000 (Processor)

68000 processor In 1979 introduceerde Motorola de 68000 processor, een 16/32-bit complexe instructieset (CISC) microprocessor. Het heeft een 32-bits instructieset, 32-bits registers en een 16-bits interne databus, de adresbus is 24 bits en de 68000 gebruikt een 16-bits ALU. De processor werd gebruikt in een paar high-end computers zoals de Macintosh, Amiga en Atari ST en de Mega Drive-console. Deze stonden allemaal bekend om hun geweldige grafische mogelijkheden. Tegenwoordig is de 68000-architectuur nog steeds in gebruik. Deze systemen waren destijds te duur voor mij en dus heb ik nog nooit een 68000-processor geprogrammeerd.
wikipedia 68000 (Processor) (Eng)
MC68000 Processor Datasheet

Motorola 68901 (Multi-Function Peripheral)

MC68901P In 1979 introduced Motorola ook de MC68901, een Multi-Function Peripheral (MFP) en lid van de M68000-familie van renapparatuur. De MFP kan rechtstreeks worden aangesloten op: de MC68000-processor via een asynchrone busstructuur. Zowel vectGred als polled interrupt-schema’s worden ondersteund, waarbij de MFP een uniek vectornummer levert voor elk van de 16 interrupt bronnen. Bovendien zijn er henshake-lijnen voorzien om de DMAC-interface te vergemakkelijken.
MC68901P Multi-Function Peripheral Datasheet

Intel 8088 (Processor)

8088 processor Intel introduceerde op 1 juni 1979 de Intel 8088, de processor heeft een 8-bit externe databus in plaats van de 16-bit bus van de 8086. De 16-bit registers en het adresbereik van één megabyte zijn ongewijzigd, het was bedoeld als een versie van de 8086 voor een goedkoper systeem. De originele IBM PC gebruikte de 8088 op een klok frequentie van 4,77 MHz. Sommige ingenieurs van IBM wilden graag een enere (betere) processor, maar Intel bood de beste prijs. Deze processor was het begin van het geheel x86-processorreeks van Intel.
wikipedia 8088 (Processor) (Eng)
M80C88A Processor Datasheet

TMS9918 (Video controller)

TMS9918 In 1979 introduceerde Texas Instruments de TMS9918 Video Display Controller (VDC). Dit is een beroemde videoprocessor die in veel systemen werd gebruikt, zoals de ColecoVision, CreatiVision, Memotech MTX, MSX, SG-1000/SC-3000, Spectravideo, Sord M5, Sega game gear, Texas Instruments TI-99/4 en de Casio PV-2000. De TMS9918 genereert zowel op rasters gebaseerde karakterafbeeldingen (gebruikt om tekst of achtergrondafbeeldingen weer te geven) als sprites die worden gebruikt voor het tonen en verplaatsen van voorgrond objecten. Ik heb voor deze processor geprogrammeerd in mijn eerste MSX-1 computer. De TMS9928 en TMS9929 zijn varianten op de TMS9918.
wikipedia TMS9918 (Video controller) (Eng)
TMS9918A Processor Datasheet

MC6847P (Video controller)

MC6847P In 1979 introduceerde Motorola de MC6847P video display controller (VDC). Het werd gebruikt in de TRS-80 Color Computer, Dragon 32/64, Laser 200, TRS-80 MC-10, NEC PC-6000-serie, Acorn Atom, en het is een relatief eenvoudige display generator in vergelijking met enere display chips van die tijd. Het is in staat om tekst en afbeeldingen weer te geven in een ruwweg vierkante weergavematrix van 256 pixels breed en 192 pixels hoog. De ROM bevat een lettertype van 5 x 7 pixels, compatibel met 6-bits ASCII. Effecten zoals inverse video of gekleurde tekst zijn mogelijk. Het kan negen kleuren weergeven. De lage schermresolutie was een noodzaak om televisietoestellen als beeldschermen te kunnen gebruiken.
wikipedia MC6847P (Video controller) (Eng)
MC6847 Datasheet

SAA5050 (Video controller)

SAA5050 In 1979 introduceerde Mullard de SAA5050, een karaktergeneratorchip voor het implementeren van de teletekstkarakterset. De SAA5050 werd gebruikt in met teletekst uitgeruste televisietoestellen, viewdata terminals en microcomputers zoals de Philips P2000, Acorn System 2 en BBC microcomputer. De chip gegenereerde de geschikte video uitgang signalen voor een 7-bits tekencode die het teken op de tekstregel op het scherm toonde. De resolutie op volledig scherm gegenereerd door de SAA5050 was 480 × 500 pixels, wat overeenkomt met 40 × 25 tekens.
wikipedia SAA5050 (Video controller) (Eng)
SAA5050 Datasheet

Zilog Z8 (Processor)

Z86E0208 In 1979 introduceerde Zilog de Z8-microcontroller-architectuur. Een van de kenmerken was tot 4.096 snelle on-chip registers die kunnen worden gebruikt als accumulatoren, pointers of als gewoon willekeurig toegankelijk geheugen (RAM). Een 16-bits adresruimte voor tussen 1 kB en 64 kB aan PROM-, ROM- of flashgeheugen en er is zelfs een tweede 16-bits adres ruimte. On-chip renapparatuur omvat analoog naar digitaal omzetter, Serial Peripheral Interface (SPI) bus en I²C-kanalen, IrDA-encoders/decoders enz. Er zijn versies met 8 tot 80 pinnen en heel veel verschillende uitvoeringen.
wikipedia Zilog Z8 Processor (Eng)
Z86E0208 Datasheet

P8256AH (Support Intel)

P8256AH Deze chip is een Intel Multifunctionele microprocessor-ondersteuningscontroller met een SIO (Seriële interface) en PIO (Parallelle interface), timers en een Interrupt-controller, alles in één chip. Ik weet niet in welk jaar het uitkwam en ik heb er nooit een gebruikt, maar ik heb berekend dat de chip rond het jaar 1979 uitgekomen moet zijn.
P8256AH Datasheet

D8255AC (Support NEC)

D8255AC Deze chip is een PIO (parallel Input Output) apparaat van NEC met 24 programmeerbare I/O lijnen. Het kan op dezelfde manier worden gebruikt als een Z80 PIO. Ik weet het niet het jaar waarin het uitkwam en ik heb er nooit een gebruikt, maar ik heb berekend dat de chip rond het jaar 1979 uitgekomen moet zijn. NEC produceerde alle Intel chips onder licentie vanaf 1976.
D8255AC Datasheet

D8259AC (Programmable Interrupt Controller NEC)

D8259AC Programmable Interrupt Controller NEC De 8259 is een Programmable Interrupt Controller (PIC) ontworpen voor de Intel 8085 en Intel 8086 microprocessors. De 8259 combineert meerdere interrupt-ingangsbronnen in een enkele interrupt-uitgang naar de host-microprocessor, waardoor de interrupt-niveaus die beschikbaar zijn in een systeem worden uitgebreid. De 8259A was de interruptcontroller voor de ISA-bus in de oorspronkelijke IBM PC en IBM PC AT en IBM gebruikte ook de NEC chips hiervoor. NEC produceerde alle Intel chips onder licentie vanaf 1976.
D8259AC Datasheet

1980

Intel 8031 (Processor)

Intel 8031 In 1980 bracht Intel de 8031 (familie van de 8051) microcontroller uit en ik heb deze gebruikt in mijn eerste modemontwerp met en externe eprom. De 8031 is net als de 8051 een acht-bits CISC-processor. De 8031 had geen rom en slechts 128 bytes ram aan boord, wat een grote uitdaging was voor de programmeur. Stenaard had de processor een aantal timers meerdere interrupt lijnen en een interne seriële uart aan boord en veel programmeerbare I/O-pinnen. De processor was niet duur en werd gebruikt als centrale processor in veel apparaten. Zelfs venaag de dag wordt deze processor nog steeds gebruikt en is hij nog steeds beschikbaar. Ik heb een originele 8031 processor in mijn webshop, maar ook een aantal varianten zoals de SAB8031 (Siemens) en de P80C321 (AMD).
wikipedia Intel 8051 processor
8031 Processor Datasheet

Intel 8051 (Processor)

Intel 8051 In 1980 bracht Intel ook de 8051 microcontroller uit en ik heb zelf veel schakelingen en apparaten (modems) met deze processor ontworpen. De 8051 is een acht-bits CISC-processor die in vele soorten op de markt is gebracht, ook door vele enere fabrikanten waarvan Atmel de bekendste is. Het systeem had normaal gesproken 4 kb rom en 256 bytes ram aan boord wat een grote uitdaging was voor de programmeur. Maar er zou ook 64 kb ROM en 64 kb RAM extern kunnen worden aangesloten, wat veel I/O-pinnen opoffert. Stenaard had de processoreen aantal Timers, meerdere interrupt lijnen en een interne seriële uart aan boord en veel programmeerbare I/O-pinnen. De processor was ook niet duur en werd in veel apparaten als centrale processor gebruikt. Zelfs venaag de dag wordt deze processor nog steeds gebruikt en is hij nog steeds beschikbaar. Ik heb een aantal varianten van de 8051 processor in mijn webshop.
wikipedia Intel 8051 processor
8051 Processor Datasheet

Intel P8344AH (Processor)

Intel P8344AH In 1980 bracht Intel ook de P8344AH uit, een enere variant van de 8051-microcontroller. De 8051 is een acht-bits CISC-processor dat in vele soorten op de markt is gebracht, ook door vele enere fabrikanten waarvan Atmel de bekendste is.
wikipedia Intel 8051 processor
P8344AH Processor Datasheet

Intel P8044AH (Processor)

Intel P8044AH De Intel P8044 is hetzelfde als de P8344, maar de P8044 heeft on chip 4Kb factory masked rom aan boord.

wikipedia Intel 8051 processor
P8344AH Processor Datasheet

SN76489AN (Sound generator)

SN76489AN  (Sound generator) In 1980 ontwikkelde Texas Instruments de SN489 geluidschip. Het is een complexe geluidsgenerator en heeft 3 programmeerbare toongeneratoren, een programmeerbare witte ruisgenerator en programmeerbare demping. De SN76489 was oorspronkelijk ontworpen om te worden gebruikt in de TI-99/4 computer, waar het eerst de TMS9919 en later SN94624 heette, toen het buiten TI werd verkocht, werd het omgedoopt tot de SN76489. Sega gebruikte deze chip in de gameconsoles Sega Master System, Game Gear en Sega Genesis.
wikipedia SN76489AN
SN76489AN (Sound generator) Datasheet

P80C152 (UNIVERSAL COMMUNICATION CONTROLLER 8051)

P80C152 (UNIVERSAL COMMUNICATION CONTROLLER 8051) In 1980 introduceerde Intel de P80C152, een Universal Communications Controller gebaseerd op de 8051 8-Bit microcontroller-architectuur. Het had een 8K Factory Mask Programmeerbare ROM en was bedoeld als een multi-protocol seriële communicatiecontroller voor SDLC / HDLC, CSMA / CD en SDLC / HDLC of door de gebruiker te definiëren protocollen, Full Duplex / Half Duplex extra I/O-poorten en nog veel meer. Ik heb er een omdat het een op 8051 gebaseerd chip is.
P80C152 Datasheet

P8237A (Intel DMA CONTROLLER)

P8237A (Intel DMA CONTROLLER) In 1980 introduceerde Intel de 8237, een DMA-controller (Direct Memory Access) die deel uitmaakt van de MCS 85-microprocessorfamilie. Het maakt gegevensoverdracht mogelijk tussen geheugen en de I/O met verminderde belasting van de hoofdprocessor van het systeem. De 8237 is een vierkanaals device dat kan worden uitgebreid met een willekeurig aantal DMA-kanaalingangen. Een enkele 8237 werd gebruikt als de DMA-controller in de oorspronkelijke IBM PC en IBM XT. De IBM PC AT heeft er nog een toegevoegd 8237 in master-slave-configuratie, waardoor het aantal DMA-kanalen werd vergroot van vier naar zeven.
wikipedia P8237
D8237 Datasheet

MOS6561 (VIC video chip)

MOS6561   (VIC video chip) In 1980 bracht Commodore de VIC-20 computer op de markt en deze had een MOS6561(VIC videochip) aan boord. De geschiedenis van deze chip gaat terug tot 1977 en het waren Mos en Commodore die de definitieve versie maakten. De functies omvatten: 16 kB adresruimte voor scherm, teken- en kleurgeheugen, 16 kleuren twee selecteerbare tekengroottes, videoresolutie (176 × 184) VIC-20, hoewel tot 256 × 280 mogelijk is op PAL, 4-kanaals geluidssysteem (3 blokgolf + “witte” ruis + globale volume-instelling), on-chip DMA, twee 8-bit analoog-naar-digitaal converters, ondersteuning voor lichtpennen. Programmeerbare karakters zijn de enige manier om afbeeldingen en animaties op de VIC te maken, aangezien de chip geen sprites of een naar alle punten adresseerbare bitmapmodus heeft.
wikipedia MOS6561 VIC video chip

1981

TMS9914 (General bus adapter)

TMS9914ANL (General bus adapter) In 1981 introduceerde National Instruments de TMS9914, een interfacebusadapter voor algemeen gebruik. Het is ontworpen om alle functies te implementeren definiëren in de IEEE 488-1975-stenaard. Het was een van de ondersteunende chips van de TMS9900-processor, ik weet niet zoveel over deze chip, of waar het werd gebruikt.
TMS9914 (General bus adapter) Datasheet

uPB8284AD (CLOCK GENERATOR en DRIVER)

uPB8284AD  (CLOCK GENERATOR en DRIVER) Ik weet de exacte introductiedatum niet, maar berekend dat het rond 1981 zou moeten zijn toen NEC begon met het maken van Intel-compatibele chips. Deze chip is een klokgenerator en driver voor de Intel 8086 en 8088 processor en een vervanging voor de Intel 8284 chip. Omdat ik ook een variant van chips verzamel heb ik er ook een, het is een kleine 18-pins chip.
uPB8284AD Datasheet

1982

NEC 8086 (Processor)

8086 processor In 1982 bracht NEC ook een 8086 processor variant op de markt, deze processors waren compatibel met de originele Intel 8086-processor uit 1978. De 8086 werd ook wel iAPX 86 en het is een 16-bits microprocessor. De 8086 was de basis van alle x86-architectuur die Intel’s meest succesvolle lijn van processors werd. Ik gebruikte deze processor veel en de segmentregisters waarmee de 8086 CPU toegang kreeg tot één megabyte geheugen was een “pain in the ass” voor veel programmeurs. Vroeger verving ik de Intel-processors vaak door de NEC-versies.
wikipedia 8086 (Processor) (Eng)
D8086-2 en D8086 Processor Datasheet

Hitachi HD63B03 (Processor)

6803 processor Ik kan niet de exacte releasedatrum vinden van deze chip maar ik ga er van uit dat deze op hetzelfde moment werd uitgebracht als de HD6209, in 1982 dus. Eigenlijk is het een sterk verbeterde versie van de Motorola 6809, het is CMOS, het staat een hogere kloksnelheid toe, het voerde instructies sneller uit.
HD63B03R Processor Datasheet

Hitachi HD63C09P (Processor)

6809 processor n 1982 bracht Hitachi’s de CMOS-versie van de Motorola 6809 microprocessor uit, de 6309. Eigenlijk is het een sterk verbeterde versie van de Motorola 6809, het is CMOS, het staat een hogere kloksnelheid toe, het voerde instructies sneller uit, het had extra registers en extra instructies, meestal om de extra registers ook te benaderen.
wikipedia Hitachi 6309 (Processor) (Eng)
HD63C09P Processor Datasheet

Motorola MC68008P10 (Processor)

68008 processor In 1982 bracht Motorola de 68008 uit als een 8/32-bit microprocessor, het is een versie van de stenaard Motorola 68000 met een 8-bit externe databus, evenals een kleinere adresbus. De 68008 was verkrijgbaar met 20 of 22 adreslijnen (respectievelijk 48-pins of 52-pins pakket) die 1 MB of 4 MB adresruimte toegestaan versus de 16 MB adresseerbaar geheugen op de 68000. De 68008-processor is ontworpen om te werken met goedkopere en eenvoudigere 8-bit geheugenchips, maar hierdoor is hij ook half zo snel als een stenaard 68000-processor, maar nog steeds veel sneller dan de 8-bits concurrenten.
wikipedia 68008 (Processor) (Eng)
MC68008 Processor Datasheet

Intel 80186 (Processor)

80186 processor In 1982 introduceerde Intel de 80186-processor (ook bekend als de iAPX 186), deze was gebaseerd op de Intel 8086 en had een 16-bit externe databus gemultiplext met een 20-bit adres bus. De 80188 variant, met een 8-bit externe databus, was ook beschikbaar. De 80186 -serie was over het algemeen bedoeld voor embedded systemen. De originele IBM-PC was niet hardware compatibel met de 80186 en dus verenerde de hardware in een IBM PC/AT. De processor werd ook in veel enere pc’s gebruikt en ik heb een veel assembler / C-programmering voor deze processor gedaan.
wikipedia 80186 (Processor) (Eng)
80186 Processor Datasheet

Intel 80286 (Processor)

80286 processor In 1982 introduceerde Intel ook de 80286-processor (ook bekend als de iAPX 286) die was gebaseerd op de 8086 en 80186 CPU’s met een apart, niet gemultiplexte adres en databussen en ook de eerste met geheugenbeheer en brede beschermingsmogelijkheden. Een goede eigenschap was dat het backwards code compatibel was met de eerdere Intel 8086- en 8088 processors. De 80286 werd gebruikt in de IBM PC/AT, geïntroduceerd in 1984 en daarna veel gebruikt in de meeste PC/AT-compatibele computers. ik heb veel assembler / C-programmering gedaan voor deze processor.
wikipedia 80286 (Processor) (Eng)
80286 Processor Datasheet

Intel 80287 (Floating-point Co-Processor)

80286 processor In 1982 introduceerde Intel ook de 80287 Floating-point Co-Processor, het is de wiskundige coprocessor voor de Intel 80286-serie microprocessors. De x87 biedt single-precisie, dubbele precisie en 80-bit dubbel uitgebreide precisie binaire floating-point berekening volgens de IEEE 754-1985-standaard. Standaard gebuiken de x87-processors allemaal intern 80-bits double-extended precisie.
wikipedia 80287 Floating-point Co-Processor (Eng)
80287 Floating-point Co-Processor Datasheet

TMS9937 (Video Timers Controller)

TMS9937 (Video Timers Controller) In 1982 introduceerde Texas Instruments de TMS9937 enkele·chip video timer/controller, een 40·pins chip die video signalen kon genereren voor stenaard- en niet stenaard CRT monitoren, zowel interlaced als niet-interlaced. Ik heb niet zoeveel informatie over deze chip behalve de datasheet.
TMS9937 Datasheet

MOS6510 (Processor)

MOS 6510 (Processor) Ik weet niet precies wanneer deze processor uitkwam, maar het was een speciale productie voor de Commodore 64, dus ik heb deze processor gedateerd op de datum van de C64. De MOS Technology 6510 is een 8-bit microprocessor en het is een licht gewijzigde vorm van de zeer succesvolle 6502. De belangrijkste verenering ten opzichte van de 6502 was de toevoeging van een 8-bits I/O-poort voor algemeen gebruik en dat de adresbus tristate gemaakt kan worden.
wikipedia MOS 6510 (Processor) (Eng)
MOS6510 Processor Datasheet

D71059C (Interrupt controller)

D71059C (Interrupt controller) In 1983 introduceerde NEC de uPD71059 Interrupt Control Unit als een low power CMOS programmeerbare interruptcontroller voor microcomputersystemen en het kan acht interruptverzoeken verwerken waarbij aan elk een prioriteitsniveau wordt toegekend. Het draagt ​​de interrupt over met de hoogste prioriteit over naar de processor met informatie over het interruptadres. Door 8 slaves in cascade te schakelen, kan het 64 interrupts verwerken.
D71059C Datasheet

SCN68562 (DUSCC)

SCN68562  (Dual universal serial comm. controller (DUSCC) In 1983 introduceerde Signetics (voor zover ik weet) de SCN68562 Dual universele seriële comm. controller of (DUSCC), een 64 dip IC een single-chip MOS-LSI communicatieapparaat dat twee onafhankelijke, multi-protocol, full-duplex ontvanger/zenderkanalen in één chip biedt. Het ondersteunt bitgeoriënteerde en tekengeoriënteerde synchrone datalink protocollen evenals asynchrone protocollen. De SCN68562 is gekoppeld aan de 68000 MPU’s via asynchrone busbesturingssignalen en is in staat tot programma-polled, interrupt-gedreven, block-move of DMA-gegevensoverdracht.
SCN68562 Datasheet

P82586 (Ethernet chip)

P82586  (Ethernet chip) In 1982 was Intel zeer actief in de Ethernet-stenaardisatie en -implementatie en introduceerden ze een Ethernet-controllerchip voor hun 80186 en 80188 processors. Ik weet de exacte datum van de chip niet, maar als ik de geschiedenis van Ethernet en Intel lees, zou het rond dit jaar moeten zijn. Het is een grote chip met 48 pinnen en het ondersteunde netwerken tot 10 Mb/s.
P82586 Datasheet

1983

YM2149F (Sound)

YM2149F (Sound) In 1983 produceerde Yamaha de YM2149, een kloon van de beroemde AY-3-8910 (zie hierboven) onder licentie van General Instrument. Deze chip werd ook in veel thuiscomputers gebruikt als vervanging van de AY-3-8910. De Yamaha YM2149 deelt dezelfde pinout als de AY-3-8910 met het kleine verschil dat pin 26 de master klok kan halveren als deze laag getrokken werd. Als de pin niet aangesloten werd, zou het een AY-3-8910 vervangen.
wikipedia YM2149F (Dutch)
YM2149F Datasheet

MC68230 (Parallel Interface/Timer)

MC68230  (Parallel Interface/Timer) In 1983 introduceerde Motola de MC68230 (Parallel Interface/Timer) chip, een 64 dip chip in lijn met de grote chips die Motorola maakte. Het was een double buffered I/O chip voor de MC68000 series processors, de I/O poorten konden zowel 8 als 16 bits breed zijn en de timer kon gebruikt worden voor interrupts, wave generation, time measurements en watchdog timer.
MC68230 Datasheet

EM83050 (Keyboard controller PC)

EM83050   (Keyboard controller PC) In 1983 werd de EM83050H-microcontroller bedoeld als toetsenbord-encoder, speciaal ontworpen voor IBM PC XT/AT en alle compatibele machines. De EM83050H regelt alle scancodes, de status van drie LED’s, scantiming en communicatie tussen het toetsenbord en de pc. Het is eenvoudig te implementeren voor een high-performance, goedkoop toetsenbord met de minimale externe componenten.
EM83050 Datasheet

MOS906114-01 (Commodre PLA chip)

MOS906114-01  (Commodre PLA chip) In 1983 kwam de Commodore 64 op de markt en deze gebruikte de MOS906114-01 PLA chip. De PLA wordt gebruikt om chipselectiesignalen te maken om te bepalen welke chip op de databus moet worden aangesloten. Daarom is de PLA verantwoordelijk voor het dicteren van de geheugenmap van de C64 en maakt het de implementatie van bankswitching mogelijk. Commodore-ingenieur James Redfield zei dat het de “lijmlogica was om alles samen te verbinden”. De chip was erg gevoelig en het meest defecte onbderdeel van de Commodore 64, tot een betere versie werd uitgebracht.
MOS906114-01 Commodre PLA chip web pagina

1984

Atmel AT89C2051 (Processor)

Atmel at89c2051 De Atmel AT89C2051-processor was gebaseerd op de Intel 8051-architectuur, maar in een 20-pins dip behuizing. Ik weet niet wanneer het voor het eerst uitkwam, maar ik weet dat Atmel was opgericht in 1984. De AT89C2051 biedt de volgende stenaardfuncties: 2K bytes Flash, 128 bytes RAM, 15 I/O-lijnen, twee 16-bit timer/counters, een vijf vector two-level interrupt-architectuur, een full-duplex seriële poort, een nauwkeurige analoge comparator, on-chip oscillator en klokcircuits. De AT89C2051-processor wordt gebruikt in verschillende digitale klok ontwerpen. Zelfs venaag de dag wordt deze processor nog steeds gebruikt en is hij nog steeds beschikbaar.
wikipedia Atmel   wikipedia Intel 8051 processor
8051 Processor Datasheet

NEC V20 (Processor)

NEC V20 processor In 1984 maakte NEC de V20 als pin-compatibel met de Intel 8088, maar veel sneller, ik schakelde van mijn 8088-processor in mijn pc over naar een V20 om wat betere prestaties te krijgen. De V20 bood ook een modus aan die een Intel 8080 emuleerde. Eind 1984 diende Intel een aanklacht in tegen NEC en beweerde dat de microcode in de V20 en V30 inbreuk maakte op de patenten voor de 8088 en 8086 processors. (Zie V30).
wikipedia NEC V20 / V30 processor
NEC V20 / V30 Users Manual (pdf)

NEC V30 (Processor)

NEC V30 processor In 1984 maakt NEC ook de V30 als pin-compatibel met de Intel 8086, maar veel sneller, ik verving mijn 8086-processor in mijn pc ook voor een V30 om wat prestaties te krijgen. De V30 werd ook gebruikt in de Psion Series 3, de NEC PC-9801VM, de Olivetti PCS86 en in verschillende arcade-machines. Eind 1984 diende Intel een aanklacht in tegen NEC en beweerde dat de microcode in de V20 en V30 inbreuk maakten op zijn patenten voor de 8088- en 8086-processors. In zijn uitspraak heeft de rechtbank bepaald dat de microcode in het controlearchief een computerprogramma, en dus auteursrechtelijk beschermd is, maar stelde ook vast dat NEC niet zomaar de microcode van Intel kopieerde, en dat de microcode in de V20 en V30 voldoende verschilde van die van Intel om geen inbreuk te maken op de Intel octrooien. Ik heb nog steeds één processor vanwege de prachtige geschiedenis en deze rechtszaak over processors eas ook de basis van de wettigheid van reverse engineering.
wikipedia NEC V20 / V30 processor
UPD70116 / V30 Processor Datasheet

Motorola 68HC11 (Processor)

6811 processor In 1984 introduceerde Motorola de 68HC11 8-bit microcontroller (µC) familie, nu geproduceerd door NXP Semiconductors. De 68HC11 is gebaseerd op de Motorola 6800 microprocessor en wordt veel gebruikt in automobieltoepassingen, barcodelezers, hotelkaartsleutelschrijvers, robotica en verschillende embedded systemen. De MC68HC11A8 was de eerste microcontroller die een CMOS EEPROM bevatte. De HC11-instructieset is backward compatibel met de 6800, maar heeft een extra Y-indexregister en 16-bits instructies en registercombinaties.
wikipedia NEC 68C11 processor
68HC11 Processor Datasheet

YM2203C (Sound generator)

YM2203C  (Sound generator) In 1984 introduceerde Yamaha de YM2203, ook wel OPN genoemd, een geluidschip gebaseerd op FM Operator-technologie. Heeft een zeskanaals (3 FM en 3 SSG) geluidskanalen en deze chip werd in de jaren tachtig en begin jaren negentig in allerlei videogame- en computersystemen gebruikt. Intern was het een variatie op de Yamaha’s YM2149F SSG chip.
wikipedia YM2203C Sound generator
YM2203C (Sound generator) Datasheet

HCS10017 (Oric Atmos ULA)

HCS10017  (Oric Atmos ULA) In 1984 werd de Oric Atmos-computer uitgebracht en deze gebruikte een semi-custom ASIC (ULA) voor de videoweergave die ook de interface tussen de processor en het gehuegen verzorgde. De twee video modi zijn een tekstmodus met lage resolutie, met een door de gebruiker gedefinieerde karakterset met 28 rijen van 40 tekens en een modus met hoge resolutie mode met 200 rijen van 240 pixels boven drie regels tekst. In Bulgarije werd de Atmos gekloond met de naam Pravetz 8D en ik kreeg mijn chip uit Bulgarije.
HCS10017 documentation (pdf)

M5M8050H (8 bit Microsontroller)

M5M8050H De vroegste verwijzing naar deze chip was in 1884, de M5M8050H van Michubitchi is een 8 bit micrsocomputer op een chip in ED-MOS-technologie. Het heeft een 8-bits CPU, ROM- en RAM-geheugen, veel I/O-poorten, teller/timer en interuppotcontroller op één chip. Dat is ongeveer alles wat ik weet, ik weet niet waar het werd gebruikt.
M5M8050H Datasheet (pdf)

MOS8360R2 (TED chip comnodore 16)

MOS8360R2  (TED chip comnodore 16) In de Commodore 16 (1884) zat een TED-chip, een videochip die ook hardware voor het genereren van geluid, DRAM-verversingscircuits, intervaltimers, en toetsenbordinvoer bevatte. Het is ontworpen voor de Commodore Plus/4 en 16 en de chip is 48-pins DIP. De videomogelijkheden van de TED waren grotendeels een subset van die in de VIC-II. De TED bevatte een eenvoudige toongenerator die twee audiokanalen produceerde, het eerste kanaal produceerde een blokgolf en de tweede kon een blokgolf of witte ruis produceren. Ik heb geen datasheet alleen een verwijzing naar een wikipeadia-pagina.
wikipedia MOS8360R2 (TED chip)

MC2681P (Serial I/O Controller, 2 Channels)

MC2681P  (Serial I/O Controller, 2 Channels) De MC2681 is een dubbele universele asynchrone ontvanger/zender (DUART) en maakt deel uit van de MC6800-familie van randapparatuur en kan aangesloten worden op de MC68000-processor via een general-purpous-interface. De chip heeft ook een multifunctionele 7-bits invoerpoort en een multifunctionele 8-bits uitvoerpoort die gebruikt kan worden als algemene invoer-/uitvoerpoorten, maar ook kan worden toegewezen aan specifieke functies zoals klokinvoer of status-/interrupt uitvoer.
MC2681P Datasheet (pdf)

MC68HC05C4 (6800) MCU

 MC68HC05C4  (6800) MCU De MC68HC05C4 van Motorola is goedkope single-chip microcomputers. Deze 8-bits microcomputer bevat een on-chip oscillator, 176 bytes On-Chip RAM, 4160 bytes on-chip ROM, 24 bidirectionele 1/0-lijnen, 16-bits timer, twee seriële communicatie-interfaces, het is vergelijkbaar met MC6800 en heeft veelzijdige interrupt afhandeling. Het is een vrij klein chipje en de pinnen zitten heel dicht bij elkaar.
MC68HC05C4 Datasheet (pdf)

1985

HD614023S (Processor)

HD614023S processor In 1985 introduceerde Hitachi de HD614023S, gebaseerd op de Hitachi HMCS40-familie van 4-bits microcontrollers die eind jaren zeventig werd ontwikkeld en geïntroduceerd. Twee soorten van elke chip werden gemaakt, een met pMOS voor lage kosten en een enere met CMOS waar een lager vermogen meer gewenst was. Hitachi introduceert later ook een vervangende serie genaamd de HMCS400. De chips bevatten 4-bit ALU die BCD-rekenkunde uitvoert. 512 tot 2.048 Woorden van programma-ROM. Extra 128 woorden van patroon-ROM. 32 tot 160 digits aan gegevens RAM. De chips bevatten ook een Event/Timer-Counter en 22-44 I/O-lijnen. De output was bedoeld voor het aansturen van dot matrix Liquid Crystal-displays. De HMCS40 werd gebruikt in een zeer groot scala aan games, speelgoed, controllers en kantoorapparatuur.
Hitachi wiki HD614023S processor
HD614023S Processor Datasheet

YM2608 (Sound)

YM2149F (Sound) In 1885 introduceerde Yamaha de YM2608 (ook wel OPNA genoemd), een geluidschip en een lid van Yamaha’s OPN-familie van FM-synthesechips. Het was de opvolger naar de YM2203. Het werd gebruikt in NEC’s PC-8801 / PC-9801 serie computers. De YM2608 heeft vier modules: een zeskanaals FM-synthesegeluidssysteem, een compleet interne implementatie van de Yamaha YM2149/SSG voor het produceren van drie kanalen voor blokgolfsynthese, een enkel kanaal voor samples in 8-bit ADPCM en een zeskanaals ADPCM-systeem, waarmee zes percussie “ritmetonen” kunnen worden afgespeeld vanaf een ingebouwde ROM.
wikipedia YM2608 (Eng)
YM2608 Datasheet

YM3812 (OPL2 Sound chip)

YM3812 (Sound) Ook in 1885 introduceerde Yamaha de YM3812, het was de eerste chip in de OPL-familie en bood een synthesizer met negen kanalen en twee operators. Het werd gebruikt in een Commodore 64-uitbreiding, de Sound Expener, evenals verschillende arcade-spellen, zoals Terra Cresta en Bubble Bobble. Een zeer nauw verwante chip is de Y8950 of MSX-AUDIO, die werd gebruikt als een MSX-uitbreidingseenheid. Het is in principe een YM3526 met ADPCM-opname- en afspeelmogelijkheden.
wikipedia YM3812 (Eng)
YM3812 Datasheet

MC68HC681 (DUART)

MC68HC681  (DUART) In 1885 introduceerde Motorola de MC68HC681 DUAL ASYNCHRONOUS RECEIVER/TRANSMITTER DUART) als lid van de bekende M68000 familie vam peripheral ic’s en het kon zo aangesloten worden op een MC68000 processor door middel van een asynchrone bus structuur. De MC68HC681 bestaat uit meerdere secties, Internal Control Logic, Timing Logic, Interrupt Control Logic, Bidirectional 8-bit Data Bus Buffer, Two Independent Communication Channels (A en B), 6-bit Parallel Input Port, 8-bit Parallel Output Port.
MC68681 Datasheet

1986

AM33C93A (SCSI Controller)

AM33C93A (ENHANCED SCSI BUS INTERFACE CONTROLLER)  (WDAM33C93) In 1986 introduceerde AMD (Advanced Micro Devices) de AM33C93A en de advanced SCSI-bus interface controller. Het was compatibel met veel microprocessors via een 8 bit bus. Small Computer System Interface (SCSI) is een reeks stenaarden voor het fysiek verbinden en gegevensoverdracht tussen computers en renapparatuur zoals diskstations.
AM33C93A Datasheet

1987

TMP82C79P (Programmable keyboard / display interface)

TMP82C79P  (Progrmmeble keyboard / display interface) Ik kan deze chip terugrekenen tot 1987. De TMP82C79P is een programmeerbare keybaod / display interface, het toetsenbordgedeelte kan tot 64 toetsen in een matrix scannen, het beeldschermgedeelte heeft 16 x 8 bits beeldschermram, dat kan worden behandeld als dubbele 16 x 4 bits. De scanlijnen worden zowel voor de toetsen als voor de diplays gebruikt.
TMP82C79P Datasheet

1988
1989
1990

TMP47C432AP (Processor)

TMP47C432AP processor De TMP47C432AP is een 4-bit microprocessor gemaakt door Toshiba en ik weet alleen dat hij werd gebruikt in Philips kleuren-tv’s. Het heeft een D/A-converter en een PWM-uitgang, het is heeft 89 basisinstructies, 6 interruptbronnen, een intervaltijden en 2 12-bits tellers, seriële interface en LCD-stuurprogramma.
TMP47C432AP Processor Datasheet

1991
1992
1993
1994

COP888EG-DDU/N (Processor)

COP888EG processor In 1994 bracht National Semiconductors de COP888xG-familie uit, een 8-bits CMOS ROM-gebaseerde microcontroller met 4k tot 24k geheugen, comparators en USART. Kenmerken van deze familie bevatten een 8-bits mamory mapped architectuur, 10 MHz CKI met 1 µs instructiecyclus, drie multifunctionele 16-bits timer/tellers, full-duplex USART, MICROWIRE/PLUS™ seriële I/O, twee analoge comparators, twee energiebesparende HALT/IDLE-modi, inactieve timer, MIWU, hoge stroomuitgangen, software selecteerbare I/O-opties, WATCHDOG™-timer en Klokmonitor, lage EMI 2,5V tot 5,5V-werking. Deze chip is beschikbaar in 28/40/44-pins uitvoeringen.
COP888EG-DDU/N Processor Datasheet

1995
1996
1997

Atmega328 (Processor)

atmega328 De Atmel 8-bit AVR RISC-gebaseerde microcontroller, voor het eerst geïntroduceerd in 1997, combineert 32 KB ISP-flashgeheugen met lees-en-schrijfmogelijkheden, 1 KB EEPROM, 2 KB SRAM, 23 I/O-lijnen voor algemeen gebruik, 32 werkregisters voor algemeen gebruik, 3 flexibele timers/tellers met vergelijkingsmodi, interne en externe interrupts, serieel programmeerbare USART, een byte-georiënteerde 2-draads seriële interface, SPI seriële poort, 6-kanaals 10-bit A/D-converter, programmeerbare watchdog-timer met interne oscillator. Het apparaat werkt tussen 1,8 en 5,5 volt. Deze processor werd bekend als de Arduino processor en het is een zeer krachtige kleine controller, ik ben erg echt gek op.
wikipedia Atmega328 processor
Atmega328 Processor Datasheet

Atmega32A (Processor)

atmega32a De Atmegs32A-processor is de GROTE 40-pins broer van alle ATMega-processors, hij heeft 32 kb flash-geheugen met lees-en-schrijfmogelijkheden, 1 KB EEPROM, 2 KB SRAM, 54/69 I/O-lijnen voor algemeen gebruik, 32 werkregisters voor algemeen gebruik, 3 flexibele timer/tellers met vergelijkingsmodi, interne en externe interrupts, serieel programmeerbare USART, een byte-georiënteerde 2-draads seriële interface, SPI seriële poort, 6-kanaals 10-bit A/D-converter, programmeerbare watchdog-timer met interne oscillator. De chip werkt tussen 1,8 en 5,5 volt. Deze processor heeft veel I/O lijnen en is erg makkelijk te gebruiken, maar een beetje moeilijk voor ISP programma, ik gebruik een eprom programmer.
Prodeuct page Atmega328 processor
Atmega32A Processor Datasheet

1998

PIC16F876 en PIC16F877 (Processor)

PIC16F877 In 1998 introduceerde Microchip de PIC 16Fxxx-serie, een flash-programmeerbare en uitwisbare versie van zijn succesvolle serieel programmeerbare PIC16Cxxxx-serie en in 2001 introduceerde Microchip introduceerde nog meer Flash-programmeerbare chips. PIC is een geregistreerd henelsmerk van Microchip Technology en staat voor Peripheral Interface Controller en tegenwoordig voor programmeerbare intelligente computers. Ik las dat Microchip elk jaar meer dan een miljard PIC-microcontrollers verscheept. De processors hebben een beperkte RISC-architectuur instructieset en zijn eenvoudig en zeer snel. Ze worden gebruikt in veel embedded systemen en ik gebruik pas sinds kort enkele van deze chips. Ze zijn goedkoop en erg krachtig. Ik heb (en gebruik) twee typen de 40-pins DIL PIC16F877 en de 28-pins DIL PIC16F876.
wikipedia PIC Microcontrollers
PIC16F876 en PIC16F877 Processor Datasheet

1999

Attiny85 (Processor)

Attiny85 De Attiny85-microcontroller. De eerste leden van deze familie werden in 1999 uitgebracht door Atmel, het is een kleine 8-pins chip met een zeer complete 8-bit AVR® RISC-gebaseerde microcontroller aan boord met 8 KB Flash-geheugen, 512B EEPROM, 512B SRAM, zes algemene I/O-lijnen, 32 algemene werkregisters, één 8-bits timer/teller met vergelijkingsmodi, een 8-bit high-speed timer/teller, USI, interne en externe onderbrekingen, 4-kanaals 10-bit A/D-converter, programmeerbare watchdog-timer met interne oscillator. Het is een zeer krachtige kleine controller, ik ben er echt gek op.
wikipedia Attiny processor
Attiny85 Processor Datasheet

2000 en kort daarna

SH69P25K (4 bit microcontroller)

SH69P25K  (4 bit microcontroller) In 2002 introduceerde Sino Wealth de H6610C-based single-chip 4-bit micro-controller, de SH69P25K. Het heeft 4096 x 16 bits rom, 160 x 4 bits ram, 22 CMOS bi-directional I/O pins, 4-level subroutine nesting (including interrupts) en één 8-bit auto re-load timer/counter. Voor zover ik kan nagaan wordt de chip gebruikt in medische apparatuur.
SH69P25K Datasheet

MC908QY4CPE (Processor)

MC908QY4CPE  (6808 CPU) In 2005 introduceerde Freescale de MC68HC908QY4, een lid van de goedkope, krachtige M68HC08-familie van 8-bits microcontrollers (MCU’s). De M68HC08-familie is een Complex Instruction Set Computer (CISC) met een Von Neumann-architectuur. Alle MCU’s in de familie gebruiken de verbeterde M68HC08 centrale processoreenheid (CPU08) en zijn verkrijgbaar met verschillende modules, geheugenformaten en -types en pakkettypes.
MC908QY4CPE Processor Datasheet

Jaar onbekend

STC15W201S (Processor)

STC15W201S De STC15W201S-processor is gebaseerd op de Intel 8051-architectuur, maar in een 16-pins dip-behuizing. Ik weet niet wanneer het voor het eerst uitkwam. De STC15W201S wordt geproduceerd in China door STC en is erg goedkoop en snel. Het biedt de volgende stenaardfuncties: 1K bytes Flash, 256 bytes RAM, verschillende I/O-lijnen, twee 16-bits timer/tellers, een vijf vector two-level interrupt-architectuur, een full-duplex seriële poort, een nauwkeurige analoge comparator, on-chip oscillator en klok circuit. Er zijn verschillende ontwikkelborden gebouwd in China en het wordt gebruikt in verschillende Chinese producten. Zelfs venaag de dag wordt deze processor nog steeds gebruikt en het is nog steeds beschikbaar.
STC15W201S Datasheet   wikipedia Intel 8051 processor

TM58P10 (MCU Processor)

TM58P10 De TM58P10 is een soort mysterieuze MCU, er is niets te vinden over deze chip, behalve enkele Chinese documenten en ik kwam erachter dat het een 8-bit is Microcontroller met 1K x 14 bits Rom, 33 x 8 bits RAM en 4 stapelniveaus. Ik blijf informatie zoeken.
TM58P10 Datasheet

SN8P2604AK (MCU Processor)

SN8P2604AK De SN8P2604AK is ook een soort mysterieuze MCU, er is niet veel te vinden over deze chip, behalve een Datasheet. Ik kwam erachter dat het een 8-bit is Microcontroller met 4K x 16 bits Rom, 128 x 8 bits RAM en 8 stapelniveaus. Ik blijf informatie zoeken.
SN8P2604AK Datasheet

GM82C765 (Floppy disk controller)

GM82C765 De GM82C765B is een CMOS LSI device als interfaces tussen een host microprocessor en de floppy disk drive. Het bevat de volgende functies: formatter/controller, data separator. write precompensation, data rate selection, clock generation, high current output drivers, en TTL compatible schmitt trigger receivers. Het beschikt over een BM PC-compatibel formaat (enkele en dubbele dichtheid) – Diskette-besturing en -bewerkingen op één chip.
GM82C765 Datasheet

W65C816S8P (6502 core variant)

GW65C816S8P (6502 variant)M82C765 This is as Western Digital chip en the datasheet says it is a 16 bit processor met a 24 bit addressbus en it has a fallback mode that is fully compatible met the 6502 core. I have one but I do not know anything about this chip.
W65C816S8P Datasheet

TMP87CM38N (Toshiba MCU)

TMP87CM38N  (Toshiba CPU) De TMP87CM38N is een 8-bits MCU van Toshiba, het is een snelle en hoogwaardige 8-bits microcomputer op één chip. Het bevat een CPU, ROM, RAM, I/O-poorten, zes multifunctionele timer/tellers, een seriële interface, on-screen display, PWM, 8-bit AD-converter en een preprocessor voor een afstandsbedieningssignaal op een enkele chip. Het is een kleine chip en de pinnen zitten heel dicht bij elkaar. Behalve de datasheet Ik heb geen verdere informatie over deze chip.
TMP87CM38N Datasheet


{mid_ad}

Lijst van afkortingen

A/DAnalog to Digital
ALUArithmetic Logic Unit
BCDBinary Coded Decimal
CPUCentral Processing Unit
D/ADigital to Analaog
DIPDual In-line Package
EPROMErasable Programmable Read Only Memory
EEPROMElectronically Erasable Programmable Read Only Memory
FLASHFlash memory is a type EEPROM
I/OInput Output
LCDLiquid Crystal Display
MCUMicrocontroller Unit
PIAPeripheral Interface Adapter
PWMPulse Width Modulation
RAMRenom Access Memory
RIOTRam, I/O, Timer (chip)
ROMRead Only Memory
SIOSerial Input Output
SOCSystem On a Chip
SPISerial Peripheral Interface
RISCReduced Instruction Set Computer
USARTUniversal Synchronous en Asynchronous Receiver Transmitter
VDCVideo Display Controller
VDUVideo Display Unit
VIAVersatile Interface Adapter

Wat is het verschil tussen een MCU / MPU of CPU? Nou, eigenlijk zijn een MPU (microprocessors) en een CPU (Central Processing Unit) bijna hetzelfde, maar er is een groot verschil, een MCU (Microcontroller Unit) kan I2C, SPI, een UART (serieel) en soms een low-level USB-verbinding en zelfs ROM/FLASH-geheugen hebben en RAM-geheugen op de chip. Een CPU heeft externe Ram en Rom en I/O chips nodig om een werkend circuit te vormen, bij MCU’s is dit allemaal geïntegreerd in één chip.

Posted on Leave a comment

Geschiedenis van de Apple 1 computer

apple1

Hoewel ik absoluut geen Apple fan ben en Steve Jobs een narcistische arrogante vent vond, was ik wel fan van Steve Wozniak, de techneut die de eerste Apple producten ontwierp en mede oprichter van het bedrijf Apple was. Ik heb dan ook met heel veel plezier zijn biografie iWoz gelezen. Ook las ik hier de heel interessante ontwikkelingen voordat Apple opgericht werd en hoe uiteindelijk de Apple 1 tot stand gekomen is. De Apple I was een van de eerste personal computers die een toetsenbord combineerde met een microprocessor en een aansluiting voor een monitor. Of het de
eerste personal computer was staat aardig ter discussie. Het begon allemaal toen Steve Jobs en Steve Wozniak op het idee kwamen om wat geld te verdienen met de illegale verkoop van zogenaamde blue boxes, waarmee je gratis kon telefoneren. Steve Wozniak was de techneut die deze blue boxes bouwde en samen met Steve Jobs struinden ze ’s nachts de studentenhuizen langs om ze te verkopen. Dit was riskant want wanneer je betrapt werd eindigde je in de gevangenis omdat de verkoop van de hack apparaatjes streng verboden was.

Maar ze verdienen zo wat extra geld en dat kon Steve Wozniak goed gebruiken voor zijn elektronica hobby projecten. En één van deze hobby projecten was een video terminal die hij met behulp van veel goed verkrijgbare TTL ic’s gebouwd had en die hij op een televisietoestel aansloot door het video modulatie systeem te omzeilen. Steve Wozniak wilde al lange tijd een personal computer bouwen maar vooral de CPU chips waren in die tijd bijna onbetaalbaar. Geheugen chips trouwens ook. Maar het toeval wil dat net in die tijd een aantal ingenieurs, die bij Motorola aan de 6800 processor hadden ontwikkeld en die uit onvrede vertrokken waren, een eigen chip gingen ontwikkelen die heel goedkoop zou moeten zijn. Het werd de 6502 chip die een vereenvoudigde versie van de 6800 chip van Motorola was en die goedkoop gemaakt kon worden. Om de chip te promoten werden er op beurzen grote partijen aangeboden voor erg lage prijzen en zo kwam ook Steve Wozniak in het bezit van een 6502 processor.

Steve Wozniak had al een video terminal gebouwd en besloot om de 6502 met wat geheugen en de I/O chip toe te voegen aan zijn bestaande video terminal ontwerp om zo een personal computer te bouwen. Zonder software kon de computer niet werken en aangezien geheugen chips dus erg duur waren besloot Steve Wozniak een monitor programma te schrijven dat binnen de 256 bytes aan code viel zodat het in een 256 x 8 eprom geplaatst kon worden.
Dit was de beroemde Wozmon, om eerlijk te zijn is het een geniaal stukje werk om zoveel functionaliteit in een 256 bytes programma te stoppen.

Steve Jobs was altijd al de commerciële man en hij regelde in van april 1976 dat een hobby elektronica winkel de Apple 1 computers zou gaan verkopen. Steve Wozniak bouwde ze en zo verdienden ze hun eerste geld met een Apple product, nog steeds vanuit de garage die ze omgebouwd hadden tot werkplaats. De verkoopprijs was 666,66 Amerikaanse dollar en er werden in totaal ongeveer 200 stuks van de Apple 1 geproduceerd. De Apple 1 had één groot voordeel tegenover de meeste hobby computers van die tijd en dat was dat ze een toetsenbord en een monitor ondersteunden, computers zoals de Altair 8800 werden over het algemeen geprogrammeerd met schakelaars die voorop gemonteerd waren en leds voor de uitvoer.

In maart 1977 werd de Apple 1 vervangen door de Apple II en hadden Steve Jobs en Steve Wozniak inmiddels het bedrijf Apple opgericht. Schatting is dat er heden ten dage nog c.a. 30 tot 50 Apple I computers bestaan, wat ze tot een duur verzamelobject maakt. Op 9 november 2021 werd een originele nog steeds functionerende Apple 1 verkocht op een veiling in Californië voor 400.000 dollar. Steve Wozniak schreef uiteindelijk ook nog een Basic versie voor de Apple1 maar deze was vrij eigenzinnig en beperkt en kon zich in de verste verte niet meten met de (Microsoft) Basic versie die door Paul Allen en Bill Gates was geschreven en die op de meeste computers in die tijd draaide. Apple besloot dan uiteindelijk ook om Paul Allen en Bill Gates de nieuwe 6502 gebaseerde Basic voor de Apple 2 te laten schrijven. Steve Wozniak heeft zijn Basic versie altijd gekoesterd en noemde het uiteindelijk Game Basic. De Apple 1 was geen geniaal ontwerp maar wel deugdelijk (in tegenstelling tot de eerste Apple 2 computers die nogal brandgevaarlijk waren) en de Apple 1 heeft zeker een grote invloed gehad op de ontwikkeling van de personal computer.

Bron: Boek iWoz, de biografie van Steve Wozniak.

Een paar jaar geleden bouwde ik allerlei replica machines in hardware en ik bouwde ook een Apple1 replica. Op dat moment las ik het boek IWoz en leerde ik over de geschiedenis van de machine. In modern design was de Apple1 vrij eenvoudig, Wozniak had in het verleden een terminal gebouwd met veel logische chips, hij voegde alleen een goedkope cpu, een kleine rom en ram en een PIA toe chip om de Apple1-computer te maken. Ik had een degelijke Z80-emulator geschreven en een Intel 8052-emulator, deze keer schreef ik een 6502-emulator. Het eerste idee dat ik had was het bouwen van de Apple1 computeremulator zoals ik het ontwerp kende. Het resultaat is een portable Apple1-emulatorprogramma voor Windows 10 en 11.

Op deze website kunt u ook een bouwschema van volledig werkenden Apple 1 replica vinden.

Posted on Leave a comment

Arduino Nano als 89s52 ISP programmer

AT89S52

Ik ben nog steeds een fan van de Intel 8052 architectuur en heb er ook een complete ontwikkel omgeving (8052 IDE) voor geschreven. Een ding was lastig in vergelijking met de PIC en de ATMega chips, de 8052 heeft geen interne Flash rom. Maar de Atmel (nu Microchip) versie heeft dat wel. De 89S52 heeft maar liefste 8 Kb aan Flash rom aan boord en is In Circuit Programable via een ISP interface. Maar om daar weer een USB programmer voor te vinden was ook lastig. Uiteindelijk kwam ik een leuk experiment van een paar studenten met een Arduino Uno tegen dat me wel iets leek. Maar helaas de Windows programmer code was zeer moeilijk te vinden en werkte niet echt gebruikersvriendelijk.

Mijn zelfbouw projectje

Dus besloot ik het zelf maar te doen, ik nam de Arduino code over en programmeerde deze in een Arduino Nano, ik gebruik deze vaak in plaats van de grotere Uno. Deze Nano heb ik met header voetjes op een klein printje gezet met net voldoende ruimte om de ISP flatcable er nog op te zetten. Even de juiste pinnen aan de connector solderen en mijn AT89S89 ISP programmer was gereed. Ik had een goedkoop developper board uit China met een ISP aansluiting en na wat testen werkte dat prima.

Schema van de Arduino Nano ISP programmer

Zoals gezegd had ik al ooit eens een development board gekocht in China, dat ik zelf in elkaar moest solderen, maar dat een ZIF voetje had voor de processor, een ISP, een echte RS232 en een USB aansluiting, vier drukknoppen en een reset knop, 8 leds op P2 en alle pennen van de processor op header pinnen. Een zeer goedkoop board dat prima werkt en een ISP aansluiting heeft.

Goedkoop development board 89S52

De software was de volgende uitdaging, ik was al van plan om een nieuwe versie van mijn 8052 development IDE te maken dus dit kwam goed uit. Ik had nog een paar todo bugs op te lossen en ik wilde er volledige support voor de 89S52 in schrijven. Na dat ik dat allemaal gedaan had, besloot ik ook een ISP uploader in het programma te bouwen zodat de code onmiddellijk naar een board met een ISP aansluiting ge-upload kon worden. Na twee avonden stoeien en veel datasheets doorwerken had ik eindelijk een goed werkende ISP module. De IDE kunt u ook downloaden, de link staat onderaan te pagina. Het is een portable Windows programma (werk ook onder WINE) in een 64 en 32 bits uitvoering en digitaal ondertekend met een software certificaat.

Links en downloads

Posted on Leave a comment

RCA 1802 (1974)

CPD1802ACE

Ik heb veel gelezen over deze nogal vreemde microprocessor maar ik heb hem zelf (nog) niet gebruikt. Ik heb er een aantal in de webshop en als ik tijd heb en een leuk project ga ik er zeker nog eens iets mee doen. Maar waarom is deze processor zo raar? Toen de processor uitkwam was het een hele snelle processor (6.4 MHz) maar had de processor wel 10 Volt voedinspanning nodig. Latere versies hadden deze beperkingen niet meer.  De chip had zestien 16-bit registers die ook als tweeëndertig 8-bit registers gebruikt konden worden en een accumulator register D.

Het had een beperkte vorm van DMA en elk register kon gebruikt (geselecteerd) worden als PC (program counter). Alle instructies waren 8 bit, 4 bit opcode en 4 bit operand. De processor kende geen echte conditional branching (wel een vorm van conditional skips), had geen  subroutine support, en geen echte stack, maar met wat slim gebruik van registers was hier wel omheen te programmeren.

Er zijn een aantal microcomputers gebaseerd op de 1802, waaronder de COSMAC ELF (1976), Netronics ELF II, Quest Super ELF, COSMAC VIP, Comx-35. De processor is nog steeds (beperkt) verkrijgbaar en er zijn nog steeds een aantal enthousiaste hobbyisten die er nieuwe devices mee bouwen en ontwikkelen. Onderaan de pagina staat een overzicht van 1802 projecten.

Links m.b.t. de RCA 1802

Posted on Leave a comment

Microprocessor nop testers

nop tester boards

Wanneer je veel met microprocessors bezig bent of net als ik ook wel eens Z80 en 6502 processors binnen krijgt die (lijken) gebruikt te zijn, dan is een eenvoudige wijze om even te testen of er nog leven in de microprocessor zit, de nop tester. Om echt goed te testen heb ik twee MBC boards staan waarvan ik weet dat ze goed werken en als definitieve test plaats ik de microprocessor daar in en test hem, voor ik hem ter verkoop aanbied. Voor nieuwe IC’s hoef ik dit natuurlijk niet te doen. Maar een nop tester is altijd handig en eenvoudig in gebruik. Op deze pagina beschrijf ik de Z80 nop tester en de 6502 nop tester die ik op de plank heb liggen.


De Z80 nop tester.

Z80 NOP tester


Er zijn meerdere versies te koop, ik gebruik de versie van de bekende website https://8bit-museum.de/sonstiges/hardware-projekte/hardware-projekte-cpu-nop-tester/ waarvan de printen goed verkrijgbaar zijn bij: https://www.pcb4diy.de/de/


Na het aanzetten zullen de leds binair gaan tellen (licht gaan geven) van 0 tot 127. Dan gebeurt er iets vreemds, de achtste led zal twee keer zo snel gaan mee knipperen. Dit heeft met de refresh cyclus van de Z80 te maken. Maar als de leds netjes omhoog tellen, dan werkt de Z80 in ieder geval nog.


6502 NOP tester


Ook hiervan zijn meerdere versies te koop, ik gebruik de versie van de bekende website https://8bit-museum.de/sonstiges/hardware-projekte/hardware-projekte-cpu-nop-tester/ waarvan de printen goed verkrijgbaar zijn bij: https://www.pcb4diy.de/de/


Na een reset begint de 6502 NOP-tester ook door middel van de output leds te tellen en kan men zo zien of de chip nog werkt. Bij deze print is de processor alleen via pin 21 met GND verbonden en pin 1 is open. Dit is gedaan om ook een WDC62C02 met VPB, Vector Pull, op pin 1 te kunnen testen. Bij JP1 kan pin 1 eventueel op Vss aangesloten worden. Als een WDC65C02 moet worden getest, moet pin 36 (BE, Bus Enable) met JP2 worden aangesloten op Vcc (via 10k). Bij de „normale“ 6502 wordt deze aansluiting niet gebruikt.

Posted on Leave a comment

De Signetics 2650 microprocessor

Signetics 2650AN 8-bit microprocessor

De Signetics 2650  is een vrijwel onbekende 8-bits microprocessor die in juli 1975 werd geïntroduceerd en de chip is nooit een echt succes geweest. Desondanks had het een vrij uniek ontwerp en wat bijzondere eigenschappen omdat de chip gemaakt was vanuit de ontwerp filosofie van een de IBM 1130 minicomputer. Eigenlijk werd de chip al in 1972 ontworpen en was het op dat moment een van de meest geavanceerde ontwerpen op de markt in vergelijking met de Intel 4004 en 8008 die uit dezelfde tijd stammen. Maar omdat Signetics druk was met het produceren van chips voor Dolby’s ruisonderdrukkings systemen, werd de productie van de 2650 uitgesteld. Toen het in 1975 uitkwam had het al een aantal betere concurrenten. In 1975 kocht Philips Signetics en vanaf dat moment zijn er versies van de 2650 met het Philips logo en in 1976 kreeg AMD ook een second-source-overeenkomst. Er zijn dus diverse soorten 2650 met verschillende bedrijfslogos.

Zoals ik al schreef was het ontwerp van de 2650 gebaseerd op de IBM 1130 en daarom heeft de 2650 een aantal functies die niet echt gebruikelijk waren op microprocessors uit de jaren 70. Het had zogenaamde statusbits voor de status van invoer-/uitvoerapparaten en het ondersteunde vectored interrupts , waardoor apparaten zelf de geheugenlocatie van de interrupt code op de databus konden plaatsen om vervolgens een interrupt te geven. Dit alles maakte invoer en uitvoer erg snel en eenvoudig. De 2650 had register sets (wat we ook in de Z80 terug kunnen zien) met een enkel globaal register 0 die als accumulator diende. De dubbele set registers was bijvoorbeeld handig als er interrupt code werd uitgevoerd omdat men dan in plaats van alle registers op stack te bewaren, gewoon van register set kon wisselen.

Een feature die later een grote bottleneck bleek was de uitgebreide mogelijkheid van indirect adresseren. Dit maakte adressering erg snel maar omdat bit 15 al wegviel kon de processor effectief maar 32 Kb aan geheugen adresseren. Aangezien er nog twee hoogste adres bits werden gebruikt voor de indexering methode was het geheugen eigenlijk opgedeeld in vier blokken van 8 KB. Dit was in 1972 nog niet zo’n probleem omdat er nog niet echt grote geheugenchips bestonden maar in 1975 was 64 Kb al redelijk gangbaar.

Ook had de 2650 dezelfde domme ontwerp fout als de 6502 in de vorm van een interne stack op de processor chip. Dit was wel snel maar ook heel beperkt omdat de stack maar 8 locaties diep was. Dit is voor een moderne programmeertaal totaal ontoereikend waardoor er dus een softwarematige (trage) emulatie van een stack in memory gemaakt moet worden.

Er werden maar een paar spel consoles uitgebracht met de  2650, het 1292 Advanced Programmable Video System (1976) en de Interton Video Computer 4000 (1978). Daarnaast werd in 1982 de Emerson Arcadia 2001 uitgebracht die een Signetics 2650 op 3,58 MHz als CPU gebruikte. Daarnaast werden er in  de jaren zeventig zeker zes videogames met munten uitgebracht die de 2650 CPU gebruikten: de Atari, Inc. Quiz Show,  de Meadows Games 3D Bowling, de Meadows Games Gypsy Juggler, de Meadows Games Lazer Command, de Cinematronics Embargo en een kloon van Space Invaders.  Een belangrijk gebruikt van de 2650 processor was in de flipperkasten van de Italiaanse spelfabrikant Zaccaria en ook hun opvolger MrGame, bracht vier flipperkasten uit met de 2650 processor als hart. Omdat deze kasten nog steeds gerestaureerd worden is er nog een beperkte vraag naar de 2650 processor.

Er is ook een retroshield met de 2650 processor en er zijn nog ontwikkel tools beschikbaar, dus het is een leuke retro microprocessors om mee te experimenteren. Zie https://www.heinpragt.nl/?product=2650an-signetics in deze webshop.

Posted on

Retroshield 6502

arduino 6502

Ik ben helemaal weg van het retroshield project, ze maken kleine shields voor de Arduino Mega met daarop de meest voorkomende microprocessoren. Ik heb zelf de Z80, de 8031 en de 6502 shield gemaakt en ik heb er nog twee in bestelling. De shields zijn vrij eenvoudig te solderen en voor elk shield leveren ze ook de Arduino sourcecode mee, die soms erg goed is en soms voor enige verbetering vatbaar is, zoals de 8031 die ergens anders op deze site staat. Dit is het 6502 board, een kleine shield met daarop (in een voetje) een 6502 of een 65c02 processor, een dubbele header rij, een paar smd weerstanden en een ledje. Ik laat de condensatoren altijd achterwege, die hebben echt geen zin hier.

retroshield_6502

Dit shield is hier te koop: https://www.pcb4diy.de/de/c64/89-65c02-retro-shield-fur-arduino-mega-1037290836.html dit is ook waar ik de shields bestel.

De software kunt u vinden op: https://gitlab.com/8bitforce/retroshield-arduino/-/tree/master/k6502

Er zijn in totaal drie Arduino sketches bij dit board, een Apple1 met Wozmon en Apple basic, een C64 basic versie en een KIM1 versie. U kunt ook alle versies na elkaar proberen, ik heb er drie Arduino mapjes van gemaakt. De C64 basic implementatie maakt gebruik van een VT100 terminal (Ansi eigenlijk) en kan zo ook kleur weergeven. Het is een beetje trage maar wel functionerende Commodore 64 basic versie. Het is superleuk om zo met oude microprocessors bezig te zijn en het is een een leuke wijze om bijvoorbeeld de aansluitpennen en timing van de 6502 processor te leren kennen.

Retroshield 6502 schema

Alle documentatie, het schema en alle broncode is opensource en op de website van het project te vinden. Natuurlijk kunt u zelf ook sleutelen aan de software en er uw eigen tintje aan geven. Ik wens u veel retroplezier.

Links en downloads

Posted on Leave a comment

Nauwkeurige timer Raspberry Pi

Raspberry Pi Model B plus

We kunnen in Raspbian Linux door middel van gettimeofday(&gettime_now, NULL);start_time = gettime_now.tv_nsec; wel een redelijk nauwkeurige timer maken maar deze timer zal niet altijd nauwkeurig zijn. Alleen de aanroepen van deze functies kost al 100 nanoseconden en kan onderbroken worden door een task switch van de kernel of een kernel proces. Dit gaat ook op voor de functie usleep() die alleen de garantie geeft dat er “minimaal” de slaaptijd gewacht zal worden, maar waar de slaaptijd best wel het tienvoudige kan zijn. Linux is helaas geen realtime besturingssysteem en elke embedded ontwikkelaar wil graag een realtime besturingssysteem om nog enige controle te hebben. Desondanks wordt de Rasberry Pi veel gebruikt in bijvoorbeeld robots waar de enorme voorraad aan programmacode en bibliotheken wel weer een enorm voordeel is. Een stabiele en nauwkeurige timer is geen standaard onderdeel van de ARM specificatie maar de meeste ARM gebaseerde SoC’s hebben ergens wel een timer. De Raspberry Pi is geen uitzondering, het uitlezen van deze timer in Linux vergt wel enig hackwerk.

Volgens de officiële Broadcom 2835 documentatie zit er een ‘free-running 1MHz timer’ op ARM adres 0x20003004 die als we het goed bekijken op I/O base 0x20000000 zit met een offset van 0x3000 en de vrij lopende 1MHz teller op
offset 0x0004. Dit klinkt goed maar hoe kunnen we deze teller gebruiken? In het ontwerp van Unix zit een methode om rechtstreeks het fysieke geheugen te lezen, via de device driver “/dev/mem”. Maar hoe kunt u dit gebruiken om de teller te lezen? Volgens de man pagina’s geeft dit device de geheugen adressen identiek aan het fysieke geheugen. Wanneer we een klein stuk geheugen rechtstreeks willen benaderen dan kunnen we dit doen met de functie mmap(). Er zit een kleine adder onder het gras en dat is dat de geheugenadressen van de timer alleen leesbaar zijn, er naar toe proberen te schrijven (vanuit user space) zal fatale gevolgen hebben. Omdat dergelijke “raw” toegang tot het geheugen beveiligingsinformatie kan vrijgeven en het systeem wagenwijd open kan zetten is het gebruik van /dev/mem beperkt tot root gebruiker. Hier staat een eenvoudige demonstratie programma dat timing informatie van een lus in microseconden afgedrukt.

#include <stdio.h>
#include <sys/mman.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <fcntl.h> 
#include <unistd.h>  

#define ST_BASE (0x20003000) 
#define TIMER_OFFSET (4)  

int main(int argc, char *argv[]) {    
long long int t, prev, *timer; // 64 bit timer 
int fd;     
void *st_base;
 
  if (-1 == (fd = open("/dev/mem", O_RDONLY))) {
      fprintf(stderr, "open() failed.\n");
      return -1;     
  }
  if (MAP_FAILED == (st_base = mmap(NULL, 4096,
       PROT_READ, MAP_SHARED, fd, ST_BASE))) {
     fprintf(stderr, "mmap() failed.\n");
     return -2;
   }
   timer = (long long int *)((char *)st_base + TIMER_OFFSET); 
   prev = *timer;
   sleep(1);
   while (1==1) { 
       t = *timer;
       printf("Timer diff = %lld    \r", t – prev);
       prev = t;
       sleep(1);
   } // zal hier nooit komen
   return 0; 
} 

Uitleg code

De eerste stap om toegang te krijgen tot de timer is de open () functie, de mmap() en het instellen van de timer pointer. Wanneer we de TIMER_OFFSET toevoegen aan st_base en deze casten naar een pointer naar “long long int” (64 bits), dan wordt dit een pointer naar de 1 MHz free running timer. Door deze waarde te lezen kunt u eenvoudig lezen hoeveel microseconden verstreken zijn zonder dat dit door aanroepen van functies of kernel processen verstoord kan worden. Het bovenstaande programma is een proof-of-concept voor het lezen van de timer. Het begint met het voor de eerste keer lezen van de timer waarde, 1 seconde slapen en dan de timer weer lezen om te zien hoeveel microseconden nu werkelijk verstreken zijn. slapen voor 1 seconde, dan is het lezen van een andere timer waarde en het afdrukken van het verschil. Op een 600 Mhz Raspbeery Pi is de typische afwijking slechts 1.000.225 microseconden. Al met al een zeer nauwkeurig timer waarmee u bijvoorbeeld afstand bepaling kunt doen door middel van ultrasone sensoren. In elk realtime programma zoals bijvoorbeeld code voor een robot is zeer nauwkeurige timing soms erg belangrijk.

Posted on Leave a comment

Korte cursus elektriciteitsleer en elektronica

electron

Op deze pagina staat een vorm van basiscursus elektriciteitsleer en elektronica. Dit kunt u gebruiken als beginnerscursus of als naslagwerk. Tevens staan hier de werking van veel elektronica componenten beschreven. Als kind had ik elektronica als hobby, ik haalde alles wat ik kon krijgen uit elkaar en verzamelde de elektronica onderdelen. Na het bouwen van de eerste buizenversterker en een paar aardige opdonders ontdekte ik de digitale techniek. Ik bouwde mijn eigen meetapparatuur, voeding en mengpaneel en ik soldeerde wat af in mijn hoekje van de schuur, later heb ik nog MTS elektrotechniek gedaan. Mijn eerste ICT baan was als embedded programmeur waarbij ik ook veel elektronica schakelingen ontworpen heb, ik vond dit een hele leuke tak van werk waarbij ik mijn kennis van elektronica kon combineren met mijn kennis van programmeren. Nu ben ik op latere leeftijd weer druk bezig met elektronica als hobby en de oude kennis over elektriciteitsleer en elektronische componenten komt nog steeds van pas. Op deze pagina probeer ik iets van deze basiskennis van elektronica te beschrijven. Vriendelijke groet, Hein Pragt.

Wat is elektriciteit

Voor we beginnen moet ik eerste even uitleggen wat elektriciteit is. Elke stof bestaat uit hele kleine bouwstenen die we atomen noemen. Deze atomen bestaan uit een kern van protonen en neutronen waar elektronen in een baan omheen cirkelen. De kern is positief geladen en de elektronen zijn negatief geladen. Nu kan het voorkomen dat er in een stof zogenaamde vrije elektronen voorkomen, dit zijn elektronen die niet meer bij een bepaald atoom horen. Deze vrije elektronen vormen de elektrische stroom. Alle atomen streven naar een evenwicht van elektronen en protonen, wanneer er in een deel van de stof een overschot aan elektronen is zullen deze zich dan ook in de richting van een tekort aan elektronen bewegen. Deze beweging noemen we elektrische stroom. Wanneer we een batterij bekijken dan hebben we aan de kant van de minpool een enorm overschot aan elektronen en aan de kant van de plus een enorm tekort aan elektronen. De mate van overschot noemen we elektrisch spanning. Hoe groter het verschil tussen het overschot en het tekort aan elektronen, hoe hoger de elektrische spanning.

Wanneer we nu een geleider (bijvoorbeeld een koperdraad) tussen de plus en de min plaatsen, zullen de elektronen door de elektrisch geleidende draad, van het overschot naar het tekort gaan stromen. Dit noemen we elektrische stroom. Wanneer de draad een goede geleider is (wanneer er makkelijk elektronen doorheen kunnen) zal er een grote stroom lopen, wanneer de elektronen maar moeilijk door de draad heen kunnen en weerstand ondervinden, zal er een kleinere stroom lopen. Er zijn stoffen (zoals koper) die zeer goed geleiden, stoffen die totaal niet geleiden (zoals rubber) en stoffen die half geleiden zoals silicium) . Dit noemen we geleiders, isolatoren en halfgeleiders. De dikte van de geleider bepaalt ook hoeveel stroom er doorheen kan lopen. We kunnen dit vergelijken met een waterslang, door een dunne tuinslang kan een beperkte hoeveelheid water stromen, maar door een dikke brandweerslang kunnen vele liters per seconde stromen.

Elektrische spanning is dus een verschil tussen een overschot en een tekort aan elektronen en een elektrische stroom is de stroom van elektronen door een geleider van het overschot naar het tekort.

Elektrische stroom, spanning en vermogen

stroomkring

Elektrische stroom
Een spanningsbron zoals een batterij of een accu heeft altijd twee zogenaamde “polen”, een pluspool en een minpool. Aan de kant van de pluspool is er een tekort aan elektronen en aan de kant van de minpool is er een overschot aan elektronen. Wanneer er bijvoorbeeld een lampje op de spanningsbron wordt aangesloten, dan ontstaat er voor de elektronen een “route” tussen de minpool en de pluspool. Aangezien de elektronen van het gebied met het overschot naar het gebied met het tekort willen, zullen ze via de draden, door de lamp en de gloeidraad van de minpool naar de pluspool stromen. We spreken in zo’n geval over een elektrische stroom. De stroom loopt dus feitelijk van de minpool naar de pluspool maar aangezien men meer dan honderd jaar geleden niet beter wist en heeft afgesproken dat de elektrische stroom van de pluspool naar de minpool loopt heeft men deze afspraak niet meer willen veranderen. Het maakt voor de werking van schakelingen ook niet echt uit.

stroomkring schema

Schema
Om elektrische schakelingen eenvoudig en overzichtelijk te tekenen heeft men alle elektrische bouwstenen een apart symbool gegeven. De bovenstaande tekening kan men op deze wijze in een net schema weergeven, links ziet u het symbool voor de spanningsbron en links het symbool voor een lamp. De pijl geeft de stroomrichting aan van plus naar min. In het schema is er een lampje op een spanningsbron aangesloten waardoor er door de stroomkring een elektrische stroom loopt. De eenheid stroomsterkte geeft aan hoe groot deze stroom is en deze stroomsterkte drukken we uit in ampère. In formules gebruikt men voor de stroomsterkte de hoofdletter I (van Intensiteit). Een belangrijk feit is dat de stroomsterkte op elk punt van de stroomkring gelijk is.

Elektrische spanning
Wanneer we nog eens kijken naar het schema met de spanningsbron en het lampje lopen er elektronen door het lampje in de richting van het overschot naar het tekort. De grootheid “spanning” geeft aan hoe groot het verschil tussen het overschot en het tekort van elektronen is. De spanning heeft volt als eenheid, we kunnen bijvoorbeeld zeggen dat in het bovenstaande schema de elektrische spanning zes volt is. De letter die we in formules gebruiken voor de elektrische spanning is de hoofdletter U wat afkomstig is van het Latijnse woord “Urgere” wat duwen betekent. We kunnen dus zeggen dat de elektrische spanning OVER het lampje zes volt is en de elektrische stroom DOOR het lampje een half ampère is. Ook kunnen we stellen dat elektrische spanning de oorzaak van elektrische stroom is.

Elektrisch vermogen
Wanneer een elektrische spanning een elektrische stroom veroorzaakt zal elektrische vermogen verbruikt worden, de elektrische energie zal omgezet worden in warmte, licht of beweging. De voltampère (VA) is de elektrische eenheid die gebruikt wordt voor het elektrisch vermogen die we in formules aanduiden met de hoofdletter P. Nu kunnen we onze eerste elektrische formule gebruiken: P = U * I (vermogen is gelijk aan het product van spanning en stroom). De letter U staat voor de elektrische spanning en heeft de eenheid volt, de letter I staat voor de elektrische stroom en heeft de eenheid ampère, de letter P staat voor het elektrische vermogen. De voltampère is bij een gelijkspanning gelijk aan de watt (W), bij wisselspanning moet dit nog eerst vermenigvuldigd worden met de arbeidsfactor (cos f).

Serie een parallel schakeling

serie of parallel

Het is mogelijk twee batterijen in serie of parallel aan te sluiten. Bij het serieel (dus achter elkaar) aansluiten kan men de spanning van beide batterijen (van gelijke spanning) bij elkaar optellen. De totale spanning zal dus toenemen en hierdoor zal ook (bij dezelfde geleider) de stroomsterkte toenemen. Wanneer twee batterijen (van gelijke spanning) parallel geschakeld worden, zal de totale elektrische spanning niet toenemen maar, zal het wel langer duren voor de batterijen leeg zijn. Het totale elektrisch vermogen in tijd zal dus toenemen. Let er wel op bij parallel schakelen van spanningsbronnen dat alle spanningsbronnen dezelfde spanning hebben!

serie of parallel

We kunnen natuurlijk ook de lampjes in serie of parallel zetten, bij parallel zetten van twee (gelijke) lampjes zal er twee keer zoveel stroom door de gehele schakeling lopen en zal de spanning over beide lampjes de totale spanning zijn. Bij serieschakeling van twee (gelijke) lampjes zal er minder stroom gaan lopen omdat de totale weerstand is toegenomen maar ook over elk van beide lampjes de helft van de voedinspanning staan. Dit is een zeer belangrijk effect wat we bij weerstanden ook weer tegen zullen komen.

Wisselspanning

wisselspanning

Naast gelijkspanning bestaat er ook wisselspanning en hiervoor wordt vaak de afkorting AC gebruikt wat staat voor Alternating Current. AC spanningsbronnen hebben geen positieve en negatieve polen, de polariteit wisselt steeds met een bepaalde frequentie. Het bekende stopcontact in ons huis levert wisselspanning met een voltage van 230 volt en een frequentie van 50 Hertz. De polariteit van de spanning (plus en minpool) worden telkens omgedraaid in het tempo van de frequentie. Het grote voordeel van wisselspanning is dat het met behulp van een transformator omhoog of omlaag getransformeerd kan worden. Hierdoor kan er ook hoog vermogen over lange afstanden (hoogspanningsleidingen) vervoerd worden. Een wisselspanning kan worden opgewekt door een magneetveld in een spoel te bewegen zoals in een dynamo of generator. Maar ook de elektrische opslag en vervoer van geluid en muziek bestaat uit wisselspanning omdat de trilling van geluid in een elektrische trilling kan worden omgezet. De wisselspanning van ons energienet is min of meer sinusvormig en de piekspanning is hoger dan effectieve waarde van de spanning. Het voltage van de netspanning is ongeveer 230 V maar het piekvoltage van de netspanning is varieert dus tussen – 325 V en 325 V. Het is belangrijk om te weten dat gelijkspanning en wisselspanning zich soms totaal verschillend gedragen in elektronische schakelingen. Wisselspanning is door middel van een gelijkricht schakeling weer eenvoudig om te zetten in gelijkstroom.

Weerstand en de wet van Ohm

De stroomsterkte I door een elektrisch apparaat of component loopt hangt af van de spanning U, verhoog je de spanning, dan zal ook de stroomsterkte toenemen. De stroomsterkte hangt ook af van het apparaat of component zelf, de elektrische stroom ondervindt namelijk een weerstand in het apparaat of component. Hoe groter de weerstand des te kleiner de stroomsterkte zal zijn. In een schakelschema geven we een weerstand schematisch weer als een rechthoekig blokje (vroeger gebruikte men ook een driehoekig gekartelde lijn). De weerstand wordt in de eenheid “ohm” uitgedrukt. In formules gebruiken we de hoofdletter R als symbool voor weerstand. De letter R is een afkorting voor het Engelse woord resistance dat weerstand betekent. De Griekse letter Ω (omega) is een korte schrijfwijze voor ohm. De verhouding tussen spanning, weerstand en stroomsterkte bepalen we met de wet van Ohm. Hierbij gebruiken we de hoofdletter U voor spanning (volt), de hoofdletter I voor stroomsterkte (ampère) en de hoofdletter R voor weerstand (ohm).wet van Ohm

  U = I * R    ( spanning = stroomsterkte * weerstand )  
  I = U / R    ( stroomsterkte = spanning / weerstand )  
  R = U / I    ( weerstand = spanning / stroomsterkte )  

Er is dus een vaste relatie tussen spanning, weerstand en stroomsterkte en wanneer we twee van deze drie waarden weten of gemeten hebben, kunnen de derde waarde berekenen.

Weerstanden en vermogen
Wanneer er stroom door een weerstand loopt zal deze ook warm worden, de weerstand verstookt dus energie. Bij hele kleine stromen zal dit amper meetbaar zijn, maar bij hogere spanning en grotere stroom is dit wel iets om rekening mee te houden. Het vermogen van de energie die de weerstand verbruikt is te berekenen door de formule W = U * I dus vermogen in Watt is spanning U maal stroomsterkte I. Even een voorbeeld, bij een spanning van 12 Volt loopt er door een 100 Ohm weerstand een stroom van 0,12 Ampère. Het vermogen is dan 12 * 0.12 = 1,44 Watt. Dit is voldoende om de weerstand redelijk warm te laten worden en we moeten dan ook tenminste een 2 Watt weerstand gebruiken. Een 1 Watt weerstand (of lager) zou vrij snel in rook opgaan, het is verstandig de weerstanden altijd ruim te bemeten in vermogen. Dit gaat vooral op voor weerstanden in voedingen, stroombronnen en eindversterkers. Omdat weerstanden, behalve in veel verschillende waarden ook nog in verschillende vermogens bestaan, heb ik ook meerdere assortiment bakken met weerstanden op voorraad.

Weerstanden reeksen
We kunnen niet zomaar elke weerstand waarde kopen, we moeten kiezen uit een reeks zoals de goedkope E12-reeks. De E12-reeks heeft de volgende waarden: 10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82 waarbij elke waarde in een macht van 10 te koop is. Zo kunnen we weerstanden kopen van 12, 120, 1200, 12000 Ohm enz. Wanneer we tussenliggende waarden willen hebben moeten we of een weerstand uit een andere (lees duurdere) reeks kiezen of deze weerstand waarde zelf maken door meerdere weerstanden in serie of parallel te zetten. Hoe dit werkt leg ik verderop uit. De reden voor de vreemde reeks van E12 is dat deze weerstanden een afwijking hebben van maximaal 10 procent, bij elke weerstand is de maximumwaarde van een weerstand nagenoeg gelijk is aan de minimumwaarde van de volgende weerstand in de reeks, en zo is deze reeks ontstaan. De E12 is de meest gebruikte reeks en wanneer de nauwkeurigheid niet zo belangrijk is kunt u deze reeks prima gebruiken. Wanneer u wel iets nauwkeurigheid wil kunt u met een universeelmeter de meest nauwkeurige weerstand uit een aantal kiezen.

kleurcodes weerstanden

Weerstanden kleurcodes
Wanneer we naar een weerstand kijken dan staan er meerdere gekleurde ringen op die de weerstandswaarde en de tolerantie aangeven. Elke kleur geeft een cijfer aan en de kleur van de tolerantie geeft aan vanaf welk kant we moeten lezen. Er bestaan kaarten met draaischijven en tabellen om weerstand waarden te ontcijferen en zelf apps waarmee u dit kunt doen. Voor de mensen die het uit het hoofd willen doen bestaat er al zeer lang een ezelsbruggetje om de volgorde van de kleuren te onthouden. Elke woord in deze zin begint met de kleur, de zin is: Zij brengt rozen op gerrits graf bij vies grijs weer. De meest voorkomende goedkope koolweerstanden hebben vier ringen, de waarde van de eerste twee ringen zijn de cijfers en de derde ring geeft de macht van tien aan. De vierde ring geeft de tolerantie aan. Een weerstand met de kleuren Bruin Zwart Groen Zilver heeft een waarde van 10 en 10 tot de macht 5 ohm wat neerkomt op 1MO en een tolerantie van 10%. Meer nauwkeurigere (en duurdere) metaalfilm weerstanden hebben vaak vijf ringen waarbij we de eerste 3 waarden als cijfers achter elkaar zetten en de vierde ring de macht van 10 is. De vijfde ring is hier de tolerantie.

weerstanden in serie

Weerstanden in serie
Wanneer we 2 (of meerdere) weerstanden in serie plaatsen zal de totale weerstandwaarde de som van alle weerstandswaarden zijn. Een 1K weerstand en twee 500 Ohm weerstanden zullen samen dus een 2000 Ohm weerstand vormen. De totale stroom door alle weerstanden zal gelijk zijn, in ons geval is dit dus I = U / R 6 / 2000 = 0,003 A (30 mA). De spanning die over de weerstanden staat zal zich verhouden als de verhouding van de afzonderlijke weerstandswaarden. In dit voorbeeld staat over de eerste weerstand dus U = I * R is 500 * 0,003 = 1,5 Volt. Over de tweede weerstand van 500 Ohm staat dus dezelfde spanning en over de weerstand van 1000 Ohm staat dus een spanning van 1000 * 0.003 = 3 Volt. Alle spanningen bij elkaar zijn weer samen 6 Volt. Dit noemen we een spanningsdeler, deze kunnen we bijvoorbeeld toepassen wanneer we een 5V uitgang op een 3V ingang willen aansluiten, de weestand combinatie 3K en 2K weerstand zal dit dus doen. Probeer dit eens zelf na te rekenen.

weerstanden parallel

Weerstanden parallel
Wanneer we twee (of meerdere) weerstanden parallel plaatsen dan zal de totale weerstand waarde iets complexer zijn. De formule is 1 / ((1 / R1) + (1 / R2) + (1 / R3)) en in ons geval zal dit dus (1 / 300) + (1 / 300) + (1 / 300) = 0,01 maakt 1 / 0,01 = 100 Ohm. De totale waarde is altijd lager dan de laagste waarde van de weerstanden die parallel staan, dit is handig voor controle van de berekening. De spanning over alle weerstanden zal gelijk zijn aan de totale spanning, de stroom door elke weerstand is gelijk aan I = U / R en zal in ons geval dus 0,02 A per weerstand zijn en de totale stroom door deze schakeling zal dus 0,02 + 0,02 + 0,02 = 0,06 A zijn. Door weerstanden parallel te zetten kunnen we dus elke weerstand waarde (totaal weerstand waarde) maken, waardoor we vreemde tussen waarden die niet in de reeks voorkomen, heel nauwkeurig kunnen maken. Wanneer we meerdere weerstanden parallel schakelen kunnen we het vermogen van alle weerstanden bij elkaar optellen. Wanneer we dus vier 1/4 Watt weerstanden parallel zetten dan is het totaal ineens een 1 Watt weerstand. (Omdat de stroom en dus het vermogen verdeeld zal worden over alle weerstanden). Het wordt nog leuker wanneer we meerdere weerstanden parallel en in serie gaan zetten (door elkaar heen) en dan komt de Wet van Kirchhoff om de hoek kijken, maar dat gaat iets te ver voor nu. De bovenstaande formules gaan dan nog steeds op maar dan worden ze wel iets complexer.

Bijzondere weerstanden

LDR weerstand

LDR of Lichtgevoelige weerstand
Een lichtgevoelige weerstand of LDR (Light Dependent Resistor) is een weerstand waarvan de weerstand waarde beïnvloed wordt door de hoeveelheid licht die erop valt. De weerstandswaarde van een LDR wordt kleiner als der meer licht op valt. De weerstand in donker is meestal zo’n 1-10 M en de weerstand in licht 75-300. LDR’s reageren wel redelijk traag (enige honderden milliseconden) waarmee we wel rekening moeten houden wanneer we ze in een regelcircuit toepassen. Ze zijn erg stevig, kunnen redelijk hoge spanningen aan, ze zijn erg goedkoop maar ze verouderen wel binnen een jaar of tien. Tegenwoordig worden meestal fotodioden toegepast in plaats van LDR’s.

NTC weerstand

NTC of Temperatuurgevoelige weerstand
Een NTC-weerstand heeft een Negatieve Temperatuur Coëfficiënt, waardoor de weerstand afneemt als de temperatuur toeneemt. De NTC kan gebruikt worden om temperatuur mee te meten, waarbij wel een omrekening moet plaatsvinden omdat ze een niet-lineaire karakteristiek hebben. Ook is het meetbereik niet zo groot, meestal zo tussen -40 tot 150 graden Celsius. Ze worden ook wel ingezet voor bijvoorbeeld thermische beveiliging van eindversterkers en voedingen. Maast de NTC bestaat er ook een PTC dit is een weerstand met een positieve temperatuurcoëfficiënt, dit betekent dat de elektrische weerstand sterk toeneemt als de temperatuur toeneemt. Zowel de NTC als de PTC behoren tot de thermistors.

VDR weerstand

VDR of Spanningsafhankelijke weerstand
Een spanningsafhankelijke weerstand (Voltage Dependent Resistor) is een weerstand waarvan de waarde varieert met de spanning die wordt aangelegd over de weerstand. We noemen dit component ook wel varistor. Een VDR wordt regelmatig toegepast voor het beveiligen van gevoelige elektronische apparatuur om gevaarlijke spanningspieken af te leiden. Het spreekt voor zich dat voor deze weerstand de wet van Ohm niet opgaat.

Potentiometer ofwel regelbare weerstand

Potentiometer Een potentiometer, ook wel potmeter genoemd, is een instelbare spanningsdeler, waarbij de verhouding tussen de twee weerstandswaarden en de midden aftakking tussen 0 en de maximale waarde ingesteld kan worden. Potentiometers zijn er in vele uitvoeringen, veel mensen kennen de potentiometer als draaiknop voor bijvoorbeeld de volumeregeling. Maar op mengpanelen zien we ook vaak de combinatie van draaipotmeters en langwerpige schuifpotmeters. Maar op printplaten zien we ook vaak de zogenaamde instelpotmeters die met een schroevendraaier ingesteld kunnen worden. Een potmeter bestaat meestal uit een rechte of ronde plaat met een weerstand baan waar een sleepcontact overheen loopt, die op deze wijze de weerstand baan in twee delen opsplitst. Zo ontstaat dus een weerstand aan weerszijden van de aftakking die kan veranderen door het sleepcontact te verplaatsen. Er bestaan ook stereo potmeters waarbij er twee weerstand banen aan één as of schuif gemonteerd zijn.

Er bestaan zowel lineaire als logaritmische potmeters, een lineaire potmeter heeft een weerstandsbaan die gelijkmatig meeloopt met de afstand van het schuifcontact, een logaritmische potmeter heeft een weerstandsbaan niet gelijkmatig maar logaritmisch oploopt. De logaritmische potmeter wordt vooral gebruikt als volumeregelaar omdat de gevoeligheid van het menselijk oor ook logaritmisch is. Instelpotmeters zien we vaak op een print en dienen vooral voor het afregelen van een schakeling zoals het instellen van een spanningsbron, stroombron of versterkingsfactor. Ook kan een instelpotmeter bijvoorbeeld gebruikt worden om een referentiespanning te regelen waarmee de gevoeligheid van een sensor (vaak de drempelwaarde waarbij een achterliggende schakeling gaat reageren) ingesteld kan worden. Ook bij potentiometers is het vermogen belangrijk, ook hierbij kennen we verschillende vermogens. Er bestaan bijvoorbeeld draadpotmeters waarbij de weerstand baan opgebouwd is door een zeer lange draadwikkeling waar het sleepcontact overheen loopt die een redelijk hoog vermogen hebben en waar dus een redelijk hoge stroom doorheen kan lopen. Toch is het niet verstandig om grotere vermogens met een potmeter te regelen, maar in plaats daarvan een regelschakeling of PWM schakeling te gebruiken die het kleine vermogen van de potmeter omzetten in een regelbaar groter vermogen. In een schema ziet u ook regelmatig dat de midden aftakking met een van de buitenste aftakkingen verbonden is waardoor de potentiometer nog maar twee aansluitingen heeft en hiermee een echte variabele weerstand is geworden.

Condensator

condensator

Een condensator is een elektrische component dat elektrische lading kan opslaan. De condensator is opgebouwd uit twee geleiders met een grote oppervlakte die zich dicht bij elkaar bevinden en gescheiden zijn door een niet-geleidend materiaal of vacuüm. Wat er tussen de twee platen zit noemen we het diëlektricum. Wanneer de ene geleider positief geladen wordt ten opzichte van de andere verplaatsen de elektronen naar zich naar positief geladen geleider en na het wegvallen van deze spanning zal dit ladingverschil in de condensator blijven zitten tot het zich (net als bij een batterij) weer kan ontladen door een stroom te laten lopen tussen beide polen. Condensatoren worden veel gebruikt in elektronische schakelingen, bijvoorbeeld om gelijkstroom te blokkeren maar wisselstroom door te laten, bepaalde frequenties van wisselspanning te filteren, spanningsschommelingen af te vlakken (zoals in een gelijkrichter), in trillingskringen om bepaalde frequenties te genereren, als timer. Ook is een belangrijke functie van condensatoren het wegfilteren van stoorsignalen die kunnen ontstaan bij bijvoorbeeld elektromotoren. Een bekend voorbeeld hiervan waren de bekende ontstoorsetjes voor autoradio’s.

De capaciteit van een condensator geven we aan in de eenheid Farad en deze is afhankelijk van de afstand tussen de geleiders en de oppervlakte van de platen. In de praktijk laat het diëlektricum toch een kleine lekstroom door en wanneer een te hoge spanning aangesloten zal worden kunnen condensatoren doorslaan. Een bekende grap is de zevenklapper, zeven condensatoren met verschillende waarden die tegelijk op een hoge spanning aangesloten worden, deze zullen een voor een uit elkaar spatten. Naast de capaciteit geven condensatoren ook de maximale gebruikspanning aan. Er bestaan ook veel verborgen condensatoren zoals kabels met meerdere aders, om dit op te lossen worden de meerdere aders vaak vervlochten zodat de capaciteit minimaal is. Lange kabels kunnen dus onbewust ook als condensator werken en zo binnen bijvoorbeeld audiotechniek onbedoelde bijwerkingen veroorzaken.

Een belangrijke variant van de condensator is de zogenaamde de elektrolytische condensator (elco). Daar waar een normale condensator geen polariteit kent (en dus beide kanten op kan worden aangesloten) heeft een elektrolytische condensator wel een plus en een min kant. Het diëlektricum wordt gevormd door aluminiumoxide op een van beide platen, dit is extreem dun waardoor de capaciteit zeer hoog is. Een nadeel is dat wanneer de spanning wordt omgekeerd, het diëlektricum vrij snel afgebroken zal worden waarna er een kortsluiting ontstaat. Let dus bij het monteren van elco’s altijd goed op de polariteit.

kleurcodes condensatoren

Waarde aanduiding met kleuren
Bij grotere condensatoren wordt de capaciteit op de behuizing vermeld in tekst, bijvoorbeeld 220 �F, (micro Farad) maar vroeger werden voor de waarde van condensatoren ook nog kleurcodes gebruikt waardoor een printplaat vaak een leuk geheel van vrolijke kleurtjes was. Voor condensatoren is het systeem bij de eerste drie banden (geteld vanaf de bovenkant of buitenkant van de condensator) gelijk aan dat van de weerstand. De eerste band geeft de tientallen, de tweede band de eenheden en de derde band de vermenigvuldigingsfactor (macht van 10) aan in picofarad. Net als bij weerstanden kan een vierde band de tolerantie weergeven en een vijfde band de maximaal toegelaten spanning.

Waarde aanduiding met cijfers
Op SMD en kleine condensatoren wordt de capaciteit in cijfers op de behuizing gedrukt mat daarachter de eenheid (1,2 nF), wanneer de de eenheid niet vermeld staat, is de eenheid altijd in picofarads. Bij alleen twee cijfers is de waarde in picofarads gegeven, wanneer er alleen drie cijfers staan dan is het derde cijfer de vermenigvuldigingsfactor. Bijvoorbeeld een condensator met de opdruk 103 heeft een capaciteit van 10 met drie nullen erbij (10.000 pF) wat neerkomt op 10 nF. Hier volgen nog een paar voorbeelden:
12 = 12 pF
120 = 12 pF
121 = 120 pF
122 = 1.200 pF = 1,2 nF
123 = 12.000 pF = 12 nF
124 = 120.000 pF = 120 nF
125 = 1.200.000 pF = 1u2)
126 = 12.000.000 pF = 12u)

Serie en parallel schakeling
Wanneer we condensatoren serie of parallel plaatsen zal het effect precies omgekeerd zijn van weerstanden, wanneer we twee condensatoren parallel schakelen kunt u de waarde van de capaciteit bij elkaar optellen. Wanneer we twee condensatoren in serie plaatsen (wat ik overigens nog nooit ben tegengekomen) dan gaat dezelfde formule op als bij weerstanden die parallel geplaatst zijn, de totale capaciteit C zal 1 / ((1 / C1) + (1 / C2) + (1 / C3)) zijn. Parralel schakelen van condensatoren komt regelmatig voor wanneer we de grote waarden niet op de plank hebben liggen. Bovendien zijn grote condensatoren relatief duur.

Spoel

spoel

Een spoel is in de elektrotechniek de tegenhanger van de condensator en het bestaat uit een wikkeling van een geleider (meestal koperdraad) op een spoelvorm. Wanneer er een elektrische stroom door een draad heen loopt, wordt er een magnetisch veld opgewekt en wanneer deze draad om een buis gewikkeld is dan wordt het magnetische veld gebundeld. Wanneer de kern van de spoel uit een magnetiseerbaar materiaal (weekijzer, ferriet) bestaat zal de bundeling van het opgewekte magnetisme sterk vergroot worden. Maar ook omgekeerd zal de spoel een veranderlijk magnetisch veld omzetten in een elektrische spanning, dit gebruiken we in dynamo’s, generatoren maar ook transformatoren.

Binnen de elektrotechniek worden spoelen met veel gebruikt voor filtering van storende signalen van apparaten, zoals elektromotoren en tl-verlichting. Ook worden ze gebruikt voor resonantiekringen voor het opwekken van een wisselspanning van een bepaalde frequentie maar ook in de ontvanger van een radio om juist een bepaalde radiofrequentie te filteren. Ook kunnen twee spoelen gekoppeld worden waardoor het veroorzaakte magnetische veld in de andere spoel weer een spanning veroorzaakt. Dit noemen we een transformator en door de verhouding van de wikkelingen kan spanning hiermee ook omhoog of omlaag getransformeerd worden. Spoelen worden ook vaak gebruikt voor het omzetten van elektrische energie naar mechanische beweging zoals in deurbellen, elektromotoren, relais, luidsprekers, microfoons en gitaarelementen.

Halfgeleiders

Voor ik verder ga wil ik eerst even iets uitleggen over het fenomeen halfgeleiders. Het gedrag van een halfgeleider zit tussen dat van een geleider en een isolator in, alleen onder bepaalde omstandigheden kan een halfgeleider stroom geleiden. Hierdoor zijn halfgeleiders (zoals silicium) heel geschikt om allerlei elektronische componenten te maken zoals diodes, transistoren maar ook zelfs complexe chips. Een typisch halfgeleidermateriaal is silicium waarbij de atomen een matrix vormen (een soort rooster) waarbij een elektron van een atoom naar een buuratoom kan springen waarbij het een gat en positief ion achterlaat dat weer gevuld kan worden door een ander elektron.

halfgeleider

Dit matrix van kan veranderd worden door ‘verontreinigingen’ in het (zuivere) silicium aan te brengen waarbij de verontreiniging de elektrische eigenschappen zal beïnvloeden. Een verontreiniging met 1 elektron teveel (zoals met fosfor) zorgt voor een overschot aan elektronen en dit noemt men N-type silicium, het omgekeerde is P-type silicium.

Een PN-junctie wordt gevormd wanneer een stukje P-type silicium naast een N-type in hetzelfde kristal wordt gemaakt. Wanneer we een externe spanning aansluiten op de PN-junctie zal de stroom in één richting wel worden doorgelaten en in de omgekeerde richting niet. Er ontstaat een zogenaamde diode, een PN-junctie met twee contacten die de elektrische stroom dus maar in één richting doorlaat. Door middel van twee PN-juncties kan men een transistor maken waarmee we stroomsterkte kunnen versterken of schakelen. Op de moderne chips zijn complete elektronische schakelingen geëtst door middel van een enorm aantal PN-juncties.

Diode

diodeschema

Hierboven beschreven we al kort de diode, een elektronisch onderdeel dat de elektrische stroom zeer goed in één richting geleidt, maar niet in de andere richting. De geleidende richting noemen we de doorlaatrichting en de andere richting de sperrichting. Maar ook in de doorlaat richting van een diode gaat pas stroom lopen als de spanning een bepaalde waarde heeft bereikt, deze doorlaatspanning is afhankelijk van het type diode. Diodes worden ook gebruikt in gelijkrichters voor het omzetten van een wisselstroom in een gelijkstroom omdat ze maar één fase van de wisselspanning zullen doorlaten. De eerste diodes waren radiobuizen in de vorm van een vacuümdiode, deze worden tegenwoordig amper nog gebruikt, de meeste diodes zijn tegenwoordig halfgeleiderdiodes. Een halfgeleider diode bestaat uit een N-gedoteerd gebied dat direct grenst aan een P-gedoteerd gebied waardoor er een PN-overgang ontstaat met de diode eigenschap.

Sommige diodes kunnen ook licht produceren en deze heten LED (Light Emitting Diode). Elke halfgeleider diode produceert licht, maar dit is bij gewone diodes zo klein dat de uitgezonden energie een zodanig lange golflengte heeft dat het licht niet meer zichtbaar is voor het menselijke oog. Maar ook dit licht kan gebruikt worden in zogenaamde infrarood led die we kunnen vinden in allerlei afstandsbedieningen. Bij een led is de terugval van de elektronen groot genoeg om zichtbaar licht uit te zenden. Daarnaast kennen we nog enkele andere type diodes met bijzondere eigenschappen. De lawinediode wordt in sperrichting gebruikt als overspanning beveiliging, de zenerdiode gedraagt zich in doorlaatrichting als een normale diode, maar in sperrichting kan hij boven een bepaalde spanning óók gaan geleiden, deze diode gebruikt men vaak om een spanning te regelen in een voeding, de fotodiode voert in sperrichting een lekstroom die afhankelijk is van de hoeveelheid licht die erop valt en kan daardoor als lichtdetector gebruikt worden. Een halfgeleiderdiode kan in doorlaatrichting gebruikt worden als temperatuursensor maar deze is niet erg nauwkeurig. In de praktijk komen een combinatie van diodes ook regelmatig voor zoals een infrarood led en een infrarood gevoelige diode in één behuizing als detector of als lichtsluis om beweging te detecteren.

brugcel

Een speciale opstelling van vier diodes die beide halve periodes van een wisselspanning kunnen omzetten in een pulserende gelijkspanning, noemt men een bruggelijkrichter. Deze opstelling van diodes kan men ook in één enkel component kopen en deze komen voor in gelijkrichtschakelingen van een voeding. De diodes zullen de wisselspanning omzetten in een pulserende gelijkspanning die door middel van een condensator afgevlakt kan worden tot een echte gelijkspanning. De kleine wisseling die er soms nog op blijft staan noemen we de rimpelspanning. Meestal zullen we deze “ruwe” gelijkspanning daarna door middel van een spanningsregelaar omzetten in een “nette” gelijkmatige vaste gelijkspanning. Deze spanningsregelaars zijn tegenwoordig ook als één enkel component verkrijgbaar.


Met de tot nu toe opgedane kennis zou u het onderstaande eenvoudige schema van een netvoeding moeten kunnen begrijpen.

schema van een eenvoudige voeding

Transistor

transistor schema

De transistor is een zogenaamd halfgeleidercomponent in de elektronica en het dient vooral om elektronische signalen te versterken of te schakelen. De transistor is daarnaast ook de fundamentele bouwsteen van computers en vele andere elektronische schakelingen. Al in 1947 ontdekten John Bardeen en Walter Brattain in Bell Labs van AT&T in de Verenigde Staten dat wanneer elektrische contacten aan een germaniumkristal werden bevestigd, de elektrische stroom aan de uitgang groter werd afhankelijk van een kleine ingangsstroom. De eerste op silicium gebaseerde transistor werd geproduceerd door Texas Instruments in 1954. Er zijn twee soorten transistoren, de oorspronkelijke bipolaire transistor, en de veldeffecttransistor (FET). De bipolaire transistor wordt aangestuurd door middel van een stroompje en de veldeffecttransistor door middel van een spanning. Elk type heeft ook weer twee constructies, afhankelijk van het n of het p-gedoteerd materiaal. Voor bipolaire transistoren zijn er PNP en NPN uitvoering en van de FET’s zijn er n en de p kanaal uitvoeringen. Bij deze twee (PNP/NPN) uitvoeringen zijn de stromen en spanningen tegengesteld van elkaar. Transistoren hebben drie aansluitingen met een eigen naam en functie. Voor een bipolaire transistor zijn dat: de basis (afgekort B), de emitter (E) en de collector (C). Voor een veldeffecttransistor zijn de aansluitingen: gate (G), source (S) en drain (D).

transistor schema 2

Een transistor kan uit zichzelf geen stromen of spanningen opwekken, wel kan het stromen versterken. De werking is als volgt, in rusttoestand zal er tussen de emitter en de collector geen stroom lopen omdat er eigenlijk twee diodes in tegengestelde richting in serie staan. Wanneer we een kleine stroom laten lopen vanaf de basis zal er ineens wel een stroom gaan lopen tussen de emitter en de collector die een veelvoud van de basisstroom zal zijn. Op deze wijze is de transistor dus op te vatten als een stroomversterker. De mate van versterking kan afhankelijk van het type transistor tussen 20 en 800 zijn. Er is echter een maximum aan de grootte van stroom en wanneer deze bereikt is dan is de transistor in verzadiging. Wanneer we de basisstroom laten variëren buiten de maximum en minimum stroom dan kent de transistor twee toestanden zoals een schakelaar en is het een bouwsteen van digitale systemen. Bij een veldeffecttransistor zal een kleine stuurspanning op de gate de weerstand van het kanaal tussen source en drain beïnvloeden, waardoor grotere stromen in dit kanaal geregeld kunnen worden. Een groot verschil tussen een bipolaire transistor en een FET is dus dat de bipolaire transistor door elektrische stroom aangestuurd moet worden en een FET de door middel van een spanning op de gate.

veldeffect-transistor

De veldeffect-transistor (Field Effect Transistor of “FET”) is een bijzonder soort transistor met het grote verschil dat een gewone transistor door middel van stroom aangestuurd wordt en de FET met spanning. Het is het elektrisch VELD dat de regeling doet, vandaar de naam VELDEFFECT transistor. De ingangsimpedantie is hierdoor erg groot waardoor er (bijna) geen stroom door de ingangskring loopt. Rechts ziet u het symbool voor een veldeffect-transistor of FET. Wanneer u dit vergelijkt met een gewone transistor dan is de GATE de BASIS, de DRAIN de COLLECTOR en de SOURCE de EMITTER, verder gaat de vergelijking helaas niet. Een (MOS)FET kan goed gebruikt worden als versterker maar is ook zeer geschikt als “schakelaar” bijvoorbeeld om vanuit een microprocessor uitgang een grote belasting te kunnen schakelen.

Posted on Leave a comment

Basiskennis digitale techniek

D-flip-flop

Rond 1970 begon mijn belangstelling voor digitale techniek maar dit stond in die tijd nog in de kinderschoenen. De eerste digitale rekenmachines waren net op de markt en waren zeer duur en computers waren machines die enorm groot en onbetaalbaar waren. In deze tijd kocht ik mijn eerste boekje over digitale techniek en hier stond duidelijk de basis van nullen en enen, and, or en not poort en de werking van flipflops en counters. Alles nog met weerstanden, diodes en transistors opgebouwd. Het was grappig dat deze kennis mij heel nuttig gebleken is in mijn hele loopbaan. Op de MTS bouwden we nog flipflop schakelingen met transistors en schakelden deze in serie om een digitale teller te maken. Ook moesten we nog binaire logica leren en complexe digitale logica schema’s uitwerken en vereenvoudigen. Aan de andere kant van de wereld waren op dat moment knappe koppen de eerste microprocessors aan het ontwikkelen met dezelfde technologie. Mijn eerste computers waren echte zelfbouwprojecten en later heb ik jarenlang meegewerkt aan het ontwikkelen van computer hardware en interfaces. Telkens kwam alles weer neer op basiskennis digitale techniek. Aangezien er tegenwoordig niet zoveel Nederlandstalige documentatie over dit onderwerp meer te vinden is, voel ik me geroepen om dit toch weer te delen. Vriendelijke groet, Hein Pragt.

Elektrische nullen en enen

basiskennis digitale techniek nullen en enen

Digitale schakelingen werken met nullen en enen, waarbij we bijvoorbeeld kunnen zeggen dat een positieve spanning een 1 is en geen spanning een 0. Als voorbeeld kunnen we een batterij met een schakelaar en een lamp nemen. Wanneer de schakelaar open is zal er geen stroom lopen en zal de lamp niet branden, dit kunnen we als 0 of laag definiëren. Wanneer we de schakelaar sluiten zal er stroom gaan lopen en de lamp gaan branden, dit kunnen we als 1 of hoog definiëren. Door de schakelaar te openen of te sluiten kunnen we dus logische nullen en enen genereren. Door meerdere lampen (leds) en meerdere schakelaars te combineren kunnen we dus al een digitale schakeling bouwen. Vaak gebruiken we ook nu nog vaak een led om een logisch weer te geven in een elektronische schakeling.

basiskennis digitale techniek ttl niveau

In de praktijk werkt men meestal met een spanning onder en bepaalde waarde als een 0 en een spanning boven een bepaalde waarde als een 1. Om het verschil duidelijk te laten zijn zit ertussen deze drempelwaarden een zogenaamd verboden gebied dat niet gebruikt mag worden. Als voorbeeld gebruiken we hier de TTL logica die op een voedingsspanning van 5 V werkt. Een TTL ingang herkent een logische 1 bij een spanning van tenminste 2,0 V en een logische 0 bij een spanning van ten hoogste 0,8 V. Het gebied tussen 0.8 en 2.0 volt is het zogenaamde verboden gebied. Oudere computers waren vaak voor een groot deel uit deze TTL chips opgebouwd. Een ander type chips zijn de CMOS chips, deze hebben een ruimere voedinspanning en werken met 0 als 0 tot 1/3 van de voedingsspanning en 1 vanaf 2/3 van de voedingsspanning. Ook hier is het gebied tussen 1/3 en 2/3 van de voedingsspanning het verboden gebied. We kunnen dus door middel van elektrisch spanning (en hierdoor dus elektrische stroom) een logische waarde 0 of 1 maken.

Er zijn maar drie basiscomponenten waarmee alle digitale schakelingen gemaakt kunnen worden, inclusief complexe microprocessoren en dat zijn de AND, de OR en de NOT poort. Deze die componenten zal ik al eerste beschrijven. Ook laat ik het logische symbool, de waarheidstabel (tabel met invoer waarden en bijbehorende uitvoer waarden) zien en het nieuwe officiële schema symbool waar ik helaas (net als velen met mij) niet aan kan wennen. Vroeger gebruikten we in schematekeningen voor alle poorten het logische symbool waardoor je in één oogopslag kon zien hoe de schakeling in elkaar zat, met de nieuwe symbolen moet ik eerst in het symbool kijken wat het doet en dat is niet zo duidelijk. Ik denk dat veel mensen het met mij eens zijn want ook in veel nieuwe schema’s zie ik nog steeds de oude logische symbolen. Maar het is goed om ook de nieuwe symbolen te kunnen lezen.


De AND poort

De AND poort bevat een aantal ingangen en één uitgang, alleen wanneer ALLE ingangen hoog (1) zijn zal de uitgang ook hoog (1) zijn. In een formule schrijven we de AND poort als: X = A .B of X = AB. Hier onder staan het oude schema symbool (het logische symbool), de waarheidstabel en als laatste het officiële IEC symbool.

and poort
and poort waarheidstabel

De OR poort

De OR poort bevat een aantal ingangen en één uitgang, wanneer ÉÉN of meer ingangen hoog (1) zijn zal de uitgang ook hoog (1) zijn. In een formule schrijven we de OR poort als: X = A + B. Hier onder staan het oude schema symbool (het logische symbool), de waarheidstabel en als laatste het officiële IEC symbool.

or poort
or poort waarheidstabel

De INVERTER poort

De INVERTER (omkeer) poort bevat één ingang en één uitgang, wanneer de ingang hoog (1) is zal de uitgang laag (0) en wanneer de ingang laag (0) is zal de uitgang hoog (1) zijn. In een formule schrijven we de INVERTER poort als: A = X. Hier onder staan het oude schema symbool (het logische symbool), de waarheidstabel en als laatste het officiële IEC symbool.

inverter poort
inverter poort waarheidstabel

Nu zou ik eigenlijk duizend keer moeten schrijven, “Ik mag geen halve waarheden verkondigen!”, want er zijn nog twee veelgebruikte componenten, die eigenlijk een samenvoeging van twee van de bovenstaande componenten zijn, maar die zo vaak gebruikt worden dat ze een eigen symbool hebben. Ook komen deze componenten als een (samengevoegd) component voor in IC’s.


De NAND poort

De NAND (not and) poort bevat een aantal ingangen en één uitgang, alleen wanneer ALLE ingangen hoog (1) zijn zal de uitgang laag (0) zijn. In een formule schrijven we de NAND poort als: X = A .B. Hier onder staan het oude schema symbool (het logische symbool), de waarheidstabel en als laatste het officiële IEC symbool.

nand poort
nand poort waarheidstabel

De NOR poort

De NOR (not or) poort bevat een aantal ingangen en één uitgang, wanneer alle ingangen laag (0) zijn zal de uitgang hoog (1) zijn. In een formule schrijven we de NOR poort als: X = A + B. Hier onder staan het oude schema symbool (het logische symbool), de waarheidstabel en als laatste het officiële IEC symbool.

nor poort
nor poort waarheidstabel
nor poort IEC symbool

Met de combinatie van deze logische componenten kunnen we elke complexe logische schakeling (zoals optel schakelingen e.d.) maken. In de bovenstaande voorbeelden hebben de poorten slechts twee ingangen, dit aantal ingangen kan ook meer zijn, er zijn zelfs IC’s met AND poorten met wel 8 ingangen. Ook kunnen we met twee AND poorten met elk twee ingangen een AND poort met drie ingangen realiseren. Kijken eens goed of u dit begrijpt, dit is essentieel om complexe digitale schakelingen te kunnen begrijpen. Dit lijkt wat omslachtig maar vaak hebben IC’s bijvoorbeeld zes AND poorten aan boord en is het gebruiken van twee AND poorten met twee ingangen efficiënter en goedkoper dan het weer bijplaatsen van een extra IC met AND poorten met drie ingangen.


De 3 x AND poort

Hier is een voorbeeld van een enkele AND poort met drie ingangen en de vervanging met twee kleinere AND poorten met elk twee ingangen.

3 input and poort
3 input and poort waarheidstabel

De EXCLUSIVE OR poort

De volgende complexe poort is de Exclusive OR poort. Dit is een redelijk complexe bouwsteen die ook u ook als IC met een aantal van deze bouwstenen kun kopen. Deze exclusive OR functie is de belangrijkste bouwsteen van een schakeling die twee binaire getallen kan optellen. De poort geeft alleen een hoog (1) op de uitgang als slechts één van de ingangen hoog (1) is. Wanneer beide ingangen gelijk zijn, is de uitgang laag (0). In het IEC symbool blokje wordt deze poort aangegeven met een = teken wat een beetje onlogisch overkomt. Maar gezien mijn kritiek op deze tekens sluit dit er weer mooi op aan. De XOR poort heet ook wel logisch verschil (logical difference) maar ook “half adder” waarmee een opteller zonder carry wordt bedoeld. Dit is een voorzetje op de echte optel schakeling die we hierna gaan bespreken.

xor poort
xor poort waarheidstabel

Ik gaf eerder al aan dat dit soort complexe poorten op te bouwen (en meestal echt intern zo opgebouwd) zijn met de drie standaard logische bouwstenen, de AND de OR en de INVERTER. Hier onder staat het schema van een XOR poort maar dan opgebouwd met de drie standaard logische poorten.

xor poort opbouw

De logische ADDER

We gaan nu een stuk complexer naar een basisbouwsteen van een processor in de vorm van een opteller van twee 4 bits getallen. Het optellen van twee bits is relatief eenvoudig , een 0 plus een 0 is 0, een 0 plus een 1 is 1 en een 1 plus een 1 is 10. Dit is dus een 0 met 1 onthouden (carry) en deze carry moeten we dus bij het optellen van de volgende twee bits weer erbij tellen. De volgende logische schakeling kan twee bits bij elkaar optellen en de carry in meetellen en een carry uit genereren. Bekijk deze logische schakeling eens goed en probeer deze te doorgronden voor u verder leest.

adder logische schakeling
adder waarheidstabel

Wanneer we vier van deze blokken samenvoegen kunnen we een vier bits opteller maken waarbij we de carry telkens doorgeven aan het volgende blok. Voor hele grote binaire getallen is dit nogal traag omdat de carry in bepaalde gevallen door alle poorten moet lopen, daarom worden in een echte processor vaak meerdere 4bit adders naast en achter elkaar gezet. In een processor kijkt men niet op een logisch poortje meer of minder, de snelheid is meestal belangrijker.

4 bit adder logische schakeling

De MULTIPLEXER

Nog een veelgebruikt complexe logische schakeling (die ook als standaard IC verkrijgbaar is) is een multiplexer. Deze worden binnen een processor ook veel gebruikt. Wanneer we twee invoer lijnen hebben en we willen om en om naar een van de twee sets kijken dan hebben we een soort omschakelaar nodig. Door middel van de select lijn kiezen we of we de eerste set ingangen met de uitgangen doorverbinden of de twee set ingangen. Zie hier ook het nuttige gebruik van een inverter in de select lijn die ervoor zal zorgen dat altijd één van beide set ingangen geselecteerd zal zijn, en nooit beide tegelijk. Dit blok komt ook voor als 8 bit multiplexer, alleen neemt het aantal aansluitpinnen enorm toe. We kunnen ook twee 4 bit multiplexers parallel zetten om een 8 bits multiplexer te maken.

2 bit multiplexer

De DECODER

Nog een veel voorkomende functie is de decoder die veel voorkomt binnen een processoren. Een voorbeeld is een twee naar vier decoder. Met twee bits zijn vier verschillende combinaties bits mogelijk, wanneer we deze vier combinaties willen vertalen naar vier uitvoerlijnen, kunnen we dit door middel van een decoder doen. Een ander bekend voorbeeld is de vier bit naar zeven segment decoder (ook als enkelvoudig IC verkrijgbaar) waarmee een vier bit waarde naar een cijfer op een zogenaamd zeven segment display omgezet kan worden.

2 naar 4 bit decoder

Voorbeeld zeven segment display.

zeven segment display cijfers
zeven segment decoder

Herbouwen DEC H-500 Computer Lab

Ik heb jarenlang met heel veel plezier met de producten van Digital Equipment Corporation (DEC) gewerkt en de geweldige PDP lijn computers waren in die tijd ongeëvenaard. Daarnaast maakten ze ook een digitale lab kit waarmee mensen zelf met logica digitale schakelingen konden ontwerpen en in de praktijk testen. Op de website instructables heeft iemand de H-500 Computer Lab helemaal compleet nagebouwd met gedeeltelijk modernere hardware, maar de originele behuizing. De H-500 werd eind jaren 60 door DEC gelanceerd en maakte deel uit van een COMPUTER LAB-curriculum om studenten en ingenieurs kennis te laten maken met digitale elektronica. De machine zelf werd geleverd met een prachtige uitgebreide werkmap die een complete cursus digitale elektronica. Deze kit was bedoeld om cursussen in binaire rekenkunde, Booleaanse algebra, digitale logica of computertechnologie te begeleiden. Door middel van patchkabels kunnen logische poorten, flipflops, schakelaars, lampjes en een klokgenerator met elkaar verbonden worden en een van de voorbeelden is een teller die binair kan tellen en het resultaat op lampjes (tegenwoordig leds) zichtbaar maakt. Ik vond dit een fantastisch ontwerp en een nog mooiere herbouw. Hieronder staat de link naar de site waar u de complete bouwinstructies en enkele demonstratie video’s kunt vinden.

Ga naar: www.instructables.com/id/DEC-H-500-Computer-Lab-Reproduction

Posted on Leave a comment

Alles over Arduino boards

arduino Uno

De Arduino is een opensource board / computerplatform dat is gebouwd rond de ATmega microcontroller familie
van Atmel. Het is een goedkoop board (tussen de 5 en de 30 euro maar gemiddeld 10 a 11 euro), er is veel code
voor beschikbaar, een goed en gratis ontwikkelplatform beschikbaar, veel documentatie en voorbeeld projecten online te vinden en er zijn veel (vaak goedkope) uitbreidingen en sensoren te koop. Dit maakt de Arduino een ideaal platform voor hobbyisten en doordat er zeer veel digitale en analoge invoer en uitvoer pinnen beschikbaar zijn met uiteenlopende functies zoals ADC, PWM, I2C en interrupts is het ook een uitermate geschikt board voor het aansturen van robots. Er zijn (ook redelijk goedkoop) diverse uitbreiding boards voor de Arduino boards te koop zoals schakelaars, lichtsensoren, bewegingsmeters, afstandsmeters, temperatuursensoren, RF en Infrarood afstandbedieningen, USB, Bluetooth en zelfs Wifi of een standaard seriële interface. Door middel van de standaard uitvoer pinnen en uitvoer boards kunt u bijvoorbeeld motoren, lampjes en beeldschermen aansturen. Deze extra invoer en uitvoer boardjes heten ook wel shields en hiervan wordt een ruim assortiment via Internet te koop aangeboden. De diverse Arduino boards zijn ook zeer geschikt voor het aansturen van Robots. Vriendelijke groet, Hein Pragt.

Verschillende uitvoeringen

Het Arduinoplatform kent verschillende uitvoeringen van de hardware rond de Atmega168 of Atmega328 van zeer klein tot zeer uitgebreid, van goedkoop to redelijk duur. De meest gebruikte modules die kant en klaar in Italië worden
gemaakt zijn: de Arduino UNO. Arduino, dit is de meeste bekende versie, de Arduino Mega 2560 met de Atmega 2560-chip, de Arduino Nano en de Arduino mini die zeer klein zijn. Daarnaast zijn er ook Arduino bouwpakketten te koop waarbij zelf alle componenten op een printplaat gesoldeerd moeten worden. Ook is er momenteel een ruim aanbod aan zogenaamde klonen, deze boards zijn (meestal volledig) gelijk aan de originele boards, soms met enkele uitbreiding en meestal een stuk goedkoper. De Arduino is opgebouwd rond de 8 bits microcontroller van de firma Atmel en de twee belangrijkste varianten zijn de Atmel 168 (16 k geheugen 8 bits) en de Atmel 328 (32 K geheugen 8 bits). Deze microcontroller bevat standaard: 14 digitale inputs of outputs of een combinatie daar van, 6 Analoge inputs, 16 of 32 kb flash geheugen, meestal een USB aansluiting en een I2C interface. Wanneer u begint met programmeren in een nieuwe programmeertaal begint u meestal met een eenvoudig “Hello world!” programma, bij de Arduino is het eerste programma een klein programma om een led te laten knipperen. Dit gaat bij de Arduino wel
heel erg eenvoudig omdat op de digitale pin 13 al een LED is aangesloten is. Wanneer u simpelweg een USB kabel aansluit en het voorbeeld programma knipt en plakt, ziet u na het compileren en het doorsturen van de code naar de Arduino dat de LED knippert. Zo eenvoudig is het!

Arduino programmeren

Arduino IDE

Om een Arduino te programmeren heeft u software nodig, namelijk de Arduino programmeeromgeving. Deze gratis ontwikkelomgeving kunt u hier downloaden , deze omgeving is geschikt voor Windows, Linux en Mac OS X. Wanneer u de computer via een USB kabel aangesloten heeft op het Arduino board kunt u rechtstreeks de programmacode overzetten naar de Arduino. U programmeert dus op uw eigen computer en “upload” de code naar het Arduino board. Het enige wat u hoeft te doen is in het menu het type board te selecteren dat u gebruikt en de poort waarop het board aangesloten is (wanneer er meerdere poorten zijn). Er is eigenlijk maar één programmeertaal populair voor de Arduino en dat is de programmeertaal C en C++. De programmeeromgeving inclusief een grote hoeveelheid standaard bibliotheken voor LCD, Servo, motoren, wifi e.d. is gratis te downloaden. De programmeertaal C is niet de meest eenvoudige programmeertaal, op deze site kunt u ook een eenvoudige beginnerscursus C en C++ vinden. De Arduino C veriant wijkt op een paar punten af van de C standaard en helaas zijn ook niet alle functies aanwezig in de meegeleverde bibliotheken. Het blijft natuurlijk een 8 bits processor en bijvoorbeeld de ondersteuning van double variabelen is een beetje gebrekkig. Daar waar een standaard C programma begint met een main() routine, bestaat een Arduino programma (vaak een schets, genoemd) bestaat uit twee programma blokken, de setup() en de loop(). Aan het begin van het programma staat de “void setup()” en in deze functie staat de initialisatie van het programma zoals initialisatie van I/O pinnen, initialisatie van software libraries en globale variabelen. De setup() functie wordt bij het opstarten van het programma één keer uitgevoerd door de Arduino. Daarna is de loop() functie aan de beurt, deze wordt eindeloos herhaald tot de stroom wordt uitgezet. Vanuit deze loop() functie kunt u weer andere functies aanroepen en zo kunt u een goed gestructureerd programma in elkaar bouwen.

Arduino Uno

arduino

De Arduino Uno (eigenlijk versie 1.0) is het basis microcontroller board die gebaseerd is op de ATmega328 processor. Het board heeft 14 digitale input / output pennen waarvan er 6 gebruikt kunnen worden als PWM outputs en 6 analoge inputs. De processor snelheid is 16 MHz en het board heeft een USB aansluiting, een voedinspanning plug, een ICSP header en een reset knop. De gangbare versie momenteel is revision 3. Dit board is meestal de referentie standaard voor alle ‘compatible’ versies van andere leveranciers.

De Arduino Uno kan een Atmega8, Atmega168, of Atmega328 processor bevatten, recente modellen gebruiken allemaal de ATmega328, de configuratie van aansluitpennen is identiek voor alle drie processors. De voedingsspanning kan geleverd worden via de USB kabel (let wel op de maximale stroom die deze kabel kan leveren) of via een externe spanningsbron. De minimale invoerspanning van de externe voeding is 7 volt en boven de 12 volt zal de spanningsregelaar erg warm worden. De aanbevolen spanning is dan ook tussen de 7 en 12 volt, een 9 volt batterij werkt ook prima. Elk van de 14 digitale aansluitpennen kan gebruikt worden als input of output waarbij de mode softwarematig ingesteld kan worden door middel van pinMode(). Ze werken op 5 Volt en kunnen maximaal 40 mA stroom per pin leveren. Ook kan er een softwarematig een internal pull-up weerstand ingeschakeld worden van 20-50 K Ohm. Sommige pennen hebben ook een dubbele functie: 0 en 1 RX en TX seriele verbinding, 2 en 3 externe interrupts, 3, 5, 6, 9, 10, en 11 kunnen PWM outputs zijn, 10, 11, 12 en 13 kunnen gebruikt worden voor SPI communicatie. Bij bijna elke Arduino zit er een led aan pin 13 en zit er vanaf de fabriek een blink programma ingebakken die deze led laat knipperen. A4 en A5 hebben een dubbel funtie als SDA en SCL pin voor I2C communicatie. Er kan softwarematig gekozen worden welke functie een aansluit pen heeft. Een van de voordelen van een Arduino Uno is dat de processor vaak in DIL uitvoering is en gewoon in een voetje zit en dus te vervangen is wanneer u de processor opgeblazen heeft. Dit is veel goedkoper dan een nieuw board kopen.

ChipATmega328 16 Mhz
Voltage5 V uitvoering
Voltage raw7 – 12 Volt
Digitale pins14 (waarvan 6 PWM)
Analoge inputs6
Stroom per pin 40 mA
Afmeting53.4 mm x 68.6 mm
SRAM2 KB
EEPROM1 KB
Flash32 KB

Arduino Uno versus Arduino Mega

Areduino mega

Er zijn behoorlijk wat verschillen tussen de Arduino Uno en de Arduino Mega waarvan sommige verschillen voor de
hand liggen maar sommige verschillen zijn ook iets mee geniepig zoals pinnen op andere plekken (zoals I2C pinnen) en bijvoorbeeld andere mapping van interne registers voor bijvoorbeeld PWM frequentie en uitvoer pinnen. Maar de meeste van deze aanpassing zijn redelijk eenvoudig door te voeren waardoor de meeste Arduino Uno projecten ook werken op een Arduino Mega. Omgekeerd zal vaak wat moeilijker zijn omdat de Arduino Mega nu eenmaal meer functionaliteit heeft dan de Arduino Uno. Door het grote aantal I/O pinnen wordt de Arduino mega ook gebruikt in het Retroshield project om allerlei oude processoren te laten werken op een Arduino mega die dan als ram / rom en I/O emulator werkt.

Een duidelijk zichtbaar verschil is dus het aantal I/O pinnen, de Arduno Uno heeft 20 I/O pinnen en de Arduino Mega 70 I/O pinnen wat een behoorlijk verschil is. Het aantal analoge pinnen is ook redelijk groot, de Arduino Uno heeft er 6 en de Arduino Mega 16. Natuurlijk is het altijd mogelijk om met externe IC’s te multiplexen op de Arduino Uno maar dit vergt wel extra code en extra hardware. In dit opzicht is de Arduino Mega dus duidelijk in het voordeel. Ook het beschikbare geheugen is behoorlijk verschillend, de Arduino Uno heeft 32 KB flash geheugen (voor het programma), 2 KB SRAM (werkgeheugen) en 1 KB EEPROM, terwijl de Arduino Mega 256 KB flash geheugen, 8 KB SRAM geheugen en 4 KB EEPROM aan boord heeft.

De Arduino Mega heeft vier hardware seriële poorten tegenover één seriële poort voor de Uno, maar meestal is één ook voldoende. Maar bij het aansluiten van meerdere seriële apparaten kun de extra hardwarematige seriële poorten wel handig zijn. Ook is het mogelijk om bijvoorbeeld één seriële poort te gebruiken voor de applicatie en de andere om debugging informatie te verzamelen. Ook is het aantal PWM (Pulse Width Modulation) pinnen verschillend, de Arduino Mega heeft er 14 en de Arduino Uno 6 pinnen. Dit is zeer handig voor het aansturen van bijvoorbeeld motoren of servo’s. Het kan natuurlijk ook softwarematig via andere pinnen maar hardwarematig is toch stabieler en gebruikt veel minder kostbare CPU tijd.

Er zijn ook wel nadelen aan de Arduino Mega, het board is duurder dan de Arduino Uno (dubbel zoveel onderdelen) en de |CPU chip zit er op gesoldeerd terwijl deze bij de Arduino Uno in een voetje zit. Bij de Arduino Uno kun je dus de chip nog vervangen, bij de Arduino Mega is dit dus niet meer mogelijk en moet een compleet nieuw board gekocht worden. Ook is de meeste software (en hardware) nog ontwikkeld voor de Arduino Uno en zijn er vaak (kleine) aanpassingen nodig om het werkend te krijgen op een Arduino Mega board. Toch wint de Arduino Mega het voor mij van de Arduino Uno in mijn Robot project waar de uitbreidingen de e Arduino Mega heeft erg welkom zijn.

ChipATmega1280 16 Mhz
Voltage5 V uitvoering
Voltage raw7 – 12 Volt
Digitale pins54 (waarvan 15 PWM)
Analoge inputs16
Afmeting53 mm x 101 mm
SRAM8 KB
EEPROM4 KB
Flash128 KB

*) ATmega2560 model heeft 256 KB flash geheugen!

Arduino Nano

Arduino Nano

De Arduino Nano is ook een heel klein Arduino boardje dat speciaal geschikt is om op een zogenaamd breadboard te gebruiken omdat de aansluitpinnen aan de onderkant zitten. Hierdoor kan het board eenvoudig in een breadboard geprikt worden. Het board is gebaseerd op de welbekende ATmega328 (Versie 3.x) of ATmega168 (Versie 2.x). Er zit geen voedingsplug op het board, wel voedinspanning pinnen. Het board kan gevoed worden door middel van de Mini-B USB aansluiting, 6 tot 12V spanning op de raw input of 5V gestabiliseerde voeding op pin 27. De spanningsbron zal automatisch geselecteerd worden uit de beste van de drie. De Arduino Nano kan worden geprogrammeerd via de ingebouwde USB poort. Het board kan met de standaard Arduino programmeer IDE geprogrameerd worden, u kunt het board en de poort eenvoudig in het dropdown menu selecteren. De mogelijkheden van de kleine board zijn erg groot maar het ontwerp is wel speciaal voor gebruik op een experimenteerboard (breadboard) gemaakt. Ik gebruik zelf vaak een Arduino Nano omdat deze zo compact is en ook in veel retro computer boards (zoals de Apple 1 replkica) gebruikt men de Arduino Nano als I/O emulator.

ChipATmega328 / ATmega168 16 Mhz
Voltage5 V uitvoering
Voltage raw7 – 12 Volt
Digitale pins14 (waarvan 6 PWM)
Analoge inputs8
Afmeting45 mm x 18 mm
SRAM1 KB (ATmega168) of 2 KB (ATmega328)
EEPROM512 bytes (ATmega168) of 1 KB (ATmega328)
Flash16 KB (ATmega168) or 32 KB (ATmega328)

Arduino download en links

Hier staan een aantal externe links naar pagina’s en documenten die handig en nuttig zijn wanneer u begint met het Arduino board.

link: Download hier de Arduino IDE

link: Nederlandstalige Manual voor de Arduino IDE

Posted on Leave a comment

Betekenis transistor type codes

TO72

De transistor is een halfgeleider onderdeel dat veel gebruikt wordt in diverse soorten elektronische schakelingen. We onderscheiden een aantal type zoals het materiaal waarvan ze gemaakt zijn (silicium / germanium) ze kunnen NPN en PNP zijn (ezelsbruggetje Niet Pijl Naar basis en Pijl Naar Pasis) en er bestaan ook bipolaire of veldeffect transistorren. Het grootste deel van de transistoren zijn van silicium gemaakt. En deze kunnen vrij hoge temperaturen verdragen. Informatie over een bepaalde transistor wordt weergegeven als een code op de transistor. Volgens het Europese coderingssysteem zijn er twee letters, de eerste staat voor het type halfgeleider en het tweede staat voor het doel van de transistor.

Eerste letter

A – Germanium
B – Silicon
C – Gallium Arsenide
D – Indium Antimide

Tweede letter

C – Audio frequency Amplifier
D – Audio frequency power amplifier
F – Low power Radio frequency amplifier
P – High power Radio frequency amplifier

Voorbeelden

BC nnn is B – Silicon C – Audio frequency amplifier
BD nnn is B – Silicon, D – Audio frequency power amplifier
AD nnn is A – Germanium, D – Audio frequency power amplifier
AC nnn is A – Germanium, C – Audio frequency amplifier

Het Amerikaanse systeem van nummering is 2N met daarna een aantal cijfers die oplopen bij nieuwere transistoren. Hoge nummers zijn dus meer recente types. Het nummer zegt helaas niets over het type en het doel van de transistor.

Posted on Leave a comment

Voorschakelweerstand LED

led

Veel mensen die bijvoorbeeld met een Arduino board gaan experimenteren, willen ledjes laten branden (maar dan in de versie dat ze licht geven) en deze leds hebben een voorschakelweerstand nodig. Dit roept vaak twee vragen op, waarom moet er een voorschakelweerstand voor en welke waarde moet de weerstand hebben. De eerste vraag is snel te beantwoorden, leds moeten een voorschakelweerstand hebben om de stroom door de led te beperken tot c.a. 20 mA. Dit kan per led een beetje verschillen maar zal meestal in deze buurt liggen. Een led die zonder stroombegrenzing door middel van een weerstand aangesloten is zal meestal maar een korte lichtflits geven waarna de led voor eeuwig uit zal zijn. Toen ik ooit begon met elektronica waren leds nog erg duur en telkens wanneer ik me vergist had of door een kleine sluiting een weerstand overbrugt had, voelde ik het weer aardig in mijn hobby portemonnee.

We zouden nu kunnen denken dat we met de wet van Ohm snel even de voorschakelweerstand kunnen berekenen, maar er is een extra factor. Over de led zelf zal ook een drempelspanning staan (net als over elke diode) en deze kan variëren tussen de 1.8 en 3.3 volt. De correcte berekening is dus (voedinspanning – drempelspanning) / 0.02 = weerstand. Nu kunt u weerstanden in elke waarde krijgen, wanneer u maar diep genoeg in uw portemonnee kijkt maar in de betaalbare E12 reeks komt u uit op de waarden: 82, 100, 120, 150, 180, 220, 270 en 330 Ohm uit. U kunt het beste de eerstvolgende hogere waarde uit de E12 reeks kiezen. Een iets hogere waarde zal betekenen dat de led iets minder fel licht geeft maar u wel stroom zult besparen. Dit kan relevant zijn in schakelingen die op een batterij of accu werken.

Wanneer u erg precies wilt werken kunt u ook meerdere lagere weerstanden in serie zetten om de gewenste waarde te krijgen, dit is ook de opzet van de waardes van de E12 reeks. De drempelspanning van de led is afhankelijk van het type en de kleur, bij speciale leds kijk ik zelf nog wel eens in de specificaties (zoals bij infrarood leds) maar bij de meeste leds kijk ik even in een simpel tabelletje (voor 5 Volt spanning) wat ik heb en gebruik ik de “rule of thumb” waarde, dit is meestal de waarde die ik nog in mijn bakje heb liggen.

SoortDrempelWeerstand
IR 1.2 220 Ohm
Rood 1.8180 Ohm
Geel 1.9180 Ohm
Groen3.3100 Ohm
Blauw3.3 100 Ohm
Wit 3.1 100 Ohm

De led is een diode en de stroom kan er dus maar in een richting doorheen lopen. Daarom is het belangrijk om de led goed aan te sluiten. Wanneer u een nieuwe LED bekijkt dan ziet u dat deze een lang en een kort pootje heeft. Het langste pootje (anode) wordt aan de plus aangesloten en het korte pootje (kathode) aan de min of ground. Het maakt niet uit aan welke kant de voorschakelweerstand zit.

Posted on Leave a comment

SSD1306 oled displays

SSD1306 i2c oled display

Vaak gebruik ik voor kleine projecten een goedkoop en eenvoudig aan te sturen 16×2 of 16×4 lcd display module en voor de meeste toepassingen is dit ook wel geschikt. Nadelen zijn wel dat ze vrij groot zijn en dat ze beperkte grafische mogelijkheden hebben. Een groot OLED scherm is meestal vrij duur maar er zijn ook goedkopere OLED displays te koop met mooie kleine schermen, in twee kleuren met een ingebouwde controller op basis van I2C of SPI met een resolutie van 128 x 64 of 64 x 48 pixels. Ik heb op het web zelfs kleine spelcomputers op basis van een Atmel processor, een paar knopjes en een van deze OLED displays gezien. Leuk om dus eens mee te experimenteren en ik heb er dus twee aangeschaft van verschillende formaten. Als eerste ging ik op zoek naar een library om ze aan te sturen en daar zijn er enkele van. Maar als gewoonlijk zijn dit weer zeer uitgebreide libraries voor meerdere soorten displays en code die ik eigenlijk niet nodig heb. Ook ben ik vaak niet zo tevreden over de kwaliteit van de code, soms is het code van iemand anders waar men dan zelf weer een schil omheen geprogrammeerd heeft. Dat dit vaak niet goed is voor de codesize en het gebruikte geheugen (waar we er op de Arduino toch als niet zoveel van hebben) mag duidelijk zijn. Na een paar experimenten bedacht ik dat ik deze OLED displays in meerdere projecten zou willen gebruiken en dus besloot ik maar zelf een zeer compacte library te schrijven voor de Arduino met alle basis functies en voor twee type OLED displays in alle oriëntaties. En omdat ik in delen van kennis en code geloof zet ik dit ook op deze pagina online. Het aansluiten was ook nog even puzzelen en ook dit beschrijf ik op deze pagina. Deze OLED displays gebruiken de SSD1306 controller en ook hiervan heb ik de datasheet gevonden en natuurlijk hier ter download geplaatst. Al met al is deze pagina een soort algemene kennis pagina over deze op de SSD1306 gebaseerde OLED displays. De code is duidelijk geschreven en volgens mij eenvoudig aanpasbaar wanneer u een nog iets andere versie van deze displays heeft gevonden. Koppel het dan even terug, dan kunnen we het hier weer delen. Ik wens u veel succes met uw hobbyprojecten. Vriendelijke groet, Hein Pragt.

Verschillende uitvoeringen

Wemos OLED display

Het eerste display dat ik gebruik heb is de WeMos D1 mini OLED sshield 64×48 van 0,66inch met een I2C interface. Het shield heeft veel meer pinnen omdat het ook anders aangestuurd kan worden maar we gebruiken natuurlijk graag I2C omdat het maar twee I/O lijntjes kost. Met grootte van 0,66inch is het een behoorlijk klein display maar is het heel duidelijk af te lezen omdat het een hoog contrast heeft. Het maakt gebruik van de SSD1306 als interface chip en maakt gebruik van het I2C adres 0x3C of 0x3D wat te selecteren is door een soldeerbrug op de achterzijde van het printje. Wel erg klein dus ik waag me er niet aan en laat ze op de standaard waarde staan. De spanning is 3,3V maar de I2C pinnen zijn zonder aanpassing aan te sluiten op de 5V Arduino. Wel moet het shield zelf uit de 3v3 aansluiting van de Arduino gevoed worden. Het ding werd geleverd met losse headerpins en aangezien u toch maar 4 aansluitingen nodig heeft kunt u ook rechtstreeks de draadjes aan de print solderen. Het voor deel van dit display is dat het door de 64×48 pixel
size niet zoveel geheugen van de Arduino gebruikt als schaduwgeheugen.
Link: Website van de leverancier.

SSD1306-i2c-oled-display

Het tweede display dat ik gebruikt heb is een vrij standaard verkrijgbaar OLED display met witte pixels, een resolutie van 128×64 en een aansturing door middel van I2C en het SSD1306 driver IC. Ook dit shield heeft dus maar twee datalijnen nodig en het verbruikt minimaal stroom zodat het ook goed te gebruiken is in projecten die uit een accu of batterij gevoeld moeten worden. De afmeting van dit scherm is iets grote dan de voorgaande en is 26,0 x 15,0 mm. De module werkt op 3v3 en kan uit de 3v3 uitgang van de Arduino gevoed worden, waarbij de I2C lijnen gewoon op de 5V Arduino pinnen aangesloten kunnen worden. Het I2C adres van dit OLED shield is standaard 0x3C. Het scherm is heel duidelijk afleesbaar door een zeer hoog contrast. Doordat het gebruik maakt van 128×64 pixels bent u bij de Arduino wel ruim 1 Kb aan kostbare sram kwijt voor dit display.

SSD1306 display controller

De SSD1306 is een single-chip CMOS OLED/PLED driver met controller voor displays met een maximom resolutie van 128 x 64. Het IC bevat een display controller met display RAM en een ingebouwde oscillator zodat het met minimale externe componenten gebruik kan worden. Het heeft een ingebouwde 256 stappen brightness control. Het heeft een 6800/8000 series compatible Parallel Interface, I2C interface of een Serial Peripheral Interface.
Link: Datasheet van de SSD1306 controller.
Link: Website van de leverancier SSD1306 controller.

Aansluiten van het display

Hoewel er op Internet op diverse plekken staat dat je de displays ook op de 5V uitgang kunt aansluiten houd ik me liever aan de specicficaties en als er 3v3 beschikbaar is op de Arduino sluit ik de vcc van de display’s hier op aan.

DisplayArduino
Vcc3v3
GndGnd
SclA5 (SCL)
SdaA4 (SDA)

Aansluiting wemos 64×48 OLED display

DisplayArduino
Vcc3v3
GndGnd
D1A5 (SCL)
D2A4 (SDA)

Code plus voorbeeld

Download eerste: HIER mijn library voor de Arduino en installeer deze via de IDE in uw Arduino omgeving. Herstart de IDE en kijk bij de voorbeelden en zie daar “oledtest128.ino” en de “oledtest64.ino” staan. De library werkt voor beide boards, Wanneer u geheugen wilt besparen bij gebruik van de 64×48 display kunt u het buffer verkleinben door in de
libraries map en in de map SSD1306 het bestand SSD1306.cpp aan te passen, verander de defines aan naar 64 en 48 en compileer daarna de schets opnieuw. Ik gebruik deze library ook zonder enige aanpassing voor het Wemos D1 mini board waar standaard de 64×48 OLED display module opgeprikt kan worden. Ook hier kunt u de “oledtest64.ino” sketch zonder enige aanpassing compileren en naar uw Wemos D1 mini board uploaden.

De code van deze libray is compact en bevat alleen een aantal basis functies:


  public:
    Ssd1306(uint8_t i2caddr,uint8_t width,uint8_t height,uint8_t orientation);
    void begin(void); 
    void oledSetPixel(int16_t x, int16_t y, uint16_t color);
    void oledDrawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
    void oledDrawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
    void oledFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
    void oledDrawCircle(int16_t x0, int16_t y0, int16_t r,uint16_t color);
    void oledDrawChar(int16_t x, int16_t y, unsigned char c, uint16_t color);
    void oledPrintLine(int16_t x, int16_t y, unsigned char *c, uint16_t color);
    void oledPrintLineP(int16_t x, int16_t y, unsigned char *c, uint16_t color);    
    void oledInvert(void); 
    void oledNormal(void);
    void oledCopyDisplayBuffer(void);
    void oledClearDisplayBuffer(uint8_t value);


Met deze basisfuncties kunt u zelf uitbreidingen maken in uw eigen code, ik hou van libraries die alleen basisfuncties bieden omdat ik meestal toch zelf dingen wil maken op mijn eigen wijze, die net niet in de library zitten of net anders waardoor ik een grote hoeveelheid code van een library mee compileer die mijn code laten groeien en waar ik niets aan heb. Ik wens u veel succes met deze code. De displays kunnen eigenlijk maar weinig tekst weergeven, bij een font van 5×7 is dit de verdeling op het scherm.

Layout van het display

Let op! Er is ook een 1.3″ oled display dat I2C aangestuurd kan worden door een Arduino maar blijkbaar zit er de 1.3″ oled display versie een SH1106 controller in plaats van de SSD1306 die op de 0.96″ oled displays zit. Mijn code werkt alleen met de SSD1306 controller.

Links en downloads

Download: Download eerste: HIER mijn library voor de Arduino.

Link: Datasheet van de SSD1306 controller.
Link: Website van de leverancier SSD1306 controller.

Posted on Leave a comment

ATtiny en ATmega ISP programmeer board

Arduino ISP programmer board

Ik had al eens een ISP programmer shield gemaakt op de Arduino Uno om ATtint processors te kunnen programmeren.
Helaas was het bordje een beetje slordig, moest heel precies op de goede pennen gedrukt worden en had een normaal
ic voetje waardoor het in en uithalen van het ATtiny ic ook niet echt eenvoudig ging. Voor het ISP programmeren van de ATmega328 gebruikte ik nog steeds een breadboard oplossing en dus was het tijd om een universele ISP programmer te kopen of te maken. Eerst kocht ik een goedkope Chinese variant van de USBISP maar deze was niet aan de praat te krijgen, ook omdat hij niet herkent werd door de standaard IDE. Na een paar pogingen heb ik dit maar opgegeven. Er staan redelijk veel ontwerpen van ISP programmers maar allemaal een beetje onduidelijk dus besloot ik om op een standaard Arduino experimenteer shield, met twee ZIF (Zero Insertion Force) sockets een universele ISP programmer te maken voor zowel de ATtiny als de ATmega328 processor. Ik heb er één controle led opgezet, die ook voor het testen van het board gebruikt kan worden om te zien of het programmeren lukt, door een aangepaste Blink scketch te programmeren. De ATtiny heeft geen extern kristal omdat deze meestal zonder extern kristal gebruikt zal worden i.v.m. de twee extra pinnen, de ATmega328 heeft het kristal in een voetje zodat het zowel met als zonder extern kristal geprogrammeerd kan worden. Het board werkt voor mij uitstekend, daarom plaats ik het voor anderen ook op mijn site. Vriendelijke groet, Hein Pragt.

Schema

ATTiny en ATmega328 ISP programmeer schield

Wanneer u vaker een ATtiny of een ATmega328 wilt programmeren (bijvoorbeeld om er een bootloader in te zetten) is een standaard programmeer shield voor de Arduino Uno toch handig. Ik heb voor het bouwen van deze print een standaard Arduino Uno experimenteer shield gekocht, deze heeft al de aansluitpinnen voor de Arduino Uno op de goede pplaats en voldoende lege dubbelzijdige eilandjes met gaten voor de schakeling die we gaan maken. Dit dubbelzijdige is ook handig omdat ze aan beide zijden verbindingen kunnen leggen maar ook aan beide zijden componenten kunnen plaatsen. Ik heb twee ZIF sockets genomen om de chips eenvoudig te kunnen plaatsen en
uitnemen zonder pennen te beschadigen of te buigen. Het schema kunt u onder bij de downloads vinden, druk dit eerst af. De ZIF sockets heb ik als eerste midden op de experimenteer print geplaatst, en ook heb ik de pin rijen voor de verbinding met de Arduino Uno er op gesoldeerd. Daarna heb ik met fijn montagedraad in diverse kleuren de verbindingen tussen de aansluitpennen van de Arduino Uno en de pinnen van de ZIF sockets gesoldeerd en de lijnen netjes ruim naast elkaar over de print verdeeld. Daarna heb ik de led, de condensator op de resetpin en de weerstanden gemonteerd en daarna alle verbindingen met de universeelmeter gecontroleerd op goede verbinding en op eventuele sluiting. (Alles was goed, maar meten is weten en gissen is missen!). He board is nu klaar voor de eerste test.

Om de Arduino Uno als ISP programmer te gebruiken moet u er eerst op een normale Uno de “ArduinoISP” sketch in laden, deze kunt u vinden onder voorbeelden in de Arduino IDE. Compileer de sketch en upload het naar de Arduino Uno, hierna is de Arduino Uno veranderd in een ISP programmer en kunt u het shield plaatsen. Selecteer nu eerst het type chip dat u wilt programmeren, voor de ATmega328 kunt u gewoon de Arduinu Uno selecteren. Laat de seriele poort op de oorspronkelijke Uno staan en selecteer bij Tools -> Programmer de “Arduino as ISP” optie. Hierna kunt u een boorloader branden of een sketch uploaden naar uw Arduino Uno met programmer shield, waardoor het in de chip in de ZIF socket geprogrammeerd zal worden. Hier onder staat een test Blink sketch voor deze programmer.


void setup() {                
  // initialize the digital pin as an output.
  pinMode(0, OUTPUT); //LED on Model B tiny
  pinMode(1, OUTPUT); //LED on Model A tiny
  pinMode(11, OUTPUT); //LED on Model 328p      
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on
  digitalWrite(1, LOW);
  digitalWrite(11, LOW);
  delay(1000);             // wait for a second
  digitalWrite(0, LOW);    // turn the LED off 
  digitalWrite(1, HIGH); 
  digitalWrite(11, HIGH); 
  delay(1000);             // wait for a second
}

Arduino IDE aanpassen voor de ATtiny

Om de ATting85 te kunnen programmeren moeten we eerste de ISP sketch in de Arduino Uno uploaden. Deze sketch kunt u vinden in voorbeeld bestanden die meegeleverd zijn met de Arduino IDE en die u kunt vinden in het bestand -> Voorbeelden en de sketch heet ArduinoISP. Verbind de Arduino Uno zonder shield aan de computer en upload deze sketch naar de Arduino Uno op de gebruikelijke wijze. Nu gaan we de Arduino IDE aanpassen zodat deze de Attiny gaat ondersteunen. Zoek in het scherm dat u kunt vinden onder Bestand -> Voorkeuren naar het invoerveld “Aditionele bordenbeheer URL” en vul daar de volgende URL in:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Arduino ide menu

Druk daarna op de OK knop om de instelling op te slaan en sluit het scherm. Ga daarna naar Hulpmiddelen -> Board -> Bordenbeheer en zoek helemaal onderaan naar het blok met de tekst “attiny by Davis A. Mellis” en klik op installeren. Na het installeren moet er een nieuw board toegevoegd zijn aan het selectiescherm voor de boards. Hier kist u het board, de processor en de keuze voor Arduino as ISP waarna u de shield op de Arduino kunt plaatsen. Nu kunt u de Blink sketch gaan laden waarbij u de LED pin even moet veranderen in 0 omdat we op deze pin de led gezet hebben. Wanneer u de Arduino met de shield aan de computer aansluit moet u in staat zijn om via de normale upload knop deze sketch in de ATtiny te laden, waaarna deze vrolijk zal gaan knipperen. Bij mij ging dit helemaal niet goed en gaf de IDE een foutmelding over een device nummer 00000, na controle bleek toch net een soldeerverbinding aan het IC voetje niet lekker te zijn. Hierna lukt het prima en kon ik mijn ATtiny85 met de blink sketch laden.

Links en downloads

Link: Het schema op groot format

Link: ATtiny board definition bestand

Link: ATtiny weerstation voorbeeld

Posted on Leave a comment

8031 Arduino Mega (Ned)

arduino mega 8031

arduino_mega_8031Dit is een leuk project op basis van een Intel P8031 processor (mag elke hogere versie ook zijn zoals 8051, 8052 e.d.) een klein 8031 shield en een Arduino Mega board. Hier mee kunt u experimenteren met een echte 8031 processor waarbij de ROM, de externe RAM en de seriële I/OI allemaal door de Arduino Mega voorzien worden. In feite heeft u hierme een 8031 gebaseerde computer, met tot 64 kB rom, 6 kb aan externe ram en seriële I/O. Bovendien hebt u alle pinnen van P1 open om er externe hardware op aan te sluiten en zijn ook alle andere aansluitingen van de 8031 processor naar buiten gevoerd. Ik heb zelf de software die origineel bij het 8031 shield geleverd werd in de prullenbak gegooid en nieuwe Arduino software geschreven. Deze is op veel punt verbeterd en heeft geen externe libraries meer nodig.

Daarnaast werd er standaard e Paul Monitor meegeleverd, maar hier kunt u niet zoveel mee. Het is leuk dat het werkt maar het is geen leuke demo. Ik besloot om zelf een oude versie van Tiny Basic die ik ooit aangepast had weer op te stoffen. Dit was een grotere klus dan ik gedacht had, ik wilde ook dat de code op een kale 8031 met 128 bytes ram zou draaien en daarvoor moest van alles naar de externe ram omgeschreven worden. Ook heb ik een grote code opschoon slag gedaan en de code weer netjes en overzichtelijk ingedeeld en geformatteerd. Op deze pagina lever ik een zip file met de sourcecode van de basic interpreter in 8031 assembly mee.

Hardware

De hardware die u nodig heeft is een 8031 shield, die u HIER kunt bestellen. Daarnaast hebt u een 8031 processor nodig, die verkoop ik in mijn webshop, en u heeft een Arduino Mega board nodig. Een van de kleine aanpassingen die ik aan de hardware heb aangebracht is op het 8031 shield. Volgens de datasheet moet de X1 pin aan massa worden gelegd wanneer de 8031 met een externe clock wordt aangestuurd. Op de foto is te zien hoe ik dit op de achterkant van de print gedaan heb met een soldeer overbrugging.

8031_shield_modification

 Dit heb ik dus gedaan en zodoende hoefde ik ook alleen maar de weerstand voor de X2 lijn te solderen. De rest van de condensators, de weerstand en de led zijn eigenlijk overbodig en die heb ik ook niet geplaatst. Ik heb wel een voetje gebruikt voor de processor en aan beide zijden een pennenreeks gesoldeerd zodat ik eenvoudig externe hardware, of bijvoorbeeld een rijd leds kan aansluiten.

Het resultaat mag er zijn, de code werkt prima op de 8031 Arduino Mega computer en er zit een klein demo programma meegeleverd in de rom. Wanneer u de schets compileert en naar de  Arduino Mega stuurt dan werkt het “out of the box”. Dit is een voorbeeld met de Arduino IDE.

8031_tb31

Links en downloads

Posted on Leave a comment

USB toetsenbord op Arduino

usb ps2 converter

De Arduino heeft niet standaard een USB interface om een USB toetsenbord aan te sluiten. Veel microcontrollers hebben standaard geen USB Host aansluiting. Nu is het mogelijk een USB Host shield te kopen en deze aan te sluiten op de Arduino of microcontroller maar dit zijn vaak dure shields en de interface is ook vaak moeilijk. Het PS/2 protocol voor toetsenborden is vrij eenvoudig, het bestaat uit een seriële clock en datalijn en elk teken dat aangeslagen zal worden zal serieel naar buiten verzonden worden. Iets dat bijna elke Arduino of microcontroller standaard wel kan.

Nu is het zo dat er van die kleine USB naar PS/2 adapters bestaan, en om eerlijk te zijn zit daar NIETS in, behalve een paar doorverbind draadjes. Fabrikanten hadden geen zin om een apart USB of PS/2 toetsenbord te maken, dus ze bedachten een toetsenbord controller die beiden kon. Bij het opstarten keek de controller naar de data – en data + lijn en wanneer beiden met een 10K pullup aan de plus zaten, ging het toetsenbord in PS/2 mode. Zo niet, ging het in USB mode. Het is dus zeer eenvoudig een standaard USB toetsenbord via een standaard USB plug aan te sluiten en met twee weerstanden het toetsenbord aangeven dat het PS/2 moet communiceren.

usb_ps2

Hoe sluiten we dit dan aan op een Arduino of microcontroller. Ten eerste hebben we een datalijn waar de seriele data op staat en een clock lijn die de clock voor de datalijn levert. Het is dus een goed idee om de clock lijn op een interrupt lijn aan te sluiten en bij elke interrupt de datalijn te lezen en in een register te schuiven. Bij een Arduino Uno ziet dat er zo uit:

Voor de Arduino is er een standaard library voor het lezen en decoderen van een PS/2 toetsenbord, dit is in C geschreven en kan naar een microcontroller “vertaald” worden. Voor de Arduino hoeft men dus verder niets te doen en het is fijn dat de standaard seriële lijn gewoon beschikbaar blijft. De Arduino library kunt u hier vinden: http://www.pjrc.com/teensy/arduino_libraries/PS2Keyboard.zip

Ik heb meerdere varianten van de PS/2 library gezien, het loont zich om nog even verder te zoeken of deze er ook is voor de hardware die u wilt gebruiken. MAAR… het aansluiten en omvormen van een USB naar PS/2 toetsenbord is een fluitje van een cent. Veel zelfbouwplezier, Hein Pragt.

Posted on Leave a comment

TRS80 Model 1 computer techniek

trs80-model1-level2

Deze pagina gaat over mijn allereerste echte computer die ik kocht met het geld van mijn eerste spaarrekening, de befaamde TRS80 Model 1 level 2 computer. In 1980 was er weinig keus in hobbycomputers, er was de Sinclair ZX-80, de Commodore Vic-20 en de TRS-80 en na veel nadenken besloot ik dat de TRS-80 de beste was. De TRS-80 was net drie jaar op de markt en ik kocht een eerste Level II-versies. Ik maakte al digitale schakelingen sinds mijn veertiende, las alles wat er over computers beschikbaar was en digitale techniek en leerde programmeren in Basic en Assembler. In een mum van tijd had ik het geheugen uitgebreid en verhoogde ik de snelheid en ik deed mijn eerste reparaties aan de TRS80-computer. Ik werd lid van de gebruikersvereniging en ben uiteindelijk ook voor Tandy gaan werken en heb veel TRS80-computersystemen verkocht en veel software geschreven in mijn vrije tijd en zelfs software verkocht voor de TRS80. Op een gegeven moment kende ik de TRS80 Model 1 Level II computer door en door. Ik hield ook van Adventure-games en raakte (tot op de dag van vandaag) bevriend met Scott Adams, de meest bekende ontwikkelaar van Adventure-games. De TRS80 Model I level II computer is vele jaren van mijn leven mijn goede metgezel geweest en heeft in zekere zin zelfs mijn carrière bepaald. Ik heb de TRS-80 altijd gekoesterd als mijn allereerste echte computer, maar helaas ging hij verloren tijdens een verhuizing.. Op deze pagina verzamel ik (vooral technische) informatie over de TRS-80 model I level II computer.

Specificaties van de TRS80 Model 1 computer

  • Naam: TRS 80 Model I
  • Bedrijf: Tandy Radio Shack
  • Soort: Home Computer
  • Land: U.S.A.
  • Jaar: 1977
  • Basic: Level 1 (4k ROM models)
  • Basic: Level II (12k ROM models)
  • Keyboard: 53 keys
  • CPU: Zilog Z80 / 1.77 MHz
  • RAM: 4 kb / 16 kb
  • VRAM: 1 kb
  • ROM: 4 kb (Basic Level 1) or 12kb (Basic Level 2)
  • Tekstmode: 32 x 16 of 64 x 16
  • Graphics: 128 x 48 pixels
  • Kleuren: Zwart / wit (groen door scherm voor monitor)
  • Geluid: Geen (later piepjes via cassette poort)
  • I/O: Monitor, cassette interface, expansion poort
  • OS: TRS DOS en NEW DOS
trs80_emulator1

TRS80-emulator

Ik hou van eenvoudige en gebruiksvriendelijke portable programma’s die kant-en-klaar kunnen worden gebruikt. En zo werd deze TRS80-emulator geboren, het is een eenvoudig te gebruiken emulator die u de ervaring van het gebruik van de oude machine zal geven, maar met moderne laadsnelheid en cassettebandjes op de pc-opslag. Op deze pagina staat een beschrijving en kunt u het programma downloaden.

link:

Technische documentatie

Wanneer u een TRS80 computer wilt repareren of aanpassen heb ik hiervoor diverse oude onderdelen in de webshop.

Een zeer uitgebreide beschrijving met schema’s van de TRS80 Model I level II computer.
Sams ComputerFacts – Model I (1985)(Howard Sams)(pdf)

De bekende technische handleiding die Tandy verkocht en die zeer slecht verkrijgbaar was.
Radio Shack TRS-80 Micro Computer Technical Reference Handbook 2nd

Dit is de technische referentiehandleiding van de TRS80-uitbreidingsinterface.
Expansion Interface Service Manual (19xx)(Radio Shack)(pdf)

Een zeer complete pagina met informatie over het TRS80 model 1.
www.trs-80.org/model-1.

Nog een zeer complete pagina met informatie over de TRS80 model 1
oldcomputers.net/trs80i

Een leuke pagina over het weer tot leven brengen van een TRS80 Model 1 computer.
classic-computers.org.nz/blog/2015-03-13-trs-80-model1-L1-fix

Een site met veel informatie over alle TRS80 computers (Ira Goldklang).
Ira Goldklang’s TRS-80 Revived Site (Engels)

Posted on Leave a comment

Micro-Professor MPF-1

mpf-1

De Micro-Professor MPF-1 werd geïntroduceerd door Multitech in 1981 en het was het eerste computerproduct van Multitech en waarschijnlijk een van ‘s werelds langst verkochte single board computers. Multitech veranderde in 1987 zijn naam in Acer. De MPF-1 was gebaseerd op de Zilog Z80-microprocessor en speciaal ontworpen om de grondbeginselen van machinecode en assembleertaal aan te leren. De MPF-1 ziet er niet uit als een standaard microcomputer board, het zit in een plastic boek dat uitklapt in twee delen, samen met twee audiocassettes en een trainingshandleiding. In gesloten vorm kan de MPF-1 op een boekenplank worden geplaatst om hem gemakkelijk op te bergen wat hem aantrekkelijker maakte, omdat hij gemakkelijk kon worden opgeborgen en niet erg opviel.


Programma’s worden in de MPF-1 ingevoerd met behulp van de Z80-machinecode in hexadecimaal formaat en het monitorprogramma geeft zowel het adres als de data weer op een display met zeven segmenten. Er is een reserve DIP-socket voor het toevoegen van extra ROM of RAM en er zijn ook twee 3,5 mm audio-aansluitingen rechtsboven op de computer voor het aansluiten van een audiocassettes om programma’s en code op te slaan en weer in te lezen. Later introduceerde Multitech een Tiny-Basic voor de MPF-1, de Monitor en Basic pasten in één 4 kByte ROM die de standaard 2 kByte monitor ROM kon vervangen. Deze configuratie werd op de markt gebracht als de MPF-1B.


In 1984 introduceerde Multitech de MPF-1P of MPF-Plus, een basiscomputer die een vervolg was op de MPF-1 omdat hij dezelfde vorm had, maar het had een enkel regel 20-cijferig, 14-segment fluorescerend display en een klik-type QWERTY toetsenbord. Het had dezelfde uitbreidingsconnector als de MPF-1 met een assembler en disassembler als onderdeel van de firmware (8 Kbyte). In 1985 werd de MPF-I/88 uitgebracht, de nieuwste in de MPF-I-lijn. Het was een op Intel 8088 gebaseerde single board computer met een tweeregelig LCD scherm. In 1993 kocht Flite Electronics International Limited in Southampton, Engeland, op dat moment een internationale distributeur van Acer, het auteursrecht op de trainingshandleidingen van de MPF-1 op net als de intellectuele eigendomsrechten voor firmware en hardware van Acer. Hierna produceerde Flite nog een aantal kleine batches van de MPF1B in Engeland.

Er zijn nog redelijk wat MPF-1 boards te koop en je ze ziet ze nog regelmatig op veiling en marktplaats websites. Ik heb zelf geen MPF-1 gehad maar er wel veel over gelezen en stilletjes gehoopt dat ik er ooit een kon aanschaffen. Uiteindelijk heb ik in mijn Z80 IDE een volledige implementatie van een MPF-1 emulator geschreven inclusief het oude toetsenbord en en zeven segment displays.

Mocht u nog een MPF-1 willen repareren, willen uitbreiden of na willen bouwen dan heb ik hiervoor alle oude onderdelen in de webshop.

Alle technische informatie die ik heb over de MPF-1

Hier staan bestanden die u kunt downloaden met alle technische informatie zoals schema’s e.d. van de MPF-1.

Alle gedigitaliseerde handleidingen die ik ooit gevonden heb

Hier staat een lijst van alle gedigitaliseerde of gescande handleidingen die ik ooit gevonden heb van de MPF-1 en uitbreidingen.

Alle binaire bestanden

Copyright

Hoewel er nog steeds (oud) copyright rust op de meeste bestanden die ik hier aanbied, zijn deze zo oud dat ik er van uitga dat de eigenaar van het copyright hier niet meer op zal handhaven en het voor hobbyisten mogelijk maakt om nog verder te ontwikkelen met deze legendarische computer. Mocht er materiaal op deze website staan waarvan de eigenaar wel bezwaar heeft tegen publicatie dan zal ik dit na melding verwijderen.

Posted on Leave a comment

555 timer chip toepassingen

NE555

Toen ik nog een jonge elektronica hobbyist was kwam er een ic op de markt met de aanduiding NE555 en het was een behoorlijk krachtig en universeel ontwerp. Het kon gebruikt worden als timer maar ook als oscillator en het wordt gebruikt in zeer veel uiteenlopende schakelingen. Zelfs 30 jaar na de introductie worden er jaarlijks nog steeds ongeveer een miljard stuks NE555 geproduceerd. Als elektronica hobbyist heb ik er altijd wel een paar NE555 op voorraad en ik heb er al meerdere handige schakelingen mee ontworpen en gebouwd. Op deze Wikipedia pagina kunt u alles lezen over de NE555. Men denkt dat de naam 555 komt door de drie 5K weerstanden die referentie spanning maken. De 555 timer chip is een zeer robuust en stabiel 8 pins IC die ingezet kan worden als een monostabiele-, bistabiele- of astabiele multivibrator gebruikt kan worden. Hieronder staat een vereenvoudigd blokdiagram van de interne werking van dit eenvoudige doch geniale chipje. Op deze pagina staan enkele leuke toepassingen van het NE555 IC.

Interne werking van het 555 timer IC

555 chip intern
  • Pin 1. Ground of de negatieve (0v) aansluiting.
  • Pin 2. Trigger, de negatieve ingang voor de eerste comparator, een negatieve puls op deze ingang “zet” de interne Flip-flop wanneer de spanning onder 1/3 van de voedingspanning zakt waardoor de uitgang van laag naar hoog zal gaan.
  • Pin 3. Output, De uitgang kan elk TTL circuit aansturen en kan zelfs 200mA stroom leveren waarmee rechtstreeks kleine luidsprekers, buzzers, LEDs, kleine motoren en relais aangesloten kunnen worden. (Let op dit kan niet in de CMOS variant).
  • Pin 4. Reset, deze pin reset de staat van de interne Flip-flop, het is een active-low input en moet aan een logisch 1 level worden verbonden wanneer het niet gebruikt wordt.
  • Pin 5. Control Voltage, deze pin hangt aan het 2/3V deel van de spanningsdeler en kan gebruikt worden om het omslagpunt te beïnvloeden. Hiermee kan dus de pulsbreedte veranderd worden. Wanneer deze pin niet gebruikt zal worden moet deze met een 10nF condensator aan de ground verbonden worden om ongewenst ruis gedrag te voorkomen.
  • Pin 6. Threshold, Een positieve spanning op deze pint hoger dan 2/3 van de voedingspanning zal de interne Flip-flop terugzetten en de uitgang van hoog naar laag laten gaan.
  • Pin 7. Discharge, De “ontlaad” pin hangt aan de collector van een interne NPN transistor die aan de niet geïnverteerde uitgang hangt en waarmee de timing condensator ontladen kan worden.
  • Pin 8. Vcc, dit is de positieve voedingspanning pin.

Voor meer informatie kunt u ook kijken op de wikipedia pagina over de 555.

Leuke toepassing als one-shot schakeling

Een paar jaar geleden kocht ik een mooi lesley effect pedaal voor de gitaar maar de ontwerper had hierbij een grote fout gemaakt. Er zat maar één knop op en bij het kort indrukken schakelde het effect uit en bij lang indrukken ging het van langzaam naar snel en vis versa. Als musicus op het podium heb je geen tijd om na te {-denken} over de tijd die je met de voet een knopje indrukt dus ging het regelmatig fout en schakelde het effect uit in plaats van langzamer of sneller te gaan. Ik bedacht een kleine schakeling waarmee ik een tweede externe drukschakelaar kon toevoegen voor alleen langzaam en sneller waarbij ik de originele schakelaar kon blijven gebruiken voor de bypass functie. Ik moest dus een schakeling bouwen die het indrukken van een knop (van willekeurige tijd) om kon zetten in een vast schakelmoment van 3 seconden. Een ideale klus voor de 555 timer, ik bouwde een kleine schakeling op een stukje experimenteer print dat net groot genoeg was om in het compartiment van de 9 volt batterij te passen want ik gebruikte toch alleen maar een externe voeding. Netjes opgeruimd en ingebouwd kon ik via een kleine plug een externe standaard voetschakelaar aansluiten en deze gebruiken voor het omschakelen. Deze schakeling werkte perfect en heeft zijn dienst in de praktijk ruimschoots bewezen. Hier staat de kleine schakeling, ik zou ook kunnen schakelen met een FET maar heb toch voor een klein relais gekozen omdat ik de ingang van de originele schakelaar niet kende en ik zo de pennen van het relais parallel over de aansluitingen van de originele schakelaar kon zetten.

555 timer one-shot

Het relais moet geschikt zijn voor de voedingspanning en mag niet teveel stroom trekken, de uitgang van de NE555
(niet de CMOS versie gebruiken) kan maar 200 mA leveren. Door middel van de trimpotmeter kan de lengte van de “puls” op de uitgang (en dus het relais) ingesteld worden, dit kan variëren van tienden van seconden tot meerdere seconden. De diode die over het relais staat is bedoeld om de inductiespanning van het relais kort te sluiten, deze diode staat in sper richting over het relais. Voor deze one-shot schakeling zijn nog veel meer toepassingen, zo kan men met een korte druk op een knop ook een lamp een vast ingestelde tijd laten branden.

Toepassing als astabiele multivibrator

Er zijn toestellen te koop die insecten maar ook muizen, ratten en katten kunnen verjagen door middel van ultrasoon geluid. Dit is geluid ver boven de 20 Khz, wat mensen niet kunnen horen maar de meeste dieren wel. Het idee is dat ongedierte dit zo vervelend vindt dat ze het geluid uit de weg zullen gaan. Ik kan me daar iets bij voorstellen. Zo’n kleine ultrasoon geluid generator is typisch een 555 time schakeling. Deze werkt op een normale 9 Volt batterij.

De buzzer moet wel een passief type en door middel van de trimpotmeter kan de frequentie ingesteld worden. Aangezien u het zelf niet hoort is het handig om hier even een scoop of een frequentieteller te gebruiken.

Single step key debounce

Een toepassing van het 555 ic die ik zelf gebruik is het onderdrukken van valse schakelpulsen van een schakelaar (debounce) voor een microprocessor schakeling. In feite is het gewoon een variant op de one-shot schakeling. De volgende kleine schakeling doet dit.

Het geheel werkt op een voedingsspanning van 5 Volt en het levert een mooie single step clock puls af.

Een 1 kHz clock generator voor digitale schakelingen

Nog een toepassing die ik gebruik bij digitale schakelingen die een hele lage clock frequentie nodig hebben of wanneer ik een schakeling aan het “debuggen” of testen ben, is een kleine 1000 Hz oscillator die een nette 5 volt clock puls kan leveren. De volgende kleine schakeling doet dit.

Dit is weer een variant op de astabiele multivibrator zoals we deze veel vaker zien. Deze heb ik standaard op een kleine print bij de hand om schakelingen te testen op een breadboard.

Lichtgevoelige schakelaar

Bij deze schakeling gebruiken we de 555 als komperator, deze schakeling laat een relais aantrekken wanneer de LDR onderbelicht is. Het is dus een schakeling die een relais laat aantrekken wanneer het donker wordt, dit kunt u bijvoorbeeld gebruiken om een buitenlamp automatisch aan te schakelen. Ik heb dit ook gebruikt om via een dubbelpolig relais de logica om te draaien en alleen als het licht was de vijverpomp aan te zetten. Een handig universele schakeling .

Het relais moet geschikt zijn voor de voedingspanning en mag niet teveel stroom trekken, de uitgang van de NE555
(niet de CMOS versie gebruiken) kan maar 200 mA leveren.

Led knipperlicht schakeling

Deze schakeling laat twee leds om de beurt knipperen, dit kan bijvoorbeeld leuk bij een modelspoorbaan gebruikt worden of daar waar een opvallende knipperende led als signaal moet dienen.

Door middel van de Elco in de schakeling kunt u de knipperfrequentie aanpassen. Een leuke eenvoudige 555 schakeling.

Posted on 4 Comments

6502 processor varianten

UM6502A

Er zijn door de tijd vele varianten verschenen van de 6502 processor, maar ook een aantal IC’s ontwikkeld die een 6502 “core” hadden zoals de bekende Nintendo NES variant. Op deze pagina kunt u een overzicht vinden van een groot aantal 6502 processor varianten.

6502 varianten overzicht

UM6502A

  • Second source 6502 processor van de firma UMC;
  • Loopt op 2 MHz klokfrequentie in plaats van de 1 MHz van de standaard 6502;

6502A

  • Loopt op 2 MHz klokfrequentie in plaats van de 1 MHz van de standaard 6502;
  • Toegepast in de Acorn BBC modellen A (16 KB RAM) en B (32 KB RAM);

65C02

  • 6502-kloon van Western Design Center uitgevoerd in CMOS;
  • Extra instructies en adresseer modes;
  • Gebruikt in de Apple IIc en ook een tijdje in de IIe;

6503, 6505, 6506

  • 6502 core met 12 bit-adresbus (4 KB)

6504, 6507

  • 6502 core met 13 bit adresbus (8 KB);

6509

  • 6502 core met 20 bit adresbus (1 MB);

6510

  • 6502 met toegevoegde 8 bit I/O Port (6 bits gebruikt);
  • Gebruikt in de Commodore 64;

6511

  • 6502 microcontroller met IO-poorten, seriële interface en RAM-geheugen, van Rockwell;

65F11

  • Variant op de 6511 met geïntegreerde Forth interpreter;

7501

  • 6502 in HMOS technologie;
  • Gebruikt in de Commodore 16 en Commodore Plus/4;

8500

  • 6510 in CMOS technologie;

8502

  • 6510 die op 2 MHz ingesteld kan worden;
  • Gebruikt in de Commodore 128;

65816 (65C816)

  • 16 bit variant van de 6502 van Western Design Center;
  • Gebruikt in Apple IIGS;
  • 16 bits registers en ALU;
  • 24 bits adresbus (16 MB);
  • Tot 24 MHz;

65802 (65C802)

  • Variant van de 65816 die pin compatibel met de 6502 is;
  • Tot 16 MHz;

Ricoh 2A03 / 2A07

  • 2A03 NTSC versie;
  • 2A07 PAL versie;
  • Mist de 6502’s binary-coded decimal instructies (waarschijnlijk voor het omzeilen van patenten);
  • Bevat ook een eenvoudige programmable sound generator (ook bekend als APU);
  • Heeft ook 22 memory-mapped I/O registers;
  • Bevat ook een eenvoudige DMA controller;

UA6527P

  • Kloon van de Nintendo Nes 2A07;
  • Dit is de PAL versie van deze NES cpu;


Posted on Leave a comment

Website van Grant Searle

6809 Sbc Schematic 1.2

Deze pagina linkt naar alle elektronica- en computerpagina’s van Grant Searle met veel leuke doe-het-zelf computerprojecten. Grant woont in het Verenigd Koninkrijk (Wales) en werd geboren in 1966 en kreeg zijn eerste soldeerbout toen hij acht was. Na vele jaren van verbrande vingers is hij nog steeds bezig met elektronica. Van midden 1975 tot eind jaren 80 was hij geabonneerd op Everyday Electronics en heeft deze tijdschriften nog steeds allemaal in een grote stapel. Zijn interesse in computers begon rond 1977, dus hij was erg actief met de thuiscomputers aan het begin van de jaren 80 en begon met een Dragon 32 en ging toen verder met de prachtige BBC Micro. De afgelopen jaren heeft hij zich toegelegd op het verzamelen van enkele van de oude computers, elektronicakits en tv-spellen, en heeft hij enkele computers opnieuw opgebouwd. Projecten omvatten een volledig functionele Z80 CPM-machine die slechts 9 chips gebruikt, een complete 6809-computer op 6 chips, een complete Z80-computer op 7 chips, een complete 6502-computer op 7 chips, tekst / grafische PAL- of NTSC-video en een PS / 2-toetsenbordinterface en verschillende recreaties van computers op zeer goedkope FPGA-borden. Deze website is erg inspirerend.

link: http://searle.wales/

Posted on Leave a comment

Werken met experimenteer print

Experimenteer print enkelzijdig 5 x 7

Veel hobbyisten bouwen net als ik veel schakelingen op een experimenteer PCB met gaatjes en soldeereilanden of banen met gaatjes. Dit is de meest eenvoudige wijze om een schakeling te bouwen zonder er een print ontwerp voor te maken. In het verleden heb ik printen gemaakt, eerst plakken en later projecteren, print in zuur-bad en daarna goed schoonmaken. Het resultaat was vaak mager en het aantal bewerkingen groot en duur. Wanneer u een beetje kunt solderen werkt een experimenteer print ook prima en ziet het er ook vaak nog redelijk netjes uit wanneer u de draden goed neerlegt en verschillende kleuren gebruikt. Toch zijn er een paar handige tips die ik kan geven voor het werken met experimenteer prints en bedrading hiervan.

Experimenteerprint

Als eerste neem ik aan dat u wel een goede soldeerbout heeft met een kleine punt en dat u redelijk kunt solderen. Ik plaats op een experimenteerprint altijd alle IC’s in een voetje, dit uit veiligheid voor het IC omdat u de print veel in de hand heef, draden bij pennen houdt, kunnen (zeker) MOS chips snel overlijden. Condensatoren en weerstanden hebben daar geen last van dus die soldeer ik rechtstreeks op de print. Ik denk altijd even goed na voor ik de onderdelen plaats over logische opstelling van de componenten (drivers tussen CPU en RAM chips) en positie zodat zo weinig mogelijk lijnen elkaar kruisen en verbindingen zo kort mogelijk zijn.

Ik gebruik altijd dun vaste kern draad in diverse kleuren. Vaste kern draad is in veel opzichten handiger, het kan niet uitwaaieren bij het solderen en zo een bijna niet te vinden sluiting veroorzaken,  het is buigbaar zodat u de draden netjes kun groeperen op de print. Ik gebruik altijd rood voor de voedinspanning en zwart voor de ground. Wanneer er nog een tweede voedinspanning is gebruik ik daarvoor vaak oranje. Als eerste leg ik altijd eerst alle voeding en ground lijnen aan, ik probeer dit zoveel mogelijk van buitenom naar binnen te doen. Daarna leg ik de andere lijnen aan. Meestal per groep en zoveel mogelijk bij elkaar met een eigen kleur zodat het geheel een logische layout krijgt, wat fout zoeken later veel eenvoudiger maakt.

Bedrading

Wanneer alle verbindingen op hun plaats liggen volgt de controle. Vroeger hing aan de muur van mijn eerste bedrijf de woorden: “meten is weten, gissen is missen”. Ik neem een multimeter en stel deze in op de Ohm stand om sluitingen te meten. Dan plaats ik de pennen op alle naast elkaar liggende pennen van de IC voetjes om te meten of er toch niet per ongeluk een sluiting is. Wanneer er toch een kleine sluiting is dan krab ik met een hele klein plat schroevendraaiertje de tin tussen de twee pennen weg, tot er geen sluiting meer is. Dan meet ik op de pennen van de IC’s na of de goede pennen met de goede pennen verbonden zijn, dit kost even wat werk maar bespaart veel ellende achteraf.

Dan is het tijd om de voeding te testen, ik zet de zaak onder spanning en meet alle voeding punten op de IC’s en andere componenten na. Als dit allemaal goed is gaat de spanning er af en is het tijd om de IC’s te plaatsen. Let goed op dat alle pennen netjes in het voetje zitten, ik heb best met regelmaat zitten debuggen op een krom gedrukte aansluitpen. Dan is het eindelijk tijd om te kijken of alles werkt door de voedinspanning er op te zetten. En als er geen witte rook of een venijnige tik is dan ben ik meestal blij.

MK14 kloon

Ik zet de zaak meestal ruim op en gebruik header pinnen en / of schroefaansluitingen om externe verbindingen te maken en Dupont kabels om verbindingen tussen twee printen te maken. Maak goed gebruik van kleuren, plaats stickers bij de aansluitpennen voor bijvoorbeeld polariteit, over een tijdje bent u vergeten waarvoor die pen nu eigenlijk bedoeld was. Ik wens u veel experimenteer plezier.

Posted on Leave a comment

Homepage Karen’s Corner

PIC14 MK14 clone

Een mooie Engelstalige website met veel leuke zelfbouw microprocessor projecten is “Karen’s Microprocessor Projects”. Een van de projecten die zij op haar pagina heeft staan is de PIC versie van het bekende MK14 board. Behalve een voorbeeld van het gebouwde project staat er ook een schema en gedetailleerde bouwinstructies en de code.

Daarnaast staan er nog een aantal leuke zelfbouw elektronica microprocessor projecten op haar website, allen goed gedocumenteerd met schema, bouwinstructies, uitleg en code. Enkele projecten zijn: Message Wand, Orrery, Talking Voltmeter, Morse Beacon, Music Box, Flicker Lamp, Humnuller, NIBL Tiny Basic Computer on a PIC en Notoof Remote Telemetry Device – Who needs Bluetooth! De meeste projecten zijn niet alledaags maar dat maakt ze vaak ook zo leuk om zelf te maken.

De meeste projecten gebruiken een PIC processor als basis, maar deze processor familie is ook al zeker dertig jaar op de markt en is veel gebruikt in diverse elektronica toepassingen. Ik verkoop ook wat oudere type PIC processoren in deze webshop.

Link: http://techlib.com/area_50/Readers/Karen/micro.htm

Posted on Leave a comment

Waarom kristal van 11.0592 MHz

Crystal resonator

In deze webshop heb ik kristallen van 11.0592 MHz maar ook 2.4576 Mhz, 1.8432 Mhz en 14.7456 Mhz. Wat is de reden van deze bijzondere frequenties voor deze kristallen, waarom niet gewoon een 12 Mhz kristal gebruiken in plaats van een 11.0592 MHz kristal. In tegenwoordige schakelingen zien we vaak mooi afgeronde frequenties voor kristallen zoals 8,12,16,24 en 32 Mhz. Maar in oudere ontwerpen en in retro / vintage computers komen we maar al te vaak deze op zich vreemde kristalfrequenties tegen. Wat was hier de reden?


De reden voor 11.0592 MHz kristallen heeft te maken met baudrates, deze waren 300, 1200, 4800, 9600, 19200, 38400, 57600 en 115200 baud. De klok voor deze baudrate werd meestal met een deler uit de hoofdfrequentie gehaald. Maar om een goede deler waarde te krijgen (de meeste delers waren ook 8 bit) moest er een klokfrequentie zijn die eenvoudig te delen was voor de goede baudrate waardes. Vaak werd de master klok eerst gedeeld door 12 en daarna door 32, wat bij 12 mhz een 31.250 Hz als frequentie gaf. Bij een baudrate van 9600 baud zou dit een deelfactor 3,255 opleveren en wanneer we dat afronden op 3 dan hebben we een afwijking van 7.3 procent en dat is veel te hoog. Wanneer we 11.0592 MHz door 12 en daarna door 32 delen krijgen we precies 28.800 Hz. Met een deelfactor 3 hebben we nu geen enkele afwijking. Dit is de verklaring voor de 11.0592 MHz kristallen, die we ook vaak bij een UART tegenkomen.


De frequentie van 14.7456 Mhz, 2.4576 Mhz en 1.8432 Mhz hebben dezelfde reden als 11.0592 MHz kristallen ook deze frequentie geven mooie integer deelwaardes voor de meest gangbare baudrates. Dit is de reden dat veel oude processor boards en oude retro / vintage computers deze waarden als master clock gebruiken.

Posted on Leave a comment

Zelfbouw lijnvolger lijntje

Zelfbouw lijnvolger lijntje

Toen ik mijn dochter Romy een lijnvolger liet zien op Youtube was de beslissing om er zelf een te bedenken en te maken als snel genomen. Maar wat is een lijnvolger nou precies? Een lijnvolger is een robot die door middel van optische sensoren een lijn kan detecteren en dan een route kan volgend door boven deze lijn te blijven rijden. Als sensor neemt men meestal een infrarood sensor omdat deze het minst last heeft van omgevingslicht, vaak heeft de lijnvolger een simpel microprocessor board (in ons geval een Arduino Uno) als brein en twee in draairichting en snelheid regelbare motoren en een caster (rolllende ronde bal) als achterwiel. Het heeft wat experimenteren gekost maar uiteindelijk is het ons gelukt om een prima lijnvolger te maken met de naam lijntje. We hebben er naast de infrarood sensoren voor het detecteren van de lijn ook nog een ultrasoon afstand detector opgezet zodat het ook botsen kan vermijden. Lijntje was een leerzaam en leuk project en we hebben twee routes op een groot vel A2 papier gemaakt waar onze lijnvolger op kan rijden, met een paar lastige hoeken en kruisingen. Bij echte competities van lijnvolgers moeten de lijnvolgers nog veel slimmer zijn omdat ze dan ook extra markeringen moeten kunnen herkennen en het de bedoeling is dat ze route in de snelste tijd afleggen. Dit maakt een lijnvolger programma veel complexer, lijntje is in dat opzicht relatief eenvoudig te noemen. Ik gebruik deze pagina ook als naslagwerk voor mijzelf en ter lering en vermaak voor bezoekers van mijn site. Een paar jaar later besloot ik om een kleine versie van Lijntje te maken en de toepasselijke naam werd dan ook Klijntje. De kleine lijnenvolger is gebaseerd op een Arduino Nano, heeft geen ultrasoon sensor, heeft maar drie CNY70 infrarood sensoren, een eenvoudige motor aansturing met twee Fet’s en twee kleine geared motoren. Klijntje staat onderaan deze pagina beschreven en van zowel Lijntje als Klijntje kunt u de schema’s en de broncode hier downloaden. Vriendelijk groet, {-Hein Pragt}.

De buitenkant

bovenaanzicht lijntje

Bij het maken van een robot is de keuze voor het materiaal wel belangrijk. Het moet eenvoudig te bewerken zijn, niet te zwaar en makkelijk te monteren. Ik kies vaak 8 mm multiplex plaat, dit is licht, makkelijk te zagen en eenvoudig in elkaar te lijmen, waarna het ook oersterk is. Ik heb een plankje genomen van 6,5 x 10 mm waar voldoende ruimte was voor de Arduino UNO en de batterijhouder er achter en een cm extra aan de voorkant om de ultrasoon sensor te monteren. Voor de infrarood sensor heb ik een standaard verkrijgbaar houdertje gekocht die ik met een paar kleine schroefjes vast kon zetten en die zo op een paar “ogen” van de lijnvolger lijken. Voor de batterijhouder heb ik een houder voor vier penlight batterijen gekozen, deze heb ik met een door mijzelf 3D geprint bakje vastgezet, en ook heb ik hier het aan/uit schakelaartje gemonteerd. Maar dit is natuurlijk ook van hout of wat plastic zelf te maken naar eigen inzicht. De Arduino UNO heb ik er met vier kleine kunsstof afstandbusjes zo opgezet dat de USB aansluiting aand voorkan precies naast de beugel van de ultrasoonsensor zit waardoor de code nog te uploaden is wanneer de lijnvolger al gemonteerd is.


onderaanzicht lijntje

De motoren heb ik met twee geboorde gaatjes en tie-wrap’s vastgezet en het hbrug motor boardje heb ik aan de onderkant tussen beide motoren geplaats, De print met de IR sensoren heb ik met een aantal afstandbusjes precies een halve cm boven de ondergrond gemonteerd en om het geheel af te dekken heb ik een klein houten plaatjes aan de voorkant ervoor geschroefd.

Voor de motordriver heb ik een zeer klein printje gebruikt dat toch behoorlijke specificaties heeft en maar een paar euro kost. Het haat om dit boardje dat online bij veel elektronica webshops te bestellen is: DRV8833 Dual Motor Driver. Het bevat de TI’s DRV8833 dual motor driver en kan maar liefst 1.2 A per kanaal leveren met 2 A piek bij een spanning van 2.7 V tot 10.8 V en een ingebouwde beveiliging tegen kortsluiting en temperatuur.

De wielen zijn ook standaard verkrijgbaar bij een aantal webshops, het maakt niet zoveel uit welke wielen u neemt zolang ze maar niet te groot zijn omdat ze dan te hoge snelheid geven en slecht bij te sturen zijn. Ik heb deze Pololu Wheel 40 / 7mm gebruikt.

Bij de motoren is het belangrijk dat ze een niet te hoog toerental hebben en er zijn hiervoor mooie kleine motoren te koop met een ingebouwde tandwielenset voor vertraging, ik heb deze Micro Metal Gearmotor gebruikt.

Eerste heb ik een poging gedaan met drie IR sensoren maar dit werkte niet echt goed, waarna ik toch een standaard board gekocht heb met daarop 8 IR sensoren, waarvan ik er uiteindelijk maar 6 gebruik. Er zat een klein breekrandje op en zo was het IR board net zo breed als de lijnvolger. Ik heb deze QTR-8A Reflectance Sensor Array gebruikt die speciaal gemaakt is voor een lijnvolger.

De caster heb ik zelf gemaak met mijn 3D printen en een knikker, deze zijn echter ook in veel elektronica webshops online te bestellen met een kunstof balletke. Het is belangrijk om een caster te gebruiken omdat de achterkan vrij moet kunnen draaien zonder al te veel weerstand,

Ultrasoon sensor HC-SR04

Ultrasoon sensor HC-SR04

Een robot moet zijn omgeving kunnen waarnemen om er op te kunnen reageren. Een eenvoudige methode is afstand meting door middel van ultrasone geluidsgolven, deze techniek is zeer goedkoop geworden door toepassingen in de auto (parkeerhulp) en in digitale afstandsmeters. De SR-04 is een populaire ultrasone zender / ontvanger met interface chip die maar een paar euro kost. De module heeft maar vier aansluitingen en is zeer eenvoudig te programmeren, het enige wat er voor nodig is dat is een nauwkeurige timer in microseconden. De module zend ultrasone geluidsgolven uit van 40 Khz wat ver boven het menselijke gehoor ligt. De werking van ultrasone afstandsmeting berust op het uitsturen van een ultrasoon geluidssignaal en het opvangen van het gereflecteerde (echo) signaal. De tijd tussen versturen en ontvangen is afhankelijk van de afgelegde weg van het geluidssignaal en aangezien geluid een redelijk nauwkeurige snelheid heeft, kunnen we hieruit de afstand berekenen. De afstand is dus gelijk is aan de snelheid van het geluidssignaal vermenigvuldigt met echo tijd / 2 (heen en terugweg). De snelheid van het geluid in lucht bedraagt gemiddeld 340 meter per seconden en er van uitgaande dat zender en ontvanger zich op dezelfde plaats bevinden zal 1 sec dus 780 meter (340 x 2) ijn en is 100 Ms dus 34 meter, 10 Ms is 3,4 meter en 1 Ms is 30 cm. U ziet dat voor kleinere afstanden een nauwkeurige timer met een hoge resolutie nodig is. De HC-SR04 heeft een trigger signaal van 10us (microseconden) nodig (op TTL niveau) op de trigger pin als startsignaal waarna er een burst van 8 pulsen van 40KHz zal worden uitgestuurd. Daarna begint de module te luisteren naar de ontvangen echo van deze pulstrein en de echo uitgang blijft hoog tot de echo is ontvangen. Aangezien niet elke module weer na een timeout omlaag gaat is het veiliger om ook in de software hier een timeout op te zetten met als resultaat een oneindige afstand.

Kleine lijnenvolger Klijntje

Kleine lijnenvolger

Klijntje is de naam van een veel kleinere (en eenvoudigere) lijnenvolger op basis van een Arduino Nano, drie CNY70 infrarood sensoren, twee kleine geared motoren (uit China) die aangestuurd worden door middel van twee 2N7000 mosfets in plaats van een Hbrug schakeling. Het geheel haalt de voeding uit een kleine 3,7 volt Lipo accu waarbij ik door middel van een goedkope DC-DC converter van de 3.7 volt een stabiele 5 volt maak voor de Arduino Nano en de motoren. Om ruimte van een print te besparen heb ik geen aansluit pennen op de Arduino Nano gezet en de Fets en aansluitdraden rechtstreeks op de Arduino Nano aansluit gaatjes gesoldeerd. De wielen vond ik in een oude lego doos en deze zijn met lijm op de asjes van de motoren gelijmd. Ik heb met de 3D printer een chassis geprint (deze STL bestanden kunt u hier ook downloaden) Omdat ik geeb gebruik maak van een Hbrug kunnen de motoren wel in snelheid geregeld worden maar niet achteruit draaien. Hierdoor is de draaicirkel van Klijntje een beetje groot waardoor lijnen op het papier wel een stukje uit elkaar geplaatst moeten zijn. Anders wil Klijntje wel eens de nabijgelegen lijn overpakken.

Onderkant lijnenvolger Klijntje

Onderkant Kleine lijnenvolger

De drie IR sensoren (CNY70 is een standaard goedkope sensor, zie datasheet onderaan deze pagina) heb ik samen met twee weerstanden per sensor op een klein stukje experimenteerprint gesoldeerd en er twee voedinspanning draadjes aan gesoldeerd en drie analoge datalijntjes. En tip om te controleren of de leds van de infrarood sensoren werken (of u ze juist aangesloten heeft) is om even met de fotocamera van uw telefoon er naar te kijken. Het menselijk ook kan IR licht niet zien, maar de camera van de telefoon wel en dit zal duidelijk zichtbaar zijn op het beeld. Ik heb het kleine printje met de sensoren met het lijmpistool vastgezet in de behuizing. De kleine motoren zijn 3,7 tot 5v met een ingebouwde (geared) vertragingskast. Het toerental is zo 100 omwentelingen per minuut. Deze motoren heb ik vrij goedkoop in China kunnen bestellen. Ik heb een halve houten kraal als voorwiel gebruikt, deze schuift fijn over het papier. Deze heb ik ook als laatste met een lijmpistool vastgeplakt op de onderkant. Let wel op de de IR sensoren ongeveer een halve Cm boven het papier moeten hangen om goed te werken. De DC-DC converter heb ik met een afstand busje boven de Arduino Nano gemonteerd om het geheel lekker compact te houden. De positie van de Lipo accu is boven de wielen zodat deze wielen lekker veel grip hebben en niet slippen. Het monteren is een klein priegelwerk ik heb wel de meeste draadjes van krimpkous voorzien voor de stevigheid en de isolatie. Voor de rest laat ik het aan u over, het moet ook een beetje avontuur zijn om zelf een lijnenvolger te bouwen.

Schema’s, datasheets en links

Klik hier voor het elektronica schema van Lijntje.

Klik hier voor het elektronica schema van Klijntje.

CNY70 Optical Sensor Datasheet.

Youtube demonstratie van de prestaties van Lijntje.

DRV8833 Dual Motor Driver

Pololu Wheel 40 / 7mm

Micro Metal Gearmotor

QTR-8A Reflectance Sensor Array

Sourcecode van lijntje en klijntje

Klik hier voor het sourccode van Lijntje.

Klik hier voor het sourccode van Klijntje.

Klik hier voor de 3D STL bestanden van Klijntje.

Klik hier voor het 3D STL bestand van de knikker caster.

Klik hier voor het 3D STL bestand van batterijhouder voor Lijntje.

Posted on Leave a comment

De programmeertaal ‘C’ en C++

Programmeertaal C

Deze pagina gaat over mijn oude liefde, de programmeertaal C. Ik leerde de taal C kennen in 1986 door het werk wat is toen deed. Ik was programmeur van embedded software en schreef hoofdzakelijk in Z80 assembler code maar langzaam ging dit steeds meer richting C. De taal C is ook maar één stap hoger dat assembler dus het was ook een logische stap. Naderhand ben ik ook PC applicaties gaan schrijven in C en er was zelfs een tijd dat ik de compiler als rekenmachine gebruikte. Na het lezen van de C bijbel, het bekende witte boekje van Kernighan en Ritchie was ik een totale fan van de programmeertaal C. Samen met de collega’s probeerden we steeds meer geavanceerde dingen te doen en werd het schrijven van code in C een soort van kunst. We probeerden steeds beter te worden en steeds mooiere en meer efficiënte code te schrijven. Uiteindelijk heb ik een compleet datacommunicatie pakket “mightycom” in C geschreven met vele terminal emulaties, allerlei download protocollen, data compressie layers als MNP en zelfs een eigen script interpreter en TCP/IP stack.

We leverden onze eigen tekstverwerker, onze eigen installers en collega’s schreven zelfs in C en compleet eigen besturingssysteem. Voor Sony hebben we een compleet office pakket geschreven voor de MSX ook geheel in de taal C. Ook schreef ik complete command interpreters, protocol stacks zoals mnp, v42bis en adpcm compressie software voor de roms van modems die we ontwikkelden en zelfs een complete tiny basic interpreter. In de jaren daarna heb ik in C (inmiddels ook C++) geprogrammeerd op Digital VMS machines, op Unix systemen, op Sun solaris systemen en op IBM Pc’s onder Microsoft Windows. Het hoogtepunt van mijn C++ tijd was dat ik een half jaar moest meen programmeren met het ontwikkelteam van Psion in Londen, waar ik de GSM protocol stacks gemaakt heb voor Epoc32, het latere symbian besturing systeem dat geheel in C++ geschreven is. Naast de taal C heb ik in bijna elke andere taal geprogrammeerd, maar de taal C en “C++” zijn nog steeds mijn grote (oude) liefde.

In mijn vrije tijd schreef ik grafische demo’s en spelletjes en ik heb zelf een tijd 3D programma’s geprogrammeerd, wanneer het op snelheid en efficiënte code aankomt, is er nog geen enkele andere programmeertaal die de taal C kan verslaan. Toen de taal Java opkwam zag ik, en veel van mijn collega’s, deze taal als C min min of C++ for dummies. Dat de taal Java een dergelijk grote invloed zou krijgen hadden we nooit gedacht maar inmiddels heb ik ook regelmatig code in Java geschreven, (ook voor Android) maar nooit van harte. Binnen de sector van besturingssystemen, compilers, systeemsoftware en vooral de game industrie is de taal C en “C++” niet weg te denken en is het nog steeds de meest gebruikte programmeertaal. Als het om snelheid en compacte code aankomt, kan er nog steeds geen enkele taal tippen aan de taal C. De beste 3D engines zijn dan ook allemaal in C of “C++” geschreven. Linux en Unix en zelfs Windows zijn voor het grootste gedeelte in C en “C++” geschreven. Soms noem ik de taal c wel eens de moeder van alle andere programmeertalen omdat de meeste compilers en tools voor andere programmeertalen en bijna altijd de runtime bibliotheken in de taal C geschreven zijn.

Ik geef ruiterlijk toe dat de taal niet eenvoudig is, erg cryptisch kan zijn, zeer veel vrijheden aan de programmeur geeft en (bijna) geen enkele runtime controle kent. De taal is zo krachtig dat u alles maar dan ook alles fout kunt doen, het vergt een goede kennis, netheid en discipline van de programmeur. Als resultaat van deze inspanning krijgt u de meest snelle en compacte code die mogelijk is. Ook geef ik toe dat een goed geschreven stuk broncode in de taal C soms net een kunstwerk is, maar dat is juist ook de enorme charme van deze taal. Wanneer ik de taal C vergelijk met muziek dan is het te vergelijken met Jazz, ook dit is een kunst op zich. Nog een goed vergelijk van de programmeertaal C is met een raceauto, het is compact gemaakt voor snelheid zonder toeters en bellen en niet voor comfort. Java is in dit vergelijk een degelijke gezinsauto met veiligheid voorop, ook niet slecht maar met een ander doel. Ik schrijf nog steeds in te taal C, mijn programma PragtFotoManager is in C en in Win32 geschreven wat resulteert in een zeer compact programma (230kb) dat supersnel is en erg veel functionaliteit kent. Het grappige is dat ik de programmeertaal C overal weer tegenkomt zoals in de programmeer omgeving voor de bekende Arduino minicomputer bordjes. Deze pagina gaat over mijn oude maar ook levenslange liefde voor de programmeertaal C, veel plezier met lezen en ik hoop ook u nog een beetje enthousiast te krijgen voor deze prachtige programmeertaal. Vriendelijke groet, Hein Pragt.

Historie van de programmeertaal C

In 1978 ontwikkelden Brian W. Kernighan en Dennis M. Ritchie de programmeertaal C waarvan de wortels liggen in de ‘B Computer Programming Language’ (bcpl), een taal die in 1969 ontwikkeld werd. De C taal evolueerde uit bcpl via een verbeterde versie, die B genoemd werd. Al deze talen hebben de eigenschappen van een hogere programmeertaal: meerdere statements kunnen in blokken gegroepeerd worden, onder andere zijn er constructies voor conditionele uitvoering (if) en constructies voor herhaalde uitvoering (while). Bovendien kennen al deze talen het begrip pointer, staan het rekenen met pointers toe (‘pointer arithmetic’) en kennen het samenstellen van grote eenheden uit kleinere datatypen zoals structs, unions en arrays. Bij het ontwikkelen van de programmeertaal C hadden Kernighan en Ritchie een aantal duidelijke doelstellingen, in de eerste plaats moest C een snelle taal worden, geschikt voor een breed scala van toepassingen en zeker voor het schrijven van een besturingssysteem. De taal C is een zeer ‘low level taal’ en het is maar ëën stap hoger dan assembler en leent zich dus uitstekend voor programma’s die zeer dicht bij de architectuur (‘hardware’) van de computer liggen zoals besturingssystemen en drivers.

In het unix besturingssysteem heeft C assembler zelfs bijna geheel verdreven, alleen een stukje van de kernel (bij het laden van het besturingssysteem zelf, de ‘bootstrapping’) is in assembler geschreven. Een tweede belangrijke overweging bij de opzet van de programmeertaal C is de splitsing van de C compiler en de C functiebibliotheek. De C compiler kan niets anders dan het omzetten van een brontekst naar machine instructies alle functies van de taal zijn opgenomen in een standaard C functiebibliotheek. Zo bevatten de meeste functiebibliotheken een aantal low level input/output functies, die dichtbij het besturingssysteem van de computer staan. Deze low level functies worden in een tussenlaag gebruikt door een ‘high level’ functie als printf() om bijvoorbeeld uitvoer te formatteren. De eerste versie van C, door B.W. Kernighan en D.M. Ritchie uit 1978 staat bekend als de standaard-C. Sinds deze versie is C zeer populair geworden, en al snel verschenen er verschillende C dialecten. In 1983 besloot het ‘American National Standards Institute’ (ansi) een commissie in te stellen die de C taal eenduidig en machine-onafhankelijk zou bepalen en het resultaat hiervan was de ANSI-C standaard. Tegenwoordig gebruikt men de programmeertaal C nog steeds voor het schrijven van computerspellen en programma’s waar snelheid erg belangrijk is.

Online beginners cursus voor de programmeertaal C

Gewoon beginnen!

Als kennismaking met de programmeertaal C wil ik beginnen met enkele heel eenvoudige programma’s die de basis van elk C laten zien.

Eerste voorbeeld:

/* Mijn eerste C programma */

#include 

void main() 
{
  printf("Hallo wereld!\n");  // Druk het af
}

Na het compileren en uitvoeren van dit programma staat, als alles goed is gegaan, de tekst Hallo wereld! op het scherm. Ik zal nu dit programma regel voor regel uitleggen, het programma begint met een commentaarregel en het is een goede gewoonte om elk stuk broncode met een of meerder commentaarregels te beginnen. Commentaar is tekst die door de compiler genegeerd zal worden en alleen een extra aanwijzing of geheugensteuntje voor de programmeur is. Commentaar begin met de tekencombinatie /* en eindigt met de tekencombinatie */ waarbij deze begin en einde markeringen op dezelfde regel mogen staan maar ook over meerdere regels mogen lopen.

De regel #include <stdio.h> geeft aan dat een ander bestand in dit programmabestand tussengevoegd moet worden op deze plaats. In C maakt met vaak gebruik van zogenaamde include bestanden met het achtervoegsel .h waarin alle constanten en declaraties van functies van een ander stuk C broncode staan of de declaraties van een standaard bibliotheek. In dit geval gaat het om de bibliotheek stdio.h die definities bevat voor de standaard invoer en uitvoer (toetsenbord en scherm). Hier staat onder meer de definitie van de functie printf() in die we zo gaan gebruiken. Op de volgende regel staat de functie main() uitgeschreven, dit is altijd de eerste functie die het gecompileerde programma zal uitvoeren. Een functie is te herkennen aan de 2 ronde haken achter de naam waar tussen we de parameters voor de functie kunnen plaatsen. In dit geval zijn het dus lege ronde haken omdat onze functie geen parameters heeft. Daarna zien we een open accolade teken {, dit is in de programmeertaal C de start van een blok programmeerinstructies die bij elkaar horen (een samengestelde opdracht) en dit blok zal afgesloten worden door een accolade sluiten }.

Daarna staat de standaard bibliotheek functie printf() waarmee we bijna alles kunnen afdrukken. Ook hier zien we de ronde haken weer en nu staat hier de parameter voor de functie tussen. In dit geval is het een eenvoudige tekst reeks (string) waarbij het backslash \ teken een bijzondere betekenis heeft. De tekencombinatie \n zal een “newline” teken (volgende regel teken) in de tekenreeks opnemen. Er zijn vele variaties met het backslash teken die voor andere zogenaamde “control characters” staan zoals de \r “cariage return” en \t voor het “tab”teken. Ieder zogenaamd statement in C moet verplicht afgesloten worden met een puntkomma. Aan het einde van de regel ziet u de tweede vorm van commentaar in C door middel van de tekencombinatie // waarbij de compiler alles tot het einde van de regel zal negeren en daarna staat de sluit accolade van de functie main(). Wanneer u dit voorbeeld begrijpt kent u de elementaire basis van de programmeertaal C.

Het gebruik van blanco regels, spaties, tabs en inspringen is in de programmeertaal C totaal vrijgelaten, u mag uw code zo schrijven als u het zelf wilt, het is wel handig om u een beetje aan de stijl te houden die de meeste programmeurs gebruiken (dit leert u vanzelf door veel naar code van anderen te kijken) maar er zijn ook onder C programmeurs enkel hardnekkige verschillen, bijvoorbeeld in het plaatsen van de accolades en het inspringen. Als extreem voorbeeld kan het vorige stukje programma ook op de volgende wijze geschreven worden met precies hetzelfde resultaat.

/* Mijn eerste C programma */#include void main(){printf("Hallo wereld!\n");}

of

/* Mijn eerste C programma */

#include 

void main() {
  printf("Hallo 
  wereld!\n");  // Druk het af
}

of

// Mijn eerste C programma 

#include 

void main() 
{

printf("Hallo ");

     printf("wereld!");     printf("\n");  // Druk het af
}

Zoals u hier ziet kunt u in C heel eenvoudig bijna onleesbare programmacode schrijven, dit is in mijn ogen echt slecht gedrag, broncode is niet bedoeld voor een computer maar voor een mens. U komt uzelf vanzelf tegen wanneer u een hardnekkige fout moet zoeken in slordig geprogrammeerd stuk broncode.

Variabelen

Voor het (tijdelijk) opslaan van gegevens in een computerprogramma hebben we in bijna elke programmeertaal de beschikking over zogenaamde variabelen. Een variabele is eigenlijk niets anders dan de naam van een hokje in het geheugen van de computer waar we iets in kunnen opslaan en weer terug kunnen lezen. Dit kan een getal zijn, maar ook een reeks tekens (string) en zelfs een aanwijzer (pointer) die weer naar een andere geheugenplaats kan wijzen. De programmeertaal C is een zogenaamde typed taal waarbij we dus bij het declareren (bekendmaken) van een variabel ook aan moeten geven wel soort data we er in willen stoppen en hoeveel, bijvoorbeeld hoeveel tekens in het geval van een string. In C kennen we een aantal basis datatype die aangeven wat we er in kunnen opslaan, dit zijn: char, int, float, double en void. Het type char wordt gebruikt voor het bewaren van ASCII tekens, het integer type int wordt gebruikt voor het opslaan van gehele getallen (met een beperkte waarde) en de typen float en double kan men gebruiken voor reële getallen. De variabele void geeft de waarde NIETS aan en kan dus ook geen andere waarde bevatten. Daarnaast ken de taal C zogenaamde type modifiers waarmee het basis datatype veranderd kan worden. De programmeertaal C beschikt over vier modifiers : signed, unsigned, long en short. Een int of char zijn standaard signed en long en short geven aan hoeveel bits (en dus de minimale en maximale waarde van de variabele) we willen gebruiken.

Voorbeeld van mogelijke combinaties van datatypen en modifiers:

Typeaantal bitsgetalswaarde
char8-128 t/m 127
unsigned char80 t/m 255
int16-32768 t/m 32767
unsigned int160 t/m 65535
long32-2147483648 t/m 2147483647
float323.4E-38 t/m 3.4E+38
double641.7E-308 t/m 1.7E+308



*) Deze waarden zijn wat er volgens de standaard minimaal in moet kunnen passen, op veel 32 bit systemen zal een int 32 bits zijn en dus gelijk zijn aan een long.

Om het nog meer verwarrend te maken kennen verschillende C compilers ook nog hun eigen datatypes, en zijn er in de laatste C standaard ook weer een aantal bijgekomen, mede omdat we nu ook 64 bits computers kennen. Deze basistypes kunt u echter bij elke compiler gebruiken. Elke variabel zo groot mogelijk definiëren is mogelijk maar wel een verspilling van snelheid en geheugengebruik. Wanneer ik in een reversiprogramma een miljoen speelvelden wil opslaan om te doorzoeken maakt het veel uit of ik 8 bits waardes of 32 waardes gebruik voor de speelvelden. Wanneer het type variabele dit toestaat kun u er ook mee rekenen. Het declareren (bekendmaken) van een variabele gebeurt door het noemen van een datatype en een unieke naam die u zelf mag kiezen. U kunt een variabel bij het declareren ook gelijk een initiële waarde geven, wanneer u dit niet doet zal er in de meeste gevallen een willekeurige waarde in staan die op dat moment in deze geheugenlocatie stond. Hier volgen een aantal voorbeeld programma’s die gebruik maken van variabelen.

// Voorbeeld van int variabelen

#include <stdio.h>

void main() 
{
int getal1;
int getal2 = 4;
int getal3 = 0;

   getal1 = 2;
   getal3 = getal2 + getal1; 
   printf("Uitkomst is: %d\n",getal3);
}

De uitvoer zal zijn: Uitkomst is: 6

Hier declareren we drie variabelen, de eerste is een int waarbij we alleen de naam reserveren, de tweede en de derde variabele geven we ook een initiële waarde. Daarna kennen we de getal waarde 2 toe aan de variabele getal1, (we stoppen het getal 2 in de geheugenplaats die aangewezen word door de naam getal1). De variabel getal3 had de waarde 0 maar in de volgende regel overschrijven we deze waarde met de uitkomst van het optellen van de waarden van de variabelen getal1 en getal2. Getal3 zal nu de waarde 6 bevatten. We gaven al aan dat we met de functie printf bijna alles kunnen afdrukken en in dit geval drukken we een tekst met de waarde van een variabele af. In de tekst van de (formatting) string geven we door middel van de tekencombinatie %d aan waar we de waarde van een int variabel opgenomen willen zien, daarna volgt de naam van de variabelen die op deze plaats afgedrukt moet worden. In het volgende voorbeeld gebruiken we meerdere type variabelen:

// Voorbeeld van verschillende variabelen

#include <stdio.h> 

void main() 
{
int getal1,getal2;  // Twee variabelen in 1 keer
char teken;
float breuk;

   getal1 = 9;
   getal2 = 2; 
   getal1 = getal1 / getal2;
   teken = 'A';
   breuk = 9.0 /  2.0;
   printf("Getal1 = %d\n",getal1);
   printf("Teken = %c\n",teken);
   printf("Breuk = %f\n",breuk);
}

De uitvoer zal zijn:
Getal1 = 4
Teken = A
Breuk = 4.5

Als eerste laat ik zien dat na een type meerdere variabelen gedeclareerd kunnen worden die gescheiden moeten zijn met een komma. Zoals u ziet kunt u met de printf functie ook andere datatypes afdrukken zoals %c voor characters en %f voor floats. Aangezien de variabel getal1 van het type integer is kan hier dus alleen maar een geheel getal in opgeslagen worden. Na de berekening zullen dus de cijfers na de komma wegvallen. Bij de float breuk ziet u dat de cijfers na de komma wel opgeslagen worden. Ik moet wel in de berekening achter de getallen .0 opnemen om de compiler duidelijk te maken dat het om float waarden gaat.

Arrays

Voordat we verder gaan met string moeten we eerst het array behandelen. Tot nu toe declareerden we enkelvoudige variabelen zoals getal1, getal2 en getal3. We kunnen ook een lijst van getallen declareren en door middel van een index een van de waarden uit de lijst schrijven of lezen. Een array geven we aan door middel van rechte haken [ ] na een variabele naam. Het getal tussen de haken geeft aan voor hoeveel waarden we willen reserveren.

// Voorbeeld van int array

#include <stdio.h>

void main() 
{
int getal[3];

   getal[0] = 4;
   getal[1] = 7;
   getal[2] = getal[0] + getal[1]; 
   printf("Uitkomst is: %d\n",getal[3]);
}

We declareren hier een array van drie integers en daarna kennen we aan de eerste index waarde van het array de waarde 4 toe en aan de tweede index binnen het array de waarde 7. Let op dat in C de index van een array van 0 tot de lengte min 1 loopt, dit kan verwarrend zijn maar de echte doorgewinterde C programmeur heeft dit in zijn systeem zitten. In dit voorbeeld is het array niet erg handig maar wanneer we loops (programmalussen) behandelen zal het nut van arrays snel duidelijk worden. Net als elke andere variabel kunnen we ook een array bij de declaratie van initiele waarden voorzien. De waarden worden dan tussen accolades en gescheiden door een comma achter de declaratie gezet.

/* dagen per maand */
int dagen[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };

Een vorm van een array met toch een paar bijzonderheden is het character array. De C standaard kent geen datatype string (veel andere programmeertalen wel), voor C is een string een array van characters. Om het einde van een tekenreeks (string) aan te kunnen geven gebruikt C het zogenaamde NUL teken wat we in C weergeven met de \0 tekenreeks. Ondanks dat C geen datatype string kent, bestaat er wel een grote standaard bibliotheek met string functies waarmee u character arrays kunt doorzoeken, lengte kunt bepalen, zoek en vervang kunt uitvoeren enz.

// Voorbeeld van een character array

#include <stdio.h>

void main() 
{
char tekst[] = "test";

  printf("Index1 = %c\n",tekst[0]);
  printf("Tekst = %s\n",tekst);
}

De uitvoer zal zijn:
Index1 = t
Tekst = test

Zoals u ziet declareer ik hier een array zonder een lengte aan te geven, C zal hier genoeg plaatsen reserveren om de waarde waarmee ik initialiseer op te slaan. Aangezien het hier om een character array gaat zal er automatisch een NUL teken achter gezet worden waardoor er in het geheugen dus: t e s t NULL opgeslagen is en het array dus 5 lang is. Denk hier even rustig over na want dit is heel belangrijk.

Zoals ik al aangaf zijn er in de programmeertaal C een aantal tekencombinaties die een speciale betekenis hebben, binnen het type char kunnen daarbij de volgende tekens gebruikt worden:
‘\n’ = nieuwe regel
‘\t’ = tab
‘\a’ = belsignaal
‘\b’ = backspace
‘\f’ = formfeed
‘\r’ = carriage return
‘\v’ = vertikale tab
‘\\’ = backslash zelf
‘\” = enkel aanhalingsteken
‘\”‘ = dubbel aanhalingsteken
‘\0’ = nulteken

Pointers

De meeste bekritiseerde mogelijkheid van de programmeertaal C is tevens de meest krachtige. Een pointer is een variabele die verwijst naar een andere variabel of geheugenlocatie. Iedere processor kent micro-instructies om rechtstreeks met het geheugen te werken en de pointer in de programmeertaal C zal één op één naar deze micro-instructie van de processor omgezet worden. Dit maakt de pointer super snel maar ook zeer gevaarlijk, want wanneer onze pointer wijst naar een stuk geheugen waar we niet mogen kopen (systeemgeheugen) of naar variabelen die we niet bedoeld hadden dan overschrijf deze instructie zonder enige vorm van waarschuwing of controle het geheugen op de locatie waar de pointer op dat moment naar wijst. U begrijpt dat wanneer u pointers gebruikt u dus heel goed moet weten wat u doet en zelf de beveiligingen moet inbouwen. Een pointer (aanwijzer) is niets meer dan een variabele waarin een geheugenadres is opgeslagen. Wanneer we dus een pointer naar het adres van een variabele laten verwijzen dan kunnen we ook de waarde op dit adres opvragen. Om het nog ingewikkelder te maken kunnen we zelfs pointers naar pointers definiëren, maar dit is wel zeer geavanceerd gebruik wat u bijvoorbeeld in de memory management functies van een besturingssysteem terug kunt vinden. Pointers kunnen we ook in een array zetten, waardoor er pointer arrays ontstaan. Een toepassing hiervoor is een alfabetische index op een grote hoeveelheid data waarbij een array van 26 pointers het begin van elke letter aanwijst zodat we snel naar een bepaalde positie kunnen springen. Twee tekens zijn belangrijk bij het gebruik van pointer, het * teken voor een pointer variabel geeft aan dat we de inhoud willen van het veld waar de pointer naar wijst en met het & teken krijgen we het geheugenadres van een gewone variabele om een pointer te vullen met dit adres. Het volgende voorbeeld geeft dit aan.

// Voorbeeld van pointers

#include <stdio.h>

void main()
{ 
int getal, *pointer;

  getal = 4;  
  pointer = &getal;   // adres van var
  printf("Getal heeft de waarde: %d\n",getal);
  printf("Getal via pointer gelezen: %d\n",*pointer);
  *pointer = 5;
  printf("Getal heeft de waarde: %d\n",getal);
  pointer = 5; // Dit kan maar is enorme fout
}

De uitvoer zal zijn:
Getal heeft de waarde: 4
Getal via pointer gelezen: 4
Getal heeft de waarde: 5

De laatste instructie (pointer = 5) is volkomen legaal in de taal C, de pointer wijst nu naar geheugenlocatie 5 in deze computer, waar dit ook mag zijn, het is waarschijnlijk niet legaal om hier naar toe te schrijven. Door hier nu een waarde aan toe te kennen overschrijven we ergens in het geheugen iets met als waarschijnlijk gevolg dat nu of later ons programma of het besturingssysteem zal crashen. Ook kan het besturingssysteem dit afvangen en een memory error genereren, de meest subtiele fout is dat we een van onze eigen variabelen overschrijven waardoor ineens een totaal andere waarde heeft dan we verwachten. Dit zijn de meest moeilijk op te vinden programmeerfouten. Voordat u pointers gaat gebruiken moet u pointers wel heel goed begrijpen.

Operatoren en expressies

Het is leuk om variabelen te hebben maar we zullen er ook iets mee moeten kunnen doen, bijvoorbeeld er meer rekenen. Hier komen zogenaamde operatoren om te hoek kijken. De programmeertaal C kent verschillende operatoren, een operator vertelt de compiler wat voor een rekenkundige of logische bewerking verricht moet worden. In C worden drie soorten operatoren onderscheiden: rekenkundige operatoren, relationele of logische operatoren en bitwise operatoren. Aangezien de taal C gemaakt is voor zeer luie programmeurs is er vaak een zeer korte en compacte notatie mogelijk. Dit maakt code echt niet sneller (de optimizer van de compiler zal toch een expressie helemaal optimaliseren) en we moeten er wel aan denken dat broncode voor de mens is. De programmeertaal C kent de volgende rekenkundige operatoren:

+optellen
aftrekken
*vermenigvuldigen
/delen
%modulo
met 1 verlagen
++met 1 verhogen

Er zijn een paar typische C constructies mogelijk met deze operatoren die ik in de volgende voorbeelden duidelijk zal maken. De operator gevolgd door een = geeft aan de bewerking op dezelfde variabel van toepassing is, dus a += 3; is eigenlijk a = a + 3;. Nog compacter en sneller is a++; om de variabele a één eenheid ter verhogen of a--; om de variabele met één eenheid te verlagen. Nog een belangrijk verschil is dat ++a; de waarde ook met één eenheid verhoogt, maar er is een verschil tussen a++; en ++a; en dat zit hem in de waarde van de variabel in een expressie. Bij a++ zal eerste de waarde van a teruggeven worden waarna de variabele a verhoogd zal worden en bij ++a; zal eerst de waarde verhoogd worden en dan de waarde teruggeven worden. Deze bewerkingen kunnen we ook op pointers toepassen waardoor we dus een soort van aanwijzer door het geheugen kunnen schuiven. Bewerkingen als opvragen en tegelijk verhogen zijn in C ook mogelijk en worden ook heel vaak gebruikt. Het is dus belangrijk om alle voorbeelden hieronder te begrijpen.

// Voorbeeld van rekenkundige operatoren

void main()
{
int x,y,z;
int ar[3] = { 1,5,8 };
int *ptr;

  x = 12;
  y = 3;
  z = x / y;  // = 4 
  z *= 2;     // = 8
  z = x++;    // = 12
  z = x;      // = 13
  z = --x;    // = 12
  z += 10;    // = 22
  ptr = &ar;
  z = *ptr;   // = 1
  ptr++;      // verhoog pointer
  z = *ptr++; // = 5
  z = *ptr;   // = 8
}       

De tweede groep van operatoren zijn de relationele en logische operatoren. Relationeel geeft aan of
een relatie tussen waarden, zoals kleiner of groter of gelijk waar of onwaar is. De set van relationele
operatoren bestaat uit de volgende lijst:

>groter dan
>=groter of gelijk
<kleiner dan
<=kleiner of gelijk
==gelijk aan
!=ongelijk aan

Logische operatoren hebben betrekking op AND, OR en NOT en deze kunnen gebruikt worden om meerdere relationele operatoren te combineren in een complexe expressie. Dit zijn de logische operatoren:

&&en (AND)
||of (OR)
!niet (NOT)
// Voorbeeld van relationele en logische operatoren

void main()
{
int x,y,z;

  x = 12;
  y = 12;
  z = 8;

  x == y;   // True
  x == z;   // False
  x != z;   // True
  x == 12;  // True
  x > z;    // True
  x <= z;   // False   
  x == 12 && y == 12; // True
  x == 12 || y == 8;' // True
}       

Compound statement

Naast enkele statements kent de taal C ook blokken met gebundeld statement die bij elkaar horen. In een taal als Pascal kennen we de Begin en End om een blok aan te geven, in de taal C doen we dit door middel van de accolade openen en de accolade sluiten. Op elke plek waar u een enkel statement kunt toepassen kunt u ook door middel van de accolades een compound statement gebruiken. Voor de duidelijkheid is het van belang de accolades op een overzichtelijke manier te plaatsen. Hier komt een verschil tussen C programmeurs aan het licht, sommigen zetten de begin alcolade op een nieuwe regel, ik ben van het soort die de open accolade achter het conditionele statement plaatst.

Het conditionele statement

De meeste programmeertalen kennen een conditioneel statement in de volgende vorm:

als (conditie is waar)   dan (compound) statement
anders (compound) statement

In C 

if (expressie)  statement
else statement 

In de expressie mogen we alle operatoren gebruiken waarbij de uitkomst 0 gelijk is aan true en de waarde ongelijk aan 0 voor false staat. If en else mogen ook genest (in elkaar verweven) gebruikt worden, dit kan echter soms moeilijk leesbare broncode opleveren waarbij men soms niet goed kan zien bij welke ik de else hoort. Dit is eenvoudig te ondervangen door goed inspringen en altijd accolades te gebruiken, ook bij enkelvoudige statements. Een meer cryptisch gebruik van het if en else statement is het gebruik van de ? operator. Deze probeer ik zoveel mogelijk te vermijden omdat ik deze vorm erg onleesbaar vindt en het voor de uiteindelijk gecompileerde code niet uitmaakt omdat de optimizer van de compiler er dezelfde code van zal maken als van de if else variant. De notatie is wel erg kort:

expressie 1 ? expressie 2 : expressie 3;

Wanneer expressie 1 waar is dan wordt expressie 2 uitgevoerd anders expressie 3.

// Voorbeeld van conditionele statements

#include <stdio.h>

void main()
{
int x,y,z;

// geef x,y en z willekeurige waarden

  if (x == y) 
    printf("x is gelijk aan y\n");
  else
    printf("x is ongelijk aan y\n");

  if (x == y && x == z) 
    printf("x is gelijk aan y en gelijk aan z\n");
  // else is optioneel!

  if (x == y) { 
    printf("x is gelijk aan y\n");
    if (x == z) {
      printf("en x is gelijk aan z\n");
    }
  }
  else {
    printf("x is ongelijk aan y\n");
  }

  x = 12;
  if (x - 12) { 
    printf("True\n");
  }
  x = 12;
  y = 12;
  if (x = y) { 
    printf("Dit niet\n");
  }
  else { 
    printf("Dit wel\n");
  } 
}       

De laatste variant is de meest gemaakte fout in de programmeertaal C, het is een assignment, we maken de waarde x gelijk aan y en het resultaat is NIET 0 dus false. Hierdoor zal ALTIJD de else uitgevoerd worden tenzij y de waarde 0 heeft. Let op deze fout! Bij een hoog warning level zullen de meeste compilers hier wel een warning voor geven, ik compileer zelf altijd op het hoogste warning level en hanteer WARNING == ERROR.

Het meerkeuze statement (switch)

Met if en else kan een lange rij van condities worden opgesteld waardoor het programma snel onleesbaar kan worden. Soms willen we in één test meerdere waarden testen en bij elke waarde iets anders uitvoeren. Hier is een switch statement erg handig voor te gebruiken. Bij iedere case waarde hoort een (compound) statement en wanneer de compiler een break tegenkomt zal het door vallen naar het einde van de switch. Wordt de break weggelaten dan zal het volgende statement ook worden uitgevoerd. Wanneer aan geen van de cases wordt voldaan zal het default statement worden uitgevoerd.

// Voorbeeld van conditionele statements

#include <stdio.h>

void main()
{
int x;

// geef x een willekeurige waarde

 switch(x) {
   case 1:  printf("De waarde 1\n");
            break;
   case 2:  printf("De waarde 2\n");
            break;
   case 3:
   case 4:  printf("De waarde 3 of 4\n");
            break;
   default: printf("Andere waarde!\n");
            break;
 } 
}       

Loops in C

De programmeertaal C kent drie soorten iteratieve statements (lussen): het while statement, het do while statement en het for statement. Alle drie zullen ze een statement of een code blok enige malen herhalen tot er aan een bepaalde conditie voldaan wordt. Het verschil tussen deze drie varianten zit in de test conditie en hoe vaak moet iets herhaald moet worden. Wanneer het een vooraf vast staand aantal keren betreft kan het beste gebruik worden gemaakt van een for statement, in andere gevallen is de while handiger. Een for loop in C ziet er nogal cryptisch uit. De formele syntax is:

for (initialisatie; conditie; increment) statement

De drie componenten zorgen voor een heel flexibel gebruik van het for statement, de initialisatie kent een begin waarde toe aan de zogenaamde loop control variabele (index), de conditie is een relationele expressie welke bepaald of de loop beëindigd moet worden, hier kan de loop control variabele maar ook elke andere variabel in gebruikt worden, en als laatste de stapwaarde bepaald hoe de loop control variabele wijzigt bij elke iteratie van de loop. Het krachtige van het for statement in C is dat de teller ook af kan lopen met elke zelfgekozen stap en dat de conditie van alles mag bevatten. Ook kunnen er meerdere loop index waarden tegelijk worden gebruikt met elk hun eigen stap. Het is niet noodzakelijk dat alle componenten van de for syntax aanwezig zijn. Elk onderdeel van de for loop is optioneel en zo kunnen er vreemde varianten ontstaan.

// Voorbeeld van for loops

#include <stdio.h>

void main()
{
int x,y;

  // druk 0..10 af
  for (x=0; x<10; x++) 
    printf("X = %d\n",x); 

  // druk 0 2 4 6 ..10 af  
  for (x=0; x<10; x += 2) 
    printf("X = %d\n",x); 

  // druk x 0 2 4 6 ..10 af
  // druk y 10..1 af
  for (x=0, y=10; x<10; x += 2, y--) {
    printf("X = %d\n",x); 
    printf("Y = %d\n",y); 
  }
}       

De tweede vorm van loop (lus) is de while loop en in C heeft deze de volgende syntax:

while (conditie) statement

Zolang de conditie waar is zal het statement of blok met statements worden uitgevoerd. Belangrijk is dat de test eerst uitgevoerd zal worden en wanneer deze gelijk onwaar is zal het statement dus nooit uitgevoerd worden. In het volgende voorbeeld gebruiken we ook even de functie getchar() uit de standaard library. Deze zal een ingedrukte toets teruggeven. Putchar is ook een functie uit de standaard library die een teken op het scherm afdrukt. Zie hier de meest eenvoudige tekstverwerker.

// Voorbeeld van while loop

#include <stdio.h>

void main() 
{ 
char ch = '\0'; 

  // stop als Q ingetikt is
  while (ch != 'Q') { 
    ch = getchar();
    putchar(ch);
  }  
}     

In tegenstelling tot de for en de while, test de do while loop de conditie aan het einde van de loop, de loop zal dus minimaal één keer uitgevoerd worden. Afgezien hiervan is de de do while constructie gelijk aan de while.

// Voorbeeld van while loop

#include <stdio.h>

void main() 
{ 
char ch; 

  // stop als Q ingetikt is
  do { 
    ch = getchar();
    putchar(ch);
  } while (ch != 'Q');
}     

Break, contnue en goto

Het break statement zijn we al eerder tegengekomen als de beëindiging van een case maar break kan ook als een beëindiging van een loop worden gebruikt. Indien meerdere loops genest zijn zal break alleen zorgen voor het stoppen van de loop waarin het voorkomt.

Door middel van het continue statement zal onmiddellijk naar de volgende stap van de loop gegaan worden en zo kan men binnen een loop een deel van de code overslaan. Dit kan efficiënt zijn omdat bijvoorbeeld na één test binnen de loop al duidelijk is dat de rest van de testen niet nodig is.

Dan komen we bij het meest verguisde statement in de taal C, het goto statement. Hiermee kan men vanuit een lus en zelfs vanuit geneste lussen naar buiten de lussen springen naar een label. Veel mensen denken dat ze netjes programmeren wanneer ze geen goto gebruiken, ik vind dit stom omdat het goto statement zeker nuttig kan zijn. Het is duidelijker om in een foutconditie snel uit geneste lussen te springen met een goto dan moeilijk te doen en te zorgen dat men uit alle lussen doorvalt. Maar hier verschillen de meningen van verschillende programmeurs, ik ben van mening dat duidelijke code voor strakke regeltjes gaat.

// Voorbeeld van break, continue en goto

#include <stdio.h>

void main() 
{ 
int i,y; 

  y = 20;
  for (i=0; i<10; i++) (
    y = x * 2;
    if (y > 10) 
      continue; 
    printf("Kleiner dan 10");
    // verlaat lus als y == 18
    if (y == 18)
      break;       
  }    

  for (i=0; i<10; i++) (
    for (y=0; y<10; y++) (
      printf("Waarde: %d\n",x * y);
      if (i ==5 && y == 8)
        goto marker;
    }
  }
marker:  

}     

Programmeren in C++

In dit deel probeer ik ook een aantal goede redenen te geven om over te stappen op ‘C++’ zonder het object georiënteerd deel te gebruiken. Dit is in mijn visie de eerste stap die ‘C’ programmeurs kunnen maken zonder een cultuur schok door te maken. Object georiënteerd programmeren is namelijk een andere denk en ontwerp wijze in plaats van alleen wat nieuwe functies. Maar ‘C++’ is heel goed te gebruiken zonder object georiënteerd te werken. Ik ontdekte ook dat zonder object georiënteerd programmeren de taal ‘C++’ een sterk verbeterde ‘C’ is, en ik zal proberen uit te leggen waarom.

Hele strikte type controle

De controle op variabele en functie types is heel strikt in ‘C++’, dit houdt in dat als U alles heel goed moet declareren. Als U een ander type parameter wilt gebruiken dan de gedeclareerde, of in een expressie verschillende data types gebruikt, bent U verplicht een cast te gebruiken. Dit geld ook voor signed en unsigned en char naar int conversie. Zo slordig als we in ‘C’ kunnen zijn kan in ‘C++’ absoluut niet. Dit lijkt wat omslachtig maar het zorgt ervoor dat we beter aangeven aan de compiler wat we eigenlijk willen, en voorkomt veel programmeer fouten.

Ik vind het prettig om goed door een compiler op mijn vingers gekeken te worden, en compileer dan ook meestal op het hoogste warning niveau. Dit is gratis controle door de compiler, en dit heeft me al redelijk wat bugs bespaart. Helaas is het met Microsoft nog wel eens zo dat hun eigen include files niet zonder warning op het hoogste warning niveau gecompileerd kunnen worden. Dit los ik dan op door rond de #include file een #pragma te gebruiken om de warnings tijdelijk uit te zetten.

Verbeterd commentaar

‘C++’ heeft een verbeterde methode om commentaar te plaatsen. Naast de bestaande methode door middel van /* … */ staat C++ het ook toe, door middel van een // dubbele slash de rest van de regel als commentaar te beschouwen. (Dit was in de meeste ANSI compilers ook al mogelijk.)

Andere cast methode

‘C++’ kent een verbeterde cast, in plaats van (long) var kan nu ook long(var) geschreven worden, wat een stuk duidelijker aangeeft wat we bedoelen.

result = long(var1) * var2;

TestFunc(long(IntVar),Str); 

Verplichte functie declaraties

In ‘C++’ moet elke functie gedeclareerd worden voor ze gebruikt word, dit verplicht de programmeur tot netjes declareren. Ook dit is weer extra controle door de compiler van de programmeur. Als deze de functie anders wil aanroepen, is hij verplicht een cast te gebruiken. (Dit was in ansi ‘C’ ook al aanbevolen maar niet verplicht.)

Functie overloading

Binnen ‘C++’ word behalve de functie naam ook de parameters en de return waarde gebruikt in de symbol table. Dit houdt in dat we dezelfde functie met andere parameters kunnen declareren zonder iedere keer een andere naam te bedenken. Denk hierbij aan de functies atoi() atof() atol() uit de standaard ‘C’ library, welke in ‘C++’ een functie kunnen zijn.

In ‘C’ zouden we het afdrukken van verschillende types zo oplossen:

void DrukafInt(int getal)
{
  // Code
}
void DrukafLong(long getal)
{
  // Code
}
void DrukafStr(char *str)
{
  // Code 
}

void TestFunc()
{
  DrukafInt(10);
  DrukafLong(423424L);
  DrukafStr("test");
}

In ‘C++’ zoekt de compiler de goede functie afhankelijk van de parameters.

void Drukaf(int getal)
{
  // Code
}
void Drukaf(long getal)
{
  // Code
}
void Drukaf(char *str)
{
  // Code
}

void TestFunc()
{
  Drukaf(10);
  Drukaf(423424L);
  Drukaf("test");
}

Dit houdt in dat we voor alle parameter types een functie naam kunnen gebruiken.

Default parameters

In ‘C++’ kunnen we een functie met een variabel aantal parameters aanroepen, als we gebruik maken van default parameters.

void TestFunc(char *Str, int i = 5)
{
  // Druk resultaat af!
  cout << Str << " " << i;   
}

// Dit drukt 10 af
TestFunc("Dit is met twee parameters",10);
TestFunc("Dit is // Dit drukt 5 af

Meer vrijheid in het declareren van variabelen

In ‘C++’ kunnen variabelen overal gedeclareerd worden, en hun scope is het block {} waarbinnen ze zich bevinden. In ‘C’ moeten declaraties vooraf gaan aan statements, in ‘C++’ mag daar waar een statement toegestaan is, ook een declaratie staan. Dit maakt het mogelijk om bijvoorbeeld binnen if code blokken locale variabelen te gebruiken.

int TestFunc()
{
int i;  
// Deze variabele is globaal voor de hele functie

  // code
  if (var1> 100) { 
    int y;
  } // Hier stopt de scope van y

Verbeterd FOR statement

In ‘C++’ kunnen we de loop variabele in het for statement declareren. De scope van deze variabele is het vorige {} code block, hoewel we misschien verwachten dat de scope de for loop zou zijn. In dit voorbeeld is de variabele ind na de for loop ook nog te gebruiken.

void TestFunc()
{
  for (int ind=0; ind < 10; ind++)
  {
    // code
  }
} 

Eenvoudigere struct, enum en union notatie

In ‘C++’ kunnen we als we een structure gedeclareerd hebben, variabelen van dit soort zonder het woord struct declareren. Dit kon in ‘C’ ook wel door middel van een typedef, maar is in ‘C++’ prettiger opgelost.

struct Stype {int a, int b };

Stype StructVar;

Dit geld ook voor enum en union.

enum Boolean { FALSE, TRUE };

Boolean Gereed = FALSE;

Echte constanten

In ‘C++’ maakt het keyword const een variabele een echte constante. De compiler zal ook een foutmelding geven als de programmeur de waarde probeert te veranderen.

const int Cvar = 100;

void Test(const int index)
{
  // Hier geeft de compiler een foutmelding
  index = 5;
}

void Test()
{
// Ook hier geeft de compiler een foutmelding
  Cvar = 10; 
} 

// Dit zou in 'C' een foutmelding geven.
int Varray[Cvar]; 

Nieuwe input en output methode

Een van de belangrijkste wijzigingen in ‘C++’ is de vervanging van de standaard I/O library stdio in iostream. Het gebruik van iostream is heel wat eenvoudiger dan stdio, al is het even wennen voor de doorgewinterde ‘C’ programmeur. Hier volgen enkele voorbeelden:

// Output Hello world met een newline
cout << "Hello world\n";
// Idem
cout << "Hello world" << endl;

int   VarInt = 4;
int   Var1,Var2;
float VarFloat = 3.14;
char *Str = "Hello";

cout << Str << VarInt << VarFloat << endl;   

// Resulteert in Hello43.14

cout << setw(6) << setfil('*') <<



// Leest 1 integer uit de input stream

cin >> Var1 >> Var2;    

// Leest 2 integers uit de input stream

In ‘C’ schrijven we vaak voor standaard I/O:

  while (var1 = getchar())
    putchar(var1);

Dit schrijven we in ‘C++’ als:

  while(cin >> var1)
    cout << var1; 

Nieuwe geheugen beheer methode

In ‘C++’ kunnen we nu in plaats van de zeer omslachtige en overloaded functies alloc() en free() waarbij we zelf de lengte van objecten moesten berekenen, nu ook new en delete gebruiken. Dit hebben ze duidelijk van de taal Pascal geleend, en werkt heel prettig en efficiënt.

void TestFunc()
{
int *IntPointer;

  IntPointer = new int;
  *IntPointer = 12;
  cout << *IntPointer;
  delete IntPointer;
} 


void TestFunc()
{
int *IntPointer;

  IntPointer = new int(100);
  IntPointer(10) = 12;
  cout << IntPointer(10);
  // Let op bij arrays altijd [] gebruiken
  delete [] IntPointer;     
} 

Dit is zeer gemakkelijk in vergelijking met de oude ‘C’ methode.

Call by reference

In ‘C++’ kunnen we nu met call by reference werken in plaats van pointers. Dit maakt de code in bepaalde gevallen, heel wat duidelijker.
In ‘C’ zouden we het volgende schrijven:

void Swap(int *Var1, int *Var2)
{
int Tmp = *Var1;

  *Var1 = *Var2; 
  *var2 = Tmp;
}

void TestFunc()
{
int V1, V2;

// Voorbeeld aanroep functie swap;
  Swap(& V1, & V2);
}

In ‘C++’ kunnen we dit op de volgende wijze doen:

void Swap(int& Var1, int& Var2)
{
int Tmp = Var1;

  Var1 = Var2;
  var2 = Tmp;
}

void TestFunc()
{
int V1, V2;

 // Voorbeeld aanroep functie Swap in C++
  Swap(V1,V2);    
}

Conclusie

Bij de meeste compilers is het omschakelen van ‘C’ naar ‘C++’ simpelweg het veranderen van de extensie van de source file van TEST.C in TEST.CPP waardoor de compiler weet dat de source file een ‘C++’ file is. Als U dit doet moet U dit voor alle files doen, omdat ‘C’ code geen ‘C++’ kan aanroepen. Omgekeerd is wel via een speciale declaratie mogelijk maar ik raad het af ‘C’ en ‘C++’ files door elkaar te gebruiken. Verder kan het aanroepen van zelfgeschreven library functies problemen gaan geven, omdat deze verwachten volgens de ‘C’ conventie aangeroepen te worden.

Omdat ‘C’ een subset is van ‘C++’ kan elk ‘C’ programma ook door een ‘C++’ compiler gecompileerd worden. Laat U niet afschrikken door het grote aantal warnings, en zet vooral het warning level niet lager om het aantal warnings terug te brengen. Besteed daarentegen eens een tijdje aan het plaatsen van casts en de kans is groot dat U terloops ook nog een programmeer fout ontdekt.

Tot mijn verbazing zijn er nog steeds bedrijven waar code uitgeleverd word, met een flink aantal compiler warnings, omdat de programmeur denkt dat hij weet wat hij doet, en hij vindt dat de compiler te kieskeurig is. In mijn visie is elke warning een mogelijke programmeer fout, en moet weggewerkt worden.

De basis van object georiënteerd programmeren.

Voordat ik begin uit te leggen wat object georiënteerd (vanaf nu OO) programmeren is, begin ik met een definitie wat objecten zijn. Objecten zijn alle dingen die wij kunnen bevatten, met duidelijk afgebakende grenzen. Voorbeelden zijn, een punt op het scherm, een pomp, een bankrekening, een computer, een mens of een programmeertaal. Twee verschillende objecten zijn duidelijk van elkaar te onderscheiden.

Een object heeft een aantal kenmerken:

  • Een identiteit is de unieke code of naam waarmee we twee ovan elkaar onderscheiden, voorbeelden zijn een boek of een bankrekening.
  • De toestand is de huidige waarde van de interne structeen object, een voorbeeld is een bankrekening met een saldo van 1023 gulden.
  • Het gedrag van een object zijn de diensten die het verlede buitenwereld. In het geval van een bankrekening kan dit het ovan het saldo of het verhogen van het saldo zijn.

De buitenwereld heeft geen directe toegang tot het saldo van de bankrekening, maar kan alleen via de boodschappen (member functies) de huidige toestand opvragen, of iets aan de huidige toestand te veranderen.

Een class is een definitie van een object, waarmee instances (echte objecten) van de class gemaakt kan worden. Een class op zich is geen object, er kunnen objecten mee gemaakt worden. Van een class kunnen we meer dan een object (instances) maken. De class is vergelijkbaar met een gietvorm waar we veel dezelfde beeldjes mee kunnen gieten.
In de class definiëren we een interface. We kunnen alleen met een object communiceren via deze interface. Ook definiëren we in de class de interne data, waarin we de toestand van een object opslaan. Interne data is dus ingekapseld en niet direct benaderbaar door de buitenwereld.
OO software is gebaseerd op deze objecten. Een object kunnen we beschouwen als een “gesloten apparaat” met een vast gedefinieerde interface. We hoeven niet te weten wat er zich in het object bevind, we kennen de interface waarmee we communiceren met het object.

Een voorbeeld is een televisie toestel.
We hoeven niet weten wat er in de T.V. zit, we gebruiken alleen de knoppen en het scherm als interface. Als we een andere zender willen kiezen, veranderen en we niet de afstemkring door binnen in het toestel aan een van de onderdelen te draaien, maar we geven de interface via een knop de opdracht op een andere zender af te stemmen. Via deze knoppen kunnen we ook zenders zoeken en in het geheugen van de T.V. opslaan. Hoe dit intern gebeurt willen we niet weten, en is voor het normaal gebruik van het toestel niet belangrijk. Intern kan dit in verschillende toestellen anders opgelost zijn, vanuit de interface zien we hetzelfde. Deze inkapseling van data en methodes is de basis van OO programmeren.

De interface functies zijn ook weer onder te verdelen in vier soorten:

  • Constructors. Dit is de member functie die gebruikt wordobject een begin toestand te geven. Deze zal bij het creëeen object zorgen voor een voorinstelling van de waardes van interne variabelen.
  • Destructors. Deze member functie ruimt een object netjeshet geheugen, als de levenduur van het object afgelopen is.
  • Modifiers. Dit zijn member functies die iets aan de interne tvan het object veranderen, bijvoorbeeld in het geval van de bankrkan de methode StortBedrag het saldo veranderen.
  • Selectors. Dit zijn member functies die de interne toesteen object terugmelden. Deze zullen niets aan de interne toestand veraDit is dus een read-only bewerking, het mag niets aan de interne tvan het object veranderen.

De constructor en destructor zijn interne functies van het object, de modifier en de selector zijn van buiten het object te gebruiken.

Doordat de buitenwereld geen directe toegang heeft op de interne data van een object, kan via de interface functies bijvoorbeeld validatie plaatsvinden. Als gedefinieerd is dat een bankrekening niet negatief mag zijn kan de member functie VerlaagSaldo een controle uitvoeren of het saldo door deze bewerking niet negatief kan worden. In dit geval kan de member functie een fout afhandeling starten of een foutmelding genereren.
De interface bewaakt dus de interne toestand van een object.

De tegenhanger van OO programmeren is het procedure gericht programmeren. Hier staan de bewerkingen centraal, in tegenstelling van OO programmeren waar de gegevens en hun toestand centraal staan. In OO begint men met een data model, waarna men deze via objecten in categorieën onderbrengt, om daarna de interface en de bewerkingen te definiëren. Dit is duidelijk een andere aanpak, die het ook nodig maakt eerst over het programma en het data model na te denken. Dit in contrast met procedure gericht programmeren waar vaak een globale opzet van een programma word gemaakt, waarna deze procedures uitgewerkt worden. Dit is niet per definitie een slechtere aanpak, maar een andere, die ook zijn voordelen kan hebben.
Ik heb wel eens te horen gekregen, als is een ontwerp op papier aan het maken was, “wanneer begin je nu met het project”. Deze mensen dachten dat het inkloppen van code het programmeren is. Dit is echter maar een klein deel van het programmeer werk. Het meeste is ook zonder computer te doen.

Een tweede eigenschap van OO programmeren is overerving.

Als we eenmaal een class gedefinieerd hebben, ligt deze vast. Als er nu een specialisatie plaats moet vinden, kan de reeds ontworpen class als basis dienen voor een nieuwe class. De nieuwe class bevat alle onderdelen van de oorspronkelijke class, met een aantal toevoegingen speciaal voor de nieuwe class. Als we een bankrekening zonder rente gedefinieerd hebben met een groot aantal bewerkingen, kunnen we hiervan een rekening met rente afleiden. De bewerkingen die we kunnen uitvoeren op de oorspronkelijke rekening kunnen we ook uitvoeren op de rekening met rente. Deze rekening heeft echter een paar uitbreidingen t.o.v. de oude rekening, en dat is een rentepercentage variabele, een functie om het rentepercentage op te vragen en een functie om het rentepercentage te veranderen. Ook zal er een functie moeten komen om de rente bij te boeken. De code om het saldo op te vragen en het saldo af te boeken hoeven we niet opnieuw te schrijven.

Dit is een eigenschap van OO programmeren die ik nogal eens uit de hand zie lopen. Een goede class hiërarchie opbouwen is een kunst, en soms zie je een ad-hoc class hiërarchie die ondoorzichtig en niet te onderhouden is.
Het werken met OO is geen garantie voor goede en goed onderhoudbare code. Een paar goede voorbeelden van een class hiërarchie zijn OWL van Inprise en MFC van Microsoft.

OO werken ten opzichte van procedureel programmeren betekend vaak de je veel vrijheden die je had moet opgeven en binnen een strakkere structuur moet werken. Dit voorkomt echter heel veel basis programmeer fouten, zodat het resultaat beter, en beter onderhoudbaar is.
Deze vorm van jezelf de beperkingen van een goede structuur opleggen, schrikt sommige ‘C’ en assembler programmeurs nog wel eens af. Een collega van mij plaagt me wel eens, als ik weer iets met de bestaande code wil doen waarin niet voorzien is, dat beperkingen opleggen geheel in de stijl van OO programmeren is. Ik probeer dan uit te leggen dat ik vanuit de bestaande code deze functionaliteit niet kan toevoegen, maar dat dit in een OO omgeving eenvoudig te doen zou zijn.

Het grote voordeel van OO programmeren is dat het uitnodigt tot goed gestructureerd werken, en dat je in staat bent goede interfaces te maken. Data hiding is in mijn visie een van de beste onderdelen van OO.

Gcc compiler onder Linux

Op mijn Raspberry Pi programmeer ik in ‘C’ met gebruik van de gcc compiler. De gcc compiler is de “GNU” C Compiler en g++ is de “GNU C++ compiler”. Hier staat een kleine uitleg met voorbeelden hoe deze compilers gebruikt kunnen worden. In voorbeeld 1 compileren we het bijna standaard programma “Hello world!”, gebruik een editor onder linux vi is daar één optie, ik gebruik meestal de nano editor. Om de broncode te maken tikt u dan nano hello.c en voert u het volgende programma in:

#include "stdio.h"

int main() 
{
  printf("Hello world!\n");
} 

We kunnen dit programma vervolgens compileren met het volgende commando:

gcc hello.c -o hello 

Dit commando compileert en linkt hello.c naar een uitvoerbaar bestand met de naam “hello” dat uitgevoerd kan worden door hello of ./hello op de command line in te tikken. Het enige wat dit programma doet is de boodschap “Hello world!” op het scherm afdrukken, maar het is wel een teken dat de hele keten werkt. We kunnen ook de stappen van het compileren en linken uit elkaar trekken door middel van de volgende commando’s, het resultaat zal hetzelfde zijn.

gcc -c hello.C
gcc hello.o -o hello 

Posted on Leave a comment

Zelf retro computers repareren

high voltage

Het zelf repareren van retro computers kan een leuke hobby zijn, waarbij enige kennis van elektronica en wat goede soldeer ervaring zeker een must is. Oude computers hebben vaak veelvoorkomende problemen, ik heb vaak een bijna vaste volgorde waarmee ik een defecte computer analyseer. Vaak is de voeding en / of de condensatoren een probleem, dit kan ook de chips beschadigd hebben door sluiting of overspanning. Daarnaast kunnen door warmte en weer afkoelen de soldeerverbindingen slecht geworden zijn waardoor ze soms wel en soms niet meer contact maken. Maar meestal is een oude overleden retro computer weer prima tot leven te wekken en de voldoening is dan vaak erg groot. Er zijn zelf mensen die de complete renovatie van een oud computersysteem in een video registeren als een soort van spannend verhaal.

Wel wil ik een paar waarschuwingen vooraf geven, bijvoorbeeld wanneer de computer een beeldbuis bevat. Wanneer er een beeldbuis in de computer zit dan zit er ook gegarandeerd een hoogspanning gedeelde in. Wanneer u de computer even aangezet hebt om te testen en daarna in het binnenste gaat kijken, is de kans groot dat er nog een aantal condensatoren zijn die nog steeds een behoorlijke hoge spanning als lading kunnen hebben. U zult niet de eerste zijn die een enorme schok krijgt van een nog geladen condensator. Ik laat meestal zo’n computer eerst weer een weekje staan zodat alle condensatoren zijn leeg gelekt.

Wanneer u aan het meten bent op een oude computer print die onder spanning staat zal dat meestal een spanning zijn die niet boven de 12 volt uitkomt, dit is niet zo gevaarlijk. Wanneer ik de print inspecteer wanneer deze onder spanning staat dan draag ik altijd een bril. Een van de gevaren van een oude computer print zijn de oude condensatoren. Condensatoren kunnen helaas ontploffen, het zijn kleine blikjes en wanneer ze defect zijn kan er een enorme overdruk in ontstaan die in ontploffing en zelfontbranding kan overgaan. Zorg dus voor een bril en een goed geventileerde ruimte.

Inspectie van de print

Als eerst inspecteer ik vaak de print zonder deze onder spanning te zetten. Eerst spuit ik alle stof e.d. weg met een spuitbus lucht. Ik gebruik voor de inspectie vaak een vergrootglas en voor nog betere inspectie een kleine hand microscoop. Wanneer er oververhitting plaats heeft gevonden is dat vaak goed te zien op de print, inspecteer deze regio goed, er kunnen defecte soldeerpunten zijn. Zie verderop hoe u deze kunt repareren. Ook zijn lekkende condensatoren ook vaak met het blote oog te herkennen, alles wat er als vervuiling uitziet hoort meestal niet op de print en geeft een defect of een sluipend defect aan. Alle condensatoren die u niet vertrouwd zijn aan vervanging toe.

De voeding

Als eerste inspecteer ik daarna de voedingspanningen, dit doe ik vaak met de meetpennen op een voor mij bekende chip waar ik weet waar de spanning pennen zitten. Controleer of de spanning aanwezig is en of deze de goede waardes hebben. Vaak kunnen voedingen na lange tijd verlopen. Helemaal geen voedingspanning betekend meestal dat de voeding stuk is, dit kan ook door een kortsluiting in een condensator veroorzaakt zijn. Meet dus ook even de weerstand tussen de voeding lijnen op. Wanneer u een voeding repareert is het vaak ook raadzaam om daar alle condensatoren te vervangen, om problemen (en toekomstige problemen) te voorkomen. Ik heb in mijn webshop ook enkele voeding componenten te koop. Soms als de voeding helemaal niet meer te repareren is, kunt u deze helemaal verwijderen en vervangen door een kleine kant en klare geschakelde voeding. Dit kosten tegenwoordig amper nog iets en deze zijn heel betrouwbaar en produceren amper warmte.

Soldeerverbindingen

Een slechte soldeerverbinding is met het blote oog te herkennen, de rand is vaak wat korrelig en rond de aansluitpen van het component kunt u ook vaak een scheurtje of rand zien zitten. Wanneer er voldoende tin is dan hoeft u alleen de soldeer opnieuw te verwarmen tot deze weer vloeit en dan is de soldeerverbinding meestal weer prima. Wanneer er weinig tin is dan haal ik meestal eerst met een tinpomp de oude soldeer weg, om dan met verse tin een nieuwe verbinding te leggen. Voeg nooit zomaar tin toe aan een oude soldeerverbinding, vroeger was de samenstelling van tin heel anders dan nu (er zat vaak ook lood in) en het vermengen met een moderne tin soort kan juist een slechtere verbinding veroorzaken.

Condensatoren vervangen

Ik desoldeer meestal met een tinpomp, er zijn duurdere oplossingen maar die zijn voor de gemiddelde hobbyist niet erg betaalbaar. Verwijder eerst zoveel mogelijk tin en ik buig vaak de condensator een beetje schuin zodat één van de pootjes loskomt. Dan doe ik hetzelfde met het andere pootje. Daarna probeer ik met zo weinig mogelijk verwarming de gaatjes weer open te krijgen, soms gebruik ik daar ook een naald voor. Let op dat teveel warmte de printbanen onherstelbaar kunnen beschadigen, wees dus altijd voorzichtig. Let goed op de polariteit van de condensator voor u deze terugplaatst en weer vast soldeert.

Chips vervangen

Soms hebben chips de problemen niet overleefd, door bijvoorbeeld overspanning of kortsluiting. Ik hoop dan meestal dat de chip in een voetje zit, ik heb slechte ervaringen met het desolderen van chips. Vaak knip ik eerst de pennen zo dicht mogelijk bij de chip door zodat de chip uit de weg is en dan kan ik met een pincet de pennen één voor één verwijderen. Ik zet de nieuwe chip altijd in een voetje, dit is altijd handiger vind ik persoonlijk. Een lelijke oplossing die vaak ook werkt is de nieuwe chip te “piggybacken” over de oude aansluitpennen. Maar dit ziet er wel oerlelijk uit.

In de webshop heb ik veel oude retro chip op voorraad, gelukkig zitten de duurdere chips vaak in een voetje en is het een kwestie van omprikken.

Dit waren de eerste basis tips, ik hoop dit onderwerp nog te vervolgen.

Posted on Leave a comment

Basiskennis digitale techniek

digital_technology

Rond 1970 begon mijn belangstelling voor digitale techniek maar dit stond in die tijd nog in de kinderschoenen. De eerste digitale rekenmachines waren net op de markt en waren zeer duur en computers waren machines die enorm groot en onbetaalbaar waren. In deze tijd kocht ik mijn eerste boekje over digitale techniek en hier stond duidelijk de basis van nullen en enen, and, or en not poort en de werking van flipflops en counters. Alles nog met weerstanden, diodes en transistors opgebouwd. Het was grappig dat deze kennis mij heel nuttig gebleken is in mijn hele loopbaan. Op de MTS bouwden we nog flipflop schakelingen met transistors en schakelden deze in serie om een digitale teller te maken. Ook moesten we nog binaire logica leren en complexe digitale logica schema’s uitwerken en vereenvoudigen. Aan de andere kant van de wereld waren op dat moment knappe koppen de eerste microprocessors aan het ontwikkelen met dezelfde technologie. Mijn eerste computers waren echte zelfbouwprojecten en later heb ik jarenlang meegewerkt aan het ontwikkelen van computer hardware en interfaces. Telkens kwam alles weer neer op basiskennis digitale techniek. Aangezien er tegenwoordig niet zoveel Nederlandstalige documentatie over dit onderwerp meer te vinden is, voel ik me geroepen om dit toch weer te delen.

https://www.heinpragt.com/software_hardware_ontwikkeling/basiskennis_digitale_techniek.html