Kulwinder Atwal wrote: > > I do not know how much extra work your software does, or the speed of > your CPU. You can also set the port for generating an interrupt on > every high level of your 109 kHZ signal by attaching your 109 kHZ signal > to the STB, INTE, and IBF pins. By doing this you will be simulating a > write to the port from an external device. Basically, it is my intention to integrate this piece of A/D conversion into a GTK+ GUI that i am writing for my thesis. There is more info on http://hello.to/MC303 -> follow the link to 'my thesis'. Up until now, i have only written this test-program to see if my circuitry is fine. The program works for DOS, so it means that everything is ok... i only have problems if i run this program in linux. If i get this thing to work just fine in Linux, then i want to integrate the code as a callback function in a GTK+ GUI. Say for example if the user presses a button, that the function that does the A/D conversion is being executed. I have attached the complete source code of the test program. It is code that drives a TL500C Dual Slope A/D convertor through the parallel port. I have also attached a file that explains on which computer I try to run this. I am running Debian GNU Linux with kernel 2.2.14. So, I would like to know if Real Time Linux is the easiest solution for my problem. I don't want to make things too complicated anymore, i just want this thing going in linux so i can integrate it in my GTK+ GUI. Any further suggestions on the best/shortes/easiest solutions are welcome. Greetzzz MC303 -- Bart Vandewoestyne http://hello.to/MC303 Hugo Verrieststraat 48 [EMAIL PROTECTED] 8550 ZWEVEGEM ICQ# 21275340 BELGIUM - EUROPE nick: MC303 Phone: +32(0)56/75.48.11 ------------------------------------------------------------- "Der Horizont vieler Menschen ist ein Kreis mit Radius Null -- und das nennen sie ihren Standpunkt."
NIC: Compex RL100-ATX CD-ROM: HITACHI CDR-8435, ATAPI CDROM drive Hard Disk: Seagate ? Graphics Card: S3 Inc. ViRGE (rev 6) Sound Card: Soundblaster AWE64 Gold Monitor: NOKIA Multigraph 449Xi 15" Max Resolution: 1024x768 H Freq: 30-65 kHz V Freq: 48-120 Hz
/* TL500C */ /* Sturen en lezen van de TL500C Dual Slope Digitaal-Analoog konvertor */ #include <sys/io.h> #include <stdio.h> #define BASEPORT 0x378 #define TRUE 1 void tel(int tijd); main() { int portstatus = 0; int klok, pol, waarde; if (ioperm(BASEPORT, 3, 1)) { perror("ioperm"); exit(1);} while (TRUE) { waarde = 0; /* AUTO ZERO faze: A (PIN 9) en B (PIN 8) laag */ portstatus = portstatus & ~(0x80) & ~(0x40); outb(portstatus, BASEPORT); tel(10000); /* INTEGRATE INPUT faze: A en B hoog */ portstatus = portstatus | 0x80 | 0x40; outb(portstatus, BASEPORT); tel(10000); /* INTEGRATE REFERENCE faze */ /* testen van polariteit: komparator op pin 10 */ pol = inb(BASEPORT+1) & 0x40; if (pol) { /* positieve ingangsspanning -> A hoog en B laag */ portstatus = portstatus | 0x80 & ~(0x40); outb(portstatus, BASEPORT); } else { /* negatieve ingangsspanning -> A laag en B hoog */ portstatus = portstatus & ~(0x80) | 0x40; outb(portstatus, BASEPORT); } /* nog testen op polariteit van ingangssignaal en evt. voorwaarde */ /* van comparator aanpassen */ while ((waarde < 20000) && !(inb(BASEPORT+1) & 0x40)) { do { klok = inb(BASEPORT+1) & 0x80; } while (klok == 0); waarde++; do { klok = inb(BASEPORT+1) & 0x80; } while (klok == 0x80); } if (waarde == 20000) printf("\nOverkapaciteit"); else printf("\nGemeten waarde = %d", waarde); } } void tel(int tijd) { int waarde = 0; int klok; while (waarde < tijd) { do { klok = inb(BASEPORT+1) & 0x80; } while (klok == 0); do { klok = inb(BASEPORT+1) & 0x80; } while (klok == 0x80); waarde++; } }