Hallo,
ich habe eine frage an euch. Ich komme nicht weiter bei meinem Programm.
Undzwa bekommt mein Eingang mehrere Signale hintereinander. Ich möchte
das er die Signale die in einer Minute ankommen zählt und speichert. Die
eine Minute soll auch in dem Programm einprogrammiert werden. Alle
Signale die nach der Minute ankommen sollen ignoriert werden.
Danke im vor raus für die Hilfe
Marcus schrieb:> Danke im vor raus für die Hilfe
so wird das nichts. Was Hast du denn schon selber programmiert? Und auf
welcher Plattform soll das laufen? In welcher Form kommen denn die
Signale.
Zeige uns ein Programm und erkläre wo du nicht weiterkommt, dann können
wir helfen.
Dann zeig doch mal dein programm und erkläre uns für welche plattform es
entwickelt wird (avr,pic,arm,pc..). Welch toolchain/ide verwendest du ?
Wie sehen die signale aus (zeichnung), welches timing haben die signale,
wieviele signale treten maximal auf ?
Du siehst, hier fehlen sehr viele infos ;)
ich schätze jetzt mal mit "Signale" Meinst du irgendwelche Pulse.
Dann kannst du den Timer so programmiern, dass du die Minute erkennst
(Timer-Interrupts anaschaun) und mit einem Counter die Pulse hochzählen
(steigende oder fallende Flanke, Levelchange, ...)
wie schon beschrieben ohne mehr Infos, ist es schwierig mehr Infos zu
geben.
Lesestoff:
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR
Okay tut mir leid dies ist mein erster Beitrag. Also die Signale kommen
von einem Relais und das Signal beträgt 5V. Ich programmiere mit PICkit
3 und benutze den Compiler xc8. Das Timing wird von einem Motor bestimmt
ich möchte nämlich die Umdrehung pro Minute Zählen dies halt mittels
einer Lichtschranke und dem Signalherausgebenden Relais. Bei der
Häufigkeit der Signale kommt es darauf an wie schnell der Motor läuft.
Nach einer Minute soll er die noch kommenden Signale Ignorieren und die
Signale die er in der einen Minute gezählt hat Speichern. Diese Zahl
muss ich dann mit 10 Dividieren. Das wäre eigentlich alles den Rest
wollte ich selber versuchen.
Ich hoffe das sind genug Informationen
Impulse kann man mit einem TC (TimerCounter)zählen.
Oder du pollst einen Input und zählst selbst die Pulse, da kannst du
auch eine Entprellung einbauen.
Marcus schrieb:> Okay tut mir leid dies ist mein erster Beitrag. Also die Signale kommen> von einem Relais und das Signal beträgt 5V... Das Timing wird von einem> Motor bestimmt
Ist das Signal entprellt?
> ich möchte nämlich die Umdrehung pro Minute Zählen dies halt mittels> einer Lichtschranke und dem Signalherausgebenden Relais. Bei der> Häufigkeit der Signale kommt es darauf an wie schnell der Motor läuft.
Ja, wie schnell läuft er denn?
> Nach einer Minute soll er die noch kommenden Signale Ignorieren und die> Signale die er in der einen Minute gezählt hat Speichern
Am besten du vergisst mal diesen ganzen Mist mit den Delays. Zum Zählen
verwendet man Counter (nicht unbedingt ;-) und für die Zeit Timer.
Mit welcher Frequenz wird der 18F1220 getaktet?
while(1) ist das gleiche wie while(2).
Das ist eine loop(forever), du kommst aus dieser Schleife nicht raus,
sowas macht man zB. 1 mal und arbeitet dort zyklisch die Aufgaben ab.
sowie beim Arduino:
init();
loop()
{
read_input();
do_something_else();
...
}
Nix schrieb:> while(1) ist das gleiche wie while(2).
Nicht ganz: while(2) ist sicherer, denn wenn die binäre Unschärfe
bedacht wird, dann kann eine besonders große 0 fast so groß sein wie
eine besonders kleine 1. Nimmt man 2 statt 1, ist man auch in diesem
Fall auf der sicheren Seite.
Was trollen? Warum glaubst du haben die ARMs alle ein Error Correction
Bit im Befehlssatz, falls ein Bit kippt kann so der Befehl trotzdem noch
richtig dekodiert werden.
> Nicht ganz: while(2) ist sicherer, denn wenn die binäre Unschärfe> bedacht wird, dann kann eine besonders große 0 fast so groß sein wie> eine besonders kleine 1.
für while(1) könntest Du auch while(true) oder while(1==1) schreiben; da
kann ich beim besten Willen nichts mit binäre Unschärfe erkennen.
while(2) wird nur verwendet um die beiden Endlosschleifen unterscheiden
zu können.
Also der OP muss ein Troll sein, so einen vermurksten Code schreibt
niemand, der auch nur ein bischen Ahnung von C hat.
Wenn das "Programm" kein Scherz sein soll, das bleibt genau hier hängen:
Paul B. schrieb:> klausi schrieb:> Hab mal Leitsysteme in C programmiert..>> In C? Das muß doch dann ein Leid-System sein.>> MfG Paul
Oja! Da hast Du recht!
Diese Systeme dann auchnoch bei ner Firma in Inbetriebnahme zu nehmen,
hat mich dutzende Nachtschichten, graue Haare gekostet...
War in der Logistikindustrie..
Speichermaler? Doppelpointer? In falschen Bereich reingeschrieben? Corba
Prozess tot, Förderstrecke bleibt stehen.. hinten stauen sich schon die
Pakete...
klausi schrieb:> ab mal Leitsysteme in C programmiert..> Da ist mir noch nie ein Bit gekippt.
Das ist offenbar Ewigkeiten her, und damals war das noch nicht so
schlimm, weil die Strukturgrößen viel gröber waren. Bei den heutigen
Systemen sind die Strukturgrößen so klein, daß der Bitfraß nicht erst
nach Jahrzehnten merkbare Auswirkungen hat.
Da Endlosschleifen aber naturgemäß sehr lange laufen, sollte man hier
besonders strikte Maßnahmen gegen den Bitfraß treffen.
Ja das mit dem Bitfraß wird immer schlimmer. Ich hatte mal besonders
viele Endlosschleifen einprogrammiert, da konnte man zuschauen wie das
RAM und die Prozessor Register immer weniger wurden. Die Software musst
dann so optimiert werden das sie mit 100GB Flash, 100 Byte RAM und 1
Register auskam.
Besonders die 100GB Flash hatten mir wirklich Probleme bereitet. Das
ging nur noch mit sehr Size optimierter Compilierung.
fürn Hugo schrieb:> Ja das mit dem Bitfraß wird immer schlimmer. Ich hatte mal> besonders> viele Endlosschleifen einprogrammiert,
Du hast für die Endlosschleifen hoffentlich komplettes Loop-Unrolling
gemacht, oder? Weil das macht man jetzt so sagen die
Hippster-Programmierer mit Zöpfchen.
Jack schrieb:> Du hast für die Endlosschleifen hoffentlich komplettes Loop-Unrolling> gemacht, oder? Weil das macht man jetzt so sagen die> Hippster-Programmierer mit Zöpfchen.
Du hast den Dutt vergessen. Als Hipster muss das heute sein. Zu
beobachten beim Chef-Hipster von Heise JKJ.
Was seid ihr alle nur für überhebliche Fuzzis?
Da will einer (offensichtlich ein Anfänger) Hilfe haben und Euch fällt
nichts weiter ein als ihn dumm zu machen.
Wenn ihr nicht helfen wollt, dann sagt dies doch gleich, damit weiß man
(er) wenigstens woran man (er) ist. Das was ihr hier macht ist unterste
Schublade - ihr solltet Euch schämen.
Ich wünsche jedem von Euch Schlaubergern, daß ihr auch mal so dumm
angemacht werdet, damit ihr mal merkt wie das ist.
Mitleser schrieb:
Komm gib's zu, du bist der ursprüngliche Fragesteller, oder?
> Was seid ihr alle nur für überhebliche Fuzzis?>> Da will einer (offensichtlich ein Anfänger) Hilfe haben und Euch fällt> nichts weiter ein als ihn dumm zu machen.
Der Anfänger hat kurz nach den ersten Rückfragen seine Mitarbeit bei der
Lösung seiner Probleme eingestellt.
> Das was ihr hier macht ist unterste> Schublade - ihr solltet Euch schämen.
Nein, müssen wir nicht. Dieses Spielchen von zarten Blümlein die sich
alle Informationen wie Würmer aus der Nase ziehen lassen und dabei die
Beleidigte Leberwurst spielen, egal was man fragt oder sagt, kennen wir
zu genüge.
> Ich wünsche jedem von Euch Schlaubergern, daß ihr auch mal so dumm> angemacht werdet, damit ihr mal merkt wie das ist.
Ok, und nun geh bitte wieder Minecraft spielen und halte dich von
ernsthafter Programmierung fern.