Hallo Leute, im anhang seht ihr ein Rechtecksignal mit 500Hz. Normalerweise hab ich an dem Messpunkt 5V Ruhepegel. Wenn jetzt ein Rechtecksignal auftaucht, möchte ich dieses als normale Spannung am Pin eines Atmega einlesen. Ich möchte nicht die Rechteckspannung sondern einfach ein High oder Low Signal am Pin anliegen haben. (Habe 6 solcher Messpunkte zu überwachen). Wie kann ich das am besten Bewerkstelligen? Ich brauch wohl irgend eine Art Filter um die Rechteckspannung zu glätten oder einen Schmitttrigger. Könnte mir jemand auf die Sprünge helfen? Grüße Christian
Schließ die Leitungen an einen Port an und mach 3 Messungen im Abstand von 500ns 3 gleiche Werte = kein Signal
Rainer U. schrieb: > Schließ die Leitungen an einen Port an und mach 3 Messungen im Abstand > von 500ns > > 3 gleiche Werte = kein Signal Alle 6 Signale auf einen Port führen und dreimal, im Anstand von 500 ns, den Port mit sich selbst verUNDen. Wenn einer oder mehrere der sechs Portpins LOW ist, dann liegt ein Rechteck am entsprechende PIN an.
Ich kenne nur PICs, da würde ich die Aufgabe mit "Interrupt-on-Change" auf die fallende Flanke lösen. Wenn nicht nur ein Impuls sondern eine Impulsfolge detektiert werden soll, dann wird eine Zählvariable inkremeniert. MfG Johannes
Chris T. schrieb: > Rechtecksignal mit 500Hz Rainer U. schrieb: > im Abstand von 500ns Das üben wir noch mal. Bei 500ns würde der ATmega schon etwas in Stress kommen. Gut das für 500Hz eine Abtastung mit 1000000ns Sampleabstand reichen dürfte ;-)
Chris schrieb in seiner ursprünglichen Nachricht: >>Ich möchte nicht die Rechteckspannung sondern einfach ein >>High oder Low Signal am Pin anliegen haben. Eine intensive und sorgfältig ausgeführte Textanalyse ergab, das er
1 | nicht die Rechteckspannung |
sondern einfach ein
1 | High oder Low Signal am Pin |
möchte. Dies lässt sich am einfachsten dadurch erreichen, das man keine Rechteckspannung, sondern ein einfaches 'High oder Low Signal' an einen Eingangspin legt. Man kann natürlich auch
1 | Ich möchte *nicht* die Rechteckspannung am Pin |
dahingehend interpretieren, das man erst einmal ein Rechtecksignal an einen Eingangspin legt und dann später darüber nachdenkt ob es mit dem geäußerten Wunsch übereinstimmt.
Wolfgang schrieb: > Norbert schrieb: >> Du brauchst einen Inverter und ein 1ms Monoflop! > > Sechs Wenn man das extra erwähnen muss ergeben sich ganz andere Probleme ;-)
Tastenentprellung nach dannegger bullet proof als Timerbasis eignet sich dann nicht ms sondern µs wenn 4x low eingelesen wurde ist es wohl ein Puls, ob es der richtige ist müsste man weiterzählen wenn es noch andere Möglichkeiten gibt, sonst gilt der ja. mit 6 Pins auf einem Port kann man ja alle zugleich entprellen. Die Frage ist, wieviel 2ms low und hig müssen gezählt werden um das als gültigen 500Hz Rechteck zu werten? was bedeutet: Chris T. schrieb: > Wenn jetzt ein Rechtecksignal auftaucht, möchte ich dieses als normale > Spannung am Pin eines Atmega einlesen. der ist doch nur 5V oder 0V oder willst du genau im Rechteck die Amplitude messen? welche von high oder low?
Hallo Chris Tian, nimm ein nachtriggerbares Monoflop z.B: vom Typ 74xx123, im Chip befinden sich je zwei dieser Monoflops. Die Impulszeit stellst du auf eine Größere als die Periodenzeit des Rechtecksignals. Solange das Rechteckignal anliegt wird das Monoflop nachgetriggert und bleibt gesetzt. Bleiben die Impulse aus, fällt das Monoflop zurück. Aufpassen mußt du beim 74xx123 auf den Hersteller des Chip. Bei Einigen berechnet sich die Impulszeit zu tw = 1 x R x C (z.B: National), bei Anderen zu tw = 0,45 x R x C (z.B: Phillips). Gruß. Tom
Man könnt' auch per Timer Capture und gleichzeitigem Overflow-Interrupt feststellen, was zuerst passiert: Anhalten des Timers oder Overflow. Dann muss der Timer nur noch so eingestellt werden, dass er recht sicher nach 1,5 besser 2 Perioden überläuft. Was das mit der Tastenentprellung werden soll, ist mir schleierhaft. Von Prellen war keine Rede.
TomA schrieb: > nimm ein nachtriggerbares Monoflop z.B: vom Typ 74xx123, im Chip > befinden sich je zwei dieser Monoflops. wozu monoflop? er hat doch den ATmega
Norbert schrieb: > Wolfgang schrieb: >> Norbert schrieb: >>> Du brauchst einen Inverter und ein 1ms Monoflop! >> >> Sechs > > Wenn man das extra erwähnen muss ergeben sich ganz andere Probleme ;-) Wenn du das nicht erwähnst, fragt man sich, welche Unexakteiten es bei dir sonst noch so gibt ;-)
Hallo Joachim, hast du die Anforderung gelesen? Chris möchte ein fertig aufbereitetes Signal am Eingang des µC. Er will dafür keine interne Hardware und keine Software einsetzen. Man sollte schon auf die Anforderungen eingehen, wenn man helfen will. Gruß. Tom
TomA schrieb: > Hallo Joachim, > > hast du die Anforderung gelesen? habe ich TomA schrieb: > Man sollte schon auf die Anforderungen eingehen, wenn man helfen will. stimmt, nur das ist es ja nicht: TomA schrieb: > nimm ein nachtriggerbares Monoflop damit sind ja ausser den 500Hz Impulsen noch jede andere Menge an anliegenden Impulsen möglich. Mir ist halt nicht klar ob nur 500Hz Impulse auftreten können oder auch andere und wie aus möglicherweise verschiedenen Impulsen nur die 500Hz rausgefischt werden. Chris T. schrieb: > Wenn jetzt ein Rechtecksignal auftaucht, zufällig? immer 500Hz? oder nur 500Hz sollen gefischt werden? mir ist die Aufgabenstellung zu unscharf.
Humpert schrieb: > Norbert schrieb: >> Wolfgang schrieb: >>> Norbert schrieb: >>>> Du brauchst einen Inverter und ein 1ms Monoflop! >>> >>> Sechs >> >> Wenn man das extra erwähnen muss ergeben sich ganz andere Probleme ;-) > > Wenn du das nicht erwähnst, fragt man sich, welche Unexakteiten es bei > dir sonst noch so gibt ;-) Tja, ich gehöre anscheinend einer (sehr) kleinen Gruppe an welche einen Text nicht nur sehen, sondern auch lesen und darüberhinaus auch verstehen kann;-) Der Text (Problembeschreibung) lautet:
1 | Normalerweise hab ich an dem Messpunkt 5V Ruhepegel. |
Singular
1 | Wenn jetzt ein Rechtecksignal auftaucht, möchte ich dieses als normale |
2 | Spannung am Pin eines Atmega einlesen. |
Singular
1 | Ich möchte nicht die Rechteckspannung sondern einfach ein High oder Low |
2 | Signal am Pin anliegen haben |
Singular
1 | Ich brauch wohl irgend eine Art Filter um die Rechteckspannung zu |
2 | glätten oder einen Schmitttrigger. |
Singular Dieses Problem(Singular) muß sechs mal gelöst werden. Die vorgeschlagene Problemlösung (Singular) kann dann später beliebig oft eingesetzt werden (Das schließt die Anzahl sechs natürlich mit ein)
Norbert schrieb: > . > . > Dieses Problem(Singular) muß sechs mal gelöst werden. > > Die vorgeschlagene Problemlösung (Singular) kann dann später beliebig > oft eingesetzt werden (Das schließt die Anzahl sechs natürlich mit ein) Geht doch...
Es reicht, wenn es Chris weiterhilft. Er kann das Monoflop an exakt seine Gegebenheiten anpassen, ohne uns alle Details mitteilen zu müssen. Schönes Wochenende. Tom
TomA schrieb: > Er kann das Monoflop an exakt > seine Gegebenheiten anpassen, ohne uns alle Details mitteilen zu müssen. > > Schönes Wochenende. Tom wenn ein Monoflop für alle Gegebenheiten reicht, nun gut,dir auch ein schönes WE
TomA schrieb: > Man sollte schon auf die Anforderungen eingehen, wenn man helfen will. Man darf aber auch mal fragen, warum man das Problem nicht mit ein paar Codezeilen im uC lösen kann. Denn dort ist das absolut kein Aufwand. Wenn es schon einen Timertic gibt, dann sind es gerade mal 1-2 C-Zeilen pro Eingang. Man könnte sich sogar vorstellen, dass man einen uC mit min 12 EA nimmt und das Ganze da reinprogrammiert. Zusammen mit dem internen Oszillator wäre das dann komplett ohne zusätzliche Bauteile in 1 IC. Und ganz leicht änder- und anpassbar...
:
Bearbeitet durch Moderator
Chris T. schrieb: > im anhang seht ihr ein Rechtecksignal mit 500Hz.> Normalerweise hab ich an > dem Messpunkt 5V Ruhepegel. > Wenn jetzt ein Rechtecksignal auftaucht, möchte ich dieses als normale > Spannung am Pin eines Atmega einlesen. Ich möchte nicht die > Rechteckspannung sondern einfach ein High oder Low Signal am Pin > anliegen haben. Warum? Das kann man doch simpelst per Software lösen. > Könnte mir jemand auf die Sprünge helfen? Lerne, deine Problem als Software-Probleme zu begreifen. Im konkreten Fall: Du schaffst ein Zeitfenster deiner Wahl und wertest aus, ob innerhalb dieses Fensters eine Zustandswechsel erfolgt ist. Wenn das der Fall ist, wertest du den Eingang als "High" ansonsten als "Low". Bei 500Hz ist das völlig problemlos realisierbar.
Hallo an alle und danke für die zahlreichen Antworten. Da habe ich ja einige Ansätze, ich wollte das ganze gern per Hardware abhandeln, dann muss ich mich nicht um die Software kümmern ;) Aber die Sache per Software würde wohl auch gehen. Wenn ich das richtig verstanden habe brauch ich nur eine Zeitbasis und beim Timerereignis frage ich den Port ab und schau, ob irgendwo ein Low Pegel anliegt. Die Signale würd ich dann über einen Spannungsteiler zu den Pins führen da die 2,3v glaub ich noch keinen Low Pegel entsprechen. (-> Datenblatt). Das Signal ist entweder High oder die 500 Hz Pwm. Grüße Christian
Chris T. schrieb: > entweder High oder die 500 Hz Pwm Der naechste zu ziehende Wurm heisst damit: Welche Tastverhaeltnisse koennen vorkommen? wendelsberg
Nur das 50:50 wie oben abgebildet. Okay man sieht die nächste Periode nicht ganz.
:
Bearbeitet durch User
Wolfgang schrieb: > Chris T. schrieb: >> Rechtecksignal mit 500Hz > > Rainer U. schrieb: >> im Abstand von 500ns > > Das üben wir noch mal. Bei 500ns würde der ATmega schon etwas in Stress > kommen. Gut das für 500Hz eine Abtastung mit 1000000ns Sampleabstand > reichen dürfte ;-) Oh Mist! Jetzt sehe ich es auch - hatte 500kHz gelesen. Aber auch 500ns sind noch nicht so schlimm: Ein IN-Befehl dauert nur 1 Takt - bei 8MHz gerade mal 125ns.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.