mega128 PortD4 Frage zu Alternativfunktion ...

pmac

Neues Mitglied
23. Sep. 2008
54
0
0
Sprachen
Hallo,

bei einem bestehenden Board mit einem Mega 128 soll Port D4 so programmiert werden, dass er durch eine fallende Flanke einen Interrupt auslösen kann. Leider ist PD4 dafür ja nicht vorgesehen.
Kann man das vielleicht über den Umweg ICP1 Counter/Capture erreichen? Hat jemand soetwas schon mal gemacht und ein paar Tipps dazu?

Danke
Pmac
 
Hallo Pmac,
Kann man das vielleicht über den Umweg ICP1 Counter/Capture erreichen? Hat jemand soetwas schon mal gemacht und ein paar Tipps dazu?

ich habe es selber noch nicht gemacht, aber du müsstest einfach nur den InputCaptureInterrupt des Timers verwenden. Auf fallende Flanke triggerst du, indem du das Flag ICES1 des Edge detectors auf 0 setzt (nach Reset ist das Bit bereits 0).

InputCaptureInterrupt freigeben:
Flag TICIE1 im Register TIMSK setzen

Fallende Flanke:
Flag ICES1 im Register TCCR1B löschen

Capture Register ignorieren. Es ist noch möglich, den InputNoiseCanceler zu aktivieren (Flag ICNC1 im Register TCCR1B setzen).

Dirk :ciao:
 
Dirk hat ja fast alles schon gesagt (I in SREG mus auch gesetzt sein, Interrupts global scharf).
Ich würde Dir trotzdem empfehlen, alle diese Register und Bits im Datenblatt des Controllers nachzulesen, zusätzlich noch ICF1 in TIFR1 (das entsprechende Interrupt-Anforderungsflag).
 
Vielen Dank, ich werde es ausprobieren und hier berichten. Vielleicht kann das ja später auch noch mal jemand gebrauchen ...
 
Seitdem die neueren AVR an vielen Beinchen "Pin Change Interrupts" anbieten, sind solche Klimmzüge zwar weitgehend überflüssig geworden, trotzdem gibt es weitere Möglichkeiten, andere Hardware als externen IRQ zweckzuentfremden (was'n Wort:p):
  • der AnalogComperator kann einen IRQ auslösen, wenn AIN1 oder einer der ADC-Pins eine steigende/fallende/beliebige Flanke gegen AIN0 oder die interne Bandgap-Referenz hat
  • Jeder Timer der eine externe Clock akzeptiert, kann so eingestellt werden, daß die nächste Flanke einen Überlauf/Output Compare mit entsprechendem IRQ auslöst
  • denkbar wäre auch, dem TWI 'ne Start-Condition vorzugaukeln (SDA fällt, während SCL high ist), und nutzt den TWI-Interrupt
  • Dasselbe beim SPI, indem man den als Master festlegt, und 'ne fallende Flanke am !SS-Pin verwendet (Was einen SPI-Interrupt auslöst)
 
Ist halt eine bestehende Hardware mit einem mega128 der eine Klemme auf PD4 hat. Da kann man dann sehr leicht was anschließen ...
 
War mir schon klar, wollte Dich auch nicht von einem dieser Wege überzeugen. Ich habe das eher ergänzend zur verwendeten Möglichkeit (Input Capture Event als externer IRQ) mitangeführt - im Sinne von:
...Vielleicht kann das ja später auch noch mal jemand gebrauchen ...
 
Der Vollständigkeit halber:
mit der Idee von Dirk und LotadaC, konnte ich erfolgreich PD4 als Interrupteingang nutzen!

Danke nochmal.

Peter
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)