Forum: Mikrocontroller und Digitale Elektronik AVR32 - Interrupterkennung in Fallender Flanke an GPIOs - Grasshopper


von Abderrahim (Gast)


Lesenswert?

Hallo Linuxer,
ich habe in der letzten Tage rumprobiert, eine Mitutoyo Uhr an den 
Grasshopper anzuschliessen, da in der GH keine EXTINT nach außen 
geroutet sind, habe ich den Pin clk an PA(5) angeschlossen, dann habe 
ich den Interrunpt von dieser Pin als Betriebsmitteln angefordert, wie 
folgt:

/* Set GPIO for mitutoyo_clk as input */
if(gpio_direction_input(mitutoyo_clk))

/* Get IRQ number corresponding to the GPIO number*/
irq = gpio_to_irq(mitutoyo_clk);

/* Request IRQ line for mitutoyo_clk and install a handler */
if(request_irq(irq, mitutoyo_clk_isr, 0, "Mitutoyo",NULL))
{
  printk(KERN_ERR"IRQ request failed\n");
  goto err_req_int;
}

Mein Problem ist, solange ein Low Pegel an der Pin mitutoyo_clk 
vorhanden ist, wird die ISR routine ständich gerufen, ich will aber dass 
dieser Interrupt Flanke gesteuert und nicht Pegel!!
kann mir jemand helfen?

Jeder Hilfreicher Kommentar ist willkommen
Abdo

von Gast (Gast)


Lesenswert?

da wird dir wohl nichts anderes über bleiben, als ein Negativ-Flanken 
getriggertes Monoflop davor zu setzen.

von Abderrahim (Gast)


Lesenswert?

Hi, danke für deine Meldung erstmal,
1-Ich dachte es wäre möglich das einzustellen beim irq anforderung im 
kernel?
wahrscheinlich ist das unter Verwendung von normale gpio's nicht 
möglich, einen Flankenwechsel zu erkennen, es wäre denn man nimmt einen 
EXTINT pins, hab das gestern festgestellt, brauche aber noch einpaar 
dinge zu klären, warum die ISR-routine spät einspringt.
2-wie kann ich einen 8-bit gpio port definieren, für die steuerung von 
einen externen Counter.
ist das mit der kernelfunktion "request_region(...)" getan?

Abderrahim

von Gast (Gast)


Lesenswert?

1. die GPIO-Pins können nur Level-Change keine Flankenerkennung und die 
EXTINT-Pins sind beim Grasshopper nicht herausgeführt.

2. schau dir mal in der setup.c das Beispiel für die LEDs des 
Grasshoppers an.

von Abderrahim (Gast)


Lesenswert?

Jaw, Danke für die Idee, leider komme ich damit nicht weiter, ich habe 
gedacht an eine Resourcenlokalisierung mit hilfe von request_region 
Funktion, und dan einen Byte dahin schicken via outb(), oder einen davon 
lesen via inb(). weiß aber nicht ob das hin haut? hat jemand eine Idee 
wie ich einen 8.bit datenbus mit hilfe von GPIO in einen Module zu 
realisieren ?
Gruß Abderrahim

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.