Mijn pagina voor prettig werken op de PC www.pcpret.nl |
Homepage | Stuur bericht | Gastenboek | Website Blog |
Tijdens mijn studie maakte ik kennis met de mogelijkheden van de computer. Sinds 1980 bezat ik een programmeerbare rekenmachine (een HP34C). Dit kleine apparaatje bleek tot veel in staat. Mijn eerste serieuze computer activiteiten begonnen in het najaar van 1985 met de aanschaf van een heuse Advance B computer met Intel 8086 CPU, 256kB Ram, twee 360KB floppydrives, een cassetterecorder aansluiting. Deze IBM compatibele computer bleek niet zo compatibel met IBM. Mede daarom bleek deze computer, achteraf gezien, een goede start om kennis te maken met de vele mogelijkheden van de PC. Turbo Pascal 3 (en later versie 4) werd mijn favoriete programmeer gereedschap.
In het voorjaar van 1987 had ik mijn eerste Basicode leesprogramma gelezen. Dit kwam in april 1987 in een stroomversnelling toen er een speciale Basicode-3 uitzending was waarin de Optimod wel en niet werd gebruikt. De Optimod was bedoeld om de kwaliteit van spraak en muziek te verbeteren. Alleen was het een gruwel voor computer bestanden ... Dat leidde voor mij dus tot Basicode op de PC, lees hierover meer hier. De benodigde hardware om de Basicode software op de computer in te lezen bracht KOMFA bij mij.
In 1989 zag de KOMFA Teletekst decoder het licht.
Voor deze Teletekst decoder ontwikkelde ik de MS-DOS software Telenew.
Het leuke van deze decoder was de mogelijkheid om die via de parallelle printerpoort of de
seriële poort van de PC te gebruiken.
De allereerste versie beschikte ook over Scart aansluiting.
Hiermee kon via de RGB de Teletekst eventueel direct op een geschikte TV-monitor worden bekeken.
In alle latere versies is de Scart connector niet meer toegepast in het ontwerp.
Er is zelfs een speciale interface ontwikkeld voor de MSX computer.
De decoder werd aangesloten op de spelpoort!
De Teletekst decoder is overigens ook nog gebruikt voor het ontvangen van Basicode programma's.
Deze programma's werden uitgezonden door het NOS radio programma Hobbyscoop.
Er zijn verschillende versies van de Teletekst decoder uitgebracht. De eerste versies maakten gebruik van de Philips chips SAA5231 en SAA5243. Een latere versie maakte gebruik van de Philips chip SAA5246. Uiteindelijk verscheen er ook een Teletekst decoder met TV-ontvanger. Dat ontwerp maakte gebruik van de Philips FI916E TV-tuner en de de SAA5246 als Teletekst decoder.
Rond oktober 1993 is er een ontwerp met de Philips chip SAA5250 uitgebracht. Dit ontwerp was bedoeld om teksten (van bijvoorbeeld een krant) in te lezen die met een gewone TV-uitzending werden meegestuurd. De SAA5250 kan multi-standaard Teletekst informatie lezen (DIDO, NABTS, CEEFAX en packet 31). Nadeel van deze chip is dat deze een microcontroller nodig heeft, om te kunnen worden gebruikt. In dit ontwerp werd de 87C751 microcontroller toegepast om de SAA5250 aan te sturen. De 87C751 transporteert, via de I2C interface, de teksten van de SAA5250 naar de computer.
Later, najaar 1997, kreeg ik tijdelijk een ontwikkelset met de Philips FI1216Mk2 TV-tuner en een RDS (SAA6588) decoder. Het leuke van die TV-tuner is dat die genoeg heeft aan één voedingsspanning van 5 volt. Die ontwikkelset heb ik later uitgebreid met stereo geluid ontvangst. De oorspronkelijk toepassing kwam daarmee te vervallen, en die was voor mij sowieso niet interessant. Een TDA9821 zorgt ervoor dat het geluid hoorbaar wordt (IF van TV-tuner omzetten naar de twee geluidskanalen). Een TDA8415 zorgt ervoor dat het geluid stereo, mono of 1-talig wordt (twee geluidskanalen analyseren, filteren en/of combineren). Resultaat is in ieder geval geluid waarvan ik dacht dat een TV die nooit zou hebben. Anno 2006 heb ik dus nog steeds een 50 cm Philips kleuren TV met mono geluid uit 1988 ...
Een interessante ontwikkeling is de Matrox Marvel G200 videokaart. Deze gebruikt een Philips FI1216MF Mk2 TV-tuner. Lijkt hetzelfde als de gewone Mk2 versie. Echter het MF model is toch iets veelzijdiger. Lees meer hierover op de Special notes on Matrox Marvel G200 (Engelstalig!) pagina. Die Matrox Marvel biedt overigens schitterende teletekst software met fast-text en pagina surfen!
Telenew is ontwikkeld voor MS-DOS computers. In de loop der tijd is de software geschikt gemaakt voor de 80386, 80486 en Pentium 1 computers (1997). De laatst uitgebrachte MS-DOS versie is versie 2.32. Oudere software zal waarschijnlijk niet meer goed werken op de hedendaagse computers omdat die vele malen sneller zijn geworden! Toch even de proef op de som genomen met Telenew versie 2.32 op een AMD XP1600 systeem. Onder MS-DOS vindt Telenew de Teletekst decoder en de TV ontvanger netjes op COM1!
CPU | Speed limit | I/O Wait | CPU speed | I/O speed |
AMD XP1600 | 1.787 | 123 | 1.962.964 | 12.152 |
AMD K6-III/400 | 626 | 47? | 687.978 | 13.011 |
Pentium 200MMX | 519 | 0 | 566.000 | 5.000 |
Pentium 133 | 334 | 41 | 366.934 | 31.550 |
AMD486DX4 PCI | 151 | 18 | 166.743 | 28.206 |
i486DX2-66 VLB | 101 | 0 | 111.130 | 2.070 |
i486SX33 VLB | 66 | 3 | 73.069 | 9.823 | 386DX33 | 24 | 0 | 27.313 | 594 |
Voor Windows 9x bestaat er I2C software om de TV-ontvanger aan te sturen. Er is op dit moment geen Windows 2000/XP software beschikbaar. Tenminste ik ben er niet van op de hoogte. Windows NT brengt namelijk een speciaal probleem met zich mee. Telenew maakt namelijk gebruik van een zogenaamde bit banging interface. Dat betekent dat informatie rechtstreeks bitsgewijs wordt gelezen van of geschreven naar een I/O poort. Onder Windows NT is dat niet meer toegestaan zonder gebruik te maken van speciale besturingssoftware. Daarbij komt nog dat de programmatuur gebruik maakt van wachtlusjes om de opeenvolgende lees -en schrijf acties uit te voeren. Te snel mag namelijk niet ... Voor de hedendaags computers en besturingssystemen betekent dat deze zo nu en dan niet zo nuttig bezig zijn. Hiervoor bestaat geen echte oplossing, tenzij wordt overgestapt naar een efficiëntere manier van communiceren met de I2C bus. Bijvoorbeeld gebruik maken van USB of iets dergelijks.
Er bestaan heel veel verschillende soorten bit banging interfaces.
Hier staan er een aantal op een rij.
Voor het gemak heb ik de speciale PC-kaarten buiten beschouwing gelaten omdat de meeste ook
gebruik maken van het bit banging protocol.
Tja, dan komt het dus allemaal toch op hetzelfde neer.
Dan is de meest flexibele methode toch wel om gebruik te maken van de parallelle printer -of
de seriële poort.
De verschillen zitten overigens in het aantal inverters, soms andere pen aansluitingen en soms wordt ook
het SCL-in signaal niet gelezen.
Dat laatste is niet altijd verstandig omdat nu een eventuele fout in het I2C protocol pas later kan worden
ontdekt.
Bijgaand het door Telenew gebruikte I2C interface waarmee de PC via de parallelle printerpoort de I2C hardware kan besturen. Dit interface is gebaseerd op het Philips voorbeeld in de ASM51 toolkit dat beschreven staat in het bestand Portmsc.prt (te vinden in het bestand PCI2CBD.ZIP). Deze schakeling is ook gepubliceerd in: Philips Semiconductors Video Products, Application note betreffende 'I2C bus specification (including fast-mode)'. Datum juni 1992, bladzijde 2-119.
LS05 pin 14 (Vcc) o ------- | | | +--+--+---------------------+--+--+------------+------+-o 1 | | | | | | | ===.1uF | +5V | -------- [R][R][R] 3x10K 3x10K [R][R][R] LS05 | | | | | | | | | | | pin 7 o-+------+-o 2 | | 12 o-+--+ | | 3|\ 4 | | | (Gnd) | GND | | 17 o-+-----|--|----| >o-------------+--|--|--------------+ | | | | | | |/ 8 /|9 | | 10 /|11 +----+-o 3 | | 15 o-+-----+--|--------------o< |------+--|------o< |----+ | SCL | | | | 1|\ 4 \| | \| | | | 9 o-+--------|----| >o-------------------+--------------+----+-o 4 | | | | |/ 6 /|5 | | SDA | | 11 o-+--------+----------------------------------o< |----+ ------- | 10 o-+-+ \| 4-pin | 13 o-+-+--oGND Connector | 25 o-+-+ ------------------ Part List -------------------------- -------- | 1 - 0.1 uF capacitor | 6 - 10K 5% resistors | 25-pin male D | 1 - 4-pin connector | 1 - 25-pin male D connector | connector to PC | 1 - 74LS05 open collector hex inverter | printer port -------------------------------------------------------
Voor Linux is er ook het een en ander ontwikkeld. Hier is veel over te vinden, als voorbeeldje zoeken naar het gebruik van deze typische Philips parallelle poort interface: philips i2c par met Google. In de Linux code wordt nog iets gezegd over I2C_ON (pen 12, no paper). In de ontwerpen wordt die wel eens via een weerstand van 10kΩ aan +5V gelegd. De KOMFA interface en de software maakt geen gebruik van die pen.
Er bestaan vele variaties op de Philips I2C interface. Elektuur heeft er verschillende versies van gepubliceerd. Op zich jammer is dat er niet duidelijk gekozen is voor een standaard. De volgende onderwerpen en ontwerpen heb ik, tot nu toe, kunnen vinden:
Blad/Oorsprong | SDA in | SDA uit | SCL in | SCL uit | Massa | Detectie? | Opmerking |
KOMFA | 11 busy 1x- | 9 D7 1x- | 15 error 2x- | 17 select input 1x- | 25 | - | - |
Philips | 11 busy 1x- | 9 D7 1x- | 15 error 2x- | 17 select input 1x- | 23,24,25 | 12 no paper | Origineel uit databook |
Philips(variant?) | 11 busy 1x- | 9 D7 1x- | 15 error 2x- | 17 select input 1x- | 10,13,25 | 12 no paper | Versie volgens Portmsc.prt |
Elektuur Extra 3/99 | 11 busy 1x- | 14 auto feed 1x- | 15 error 2x- | 17 select 1x- | 18 t/m 25 | 12 paper empty | ontwerp met Centronics, contacten omgenummerd |
Elektuur Oktober 2000 | 10 Ack? 1x- | 3 D1 1x- | 15 error 1x- | 2 D0 1x- | 18 t/m 25 | 12 no paper 1x- | - |
Elektuur Juli/Augustus 1996 | 11 busy | 2 D0 (3,9kΩ) | - | 5 D3 (3,9kΩ) | 18 | 3 D1 extra lijn (via 3,9kΩ) | 4 D2 5V voeding via 47 Ω |
Elektuur september 2005 | 10 Ack | 1 Strobe | - | 2 D0 | 18 | - | 9 D7 5V voeding via 3,3kΩ naar SDA en 100uF naar GND |
ELV adapter | 10 Ackn ?- | 3 D1 ?- | 15 error ?- | 2 D0 ?- | 18 t/m 25 | 11 busy high | Afgeleid van linux code |
Velleman K8000 | 13 select ?- | 14 auto feed ?- | - | 17 select input ?- | 18 t/m 25 | - | Afgeleid van Velleman K8000 computer interface ontwerp |
Dan zijn er nog vele varianten in omloop die gebruik maken van de PCF8584. Omdat ik daar zelf geen ervaring mee heb opgedaan, kan ik daar niks over melden.
Dit was zonder meer de meest populaire interface voor de KOMFA Teletekst decoder.
Uiteindelijk werd dat de standaard aansluiting (TV-tuner versie).
Via de 6-polige connector kon dan eventueel alsnog een printerpoort adapter worden aangesloten.
Achteraf bleek het MAX232 chipje dat de 9 polige seriële connector aanstuurde, nogal kwetsbaar.
Tenminste bij mij was dat chipje zo kapot.
De kwetsbaarheid kan veroorzaakt worden door het ontbreken van pull-up weerstanden en/of een extra
buffer.
Het gebruik van het chipje is voor een PC COM poort niet direct noodzakelijk.
Als alternatief mag ook een transistor schakeling worden gebruikt.
Voorwaarde is dat de data en klok informatie geïnverteerd worden.
Ook voor het aansluiten van de I2C bus op de seriële poort bestaan verschillende ontwerpen. Voor de Teletekst decoder zijn er meerdere versies in omloop. Hier een overzicht van wat ik zo zelf kon achterhalen.
Blad/Oorsprong | SDA in | SDA uit | SCL in | SCL uit | Massa | Detectie? | Opmerking |
KOMFA1 25p | 6,8 DSR,DCD 1x- | 20 DTR 2x- | 5 CTS 1x- | 4 RTS 2x- | 7 | - | MAX232 + transistors |
KOMFA1 9p | 1,6 DSR,DCD 1x- | 4 DTR 2x- | 8 CTS 1x- | 7 RTS 2x- | 5 | - | MAX232 + transistors | KOMFA2 9p | 1,6 DSR(, DCD) 1x- | 4 DTR 1x-? | - | 7 RTS 1x-? | 5 | - | Geen SCL in |
Elektuur 9/2001 | 1,6 DSR,DCD 2x- | 4 DTR 2x- | 8 CTS 2x- | 7 RTS 2x- | 5 | - | MAX232 + 74LS06 |
Er bestaat geen standaard voor het koppelen van apparatuur via een specifieke connector. Het enige wat telt is dat de massa (GND), de data lijn (SDA) en de klok lijn (SCL) worden doorgelust. I2C is namelijk een seriële bus waarop I2C apparatuur aangesloten kan worden. Elk apparaat heeft een eigen I2C adres waarmee dat apparaat kan worden benaderd.
Telenew heeft een aantal connector aansluitingen gebruikt. Als software ontwikkelaar vond ik dat best lastig. Het liefst maakte ik gebruik van één standaard aansluiting. Deze is er uiteindelijk wel gekomen in de vorm van een 6 polige telefoonsteker. Op de bus was ook een 12 Volt voedingspanning beschikbaar. Later is deze bus weer veranderd, maar ik dacht dat die bus niet operationeel is geworden.
+-----------------+ Oorspronkelijk: Latere versie: | | O O O O O O | | SAA5246/TV tuner 87C751/RDS/TV tuner +-+ +-+ SAA5250/87C751 (zonder Teletekst?) | 6 5 4 3 2 1 | | | 1 = +12V 1 = +5V | | 2 = +12V 2 = Invoer/uitvoer 1 | | 3 = Massa 3 = Massa +-+ +-+ 4 = Massa 4 = Invoer/uitvoer 2 +-----+ +-----+ 5 = SDA 5 = SDA +-----------------+ 6 = SCL 6 = SCL
Voor mezelf gebruikte ik de 5 polige Din steker als bus:
pen 1 = massa, pen 3 = +5V, pen 4 = SDA, pen 5 = SCL
Elektuur maakt weer gebruik van een 6 polige mini-Din connector.
pen 2 = SDA, pen 3,4 = +5V, pen 5 = SCL, pen 6 + chassis = massa
pen 1 wordt ook wel eens gebruikt voor het interrupt signaal van de PCF8584 ...
Naar aanleiding van een artikel in de Elektuur van maart 2003, heb ik de I2C software voor de decoder nog eens nader bekeken. In dat artikel werd een DLL bestand gepresenteerd waarmee COM poort I/O kon worden aangestuurd. Dit leek me een interessant idee om eens nader te bekijken, zeker omdat die routines kennelijk ook geschikt zijn voor Windows NT (2000 en XP). Na enig puzzelen, blijkt Windows over een aantal zeer praktische routines te beschikken. Inmiddels is er een proefversie ontwikkeld die in staat is de TV ontvanger vanuit Windows aan te sturen via de COM poort.
De software is geschikt voor zowel Windows 95/98 als Windows NT (2000 en XP)! De software draait zonder problemen op een Ahtlon XP 1600 systeem en de snelheid is zeer acceptabel. Deze software is geschreven in Borland C.
Het leuke van het huidige ontwerp is dat de I2C software zelf uitzoekt welke COM poort wordt gebruikt en daarbij zelf uitpuzzelt welk type seriële I2C adapter wordt gebruikt (zie bovenstaande tabel). Eventueel niet genoemde varianten worden mogelijk ook ondersteund omdat de software een signaal inverteert wanneer dat nodig zou zijn! Voorwaarde is wel dat SDA via de DSR, DTR lijnen gaat en SCL via de RTS lijn. Ook houdt software rekening met de teruggaande SCL via CTS als die aanwezig is. Als dat signaal beschikbaar is, werkt de software overigens efficiënter en betrouwbaarder.
De oorspronkelijk KOMFA2 hardware moet nog wel een modificatie ondergaan. De DCD en DSR lijnen moeten met elkaar worden verbonden. Dit kan eventueel via een verloopkabeltje worden gerealiseerd maar er kan ook een draadbrugje tussen de pencontacten 1 en 6 op de printplaat worden aangebracht.
Sinds zomer 2005 is het mogelijk om Teletekst te bekijken op Windows via de oude KOMFA teletekst hardware (alleen met seriele poort interface). De software is dit keer geschreven in Pascal (Delphi 7.0 personal). De oude DOS software is voor een deel hergebruikt, gecombineerd met Windows is het een heel nieuw programma geworden met ondersteuning voor diverse soorten I2C apparaten. Wat nog ontbreekt is de oude Telenew functies voor het bekijken en opslaan van Teletekst informatie. Als afstemhulp zou het ook leuk zijn om het TV-beeld zelf te kunnen zien.
Sinds januari 2006 is het mogelijk om I2C aan te sturen op Windows NT via de Parallelle printerpoort. Er zijn een aantal oplossingen uitgeprobeerd zoals die met Giveio.sys, Zlioport.sys, Userport.sys en IO.DLL (genoemd in de Elektuur van september 2005). In ieder geval werkten IO.DLL en Userport.sys met de LPT1 aansluiting. Giveio.sys werkt niet goed, in eerste instantie leek dat te werken, alleen op een tweede computer kreeg ik het niet werkend. Uit nader onderzoek op de eerste computer, bleek dat userport het echte werk deed. Aandachtspunt is of de software ook door een normale gebruiker (zonder Administrator rechten, kan worden gebruikt). Vermoedelijk is alleen Zlioport.sys hiervoor geschikt (overigens heb ik dat nog niet uitgezocht). Opgemerkt zij nog dat voor Windows 98 een stukje inline assembler voldoende is om toegang te krijgen tot de parallelle printerpoort. Voor Windows 98 zijn er dus in principe geen speciale oplossingen nodig. Het lijkt me wel verstandig om codeer oplossingen te kiezen die zo universeel mogelijk zijn. De software is nog volop in ontwikkeling. Ondersteund wordt: afdrukken van een Teletekst pagina, de TV-ontvanger, Kopieren en Plakken in Windows, Fasttext en tot slot kan er nu gesurfed worden door de teletekst pagina's! Het surfen gaat via het aanklikken van de pagina nummers die in de Teletekst pagina kunnen voorkomen.
Sinds juni 2006 is er een DLL waarmee I2C hardware kan worden gebruikt binnen een eigen programma. De DLL is experimenteel en is gebaseerd op het Delphi programma zodat het niet nodig was om een geheel nieuw programma te ontwikkelen met vergelijkbare functionaliteit. Deze DLL wordt gebruikt in combinatie met een heel nieuw C# (.Net) programma waarmee TV gekeken kan worden. Standaard maakt dat programma gebruik van Windows Teletekst ondersteuning (met de Vbi codec en de Wst decoder) en de eventuele TV-kaart of video capture kaart in de computer. Helaas biedt Windows slechts een beperkte Teletekst functionaliteit. Beter geschikt lijkt het gebruik van de Wst renderer te zijn, alleen verstrekt Microsoft hierover geen informatie. De KOMFA Teletekst decoders bieden gelukkig wel de gewenste mogelijkheden. Dankzij de DLL kan de vrij oude hardware nog steeds worden gebruikt in een moderne programmeer omgeving.
Voor de toekomst staat op de rol:
- Software om Teletekst onder Windows in te lezen (gewerkt wordt aan een Delphi
Pascal en een C# versie).
- Een oplossing voor de parallelle printerpoort (PCF8584 via EPP poort).
- WDM drivers
- Drivers zijn mogelijk ook te gebruiken via USB COM of printerpoort *).
*) USB poorten zijn uit programmeertechnisch oogpunt moeilijker (tot niet) bit specifiek aan te sturen. Een USB COM poort communiceert prima met de seriële poort met alleen de transmit en receive lijn. Echter handshaking wordt daarbij vaak niet meer gebruikt en juist die besturingssignalen gebruikt de huidige I2C software. Een USB printerpoort biedt alleen ondersteuning om printers aan te sturen, en dit gekoppeld aan de Windows printer driver. Dit is onvoldoende flexibel voor de huidige I2C interface software implementatie.
Terug naar het begin? Klik hier.