anoniem Geplaatst: 27 juni 2004 Delen Geplaatst: 27 juni 2004 Ey, Hoe kan ik een Interrupt Service Routine (ISR) gebruiken onder Win2k? Ik heb al veel sites afgezocht via google, maar kan nergens een site vinden die mij praktische dingen verteld. Iedereen verteld hoe PIC's werken en wat er gebeurt als er een interrupt gegeven wordt aan de CPU, maar niet hoe ik een ISR kan 'bekend maken' aan het systeem. Nu heb ik wel iets gevonden op msdn over de functie IoConnectInterrupt, maar hier wordt ik ook niet echt veel wijzer uit. Heeft iemand meer info voor mij? MVGR, René P.S.: Als iemand (ook) informatie heeft over ISR's onder linux is dit ook welkom. Quote Link naar reactie
anoniem Geplaatst: 28 juni 2004 Auteur Delen Geplaatst: 28 juni 2004 In het algemeen: * sla oude interrupt vector op * voeg jouw functie in * bij afsluiten programma de oude interrupt vector terug zetten Helaas geeft je niet aan welke programmeer taal, maar '[url=http://www.google.com/search?hl=en&ie=UTF-8&q=interrupt+C+program&btnG=Google+Search]google search op interrupt C program[/url]' vond onder andere http://www.learn-c. Even zoeken op interrupt en je vind wat info over programmeren. [code:1:ac3c10e5ea] // voorbeeld van bovengenoemde site // http://www.learn-c.com/experiment6.htm. // timer6h.c #include <dos.h> #include <stdio.h> #include <bios.h> #include "extern6h.h" long get_timer_counter(void); void set_up_new_timer(void); void wait(double seconds); void restore_old_timer(void); double get_frequency(void); void interrupt new_timer(), interrupt (far *old_timer)(); unsigned long timer_counter; // save the old vector, set up new vector, zero out counter void set_up_new_timer(void) { disable(); // turn off interrupts old_timer = getvect(0x1c); setvect(0x1c, new_timer); timer_counter = 0L; enable(); // turn interrupts back on } // restore former table entry and rate void restore_old_timer() { disable(); setvect(0x1c, old_timer); enable(); } // return the value of the counter to the caller long get_timer_counter(void) { return timer_counter; } // the interrupt handler interrupt new_timer() { disable(); timer_counter++; enable(); } // end timer6h.c [/code:1:ac3c10e5ea] Of het onder W2K allemaal is toegestaan, durf ik zo niet te zeggen. Voor Linux kun je vanuit [url=http://www.faqs.org/docs/Linux-mini/IO-Port-Programming.html]http://www.faqs.org/docs/Linux-mini/IO-Port-Programming.html[/url] verder zoeken. Quote Link naar reactie
anoniem Geplaatst: 28 juni 2004 Auteur Delen Geplaatst: 28 juni 2004 Interrupts afvangen in Windows 2000? Vergeet dat maar want daar heb je in principe geen rechten toe. Alleen diep in de kernel kun je dit voor elkaar krijgen. Maar goed, als je een device driver maakt, dan kan het in principe wel... Een betere plek om te zoeken is Google. http://www.google.com/search?sourceid=navclient&ie=UTF-8&oe=UTF-8&q=IoConnectInterrupt zal al enige interessante sites opleveren zoals http://www.beyondlogic.org/interrupts/winnt_isr_dpc.htm maar ook http://www.osr.com/ddk/kmarch/k104_7h9u.htm maar wat ook interessant kan zijn is om op http://www.osr.com/ddk/ de documentatie van de DDK na te lezen. Quote Link naar reactie
anoniem Geplaatst: 30 juni 2004 Auteur Delen Geplaatst: 30 juni 2004 [quote:045ae346f3="shoekie"] Hoe kan ik een Interrupt Service Routine (ISR) gebruiken onder Win2k? Ik heb al veel sites afgezocht via google, maar kan nergens een site vinden die mij praktische dingen verteld. Iedereen verteld hoe PIC's werken en wat er gebeurt als er een interrupt gegeven wordt aan de CPU, maar niet hoe ik een ISR kan 'bekend maken' aan het systeem.[/quote:045ae346f3] Wat is je uiteindelijke doel? [quote:045ae346f3="shoekie"]Heeft iemand meer info voor mij?[/quote:045ae346f3] [url=http://www.catb.org/~esr/faqs/smart-questions.html]How To Ask Questions The Smart Way[/url] Quote Link naar reactie
anoniem Geplaatst: 1 juli 2004 Auteur Delen Geplaatst: 1 juli 2004 [quote:4299c5914a="h4xX0r"]Wat is je uiteindelijke doel?[/quote:4299c5914a] Infrarood ontvanger gebruiken. Parallele poort pollen duurt te lang, omdat het signaal ongeveer 8 mili sec duurt (gemeten met osciloscoop). Dit signaal bestaat dan een x aantal pulsen (ongeveer 10) die de status van de acknoledge bit van hoog naar laag brengt. Met pollen kan ik niet naukeurig genoeg de signaal opvangen. [quote:4299c5914a="h4cC0r"][url=http://www.catb.org/~esr/faqs/smart-questions.html]How To Ask Questions The Smart Way[/url][/quote:4299c5914a] Dat sloeg dus op de functie IoConnectInterrupt. Daar wou ik wat meer info over mbt de arguments, hoe te gebruiken e.d. Quote Link naar reactie
anoniem Geplaatst: 1 juli 2004 Auteur Delen Geplaatst: 1 juli 2004 [quote:9a2458ff6a="H4xX0r"]Wat is je uiteindelijke doel?[/quote:9a2458ff6a] [quote:9a2458ff6a="shoekie"]Infrarood ontvanger gebruiken. Parallele poort pollen duurt te lang, omdat het signaal ongeveer 8 mili sec duurt (gemeten met osciloscoop). Dit signaal bestaat dan een x aantal pulsen (ongeveer 10) die de status van de acknoledge bit van hoog naar laag brengt. Met pollen kan ik niet naukeurig genoeg de signaal opvangen.[/quote:9a2458ff6a] Wellicht heb je wat aan de win32 API [url=http://www.google.com/microsoft?hl=en&lr=&ie=UTF-8&q=WaitCommEvent]WinCommEvent[/url] [size=9:9a2458ff6a]Oeps: bestaand bericht per ongeluk gewijzigd.[/size:9a2458ff6a] Quote Link naar reactie
anoniem Geplaatst: 8 juli 2004 Auteur Delen Geplaatst: 8 juli 2004 Is al erg lang geleden dat ik zoiets onder Win3.11 heb gedaan ;) Onder linux is het eigenlijk heel eenvoudig. je maakt een functie die datgene doet wat je na een IRQ wilt afhandelen. die instaleer je met de functie request_irq met als belangrijkste parameter het IRQlijntje en je handler en de rest doet Linux voor je. wil je er weer vanaf dan zeg je free_irq(handler); Hoe dat onder windows gaat weet ik niet, windows is te moeilijk voor mij. Maar ehh LIRC is er geloof ik ook voorWindows. kijk daar es naar. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen