Software DevelopmentBasicode historie Webdesign, allerlei Video file saving in Wmv Save audio in Wma Downloads Matrox Marvel G200 Digital TV DVB-C/S Media Center remote control Analog TV and FM radio Teletext on a PC Digital TV DVB-T DirectX and DirectShow Amcap video capture Introduction Meest gelezen onderwerpen: Website blog... Mediastreaming van Windows P... Pingen en een IP adres vinde... Gastenboek lezen... Geluidsapparatuur aansluiten... UTP, straight en cross ... Schrijf een bericht... Windows 7, 8 en 10 in een th... Gastenboek schrijven... Een thuisnetwerk aanleggen...
| Een stukje historie en
|
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.
Welkom | Software | Stuur bericht | Gastenboek | Website Blog | Links |