Ga naar inhoud

Interrupt Service Routine


Aanbevolen berichten

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.
Link naar reactie
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.
Link naar reactie
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.
Link naar reactie
[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]
Link naar reactie
[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.
Link naar reactie
[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]
Link naar reactie
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.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...