Benötige euere Hilfe

Gast #1139228
Lesenswert?

Hallo zusammen,
könnt Ihr mir helfen dieses zu realisieren.
Besitze einen ATMega128 und möchte am Eingang einen Reedkontakt 
anschließen. Wenn dieser betätigt wird, soll der Ausgang für eine genau 
definierte Zeit geschlossen werden z.B. 100ms, egal wie lange der 
Reedkontakt am Eingang geschlossen ist. Optimal wäre auch noch wenn die 
Zeit eingestellt werden könnte vom Betätigen des Reedkontakt bis zum 
aktivieren des Ausgangs. Z.B. ich betätige den Reedkontakt am Eingang 
dann soll eine Verzögerung von 20ms stattfinden bis der Ausgang dann für 
100ms aktiv wird.

Vielen Dank
Gast #1139237
Lesenswert?

hierfür gibts natürlich mehrere optionen

(bitte mich nicht zu zerfleischen wenn diese nicht die perfekteste ist 
:))

mit dem kontakt löst du einen interrupt aus - dieser "schließt" den 
ausgang und startet einen Timer. Der Timer erzeugt nach der 
eingestellten Zeit (zB 100ms) einen Überlauf und öffnet den ausgang 
wieder.

hast du einen schaltplan dazu?
Gast #1139257
Lesenswert?

Danke
Am liebsten wäre mir, dass nach Betätigen des Eingangs der Ausgang 
zeitverzögert (20ms) aktiviert/geschlossen wird und und nach einer 
bestimmten Zeit (100ms) wieder abfällt/öffnet. Hätte jemand eine Idee, 
wie hiefür ein Code aussehen könnte. Wäre euch sehr dankbar.
Gast #1139291
Lesenswert?

Ein ATmega128 ist glaube ich ein bisschen oversized für das Projekt, 
wenn du den grad mal so liegen hast ok aber wenn du noch auf einen 
kleineren Typ umsteigen kannst solltest du dies tun, vorausgesetzt es 
bleibt bei der oben genannten Funktion!!!!
#1139394
Lesenswert?

hhmmmm wrote:
> Ein ATmega128 ist glaube ich ein bisschen oversized für das Projekt,

"ein bischen" ist noch stark untertrieben.
Ein ATtiny13 reicht dicke.

Mechanischer Kontakt und externer Interrupt vertragen sich nicht 
(prellen).
Daher nen Timerinterrupt mit 4-fach Abtastung nehmen.
Bei 6ms Abtastintervall hast Du auch gleich 18..24ms Verzögerung.


Peter
Gast #1139706
Lesenswert?

ja ich weiß dass ein ATmega128 zu oversized ist. Später werde ich einen 
ATiny13 nehmen.
Auf meinem Testboard ist jedoch ein 128er. Zum testen ideal. Das mit dem 
entprellen hätte ich mit eingebunden. Leider sind meine 
Programmierkenntnisse nicht so gut. Vielleicht kann mir jemand von euch 
helfen einen Code zu schreiben. Wenn wir also den Kontakt entprellen 
dann ist eine Verzögerung eh nicht mehr notwendig. Jetzt bräuchte ich 
nur noch, dass der Ausgang verzögert aktiviert wird. Zudem darf der 
Ausgang auch nicht erneut aktiviert werden, wenn der Eingang noch 
geschlossen ist. Z.B. ich betätige den Eingang 1 Sek. dann darf der 
Ausgang aber trotzdem bloß 100ms geschlossen sein. Wenn der Eingang dann 
abgefallen ist, ist auch der Ausgang = 0. Erst wenn der Eingang dann 
wieder erneut betätigt wird soll der Ausgang = 1 sein.
Wäre sehr dankbar, wenn jemand von euch hierzu einen Code für Bascom 
schreiben könnte und mich unterstützen könnte.
Danke
Gruß Markus
Gast #1141328
Lesenswert?

Wenn es auf einem ATTiny13 laufen soll ist es nicht sinnvoll
das auf einem Mega128 zu Programmieren.
Da es sich anbietet einen Timer zu verwenden und der 13'er nur
einen mit 8 Bit hat der 128'er jedoch 8 und 16 Bit-Timer besitzt
ist das Programm nich ohne weiteres übertragbar.

Was spricht gegen einen eigenen Aufbau mit ATTiny13. Den gibt es
auch im DIL-Gehäuse.

gruß hans
Gast #1141371
Lesenswert?

Ja ist kein Problem, ist in kurzer zeit aufgebaut. Ich bin da flexibel. 
Dachte nur man könnte das Prog. auf dem 128 Testen. Macht aber nix ich 
kann den tiny auch ohne Probleme anschließen.
Wär super Danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren